casperdcl / argopt

convert docopt to argparse
https://pypi.python.org/pypi/argopt
Other
21 stars 2 forks source link

conda packaging #8

Closed jiangweiyao closed 4 years ago

jiangweiyao commented 4 years ago

Are there plans to package argopt in Conda? And if not, do you mind if I take a stab at it?

casperdcl commented 4 years ago

Oh go ahead!

jiangweiyao commented 4 years ago

I am trying to make sure argopt runs on a clean conda environment, but I am getting errors running the included test code now. Did I miss some dependencies or install argopt incorrectly? History of my commands from making the new conda environment is attached.

(py36) jyao@Grayback:~/python_gui/argopt/examples$ python demo_basic.py -h
Traceback (most recent call last):
  File "demo_basic.py", line 27, in <module>
    args = argopt(__doc__, version=__version__).parse_args()
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_argopt.py", line 163, in argopt
    **_kwargs)
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_argopt.py", line 42, in docopt_parser
    options, args = parse_defaults(doc)
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_docopt.py", line 479, in parse_defaults
    options = [Option.parse(s) for s in split if s.startswith('-')]
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_docopt.py", line 479, in <listcomp>
    options = [Option.parse(s) for s in split if s.startswith('-')]
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_docopt.py", line 231, in parse
    return class_(short, long, argcount, value, description, meta)
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_docopt.py", line 212, in __init__
    self.type = eval(value[i + 1:])
  File "<string>", line 1, in <module>
NameError: name 'file' is not defined

jyao@Grayback:~$ conda create --name py36 python=3.6.10 -y
Collecting package metadata (current_repodata.json): done
Solving environment: done

==> WARNING: A newer version of conda exists. <==
  current version: 4.8.2
  latest version: 4.8.3

Please update conda by running

    $ conda update -n base conda

## Package Plan ##

  environment location: /home/jyao/miniconda3/envs/py36

  added / updated specs:
    - python=3.6.10

The following NEW packages will be INSTALLED:

  _libgcc_mutex      conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge
  _openmp_mutex      conda-forge/linux-64::_openmp_mutex-4.5-0_gnu
  ca-certificates    conda-forge/linux-64::ca-certificates-2019.11.28-hecc5488_0
  certifi            conda-forge/linux-64::certifi-2019.11.28-py36h9f0ad1d_1
  ld_impl_linux-64   conda-forge/linux-64::ld_impl_linux-64-2.33.1-h53a641e_8
  libffi             conda-forge/linux-64::libffi-3.2.1-he1b5a44_1006
  libgcc-ng          conda-forge/linux-64::libgcc-ng-9.2.0-h24d8f2e_2
  libgomp            conda-forge/linux-64::libgomp-9.2.0-h24d8f2e_2
  libstdcxx-ng       conda-forge/linux-64::libstdcxx-ng-9.2.0-hdf63c60_2
  ncurses            conda-forge/linux-64::ncurses-6.1-hf484d3e_1002
  openssl            conda-forge/linux-64::openssl-1.1.1d-h516909a_0
  pip                conda-forge/noarch::pip-20.0.2-py_2
  python             conda-forge/linux-64::python-3.6.10-h9d8adfe_1009_cpython
  python_abi         conda-forge/linux-64::python_abi-3.6-1_cp36m
  readline           conda-forge/linux-64::readline-8.0-hf8c457e_0
  setuptools         conda-forge/linux-64::setuptools-46.0.0-py36h9f0ad1d_2
  sqlite             conda-forge/linux-64::sqlite-3.30.1-hcee41ef_0
  tk                 conda-forge/linux-64::tk-8.6.10-hed695b0_0
  wheel              conda-forge/noarch::wheel-0.34.2-py_1
  xz                 conda-forge/linux-64::xz-5.2.4-h14c3975_1001
  zlib               conda-forge/linux-64::zlib-1.2.11-h516909a_1006

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate py36
#
# To deactivate an active environment, use
#
#     $ conda deactivate

