jgrss / geowombat

GeoWombat: Utilities for geospatial data
https://geowombat.readthedocs.io
MIT License
184 stars 10 forks source link

`python setup.py sdist` fails to find metadata #231

Closed rdenham closed 1 year ago

rdenham commented 1 year ago

Using from distutils.core import setup in setup.py breaks the parsing of setup.cfg, I think you need to at least include setuptools in there.

For example, to build a source distribution:

python setup.py sdist

results in

running sdist
running check
warning: check: missing required meta-data: name, version, url

warning: check: missing meta-data: either (author and author_email) or (maintainer and maintainer_email) should be supplied

warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list)

warning: sdist: standard file not found: should have one of README, README.txt, README.rst

writing manifest file 'MANIFEST'
creating UNKNOWN-0.0.0
creating UNKNOWN-0.0.0/src
creating UNKNOWN-0.0.0/src/geowombat
creating UNKNOWN-0.0.0/src/geowombat/moving
creating UNKNOWN-0.0.0/src/geowombat/radiometry
making hard links in UNKNOWN-0.0.0...
hard linking setup.cfg -> UNKNOWN-0.0.0
hard linking setup.py -> UNKNOWN-0.0.0
hard linking src/geowombat/moving/_moving.c -> UNKNOWN-0.0.0/src/geowombat/moving
hard linking src/geowombat/radiometry/_fusion.c -> UNKNOWN-0.0.0/src/geowombat/radiometry
creating dist
Creating tar archive
removing 'UNKNOWN-0.0.0' (and everything under it)

So no metadata is found. I'm mostly interested in the version. If you also use setuptools, by inserting from setuptols import setup before from distutils.core import setup then it should work, at least if you use a recent version of setuptools:

sed -i '1s/^/from setuptools  import setup\n/' setup.py
python setup.py sdist
running sdist
running egg_info
creating src/geowombat.egg-info
writing src/geowombat.egg-info/PKG-INFO
writing dependency_links to src/geowombat.egg-info/dependency_links.txt
writing requirements to src/geowombat.egg-info/requires.txt
writing top-level names to src/geowombat.egg-info/top_level.txt
writing manifest file 'src/geowombat.egg-info/SOURCES.txt'
reading manifest file 'src/geowombat.egg-info/SOURCES.txt'
adding license file 'LICENSE.txt'
adding license file 'AUTHORS.txt'
writing manifest file 'src/geowombat.egg-info/SOURCES.txt'
running check
warning: check: missing meta-data: either (author and author_email) or (maintainer and maintainer_email) should be supplied

