BCDA-APS / adl2pydm

Convert MEDM's .adl files to PyDM's .ui format
Other
0 stars 4 forks source link

setup.py packaging needs to be rebuilt #30

Closed prjemian closed 4 years ago

prjemian commented 4 years ago

Describe the bug With the existing setup.py, the source code is not installed and the adl2pydm command line program will not run.

To Reproduce

  1. pip install .
  2. adl2pydm -h -- this command fails

Expected behavior adl2pydm -h should show a help message.

prjemian commented 4 years ago

One of the problems is with the example medm files in the source code directory. Since they are only used for testing and will not be part of the installed application, move them to the tests/medm directory.

prjemian commented 4 years ago

Look in this section, https://setuptools.readthedocs.io/en/latest/setuptools.html#find-namespace-packages, at this point:

Another option is to use the “src” layout

prjemian commented 4 years ago

consider this alternative to versioneer: https://pypi.org/project/setuptools-scm/

prjemian commented 4 years ago

The problem is isolated to these two lines: https://github.com/BCDA-APS/adl2pydm/blob/f15ad919e27a0e3e52cc71c110464e06ec963e2d/setup.py#L37-L38

Testing with the command python ./setup.py bdist, this setup.py configuration fails:

setup(
    name            = package.__project__,
    package_dir     = {'': 'src'},
    packages        = find_namespace_packages(where='src'),
    entry_points    = __entry_points__,

    # version = "0.1.0",
    version          = versioneer.get_version(),
    cmdclass         = versioneer.get_cmdclass(),

    zip_safe         = package.__zip_safe__,
    python_requires  = package.__python_version_required__,
)

with this error:

(bluesky-pydm) mintadmin@mint-vm:~/.../eclipse/adl2pydm$ python ./setup.py bdist
running bdist
running bdist_dumb
running build
running build_py
UPDATING build/lib/src/adl2pydm/_version.py
error: [Errno 2] No such file or directory: 'build/lib/src/adl2pydm/_version.py'

When versioneer is disabled:

    version = "0.1.0",
    # version          = versioneer.get_version(),
    # cmdclass         = versioneer.get_cmdclass(),

the build command succeeds:

(bluesky-pydm) mintadmin@mint-vm:~/.../eclipse/adl2pydm$ python ./setup.py bdist
running bdist
running bdist_dumb
running build
running build_py
installing to build/bdist.linux-x86_64/dumb
running install
running install_lib
creating build/bdist.linux-x86_64/dumb
creating build/bdist.linux-x86_64/dumb/home
creating build/bdist.linux-x86_64/dumb/home/mintadmin
creating build/bdist.linux-x86_64/dumb/home/mintadmin/Apps
creating build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda
creating build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs
creating build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm
creating build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib
creating build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7
creating build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages
creating build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm
copying build/lib/adl2pydm/__init__.py -> build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm
copying build/lib/adl2pydm/_version.py -> build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm
copying build/lib/adl2pydm/pydm_symbols.py -> build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm
copying build/lib/adl2pydm/cli.py -> build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm
copying build/lib/adl2pydm/output_handler.py -> build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm
copying build/lib/adl2pydm/adl_symbols.py -> build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm
copying build/lib/adl2pydm/adl_parser.py -> build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm
copying build/lib/adl2pydm/_requirements.py -> build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm
byte-compiling build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm/__init__.py to __init__.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm/_version.py to _version.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm/pydm_symbols.py to pydm_symbols.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm/cli.py to cli.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm/output_handler.py to output_handler.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm/adl_symbols.py to adl_symbols.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm/adl_parser.py to adl_parser.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm/_requirements.py to _requirements.cpython-37.pyc
running install_egg_info
running egg_info
writing src/adl2pydm.egg-info/PKG-INFO
writing dependency_links to src/adl2pydm.egg-info/dependency_links.txt
writing entry points to src/adl2pydm.egg-info/entry_points.txt
writing top-level names to src/adl2pydm.egg-info/top_level.txt
reading manifest file 'src/adl2pydm.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'src/adl2pydm.egg-info/SOURCES.txt'
Copying src/adl2pydm.egg-info to build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/lib/python3.7/site-packages/adl2pydm-0.1.0-py3.7.egg-info
running install_scripts
Installing adl2pydm script to build/bdist.linux-x86_64/dumb/home/mintadmin/Apps/anaconda/envs/bluesky-pydm/bin
Creating tar archive
removing 'build/bdist.linux-x86_64/dumb' (and everything under it)
prjemian commented 4 years ago

