Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Installing 0.9.0 wheel on python 3.6 does not install dataclasses, causes import failure #1302

Copy link
Copy link
Closed
@kandersolar

Description

@kandersolar
Issue body actions

Describe the bug
Installing pvlib 0.9.0 using the wheel currently on PyPI does not install dataclasses, causing pvlib to fail to import on python 3.6. I think this is because the wheel builder workflow uses python 3.8, so it ignores the dataclasses dependency when building the wheel (which is supposed to be universal across all our supported python versions):

python-version: 3.8

pvlib-python/setup.py

Lines 49 to 50 in 518cc35

if sys.version_info.major == 3 and sys.version_info.minor == 6:
INSTALL_REQUIRES.append('dataclasses')

Opening the wheel (it's just a zipfile) and viewing the pvlib-0.9.0.dist-info/METADATA file, there is no mention of dataclasses. Note that installing 0.9.0 from source (pip install pvlib --no-binary pvlib) works as intended because it is running setup.py locally in python 3.6. Our CI never has this kind of python version mismatch between what was used to build the wheel and what was used to run the tests, so it didn't catch this.

To Reproduce

$ conda create -n py36test python=3.6
$ conda activate py36test
$ pip install pvlib==0.9.0
$ python -c "import pvlib"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\KANDERSO\Software\Anaconda3\envs\py36test\lib\site-packages\pvlib\__init__.py", line 3, in <module>
    from pvlib import (  # noqa: F401
  File "C:\Users\KANDERSO\Software\Anaconda3\envs\py36test\lib\site-packages\pvlib\ivtools\__init__.py", line 7, in <module>
    from pvlib.ivtools import sde, sdm, utils  # noqa: F401
  File "C:\Users\KANDERSO\Software\Anaconda3\envs\py36test\lib\site-packages\pvlib\ivtools\sdm.py", line 16, in <module>
    from pvlib.pvsystem import calcparams_pvsyst, singlediode, v_from_i
  File "C:\Users\KANDERSO\Software\Anaconda3\envs\py36test\lib\site-packages\pvlib\pvsystem.py", line 14, in <module>
    from dataclasses import dataclass
ModuleNotFoundError: No module named 'dataclasses'

Additional context
Noticed in NREL/rdtools#290

Possible solutions:

  • Switch the deploy workflow to use python 3.6, which will end up requiring dataclasses for all python versions
  • Upgrade dataclasses to be required for all versions in setup.py
  • Build separate wheels for each python version, maybe with cibuildwheel?
  • Remove the wheel file so that pip always installs from source?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.