PyBDR/
├── pybdr/ # Main package source code
│ ├── __init__.py
│ ├── algorithm/
│ ├── dynamic_system/
│ ├── geometry/
│ ├── model/
│ ├── util/
│ └── misc/
│
├── test/ # Test files
├── benchmarks/ # Benchmark scripts
├── doc/ # Documentation and images
│
├── environment.yml # Conda environment specification (MAIN INSTALL FILE)
├── pyproject.toml # Modern Python package configuration
├── setup.py # Package setup script (for pip install -e .)
├── MANIFEST.in # Specifies files to include in distribution
│
├── README.md # Project overview with quick install guide
├── INSTALL.md # Detailed installation instructions
├── LICENSE.md # License information
│
└── .gitignore # Git ignore rules
conda env create -f environment.yml
conda activate pybdr
pip install -e .-
environment.yml- Conda environment definition- Installs Python 3.8+
- Installs cddlib (system dependency)
- Installs all Python dependencies
- This is the main file users interact with
-
pyproject.toml- Modern Python packaging metadata- Package name, version, description
- Dependencies list
- Build system configuration
- Tool configurations (pytest, black, mypy)
-
setup.py- Traditional setup script- Works with
pip install -e . - Reads metadata from pyproject.toml
- Defines install_requires directly
- Works with
-
MANIFEST.in- Distribution manifest- Specifies which files to include in package distribution
- Includes docs, environment.yml, README, etc.
-
README.md- Project overview- Quick installation guide
- Links to detailed documentation
- Project description and motivation
-
INSTALL.md- Detailed installation guide- Step-by-step conda installation
- Troubleshooting section
- Verification instructions
.gitignore- Git exclusions- Build artifacts
- Python bytecode
- Virtual environments
- IDE files
- ❌
requirements.txt- Replaced by environment.yml - ❌
requirements-conda.txt- Replaced by environment.yml - ❌
INSTALL_QUICKSTART.md- Merged into INSTALL.md - ❌
PACKAGING_SUMMARY.md- Development notes, not needed
- Single source of truth:
environment.ymlfor all dependencies - One clear installation path: Conda-based workflow
- No confusion: No multiple requirement files
- Modern standards: Uses pyproject.toml
- Simple docs: One installation guide (INSTALL.md)
- Less confusion - One way to install, clearly documented
- Handles system deps - cddlib installed automatically
- No build errors - Conda manages C library dependencies
- Easy to maintain - Dependencies in one place
- User-friendly - Simple 3-step installation
When ready to distribute:
# Build package
python -m build
# Distribute via PyPI (if desired)
python -m twine upload dist/*Users can then install with conda from the repository or via PyPI with conda-installed cddlib.