Conclusion:

remove & replace versioneer installation

prjemian commented 4 years ago

Good. This builds now:

(bluesky-pydm) mintadmin@mint-vm:~/.../eclipse/adl2pydm$ python setup.py sdist bdist_wheel
running sdist
running egg_info
creating src/adl2pydm.egg-info
writing src/adl2pydm.egg-info/PKG-INFO
writing dependency_links to src/adl2pydm.egg-info/dependency_links.txt
writing entry points to src/adl2pydm.egg-info/entry_points.txt
writing top-level names to src/adl2pydm.egg-info/top_level.txt
writing manifest file 'src/adl2pydm.egg-info/SOURCES.txt'
reading manifest file 'src/adl2pydm.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'src/adl2pydm.egg-info/SOURCES.txt'
running check
creating adl2pydm-0.1.1b0
creating adl2pydm-0.1.1b0/src
creating adl2pydm-0.1.1b0/src/adl2pydm
creating adl2pydm-0.1.1b0/src/adl2pydm.egg-info
copying files to adl2pydm-0.1.1b0...
copying CHANGES.md -> adl2pydm-0.1.1b0
copying LICENSE.txt -> adl2pydm-0.1.1b0
copying MANIFEST.in -> adl2pydm-0.1.1b0
copying README.md -> adl2pydm-0.1.1b0
copying setup.cfg -> adl2pydm-0.1.1b0
copying setup.py -> adl2pydm-0.1.1b0
copying src/adl2pydm/__init__.py -> adl2pydm-0.1.1b0/src/adl2pydm
copying src/adl2pydm/_requirements.py -> adl2pydm-0.1.1b0/src/adl2pydm
copying src/adl2pydm/adl_parser.py -> adl2pydm-0.1.1b0/src/adl2pydm
copying src/adl2pydm/adl_symbols.py -> adl2pydm-0.1.1b0/src/adl2pydm
copying src/adl2pydm/cli.py -> adl2pydm-0.1.1b0/src/adl2pydm
copying src/adl2pydm/output_handler.py -> adl2pydm-0.1.1b0/src/adl2pydm
copying src/adl2pydm/pydm_symbols.py -> adl2pydm-0.1.1b0/src/adl2pydm
copying src/adl2pydm.egg-info/PKG-INFO -> adl2pydm-0.1.1b0/src/adl2pydm.egg-info
copying src/adl2pydm.egg-info/SOURCES.txt -> adl2pydm-0.1.1b0/src/adl2pydm.egg-info
copying src/adl2pydm.egg-info/dependency_links.txt -> adl2pydm-0.1.1b0/src/adl2pydm.egg-info
copying src/adl2pydm.egg-info/entry_points.txt -> adl2pydm-0.1.1b0/src/adl2pydm.egg-info
copying src/adl2pydm.egg-info/not-zip-safe -> adl2pydm-0.1.1b0/src/adl2pydm.egg-info
copying src/adl2pydm.egg-info/top_level.txt -> adl2pydm-0.1.1b0/src/adl2pydm.egg-info
Writing adl2pydm-0.1.1b0/setup.cfg
creating dist
Creating tar archive
removing 'adl2pydm-0.1.1b0' (and everything under it)
running bdist_wheel
running build
running build_py
creating build
creating build/lib
creating build/lib/adl2pydm
copying src/adl2pydm/__init__.py -> build/lib/adl2pydm
copying src/adl2pydm/pydm_symbols.py -> build/lib/adl2pydm
copying src/adl2pydm/cli.py -> build/lib/adl2pydm
copying src/adl2pydm/output_handler.py -> build/lib/adl2pydm
copying src/adl2pydm/adl_symbols.py -> build/lib/adl2pydm
copying src/adl2pydm/adl_parser.py -> build/lib/adl2pydm
copying src/adl2pydm/_requirements.py -> build/lib/adl2pydm
installing to build/bdist.linux-x86_64/wheel
running install
running install_lib
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/wheel
creating build/bdist.linux-x86_64/wheel/adl2pydm
copying build/lib/adl2pydm/__init__.py -> build/bdist.linux-x86_64/wheel/adl2pydm
copying build/lib/adl2pydm/pydm_symbols.py -> build/bdist.linux-x86_64/wheel/adl2pydm
copying build/lib/adl2pydm/cli.py -> build/bdist.linux-x86_64/wheel/adl2pydm
copying build/lib/adl2pydm/output_handler.py -> build/bdist.linux-x86_64/wheel/adl2pydm
copying build/lib/adl2pydm/adl_symbols.py -> build/bdist.linux-x86_64/wheel/adl2pydm
copying build/lib/adl2pydm/adl_parser.py -> build/bdist.linux-x86_64/wheel/adl2pydm
copying build/lib/adl2pydm/_requirements.py -> build/bdist.linux-x86_64/wheel/adl2pydm
running install_egg_info
Copying src/adl2pydm.egg-info to build/bdist.linux-x86_64/wheel/adl2pydm-0.1.1b0-py3.7.egg-info
running install_scripts
adding license file "LICENSE.txt" (matched pattern "LICEN[CS]E*")
creating build/bdist.linux-x86_64/wheel/adl2pydm-0.1.1b0.dist-info/WHEEL
creating 'dist/adl2pydm-0.1.1b0-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'adl2pydm/__init__.py'
adding 'adl2pydm/_requirements.py'
adding 'adl2pydm/adl_parser.py'
adding 'adl2pydm/adl_symbols.py'
adding 'adl2pydm/cli.py'
adding 'adl2pydm/output_handler.py'
adding 'adl2pydm/pydm_symbols.py'
adding 'adl2pydm-0.1.1b0.dist-info/LICENSE.txt'
adding 'adl2pydm-0.1.1b0.dist-info/METADATA'
adding 'adl2pydm-0.1.1b0.dist-info/WHEEL'
adding 'adl2pydm-0.1.1b0.dist-info/entry_points.txt'
adding 'adl2pydm-0.1.1b0.dist-info/top_level.txt'
adding 'adl2pydm-0.1.1b0.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
prjemian commented 4 years ago