creating geowombat-2.0.17
creating geowombat-2.0.17/src
creating geowombat-2.0.17/src/geowombat
creating geowombat-2.0.17/src/geowombat.egg-info
creating geowombat-2.0.17/src/geowombat/backends
creating geowombat-2.0.17/src/geowombat/bin
creating geowombat-2.0.17/src/geowombat/core
creating geowombat-2.0.17/src/geowombat/data
creating geowombat-2.0.17/src/geowombat/ml
creating geowombat-2.0.17/src/geowombat/moving
creating geowombat-2.0.17/src/geowombat/radiometry
creating geowombat-2.0.17/src/geowombat/tasks
creating geowombat-2.0.17/src/geowombat/util
copying files to geowombat-2.0.17...
copying AUTHORS.txt -> geowombat-2.0.17
copying LICENSE.txt -> geowombat-2.0.17
copying README.md -> geowombat-2.0.17
copying pyproject.toml -> geowombat-2.0.17
copying setup.cfg -> geowombat-2.0.17
copying setup.py -> geowombat-2.0.17
copying src/geowombat/__init__.py -> geowombat-2.0.17/src/geowombat
copying src/geowombat/config.ini -> geowombat-2.0.17/src/geowombat
copying src/geowombat/config.py -> geowombat-2.0.17/src/geowombat
copying src/geowombat/handler.py -> geowombat-2.0.17/src/geowombat
copying src/geowombat.egg-info/PKG-INFO -> geowombat-2.0.17/src/geowombat.egg-info
copying src/geowombat.egg-info/SOURCES.txt -> geowombat-2.0.17/src/geowombat.egg-info
copying src/geowombat.egg-info/dependency_links.txt -> geowombat-2.0.17/src/geowombat.egg-info
copying src/geowombat.egg-info/requires.txt -> geowombat-2.0.17/src/geowombat.egg-info
copying src/geowombat.egg-info/top_level.txt -> geowombat-2.0.17/src/geowombat.egg-info
copying src/geowombat/backends/__init__.py -> geowombat-2.0.17/src/geowombat/backends
copying src/geowombat/backends/dask_.py -> geowombat-2.0.17/src/geowombat/backends
copying src/geowombat/backends/gdal_.py -> geowombat-2.0.17/src/geowombat/backends
copying src/geowombat/backends/rasterio_.py -> geowombat-2.0.17/src/geowombat/backends
copying src/geowombat/backends/xarray_.py -> geowombat-2.0.17/src/geowombat/backends
copying src/geowombat/backends/xarray_rasterio_.py -> geowombat-2.0.17/src/geowombat/backends
copying src/geowombat/backends/zarr_.py -> geowombat-2.0.17/src/geowombat/backends
copying src/geowombat/bin/ESPA.tar.gz -> geowombat-2.0.17/src/geowombat/bin
copying src/geowombat/bin/__init__.py -> geowombat-2.0.17/src/geowombat/bin
copying src/geowombat/core/__init__.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/core/api.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/core/base.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/core/conversion.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/core/geoxarray.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/core/io.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/core/parallel.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/core/properties.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/core/series.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/core/sops.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/core/stac.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/core/util.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/core/vi.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/core/windows.py -> geowombat-2.0.17/src/geowombat/core
copying src/geowombat/data/L3B_S2B_00390821JXN0L2A_20210319_20220730_C01.nc -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/LC08_L1TP_224077_20200518_20200518_01_RT_B2.TIF -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/LC08_L1TP_224077_20200518_20200518_01_RT_B3.TIF -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/LC08_L1TP_224077_20200518_20200518_01_RT_B4.TIF -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/LC08_L1TP_224078_20200518_20200518_01_RT.TIF -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/LC08_L1TP_224078_20200518_20200518_01_RT_B2.TIF -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/LC08_L1TP_224078_20200518_20200518_01_RT_B3.TIF -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/LC08_L1TP_224078_20200518_20200518_01_RT_B4.TIF -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/LC08_L1TP_224078_20200518_20200518_01_RT_points.gpkg -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/LC08_L1TP_224078_20200518_20200518_01_RT_polygons.gpkg -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/LC08_L2SP_224078_20200127_02_T1_LC08_L2SP_224078_20200127_20200823_02_T1_MTL.txt -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/LE07_L2SP_225078_20110306_02_T1_B1.tif -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/LE07_L2SP_225078_20110306_02_T1_LE07_L2SP_225078_20110306_20200910_02_T1_ANG.txt -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/LE07_L2SP_225078_20110306_02_T1_SZA.tif -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/__init__.py -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/mgrs.tar.gz -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/rgbn.tif -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/rgbn_20160101.tif -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/rgbn_20160401.tif -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/rgbn_20160517.tif -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/rgbn_20170203.tif -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/rgbn_suba.tif -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/rgbn_subb.tif -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/srtm30m_bounding_boxes.gpkg -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/data/wrs2.tar.gz -> geowombat-2.0.17/src/geowombat/data
copying src/geowombat/ml/__init__.py -> geowombat-2.0.17/src/geowombat/ml
copying src/geowombat/ml/classifiers.py -> geowombat-2.0.17/src/geowombat/ml
copying src/geowombat/ml/transformers.py -> geowombat-2.0.17/src/geowombat/ml
copying src/geowombat/moving/__init__.py -> geowombat-2.0.17/src/geowombat/moving
copying src/geowombat/moving/_moving.c -> geowombat-2.0.17/src/geowombat/moving
copying src/geowombat/radiometry/__init__.py -> geowombat-2.0.17/src/geowombat/radiometry
copying src/geowombat/radiometry/_fusion.c -> geowombat-2.0.17/src/geowombat/radiometry
copying src/geowombat/radiometry/angles.py -> geowombat-2.0.17/src/geowombat/radiometry
copying src/geowombat/radiometry/brdf.py -> geowombat-2.0.17/src/geowombat/radiometry
copying src/geowombat/radiometry/mask.py -> geowombat-2.0.17/src/geowombat/radiometry
copying src/geowombat/radiometry/qa.py -> geowombat-2.0.17/src/geowombat/radiometry
copying src/geowombat/radiometry/sixs.py -> geowombat-2.0.17/src/geowombat/radiometry
copying src/geowombat/radiometry/sr.py -> geowombat-2.0.17/src/geowombat/radiometry
copying src/geowombat/radiometry/topo.py -> geowombat-2.0.17/src/geowombat/radiometry
copying src/geowombat/tasks/__init__.py -> geowombat-2.0.17/src/geowombat/tasks
copying src/geowombat/tasks/pipeline.py -> geowombat-2.0.17/src/geowombat/tasks
copying src/geowombat/util/__init__.py -> geowombat-2.0.17/src/geowombat/util
copying src/geowombat/util/plotting.py -> geowombat-2.0.17/src/geowombat/util
copying src/geowombat/util/web.py -> geowombat-2.0.17/src/geowombat/util
Writing geowombat-2.0.17/setup.cfg
Creating tar archive
removing 'geowombat-2.0.17' (and everything under it)

Older versions of setuptools might also fail to work out the name of the package.

I suggest adding the line from setuptols import setup before from distutils.core import setup , and see if anything else breaks.

Some details of my environment:

$ python --version
Python 3.9.11

$ python -c 'import setuptools;print(setuptools.__version__)'
65.6.3

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.4 LTS"
jgrss commented 1 year ago

Thanks @rdenham, this looks pretty straightforward to address.

jgrss commented 1 year ago

@rdenham is #233 what you had in mind?

rdenham commented 1 year ago

Yep, that looks good.

jgrss commented 1 year ago

Thanks -- this should be resolved with #233 and v2.0.19.