Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support PEP621 #1910

Merged
merged 1 commit into from
Mar 5, 2024
Merged

Support PEP621 #1910

merged 1 commit into from
Mar 5, 2024

Conversation

jules-ch
Copy link
Contributor

Following most scientific packages, add support PEP621 https://peps.python.org/pep-0621.

https://packaging.python.org/en/latest/specifications/declaring-project-metadata/#declaring-project-metadata
Migrate metadata to pyproject.toml.

SPA C Extension definition has been kept in setup.py following https://setuptools.pypa.io/en/latest/userguide/ext_modules.html

Copy link
Member

@kandersolar kandersolar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @jules-ch! I've not tried this out yet, but here are some initial comments from reading the diff.

Things I plan to check:

  • Does it result in the same/equivalent wheel as the current configuration?
  • Does pip show pvlib have equivalent output?
  • Does PyPI show information correctly?
  • Do editable installs work as expected?

Just to cross-link previous discussion on this topic: #1486

pyproject.toml Outdated Show resolved Hide resolved
pyproject.toml Outdated Show resolved Hide resolved
'pytest-remotedata',
'packaging',
]
all = ["pvlib[test,optional,doc]"]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was curious about using a recursive dependency to construct combined dependency groups. In case anyone else is interested: from what I can tell, this is a not-yet-documented (see discuss and pypa/pip#11296) feature of pip that other projects are using, e.g. https://github.com/astropy/astropy/blob/main/pyproject.toml#L73

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tell me if you'd prefer to have explicit dependencies.

pyproject.toml Outdated Show resolved Hide resolved
@kandersolar kandersolar added this to the v0.10.4 milestone Dec 12, 2023
@jules-ch
Copy link
Contributor Author

Hey @kandersolar thanks for the review. Last time I checked it was producing the same wheel content. I'll double check that and post the produced wheel with build command.
I can not see why pip show and PyPI will show other information since its based on wheel content PKGINFO and metadata produced by the build and not from setup.py or project.toml file.

I'll double check for editable but I'm pretty sure it will work aswell, setuptools support editable with pyproject.toml now .

@jules-ch
Copy link
Contributor Author

Here is the diff with METADATA in the dist-info folder in the wheel:

--- a/dist/pvlib-0.10.3.dev21+gd5c916f-py3-none-any/pvlib-0.10.3.dev21+gd5c916f.dist-info/METADATA
+++ b/dist/pvlib-0.10.3.dev20+g304fbb5-py3-none-any/pvlib-0.10.3.dev20+g304fbb5.dist-info/METADATA
@@ -1,10 +1,11 @@
 Metadata-Version: 2.1
 Name: pvlib
-Version: 0.10.3.dev21+gd5c916f
+Version: 0.10.3.dev20+g304fbb5
 Summary: A set of functions and classes for simulating the performance of photovoltaic energy systems.
 Home-page: https://github.com/pvlib/pvlib-python
-Author-email: pvlib python Developers <pvlib-admin@googlegroups.com>
-License: BSD-3-Clause
+Author: pvlib python Developers
+Maintainer-email: pvlib-admin@googlegroups.com
+License: BSD 3-Clause
 Project-URL: Bug Tracker, https://github.com/pvlib/pvlib-python/issues
 Project-URL: Documentation, https://pvlib-python.readthedocs.io/
 Project-URL: Source Code, https://github.com/pvlib/pvlib-python
@@ -27,7 +28,28 @@ Requires-Dist: scipy >=1.5.0
 Requires-Dist: h5py
 Requires-Dist: importlib-metadata ; python_version < "3.8"
 Provides-Extra: all
-Requires-Dist: pvlib[doc,optional,test] ; extra == 'all'
+Requires-Dist: cython ; extra == 'all'
+Requires-Dist: docutils ==0.15.2 ; extra == 'all'
+Requires-Dist: ephem ; extra == 'all'
+Requires-Dist: ipython ; extra == 'all'
+Requires-Dist: matplotlib ; extra == 'all'
+Requires-Dist: nrel-pysam ; extra == 'all'
+Requires-Dist: numba ; extra == 'all'
+Requires-Dist: packaging ; extra == 'all'
+Requires-Dist: pillow ; extra == 'all'
+Requires-Dist: pydata-sphinx-theme ==0.8.1 ; extra == 'all'
+Requires-Dist: pytest ; extra == 'all'
+Requires-Dist: pytest-cov ; extra == 'all'
+Requires-Dist: pytest-mock ; extra == 'all'
+Requires-Dist: pytest-remotedata ; extra == 'all'
+Requires-Dist: pytest-rerunfailures ; extra == 'all'
+Requires-Dist: pytest-timeout ; extra == 'all'
+Requires-Dist: requests-mock ; extra == 'all'
+Requires-Dist: solarfactors ; extra == 'all'
+Requires-Dist: sphinx ==4.5.0 ; extra == 'all'
+Requires-Dist: sphinx-gallery ; extra == 'all'
+Requires-Dist: sphinx-toggleprompt >=0.0.5 ; extra == 'all'
+Requires-Dist: statsmodels ; extra == 'all'
 Provides-Extra: doc
 Requires-Dist: ipython ; extra == 'doc'
 Requires-Dist: matplotlib ; extra == 'doc'
@@ -55,6 +77,7 @@ Requires-Dist: pytest-rerunfailures ; extra == 'test'
 Requires-Dist: pytest-remotedata ; extra == 'test'
 Requires-Dist: packaging ; extra == 'test'
 
+
 pvlib python is a community developed toolbox that provides a set of
 functions and classes for simulating the performance of photovoltaic
 energy systems and accomplishing related tasks.  The core mission of pvlib

@jules-ch
Copy link
Contributor Author

looking in the RECORD, only the METADATA sha256 has been changed.

@@ -164,9 +164,9 @@ pvlib/tests/ivtools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
 pvlib/tests/ivtools/test_sde.py,sha256=dBJkk9tWskwc6Iyoziar9MoZESrOSkepOk51g5QOy1I,13844
 pvlib/tests/ivtools/test_sdm.py,sha256=5ioqsEJJE-JCSCGRLXj1zCuJzGIPNY622GyflJMU_MM,16406
 pvlib/tests/ivtools/test_utils.py,sha256=-BPEUgB5aCkJOv-apRkjeg0IraZ1Ebf5SmObk4Zusz4,6905
-pvlib-0.10.3.dev21+gd5c916f.dist-info/AUTHORS.md,sha256=Fxk4p_lXlMeQ6g2A1-7oPrgpULDxuJuC9Ebc-3yyj_o,1474
-pvlib-0.10.3.dev21+gd5c916f.dist-info/LICENSE,sha256=oC4S3araPPDV292K_91XfC7sZAdYqVhCowT3UTuMC-Q,1622
-pvlib-0.10.3.dev21+gd5c916f.dist-info/METADATA,sha256=EFM5OLgcOtuWb9-Dc4OmhwP4r-LF62mLAZ0UIui7Fis,2851
-pvlib-0.10.3.dev21+gd5c916f.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
-pvlib-0.10.3.dev21+gd5c916f.dist-info/top_level.txt,sha256=eq9CH6YXUc3Fh3dyQ5hQXoGYfSm1SYEAlMygyR22MgE,6
-pvlib-0.10.3.dev21+gd5c916f.dist-info/RECORD,,
+pvlib-0.10.3.dev20+g304fbb5.dist-info/AUTHORS.md,sha256=Fxk4p_lXlMeQ6g2A1-7oPrgpULDxuJuC9Ebc-3yyj_o,1474
+pvlib-0.10.3.dev20+g304fbb5.dist-info/LICENSE,sha256=oC4S3araPPDV292K_91XfC7sZAdYqVh
CowT3UTuMC-Q,1622
+pvlib-0.10.3.dev20+g304fbb5.dist-info/METADATA,sha256=jA-4LhDa0kdphiPfJI_pqJJwZl4WDA
kxdZHmCJAdIsE,3802
+pvlib-0.10.3.dev20+g304fbb5.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGe
r_elqB3coM,92
+pvlib-0.10.3.dev20+g304fbb5.dist-info/top_level.txt,sha256=eq9CH6YXUc3Fh3dyQ5hQXoGYf
Sm1SYEAlMygyR22MgE,6
+pvlib-0.10.3.dev20+g304fbb5.dist-info/RECORD,,

@jules-ch
Copy link
Contributor Author

pip show

Name: pvlib
Version: 0.10.3.dev20+g304fbb5
Summary: A set of functions and classes for simulating the performance of photovoltaic energy systems.
Home-page: https://github.com/pvlib/pvlib-python
Author: pvlib python Developers
Author-email: 
License: BSD 3-Clause
Location: /home/jules/Code/pvlib-python/.venv/lib/python3.10/site-packages
Requires: h5py, numpy, pandas, pytz, requests, scipy
Required-by:
Name: pvlib
Version: 0.10.3.dev21+gd5c916f
Summary: A set of functions and classes for simulating the performance of photovoltaic energy systems.
Home-page: https://github.com/pvlib/pvlib-python
Author: 
Author-email: pvlib python Developers <pvlib-admin@googlegroups.com>
License: BSD-3-Clause
Location: /home/jules/Code/pvlib-python/.venv/lib/python3.10/site-packages
Requires: h5py, numpy, pandas, pytz, requests, scipy
Required-by:

Only change is the Author Author mail thingy don't know if its a bug though.

Copy link
Member

@kandersolar kandersolar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I finally found time to take a close look at this. LGTM! Thanks @jules-ch! I'll leave this open for a few days in case anyone else wants to review as well.

@kandersolar kandersolar merged commit 09cf445 into pvlib:main Mar 5, 2024
35 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants