hi,
I wrote a little pyinvoke script to create a compas dev env, with the objective of paving the way to easily build a coherent development environment, which can be involved.
functionality
- builds a
condaenv with binary modules preinstalled - git clones’ the source code of published
compasrepo’s- optionally creates fork’d repo’s such to facilitate pull requests
- runs a
pip install -e .which keep sources in sync with yoursite-packagesvia a symbolic link - running
pip installis interesting, since it’ll make explicit how the variouscompas_*modules are interlinked. For examplecompas_fabrequirescompas>=0.11,<0.14due to upstream changes inMeshsee issue #128. It’s relevant to seecompas( frommaster) being uninstalled here, and good to seecompas_fabhaving pinned dependencies
- finds compas_* repo’s and performs a pull
- run
pytestsin allcompas_*modules
why?
In short, this helps to live on the bleeding edge
a little easier.
Installing software is an annoying barrier to entry, if there’s a clear way how the install is put together, that helps…
Its useful to see how the different repos are interlinked.
If changes are made to compas it’ll propagate to repos with this dependency, and thus its useful to see whether libs that depend on compas are affected by changes.
as an example: compas_tna doesn’t specify a compas versions in requirements.txt, so its easy to have mistakes such as:
File "/Users/jelleferinga/Code/CADCAM/compas_tna/src/compas_tna/diagrams/formdiagram.py", line 17, in <module>
from compas.datastructures import network_find_cycles
ImportError: cannot import name 'network_find_cycles' from 'compas.datastructures' (/Users/jelleferinga/miniconda3/envs/compas/lib/python3.8/site-packages/compas/datastructures/__init__.py)
Two libs don’t install correct via this script as of yet:
-
compas_libigl( libigl only available for Linux ) -
conda_loadpath( missing setup.py )
