-
Notifications
You must be signed in to change notification settings - Fork 647
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
Move parmed to optional dependency #2477
Conversation
Codecov Report
@@ Coverage Diff @@
## develop #2477 +/- ##
==========================================
+ Coverage 90.59% 90.69% +0.1%
==========================================
Files 170 170
Lines 22860 22860
Branches 2944 2944
==========================================
+ Hits 20709 20733 +24
+ Misses 1558 1540 -18
+ Partials 593 587 -6
Continue to review full report at Codecov.
|
If we change our import policy then we should have a quick discussion on the dev list. @lilyminium please propose something with your rationale. If there's a generic way to detect classes without importing the package then we should codify it. Also, could we mock anything that it not imported so that the autodetection works but then spits put an automated message that the package XYZ needs to be installed? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we change our import policy then we should have a quick discussion on the dev list. @lilyminium please propose something with your rationale.
Yes, pretty much like that. If the dev list agrees we should move ParmEd from the dependencies and put converters in their own module, we could consolidate ParmEdParser and ParmEdReader into some kind of
or the class name in the event that there are multiple potentially parseable classes, e.g.
That's less of a worry than converting to the package. Maybe I'm unimaginative but I wouldn't know how to obtain a ParmEd, etc. class object without actually having it installed. Neither ParmEdReader nor ParmEdParser need to import ParmEd. |
@@ -25,7 +25,6 @@ | |||
import copy | |||
import inspect | |||
import mmtf | |||
import parmed as pmd |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given that the standard library has well-designed mocking machinery, is there a reason not to use that approach? I think you can modify mocked objects/methods with pretty much any values you want so they are easy to distinguish from the "real thing."
try:
import parmed as pmd:
except ImportError:
from unittest import mock
# custom mocking modifications as needed
sys.modules['pmd'] = mock.MagicMock()
sys.modules['pmd.Structure'] = mock.MagicMock()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't know about this, thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tylerjereddy I understand how mocking is super helpful for unit testing but I can't figure out how you would use it for type recognition without, at some point, inspecting the module or class name?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What does the mocked object need to be able to do?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here it would ideally replace if isinstance(obj, pmd.Structure)
as the second argument (mock parmed structure).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This does the trick for me locally, with full diff (to Richard's most recent commit) below the fold & full test suite passing locally:
try:
import parmed as pmd
except ImportError:
from unittest import mock
pmd = mock.MagicMock(Structure=type(None))
Full diff:
diff --git a/package/MDAnalysis/core/_get_readers.py b/package/MDAnalysis/core/_get_readers.py
index 79e65a4c2..0194eb3c1 100644
--- a/package/MDAnalysis/core/_get_readers.py
+++ b/package/MDAnalysis/core/_get_readers.py
@@ -25,6 +25,13 @@ from six import raise_from
import copy
import inspect
import mmtf
+
+try:
+ import parmed as pmd
+except ImportError:
+ from unittest import mock
+ pmd = mock.MagicMock(Structure=type(None))
+
import numpy as np
from MDAnalysis.lib.util import isstream
@@ -32,15 +39,6 @@ from .. import _READERS, _PARSERS, _MULTIFRAME_WRITERS, _SINGLEFRAME_WRITERS, _C
from ..lib import util
-def _is_parmed_object(thing):
- module = inspect.getmodule(thing.__class__)
-
- if module is None:
- return False
- else:
- return module.__name__.startswith('parmed')
-
-
def get_reader_for(filename, format=None):
"""Return the appropriate trajectory reader class for `filename`.
@@ -102,7 +100,7 @@ def get_reader_for(filename, format=None):
elif isinstance(filename, mmtf.MMTFDecoder):
# mmtf slurps mmtf object
format = 'MMTF'
- elif _is_parmed_object(filename):
+ elif isinstance(filename, pmd.Structure):
format = 'PARMED'
else:
# else let the guessing begin!
@@ -247,7 +245,7 @@ def get_parser_for(filename, format=None):
if format is None:
if isinstance(filename, mmtf.MMTFDecoder):
format = 'mmtf'
- elif _is_parmed_object(filename):
+ elif isinstance(filename, pmd.Structure):
format = 'PARMED'
else:
format = util.guess_format(filename)
diff --git a/testsuite/MDAnalysisTests/coordinates/test_parmed.py b/testsuite/MDAnalysisTests/coordinates/test_parmed.py
index 319f43e7a..f9c624cf9 100644
--- a/testsuite/MDAnalysisTests/coordinates/test_parmed.py
+++ b/testsuite/MDAnalysisTests/coordinates/test_parmed.py
@@ -46,17 +46,6 @@ from MDAnalysisTests.datafiles import (
pmd = pytest.importorskip('parmed')
-from MDAnalysis.core._get_readers import _is_parmed_object
-
-
-@pytest.mark.parametrize('thing,reference', [
- ('foo', False),
- ([1,2,3], False),
- (pmd.load_file(GRO), True),
-])
-def test_is_parmed_object(thing, reference):
- assert _is_parmed_object(thing) == reference
-
class TestParmEdReaderGRO:
That said, I'm not going to block on this---I do like that I don't need to add a new function/unit test with my approach since we are leaning on the std library.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was a cool way to deal with missing imports! I'm not sure it's relevant any more now we're doing format hints though (#2533)
FYI, the inclusion of
OS: macOS 10.15.3 |
Does using the conda-forge package fix this?
…On Mon, Feb 3, 2020 at 09:42, Rocco Meli ***@***.***> wrote:
FYI, the inclusion of parmed causes installation problems on macOS:
Obtaining file:///Users/rmeli/Documents/git/software/mdanalysis/package
Requirement already satisfied: numpy>=1.13.3 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from MDAnalysis==0.20.2.dev0) (1.17.3)
Requirement already satisfied: biopython>=1.71 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from MDAnalysis==0.20.2.dev0) (1.74)
Requirement already satisfied: networkx>=1.0 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from MDAnalysis==0.20.2.dev0) (2.3)
Requirement already satisfied: GridDataFormats>=0.4.0 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from MDAnalysis==0.20.2.dev0) (0.5.0)
Requirement already satisfied: six>=1.4.0 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from MDAnalysis==0.20.2.dev0) (1.13.0)
Requirement already satisfied: mmtf-python>=1.0.0 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from MDAnalysis==0.20.2.dev0) (1.1.2)
Requirement already satisfied: joblib>=0.12 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from MDAnalysis==0.20.2.dev0) (0.13.2)
Requirement already satisfied: scipy>=1.0.0 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from MDAnalysis==0.20.2.dev0) (1.3.2)
Requirement already satisfied: matplotlib>=1.5.1 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from MDAnalysis==0.20.2.dev0) (3.1.2)
Requirement already satisfied: mock in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from MDAnalysis==0.20.2.dev0) (3.0.5)
Collecting parmed
Using cached https://files.pythonhosted.org/packages/ba/a2/d6a9135efd6b1f7d70b79019a2fb2cd1472fceed979e66deaba64e2b641c/ParmEd-3.2.0.tar.gz
Requirement already satisfied: gsd>=1.4.0 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from MDAnalysis==0.20.2.dev0) (1.8.0)
Requirement already satisfied: decorator>=4.3.0 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from networkx>=1.0->MDAnalysis==0.20.2.dev0) (4.4.1)
Requirement already satisfied: msgpack>=0.5.6 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from mmtf-python>=1.0.0->MDAnalysis==0.20.2.dev0) (0.6.1)
Requirement already satisfied: python-dateutil>=2.1 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from matplotlib>=1.5.1->MDAnalysis==0.20.2.dev0) (2.8.1)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from matplotlib>=1.5.1->MDAnalysis==0.20.2.dev0) (2.4.5)
Requirement already satisfied: cycler>=0.10 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from matplotlib>=1.5.1->MDAnalysis==0.20.2.dev0) (0.10.0)
Requirement already satisfied: kiwisolver>=1.0.1 in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from matplotlib>=1.5.1->MDAnalysis==0.20.2.dev0) (1.1.0)
Requirement already satisfied: setuptools in /Users/rmeli/miniconda3/envs/mda-dev/lib/python3.6/site-packages (from kiwisolver>=1.0.1->matplotlib>=1.5.1->MDAnalysis==0.20.2.dev0) (42.0.2.post20191201)
Building wheels for collected packages: parmed
Building wheel for parmed (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: /Users/rmeli/miniconda3/envs/mda-dev/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-install-j_2qhq_k/parmed/setup.py'"'"'; __file__='"'"'/private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-install-j_2qhq_k/parmed/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-wheel-zjgfscy4 --python-tag cp36
cwd: /private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-install-j_2qhq_k/parmed/
Complete output (164 lines):
running bdist_wheel
running build
running build_py
creating build
creating build/lib.macosx-10.7-x86_64-3.6
creating build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/symmetry.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/periodic_table.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/_version.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/constants.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/residue.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/geometry.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/structure.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/parameters.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/exceptions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/scripts.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/topologyobjects.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/vec3.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
creating build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/mask.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/_tinkerparm.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/netcdffiles.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/_amberparm.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/titratable_residues.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/_chamberparm.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/asciicrd.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/offlib.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/parameters.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/readparm.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/amberformat.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
creating build/lib.macosx-10.7-x86_64-3.6/parmed/modeller
copying parmed/modeller/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/modeller
copying parmed/modeller/residue.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/modeller
copying parmed/modeller/standardtemplates.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/modeller
creating build/lib.macosx-10.7-x86_64-3.6/parmed/tinker
copying parmed/tinker/system.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tinker
copying parmed/tinker/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tinker
copying parmed/tinker/tinkerfiles.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tinker
copying parmed/tinker/topologyobjects.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tinker
copying parmed/tinker/parameterfile.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tinker
creating build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/prefix.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/unit_definitions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/constants.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/mymatrix.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/unit_math.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/unit.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/standard_dimensions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/baseunit.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/unit_operators.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/quantity.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/basedimension.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
creating build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
copying parmed/amber/mdin/pb.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
copying parmed/amber/mdin/cntrl.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
copying parmed/amber/mdin/ewald.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
copying parmed/amber/mdin/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
copying parmed/amber/mdin/qmmm.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
copying parmed/amber/mdin/mdin.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
creating build/lib.macosx-10.7-x86_64-3.6/parmed/charmm
copying parmed/charmm/charmmcrds.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/charmm
copying parmed/charmm/_charmmfile.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/charmm
copying parmed/charmm/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/charmm
copying parmed/charmm/psf.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/charmm
copying parmed/charmm/parameters.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/charmm
creating build/lib.macosx-10.7-x86_64-3.6/parmed/formats
creating build/lib.macosx-10.7-x86_64-3.6/parmed/formats/pdbx
copying parmed/formats/pdbx/PdbxContainers.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats/pdbx
copying parmed/formats/pdbx/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats/pdbx
copying parmed/formats/pdbx/PdbxReader.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats/pdbx
copying parmed/formats/pdbx/PdbxWriter.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats/pdbx
creating build/lib.macosx-10.7-x86_64-3.6/parmed/rosetta
copying parmed/rosetta/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/rosetta
copying parmed/rosetta/pose.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/rosetta
creating build/lib.macosx-10.7-x86_64-3.6/parmed/rdkit
copying parmed/rdkit/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/rdkit
copying parmed/rdkit/rdkit.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/rdkit
copying parmed/formats/registry.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
copying parmed/formats/mol2.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
copying parmed/formats/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
copying parmed/formats/psf.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
copying parmed/formats/pdb.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
copying parmed/formats/sdf.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
copying parmed/formats/pqr.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
creating build/lib.macosx-10.7-x86_64-3.6/parmed/utils
creating build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_output.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/FortranRecordWriter.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/config.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/FortranRecordReader.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_edit_descriptors.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_parser.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_input.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_lexer.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_exceptions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_misc.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
creating build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/openmm/xmlfile.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/openmm/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/openmm/utils.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/openmm/parameters.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/openmm/reporters.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/openmm/topsystem.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/utils/pairlist.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/timer.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/io.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/pandautils.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/netcdf.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/six.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/decorators.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
creating build/lib.macosx-10.7-x86_64-3.6/parmed/gromacs
copying parmed/gromacs/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/gromacs
copying parmed/gromacs/gromacsgro.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/gromacs
copying parmed/gromacs/_gromacsfile.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/gromacs
copying parmed/gromacs/_cpp.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/gromacs
copying parmed/gromacs/gromacstop.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/gromacs
creating build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/argumentlist.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/parmed_cmd.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/actions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/addljtype.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/parmlist.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/checkvalidity.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/coarsegrain.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/exceptions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/add1264.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/logos.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/changeradii.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
creating build/lib.macosx-10.7-x86_64-3.6/parmed/namd
copying parmed/namd/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/namd
copying parmed/namd/namdbinfiles.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/namd
creating build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
copying parmed/tools/gui/_guiactions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
copying parmed/tools/gui/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
copying parmed/tools/gui/guiactions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
copying parmed/tools/gui/guifiletools.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
copying parmed/tools/gui/guitools.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
copying parmed/tools/gui/_guiwidgets.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
creating build/lib.macosx-10.7-x86_64-3.6/parmed/tools/simulations
copying parmed/tools/simulations/sanderapi.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/simulations
copying parmed/tools/simulations/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/simulations
copying parmed/tools/simulations/openmm.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/simulations
creating build/lib.macosx-10.7-x86_64-3.6/parmed/modeller/data
copying parmed/modeller/data/standard_residues.lib -> build/lib.macosx-10.7-x86_64-3.6/parmed/modeller/data
UPDATING build/lib.macosx-10.7-x86_64-3.6/parmed/_version.py
set build/lib.macosx-10.7-x86_64-3.6/parmed/_version.py to '3.2.0'
running build_ext
building 'parmed.amber._rdparm' extension
creating build/temp.macosx-10.7-x86_64-3.6
creating build/temp.macosx-10.7-x86_64-3.6/src
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/rmeli/miniconda3/envs/mda-dev/include -arch x86_64 -I/Users/rmeli/miniconda3/envs/mda-dev/include -arch x86_64 -I/private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-install-j_2qhq_k/parmed/src -I/Users/rmeli/miniconda3/envs/mda-dev/include/python3.6m -c src/_rdparm.cpp -o build/temp.macosx-10.7-x86_64-3.6/src/_rdparm.o
warning: include path for stdlibc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead [-Wstdlibcxx-not-found]
In file included from src/_rdparm.cpp:17:
/private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-install-j_2qhq_k/parmed/src/readparm.h:5:10: fatal error: 'locale' file not found
#include <locale>
^~~~~~~~
1 warning and 1 error generated.
error: command 'clang' failed with exit status 1
----------------------------------------
ERROR: Failed building wheel for parmed
Running setup.py clean for parmed
Failed to build parmed
Installing collected packages: parmed, MDAnalysis
Running setup.py install for parmed ... error
ERROR: Command errored out with exit status 1:
command: /Users/rmeli/miniconda3/envs/mda-dev/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-install-j_2qhq_k/parmed/setup.py'"'"'; __file__='"'"'/private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-install-j_2qhq_k/parmed/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-record-492qkw53/install-record.txt --single-version-externally-managed --compile
cwd: /private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-install-j_2qhq_k/parmed/
Complete output (164 lines):
running install
running build
running build_py
creating build
creating build/lib.macosx-10.7-x86_64-3.6
creating build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/symmetry.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/periodic_table.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/_version.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/constants.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/residue.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/geometry.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/structure.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/parameters.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/exceptions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/scripts.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/topologyobjects.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
copying parmed/vec3.py -> build/lib.macosx-10.7-x86_64-3.6/parmed
creating build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/mask.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/_tinkerparm.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/netcdffiles.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/_amberparm.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/titratable_residues.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/_chamberparm.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/asciicrd.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/offlib.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/parameters.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/readparm.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
copying parmed/amber/amberformat.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber
creating build/lib.macosx-10.7-x86_64-3.6/parmed/modeller
copying parmed/modeller/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/modeller
copying parmed/modeller/residue.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/modeller
copying parmed/modeller/standardtemplates.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/modeller
creating build/lib.macosx-10.7-x86_64-3.6/parmed/tinker
copying parmed/tinker/system.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tinker
copying parmed/tinker/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tinker
copying parmed/tinker/tinkerfiles.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tinker
copying parmed/tinker/topologyobjects.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tinker
copying parmed/tinker/parameterfile.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tinker
creating build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/prefix.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/unit_definitions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/constants.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/mymatrix.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/unit_math.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/unit.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/standard_dimensions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/baseunit.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/unit_operators.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/quantity.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
copying parmed/unit/basedimension.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/unit
creating build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
copying parmed/amber/mdin/pb.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
copying parmed/amber/mdin/cntrl.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
copying parmed/amber/mdin/ewald.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
copying parmed/amber/mdin/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
copying parmed/amber/mdin/qmmm.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
copying parmed/amber/mdin/mdin.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/amber/mdin
creating build/lib.macosx-10.7-x86_64-3.6/parmed/charmm
copying parmed/charmm/charmmcrds.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/charmm
copying parmed/charmm/_charmmfile.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/charmm
copying parmed/charmm/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/charmm
copying parmed/charmm/psf.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/charmm
copying parmed/charmm/parameters.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/charmm
creating build/lib.macosx-10.7-x86_64-3.6/parmed/formats
creating build/lib.macosx-10.7-x86_64-3.6/parmed/formats/pdbx
copying parmed/formats/pdbx/PdbxContainers.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats/pdbx
copying parmed/formats/pdbx/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats/pdbx
copying parmed/formats/pdbx/PdbxReader.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats/pdbx
copying parmed/formats/pdbx/PdbxWriter.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats/pdbx
creating build/lib.macosx-10.7-x86_64-3.6/parmed/rosetta
copying parmed/rosetta/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/rosetta
copying parmed/rosetta/pose.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/rosetta
creating build/lib.macosx-10.7-x86_64-3.6/parmed/rdkit
copying parmed/rdkit/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/rdkit
copying parmed/rdkit/rdkit.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/rdkit
copying parmed/formats/registry.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
copying parmed/formats/mol2.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
copying parmed/formats/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
copying parmed/formats/psf.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
copying parmed/formats/pdb.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
copying parmed/formats/sdf.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
copying parmed/formats/pqr.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/formats
creating build/lib.macosx-10.7-x86_64-3.6/parmed/utils
creating build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_output.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/FortranRecordWriter.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/config.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/FortranRecordReader.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_edit_descriptors.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_parser.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_input.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_lexer.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_exceptions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
copying parmed/utils/fortranformat/_misc.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils/fortranformat
creating build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/openmm/xmlfile.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/openmm/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/openmm/utils.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/openmm/parameters.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/openmm/reporters.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/openmm/topsystem.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/openmm
copying parmed/utils/pairlist.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/timer.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/io.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/pandautils.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/netcdf.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/six.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
copying parmed/utils/decorators.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/utils
creating build/lib.macosx-10.7-x86_64-3.6/parmed/gromacs
copying parmed/gromacs/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/gromacs
copying parmed/gromacs/gromacsgro.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/gromacs
copying parmed/gromacs/_gromacsfile.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/gromacs
copying parmed/gromacs/_cpp.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/gromacs
copying parmed/gromacs/gromacstop.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/gromacs
creating build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/argumentlist.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/parmed_cmd.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/actions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/addljtype.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/parmlist.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/checkvalidity.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/coarsegrain.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/exceptions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/add1264.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/logos.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
copying parmed/tools/changeradii.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools
creating build/lib.macosx-10.7-x86_64-3.6/parmed/namd
copying parmed/namd/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/namd
copying parmed/namd/namdbinfiles.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/namd
creating build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
copying parmed/tools/gui/_guiactions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
copying parmed/tools/gui/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
copying parmed/tools/gui/guiactions.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
copying parmed/tools/gui/guifiletools.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
copying parmed/tools/gui/guitools.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
copying parmed/tools/gui/_guiwidgets.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/gui
creating build/lib.macosx-10.7-x86_64-3.6/parmed/tools/simulations
copying parmed/tools/simulations/sanderapi.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/simulations
copying parmed/tools/simulations/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/simulations
copying parmed/tools/simulations/openmm.py -> build/lib.macosx-10.7-x86_64-3.6/parmed/tools/simulations
creating build/lib.macosx-10.7-x86_64-3.6/parmed/modeller/data
copying parmed/modeller/data/standard_residues.lib -> build/lib.macosx-10.7-x86_64-3.6/parmed/modeller/data
UPDATING build/lib.macosx-10.7-x86_64-3.6/parmed/_version.py
set build/lib.macosx-10.7-x86_64-3.6/parmed/_version.py to '3.2.0'
running build_ext
building 'parmed.amber._rdparm' extension
creating build/temp.macosx-10.7-x86_64-3.6
creating build/temp.macosx-10.7-x86_64-3.6/src
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/rmeli/miniconda3/envs/mda-dev/include -arch x86_64 -I/Users/rmeli/miniconda3/envs/mda-dev/include -arch x86_64 -I/private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-install-j_2qhq_k/parmed/src -I/Users/rmeli/miniconda3/envs/mda-dev/include/python3.6m -c src/_rdparm.cpp -o build/temp.macosx-10.7-x86_64-3.6/src/_rdparm.o
warning: include path for stdlibc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead [-Wstdlibcxx-not-found]
In file included from src/_rdparm.cpp:17:
/private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-install-j_2qhq_k/parmed/src/readparm.h:5:10: fatal error: 'locale' file not found
#include <locale>
^~~~~~~~
1 warning and 1 error generated.
error: command 'clang' failed with exit status 1
----------------------------------------
ERROR: Command errored out with exit status 1: /Users/rmeli/miniconda3/envs/mda-dev/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-install-j_2qhq_k/parmed/setup.py'"'"'; __file__='"'"'/private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-install-j_2qhq_k/parmed/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/r0/2dklzyn57d59g13_21b6kt7h0000gp/T/pip-record-492qkw53/install-record.txt --single-version-externally-managed --compile Check the logs for full command output.
------------------------------
OS: macOS 10.15.3
Compiler: clang
Python: 3.6.7
MDAnalysis: 6d6b862
<6d6b862>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2477?email_source=notifications&email_token=ACGSGB7WMNCFXLRGEMM5RA3RA7RGXA5CNFSM4KMLTBM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKTE3NY#issuecomment-581324215>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACGSGB2M35MVZV3P2TA3NZTRA7RGXANCNFSM4KMLTBMQ>
.
|
@richardjgowers I was testing exactly that while you asked. ;) Using
My report was mainly to support the case of |
@RMeli can you report that upstream to them? I can't reproduce on 10.14.5 so I think it's another one of the great new features in .15. |
I meant the compilation issue on installing via pip?
…On Sun, Feb 9, 2020 at 14:41, Rocco Meli ***@***.***> wrote:
ParmEd/ParmEd#1077 <ParmEd/ParmEd#1077>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2477?email_source=notifications&email_token=ACGSGBY77Q5K5BUH67DHRMDRCAIZTA5CNFSM4KMLTBM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELGOFXY#issuecomment-583852767>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACGSGBYDL72DFTPWWUD2HE3RCAIZTANCNFSM4KMLTBMQ>
.
|
@richardjgowers sorry for the misunderstanding, I changed the issue. |
@lilyminium I've pushed to your branch to make this detect parmed stuff without importing parmed |
Thanks @richardjgowers and @RMeli . With limited time in February (😔) I'm prioritising the user guide but I will work on this when I can |
3a11c9c
to
6bf1fc2
Compare
Ok I've force pushed and fixed this up with the new HINT stuff (#2533). So now parmed is optional, but still installed for our CI testing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just to make sure: even if a user does not have parmed installed, they are still able to use MDAnalysis without any issues (except not being able to work with pmd objects)?
(Do we still have a "minimal" test where we only install a limited set of packages?)
@@ -163,8 +163,9 @@ def convert(self, obj): | |||
try: | |||
import parmed as pmd | |||
except ModuleNotFoundError: | |||
raise ValueError('Parmed is required for ParmEdConverter but ' | |||
'is not installed.') | |||
raise ImportError('ParmEd is required for ParmEdConverter but ' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we import coordinates.ParmEd
anywhere, i.e., is it guaranteed that this does not break the installation for anyone not having ParmEd?
Yes, everything works except parmed without parmed. I’ll double check the
minimal dependency build.
…On Tue, Feb 18, 2020 at 08:23, Oliver Beckstein ***@***.***> wrote:
***@***.**** requested changes on this pull request.
Just to make sure: even if a user does not have parmed installed, they are
still able to use MDAnalysis without any issues (except not being able to
work with pmd objects)?
(Do we still have a "minimal" test where we only install a limited set of
packages?)
------------------------------
In package/MDAnalysis/coordinates/ParmEd.py
<#2477 (comment)>
:
> @@ -163,8 +163,9 @@ def convert(self, obj):
try:
import parmed as pmd
except ModuleNotFoundError:
- raise ValueError('Parmed is required for ParmEdConverter but '
- 'is not installed.')
+ raise ImportError('ParmEd is required for ParmEdConverter but '
Do we import coordinates.ParmEd anywhere, i.e., is it guaranteed that
this does not break the installation for anyone *not* having ParmEd?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2477?email_source=notifications&email_token=ACGSGB6BRQXZ5HLGBAKIF4DRDOLJJA5CNFSM4KMLTBM2YY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOCV3U4EQ#pullrequestreview-360140306>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACGSGB6DMEQJUT5DBNDIFOTRDOLJJANCNFSM4KMLTBMQ>
.
|
Ok I've tweaked travis so parmed isn't installed in the minimal build, if this works then hopefully @orbeckst 's question is answered |
make minimal build really minimal (ie no duecredit or parmed)
Changes made in this Pull Request:
If MDAnalysis is going to expand its interoperability with #2468 and more, it seems best to not make users install every library under the sun.
PR Checklist