Warning, /iDDS/MIGRATION_SUMMARY.md is written in an unsupported language. File is not indexed.
0001 # pyproject.toml Migration Summary
0002
0003 ## What I've Done
0004
0005 Successfully converted the iDDS project from `setup.py` to modern `pyproject.toml` configuration.
0006
0007 ### Files Created
0008
0009 1. **Root level:**
0010 - `pyproject.toml` - Meta-package configuration with tool settings
0011 - `build_all.py` - Python script to build/install all packages
0012 - `Makefile` - Convenience commands
0013 - `PYPROJECT_MIGRATION.md` - Comprehensive migration guide
0014
0015 2. **Per-package pyproject.toml files:**
0016 - `common/pyproject.toml` - Common utilities (v2.2.21)
0017 - `main/pyproject.toml` - Server package (v2.2.21)
0018 - `prompt/pyproject.toml` - Prompt agent (v2.0.0)
0019
0020 ### Key Features
0021
0022 ✓ **Modern Standards**: Follows PEP 517, 518, and 621
0023 ✓ **Declarative Config**: All metadata in TOML format
0024 ✓ **Namespace Packages**: Properly configured to avoid conflicts
0025 ✓ **Tool Integration**: Configured black, pytest, mypy, flake8
0026 ✓ **Build Script**: Simple Python script replaces old meta-setup.py
0027 ✓ **Make Support**: Convenient make commands for common tasks
0028
0029 ### Quick Start
0030
0031 ```bash
0032 # Install all packages in development mode
0033 python build_all.py develop
0034
0035 # Or use make
0036 make develop
0037
0038 # Build wheels
0039 make build
0040
0041 # Clean artifacts
0042 make clean
0043 ```
0044
0045 ### Completed Migration
0046
0047 ✅ **All package pyproject.toml files created**:
0048 - client/pyproject.toml ✓
0049 - atlas/pyproject.toml ✓
0050 - workflow/pyproject.toml ✓
0051 - doma/pyproject.toml ✓
0052 - website/pyproject.toml ✓
0053 - monitor/pyproject.toml ✓
0054 - common/pyproject.toml ✓
0055 - main/pyproject.toml ✓
0056 - prompt/pyproject.toml ✓
0057
0058 ### Next Steps
0059
0060 1. **Test the migration**:
0061 ```bash
0062 python build_all.py clean
0063 python build_all.py develop
0064 pytest
0065 ```
0066
0067 3. **Update CI/CD** pipelines to use new build system
0068
0069 4. **Deprecate old setup.py** files (keep for reference initially)
0070
0071 ### Benefits
0072
0073 - **Faster installs**: pip can use pre-built wheels
0074 - **Better dependency resolution**: Modern pip resolves conflicts better
0075 - **Standard tooling**: Works with all modern Python tools
0076 - **Cleaner code**: No custom install/wheel commands needed
0077 - **Type checking**: mypy configuration included
0078 - **Code formatting**: black configuration included
0079
0080 ### Package Structure
0081
0082 ```
0083 iDDS/
0084 ├── pyproject.toml # Root config + tool settings
0085 ├── build_all.py # Build script
0086 ├── Makefile # Convenience commands
0087 ├── common/
0088 │ ├── pyproject.toml # Common package
0089 │ └── lib/idds/common/
0090 ├── main/
0091 │ ├── pyproject.toml # Server package
0092 │ └── lib/idds/core/
0093 ├── prompt/
0094 │ ├── pyproject.toml # Prompt package
0095 │ └── lib/idds/prompt/
0096 └── [other packages...]
0097 ```
0098
0099 ### Dependencies
0100
0101 The dependency graph is:
0102 ```
0103 idds-common (base)
0104 ├── idds-server
0105 ├── idds-client
0106 ├── idds-atlas
0107 ├── idds-doma
0108 ├── idds-workflow
0109 ├── idds-prompt
0110 ├── idds-website
0111 └── idds-monitor
0112 ```
0113
0114 All packages properly declare `idds-common` as a dependency.