jyao@Grayback:~$ conda activate py36
(py36) jyao@Grayback:~$ pip install argopt
Collecting argopt
  Using cached argopt-0.6.0-py2.py3-none-any.whl (13 kB)
Installing collected packages: argopt
Successfully installed argopt-0.6.0
(py36) jyao@Grayback:~$ ls
bioconda-recipes  Documents  examples.desktop  minionqc   Music                          Pictures  python_gui  tmp
Desktop           Downloads  miniconda3        minion_qc  nanopore_amplicon_dereplicate  Public    Templates   Videos
(py36) jyao@Grayback:~$ cd python_gui
(py36) jyao@Grayback:~/python_gui$ ls
argopt  argopt_ex2.py  argopt_ex.py  docopt_ex.py
(py36) jyao@Grayback:~/python_gui$ cd argopt/
(py36) jyao@Grayback:~/python_gui/argopt$ ls
argopt  examples  LICENCE  Makefile  MANIFEST.in  README.rst  requirements-dev.txt  setup.cfg  setup.py  tox.ini
(py36) jyao@Grayback:~/python_gui/argopt$ cd examples/
(py36) jyao@Grayback:~/python_gui/argopt/examples$ ls
demo_advanced.py  demo_basic_docopt.py  demo_basic.py
(py36) jyao@Grayback:~/python_gui/argopt/examples$ python demo_advanced.py
Traceback (most recent call last):
  File "demo_advanced.py", line 57, in <module>
    main()
  File "demo_advanced.py", line 42, in main
    epilog='That was fun!')
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_argopt.py", line 163, in argopt
    **_kwargs)
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_argopt.py", line 42, in docopt_parser
    options, args = parse_defaults(doc)
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 480, in parse_defaults
    arguments = [Argument.parse(s) for s in split if not s.startswith('-')]
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 480, in <listcomp>
    arguments = [Argument.parse(s) for s in split if not s.startswith('-')]
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 171, in parse
    return class_(name, value, description)
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 114, in __init__
    self.type = eval(value[i + 1:])
  File "<string>", line 1, in <module>
NameError: name 'file' is not defined
(py36) jyao@Grayback:~/python_gui/argopt/examples$ python demo_advanced.py test
Traceback (most recent call last):
  File "demo_advanced.py", line 57, in <module>
    main()
  File "demo_advanced.py", line 42, in main
    epilog='That was fun!')
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_argopt.py", line 163, in argopt
    **_kwargs)
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_argopt.py", line 42, in docopt_parser
    options, args = parse_defaults(doc)
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 480, in parse_defaults
    arguments = [Argument.parse(s) for s in split if not s.startswith('-')]
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 480, in <listcomp>
    arguments = [Argument.parse(s) for s in split if not s.startswith('-')]
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 171, in parse
    return class_(name, value, description)
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 114, in __init__
    self.type = eval(value[i + 1:])
  File "<string>", line 1, in <module>
NameError: name 'file' is not defined
(py36) jyao@Grayback:~/python_gui/argopt/examples$ python demo_advanced.py -h
Traceback (most recent call last):
  File "demo_advanced.py", line 57, in <module>
    main()
  File "demo_advanced.py", line 42, in main
    epilog='That was fun!')
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_argopt.py", line 163, in argopt
    **_kwargs)
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_argopt.py", line 42, in docopt_parser
    options, args = parse_defaults(doc)
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 480, in parse_defaults
    arguments = [Argument.parse(s) for s in split if not s.startswith('-')]
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 480, in <listcomp>
    arguments = [Argument.parse(s) for s in split if not s.startswith('-')]
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 171, in parse
    return class_(name, value, description)
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 114, in __init__
    self.type = eval(value[i + 1:])
  File "<string>", line 1, in <module>
