Back to home page

EIC code displayed by LXR

 
 

    


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.