Also passes installation and usage tests:

(bluesky-pydm) mintadmin@mint-vm:~/.../eclipse/adl2pydm$ pip install .
Processing /home/mintadmin/Documents/eclipse/adl2pydm
Building wheels for collected packages: adl2pydm
  Building wheel for adl2pydm (setup.py) ... done
  Created wheel for adl2pydm: filename=adl2pydm-0.1.1b0-cp37-none-any.whl size=19397 sha256=5eb13527cd35f4aa1a1d07e75d04b5c79a94497ec98e82342f9c8ea39779065e
  Stored in directory: /tmp/pip-ephem-wheel-cache-u5c6q_ck/wheels/72/e9/98/1148a96e7ee612359c15630fece486143d1da8bdc134a7af3a
Successfully built adl2pydm
Installing collected packages: adl2pydm
Successfully installed adl2pydm-0.1.1b0
(bluesky-pydm) mintadmin@mint-vm:~/.../eclipse/adl2pydm$ adl2pydm -v
0.1.1b0
(bluesky-pydm) mintadmin@mint-vm:~/.../eclipse/adl2pydm$ adl2pydm -h
usage: adl2pydm [-h] [-d DIR] [-v] adlfile

convert MEDM .adl screen file(s) to PyDM .ui format (https://github.com/BCDA-
APS/adl2pydm) v0.1.1b0

positional arguments:
  adlfile            MEDM '.adl' file to convert

optional arguments:
  -h, --help         show this help message and exit
  -d DIR, --dir DIR  output directory, default: same directory as input file
  -v, --version      show program's version number and exit
(bluesky-pydm) mintadmin@mint-vm:~/.../eclipse/adl2pydm$ pip uninstall -y adl2pydm
Uninstalling adl2pydm-0.1.1b0:
  Successfully uninstalled adl2pydm-0.1.1b0
prjemian commented 4 years ago

Update the versioneer package locally:

conda update versioneer

Then, re-install versioneer

prjemian commented 4 years ago

In setup.cfg, this misconfigured line was the root case:

versionfile_build = src/adl2pydm/_version.py

The correct version of this line:

versionfile_build = adl2pydm/_version.py

fixes this problem.

prjemian commented 4 years ago

These two lines in setup.py were also important:

    package_dir      = {'': 'src'},
    packages         = find_namespace_packages("src", exclude=package.__exclude_project_dirs__),

As was moving the test files (#31).