NameError: name 'file' is not defined
(py36) jyao@Grayback:~/python_gui/argopt/examples$ python demo_advanced.py -h
Traceback (most recent call last):
  File "demo_advanced.py", line 57, in <module>
    main()
  File "demo_advanced.py", line 42, in main
    epilog='That was fun!')
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_argopt.py", line 163, in argopt
    **_kwargs)
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_argopt.py", line 42, in docopt_parser
    options, args = parse_defaults(doc)
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 480, in parse_defaults
    arguments = [Argument.parse(s) for s in split if not s.startswith('-')]
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 480, in <listcomp>
    arguments = [Argument.parse(s) for s in split if not s.startswith('-')]
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 171, in parse
    return class_(name, value, description)
  File "/home/jyao/miniconda3/envs/py36/lib/python3.6/site-packages/argopt/_docopt.py", line 114, in __init__
    self.type = eval(value[i + 1:])
  File "<string>", line 1, in <module>
NameError: name 'file' is not defined
(py36) jyao@Grayback:~/python_gui/argopt/examples$ ls
demo_advanced.py  demo_basic_docopt.py  demo_basic.py
(py36) jyao@Grayback:~/python_gui/argopt/examples$ pip install -e git+https://github.com/casperdcl/argopt.git@master#egg=argopt
Obtaining argopt from git+https://github.com/casperdcl/argopt.git@master#egg=argopt
  Cloning https://github.com/casperdcl/argopt.git (to revision master) to ./src/argopt
  Running command git clone -q https://github.com/casperdcl/argopt.git /home/jyao/python_gui/argopt/examples/src/argopt
Installing collected packages: argopt
  Attempting uninstall: argopt
    Found existing installation: argopt 0.6.0
    Uninstalling argopt-0.6.0:
      Successfully uninstalled argopt-0.6.0
  Running setup.py develop for argopt
Successfully installed argopt
(py36) jyao@Grayback:~/python_gui/argopt/examples$ ls
demo_advanced.py  demo_basic_docopt.py  demo_basic.py  src
(py36) jyao@Grayback:~/python_gui/argopt/examples$ python demo_basic.py
Traceback (most recent call last):
  File "demo_basic.py", line 27, in <module>
    args = argopt(__doc__, version=__version__).parse_args()
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_argopt.py", line 163, in argopt
    **_kwargs)
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_argopt.py", line 42, in docopt_parser
    options, args = parse_defaults(doc)
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_docopt.py", line 479, in parse_defaults
    options = [Option.parse(s) for s in split if s.startswith('-')]
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_docopt.py", line 479, in <listcomp>
    options = [Option.parse(s) for s in split if s.startswith('-')]
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_docopt.py", line 231, in parse
    return class_(short, long, argcount, value, description, meta)
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_docopt.py", line 212, in __init__
    self.type = eval(value[i + 1:])
  File "<string>", line 1, in <module>
NameError: name 'file' is not defined
(py36) jyao@Grayback:~/python_gui/argopt/examples$ python demo_basic.py -h
Traceback (most recent call last):
  File "demo_basic.py", line 27, in <module>
    args = argopt(__doc__, version=__version__).parse_args()
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_argopt.py", line 163, in argopt
    **_kwargs)
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_argopt.py", line 42, in docopt_parser
    options, args = parse_defaults(doc)
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_docopt.py", line 479, in parse_defaults
    options = [Option.parse(s) for s in split if s.startswith('-')]
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_docopt.py", line 479, in <listcomp>
    options = [Option.parse(s) for s in split if s.startswith('-')]
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_docopt.py", line 231, in parse
    return class_(short, long, argcount, value, description, meta)
  File "/home/jyao/python_gui/argopt/examples/src/argopt/argopt/_docopt.py", line 212, in __init__
    self.type = eval(value[i + 1:])
  File "<string>", line 1, in <module>
NameError: name 'file' is not defined
casperdcl commented 4 years ago

Ah that's a new issue (opened #9). You could try building for just python 2.7 for now.

jiangweiyao commented 4 years ago

Packaged into conda. See link below. Going to figure out how to get it into a more public channel like conda-forge next.

https://anaconda.org/jiangweiyao/argopt

jiangweiyao commented 4 years ago

Packaged it into conda-forge now as well and tested it. I think this is done and resolve, so closing it.

casperdcl commented 4 years ago

Great; thanks!