morphml 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- morphml-1.0.0/CHANGELOG.md +135 -0
- morphml-1.0.0/CONTRIBUTING.md +248 -0
- morphml-1.0.0/LICENSE +21 -0
- morphml-1.0.0/PKG-INFO +434 -0
- morphml-1.0.0/README.md +356 -0
- morphml-1.0.0/morphml/__init__.py +14 -0
- morphml-1.0.0/morphml/api/__init__.py +26 -0
- morphml-1.0.0/morphml/api/app.py +326 -0
- morphml-1.0.0/morphml/api/auth.py +193 -0
- morphml-1.0.0/morphml/api/client.py +338 -0
- morphml-1.0.0/morphml/api/models.py +132 -0
- morphml-1.0.0/morphml/api/rate_limit.py +192 -0
- morphml-1.0.0/morphml/benchmarking/__init__.py +36 -0
- morphml-1.0.0/morphml/benchmarking/comparison.py +430 -0
- morphml-1.0.0/morphml/benchmarks/__init__.py +56 -0
- morphml-1.0.0/morphml/benchmarks/comparator.py +409 -0
- morphml-1.0.0/morphml/benchmarks/datasets.py +280 -0
- morphml-1.0.0/morphml/benchmarks/metrics.py +199 -0
- morphml-1.0.0/morphml/benchmarks/openml_suite.py +201 -0
- morphml-1.0.0/morphml/benchmarks/problems.py +289 -0
- morphml-1.0.0/morphml/benchmarks/suite.py +318 -0
- morphml-1.0.0/morphml/cli/__init__.py +5 -0
- morphml-1.0.0/morphml/cli/commands/experiment.py +329 -0
- morphml-1.0.0/morphml/cli/main.py +457 -0
- morphml-1.0.0/morphml/cli/quickstart.py +312 -0
- morphml-1.0.0/morphml/config.py +278 -0
- morphml-1.0.0/morphml/constraints/__init__.py +19 -0
- morphml-1.0.0/morphml/constraints/handler.py +205 -0
- morphml-1.0.0/morphml/constraints/predicates.py +285 -0
- morphml-1.0.0/morphml/core/__init__.py +3 -0
- morphml-1.0.0/morphml/core/crossover.py +449 -0
- morphml-1.0.0/morphml/core/dsl/README.md +359 -0
- morphml-1.0.0/morphml/core/dsl/__init__.py +72 -0
- morphml-1.0.0/morphml/core/dsl/ast_nodes.py +364 -0
- morphml-1.0.0/morphml/core/dsl/compiler.py +318 -0
- morphml-1.0.0/morphml/core/dsl/layers.py +368 -0
- morphml-1.0.0/morphml/core/dsl/lexer.py +336 -0
- morphml-1.0.0/morphml/core/dsl/parser.py +455 -0
- morphml-1.0.0/morphml/core/dsl/search_space.py +386 -0
- morphml-1.0.0/morphml/core/dsl/syntax.py +199 -0
- morphml-1.0.0/morphml/core/dsl/type_system.py +361 -0
- morphml-1.0.0/morphml/core/dsl/validator.py +386 -0
- morphml-1.0.0/morphml/core/graph/__init__.py +40 -0
- morphml-1.0.0/morphml/core/graph/edge.py +124 -0
- morphml-1.0.0/morphml/core/graph/graph.py +507 -0
- morphml-1.0.0/morphml/core/graph/mutations.py +409 -0
- morphml-1.0.0/morphml/core/graph/node.py +196 -0
- morphml-1.0.0/morphml/core/graph/serialization.py +361 -0
- morphml-1.0.0/morphml/core/graph/visualization.py +431 -0
- morphml-1.0.0/morphml/core/objectives/__init__.py +20 -0
- morphml-1.0.0/morphml/core/search/__init__.py +33 -0
- morphml-1.0.0/morphml/core/search/individual.py +252 -0
- morphml-1.0.0/morphml/core/search/parameters.py +453 -0
- morphml-1.0.0/morphml/core/search/population.py +375 -0
- morphml-1.0.0/morphml/core/search/search_engine.py +340 -0
- morphml-1.0.0/morphml/distributed/__init__.py +76 -0
- morphml-1.0.0/morphml/distributed/fault_tolerance.py +497 -0
- morphml-1.0.0/morphml/distributed/health_monitor.py +348 -0
- morphml-1.0.0/morphml/distributed/master.py +709 -0
- morphml-1.0.0/morphml/distributed/proto/README.md +224 -0
- morphml-1.0.0/morphml/distributed/proto/__init__.py +74 -0
- morphml-1.0.0/morphml/distributed/proto/worker.proto +170 -0
- morphml-1.0.0/morphml/distributed/proto/worker_pb2.py +79 -0
- morphml-1.0.0/morphml/distributed/proto/worker_pb2_grpc.py +423 -0
- morphml-1.0.0/morphml/distributed/resource_manager.py +416 -0
- morphml-1.0.0/morphml/distributed/scheduler.py +567 -0
- morphml-1.0.0/morphml/distributed/storage/__init__.py +33 -0
- morphml-1.0.0/morphml/distributed/storage/artifacts.py +381 -0
- morphml-1.0.0/morphml/distributed/storage/cache.py +366 -0
- morphml-1.0.0/morphml/distributed/storage/checkpointing.py +329 -0
- morphml-1.0.0/morphml/distributed/storage/database.py +459 -0
- morphml-1.0.0/morphml/distributed/worker.py +549 -0
- morphml-1.0.0/morphml/evaluation/__init__.py +5 -0
- morphml-1.0.0/morphml/evaluation/heuristic.py +237 -0
- morphml-1.0.0/morphml/exceptions.py +55 -0
- morphml-1.0.0/morphml/execution/__init__.py +5 -0
- morphml-1.0.0/morphml/execution/local_executor.py +350 -0
- morphml-1.0.0/morphml/integrations/__init__.py +28 -0
- morphml-1.0.0/morphml/integrations/jax_adapter.py +206 -0
- morphml-1.0.0/morphml/integrations/pytorch_adapter.py +530 -0
- morphml-1.0.0/morphml/integrations/sklearn_adapter.py +206 -0
- morphml-1.0.0/morphml/integrations/tensorflow_adapter.py +230 -0
- morphml-1.0.0/morphml/logging_config.py +93 -0
- morphml-1.0.0/morphml/meta_learning/__init__.py +66 -0
- morphml-1.0.0/morphml/meta_learning/architecture_similarity.py +277 -0
- morphml-1.0.0/morphml/meta_learning/experiment_database.py +240 -0
- morphml-1.0.0/morphml/meta_learning/knowledge_base/__init__.py +19 -0
- morphml-1.0.0/morphml/meta_learning/knowledge_base/embedder.py +179 -0
- morphml-1.0.0/morphml/meta_learning/knowledge_base/knowledge_base.py +313 -0
- morphml-1.0.0/morphml/meta_learning/knowledge_base/meta_features.py +265 -0
- morphml-1.0.0/morphml/meta_learning/knowledge_base/vector_store.py +271 -0
- morphml-1.0.0/morphml/meta_learning/predictors/__init__.py +27 -0
- morphml-1.0.0/morphml/meta_learning/predictors/ensemble.py +221 -0
- morphml-1.0.0/morphml/meta_learning/predictors/gnn_predictor.py +552 -0
- morphml-1.0.0/morphml/meta_learning/predictors/learning_curve.py +231 -0
- morphml-1.0.0/morphml/meta_learning/predictors/proxy_metrics.py +261 -0
- morphml-1.0.0/morphml/meta_learning/strategy_evolution/__init__.py +27 -0
- morphml-1.0.0/morphml/meta_learning/strategy_evolution/adaptive_optimizer.py +226 -0
- morphml-1.0.0/morphml/meta_learning/strategy_evolution/bandit.py +276 -0
- morphml-1.0.0/morphml/meta_learning/strategy_evolution/portfolio.py +230 -0
- morphml-1.0.0/morphml/meta_learning/transfer.py +581 -0
- morphml-1.0.0/morphml/meta_learning/warm_start.py +286 -0
- morphml-1.0.0/morphml/optimizers/__init__.py +74 -0
- morphml-1.0.0/morphml/optimizers/adaptive_operators.py +399 -0
- morphml-1.0.0/morphml/optimizers/bayesian/__init__.py +52 -0
- morphml-1.0.0/morphml/optimizers/bayesian/acquisition.py +387 -0
- morphml-1.0.0/morphml/optimizers/bayesian/base.py +319 -0
- morphml-1.0.0/morphml/optimizers/bayesian/gaussian_process.py +635 -0
- morphml-1.0.0/morphml/optimizers/bayesian/smac.py +534 -0
- morphml-1.0.0/morphml/optimizers/bayesian/tpe.py +411 -0
- morphml-1.0.0/morphml/optimizers/differential_evolution.py +220 -0
- morphml-1.0.0/morphml/optimizers/evolutionary/__init__.py +61 -0
- morphml-1.0.0/morphml/optimizers/evolutionary/cma_es.py +416 -0
- morphml-1.0.0/morphml/optimizers/evolutionary/differential_evolution.py +556 -0
- morphml-1.0.0/morphml/optimizers/evolutionary/encoding.py +426 -0
- morphml-1.0.0/morphml/optimizers/evolutionary/particle_swarm.py +449 -0
- morphml-1.0.0/morphml/optimizers/genetic_algorithm.py +486 -0
- morphml-1.0.0/morphml/optimizers/gradient_based/__init__.py +22 -0
- morphml-1.0.0/morphml/optimizers/gradient_based/darts.py +550 -0
- morphml-1.0.0/morphml/optimizers/gradient_based/enas.py +585 -0
- morphml-1.0.0/morphml/optimizers/gradient_based/operations.py +474 -0
- morphml-1.0.0/morphml/optimizers/gradient_based/utils.py +601 -0
- morphml-1.0.0/morphml/optimizers/hill_climbing.py +169 -0
- morphml-1.0.0/morphml/optimizers/multi_objective/__init__.py +56 -0
- morphml-1.0.0/morphml/optimizers/multi_objective/indicators.py +504 -0
- morphml-1.0.0/morphml/optimizers/multi_objective/nsga2.py +647 -0
- morphml-1.0.0/morphml/optimizers/multi_objective/visualization.py +427 -0
- morphml-1.0.0/morphml/optimizers/nsga2.py +308 -0
- morphml-1.0.0/morphml/optimizers/random_search.py +172 -0
- morphml-1.0.0/morphml/optimizers/simulated_annealing.py +181 -0
- morphml-1.0.0/morphml/plugins/__init__.py +35 -0
- morphml-1.0.0/morphml/plugins/custom_evaluator_example.py +81 -0
- morphml-1.0.0/morphml/plugins/custom_optimizer_example.py +63 -0
- morphml-1.0.0/morphml/plugins/plugin_system.py +454 -0
- morphml-1.0.0/morphml/reports/__init__.py +30 -0
- morphml-1.0.0/morphml/reports/generator.py +362 -0
- morphml-1.0.0/morphml/tracking/__init__.py +7 -0
- morphml-1.0.0/morphml/tracking/experiment.py +309 -0
- morphml-1.0.0/morphml/tracking/logger.py +301 -0
- morphml-1.0.0/morphml/tracking/reporter.py +357 -0
- morphml-1.0.0/morphml/utils/__init__.py +6 -0
- morphml-1.0.0/morphml/utils/checkpoint.py +189 -0
- morphml-1.0.0/morphml/utils/comparison.py +390 -0
- morphml-1.0.0/morphml/utils/export.py +407 -0
- morphml-1.0.0/morphml/utils/progress.py +392 -0
- morphml-1.0.0/morphml/utils/validation.py +392 -0
- morphml-1.0.0/morphml/version.py +7 -0
- morphml-1.0.0/morphml/visualization/__init__.py +50 -0
- morphml-1.0.0/morphml/visualization/analytics.py +423 -0
- morphml-1.0.0/morphml/visualization/architecture_diagrams.py +353 -0
- morphml-1.0.0/morphml/visualization/architecture_plot.py +223 -0
- morphml-1.0.0/morphml/visualization/convergence_plot.py +174 -0
- morphml-1.0.0/morphml/visualization/crossover_viz.py +386 -0
- morphml-1.0.0/morphml/visualization/graph_viz.py +338 -0
- morphml-1.0.0/morphml/visualization/pareto_plot.py +149 -0
- morphml-1.0.0/morphml/visualization/plotly_dashboards.py +422 -0
- morphml-1.0.0/morphml/visualization/population.py +309 -0
- morphml-1.0.0/morphml/visualization/progress.py +260 -0
- morphml-1.0.0/pyproject.toml +232 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to MorphML will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.0.0] - 2024-11-11
|
|
9
|
+
|
|
10
|
+
### 🎉 First Stable Release
|
|
11
|
+
|
|
12
|
+
MorphML v1.0.0 marks the first production-ready release with complete ecosystem features.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
#### Complete Ecosystem (Phase 5)
|
|
17
|
+
- Web dashboard with real-time monitoring (React + FastAPI)
|
|
18
|
+
- REST API with JWT authentication and rate limiting
|
|
19
|
+
- Framework integrations (PyTorch, TensorFlow, JAX, Scikit-learn)
|
|
20
|
+
- Interactive Plotly dashboards for visualization
|
|
21
|
+
- Professional architecture diagram generator with Graphviz
|
|
22
|
+
- Performance analytics and statistical analysis
|
|
23
|
+
- Extensible plugin system
|
|
24
|
+
- Enhanced CLI with interactive commands
|
|
25
|
+
- Python API client library
|
|
26
|
+
- Complete documentation site with MkDocs Material
|
|
27
|
+
|
|
28
|
+
#### Production Features
|
|
29
|
+
- Automatic shape inference for all frameworks
|
|
30
|
+
- GPU acceleration support
|
|
31
|
+
- Multiple installation options with extras
|
|
32
|
+
- Comprehensive error handling
|
|
33
|
+
- Type hints throughout codebase
|
|
34
|
+
- PyPI publishing configuration
|
|
35
|
+
|
|
36
|
+
### Changed
|
|
37
|
+
- Updated authors information (Vedanth & Eshan Roy)
|
|
38
|
+
- Improved documentation structure
|
|
39
|
+
- Enhanced code organization
|
|
40
|
+
|
|
41
|
+
### Infrastructure
|
|
42
|
+
- Added publish.sh for automated PyPI publishing
|
|
43
|
+
- Added MANIFEST.in for package data
|
|
44
|
+
- Added setup.py for backwards compatibility
|
|
45
|
+
- Complete PyPI metadata in pyproject.toml
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## [0.1.0] - 2024-11-11
|
|
50
|
+
|
|
51
|
+
### Initial Beta Release
|
|
52
|
+
|
|
53
|
+
### Added
|
|
54
|
+
|
|
55
|
+
#### Core Features (Phase 1)
|
|
56
|
+
- Neural Architecture Search framework with pythonic DSL
|
|
57
|
+
- `Layer.flatten()` method for CNN-to-Dense transitions
|
|
58
|
+
- Genetic Algorithm optimizer with true crossover implementation
|
|
59
|
+
- Random Search and Hill Climbing optimizers
|
|
60
|
+
- Simulated Annealing optimizer
|
|
61
|
+
- Differential Evolution optimizer
|
|
62
|
+
- `ModelGraph` class for architecture representation
|
|
63
|
+
- `SearchSpace` class for defining search spaces
|
|
64
|
+
- `HeuristicEvaluator` for fast architecture assessment
|
|
65
|
+
- Constraint system (MaxParameters, MinParameters, Depth, Width)
|
|
66
|
+
- Architecture export to PyTorch and Keras code
|
|
67
|
+
- Checkpointing system for long-running searches
|
|
68
|
+
|
|
69
|
+
#### Enhanced Features (Phase 2)
|
|
70
|
+
- Automatic shape inference in code export
|
|
71
|
+
- Enhanced constraint violation messages with detailed reporting
|
|
72
|
+
- Comprehensive DSL layer documentation
|
|
73
|
+
- Integrated crossover operators in GeneticAlgorithm
|
|
74
|
+
- Support for all layer types in exporter (avgpool, batchnorm, flatten)
|
|
75
|
+
- Import aliases for backward compatibility
|
|
76
|
+
|
|
77
|
+
#### Advanced Features (Phase 3)
|
|
78
|
+
- Crossover visualization utilities
|
|
79
|
+
- Adaptive crossover and mutation rate managers
|
|
80
|
+
- Custom layer handler support in exporter
|
|
81
|
+
- Flatten layer examples and tutorials
|
|
82
|
+
- Advanced features showcase examples
|
|
83
|
+
|
|
84
|
+
#### Quality of Life (Phase 4)
|
|
85
|
+
- Progress tracking system with rich output
|
|
86
|
+
- Quick-start CLI helper with templates
|
|
87
|
+
- Architecture comparison utilities
|
|
88
|
+
- Search space validation system
|
|
89
|
+
- Updated README with all features
|
|
90
|
+
|
|
91
|
+
#### Ecosystem (Phase 5)
|
|
92
|
+
- REST API foundation with FastAPI
|
|
93
|
+
- Web dashboard with React frontend
|
|
94
|
+
- Real-time monitoring via WebSocket
|
|
95
|
+
- Experiment management interface
|
|
96
|
+
- Interactive convergence visualization
|
|
97
|
+
- Architecture graph viewer
|
|
98
|
+
|
|
99
|
+
### Documentation
|
|
100
|
+
- Complete README with examples
|
|
101
|
+
- API documentation
|
|
102
|
+
- DSL layer reference guide
|
|
103
|
+
- Contributing guidelines
|
|
104
|
+
- Phase summaries (P1-P5)
|
|
105
|
+
- Dashboard setup guide
|
|
106
|
+
|
|
107
|
+
### Infrastructure
|
|
108
|
+
- Poetry-based dependency management
|
|
109
|
+
- Pre-commit hooks
|
|
110
|
+
- Black code formatting
|
|
111
|
+
- Ruff linting
|
|
112
|
+
- MyPy type checking
|
|
113
|
+
- Pytest test suite
|
|
114
|
+
- PyPI packaging configuration
|
|
115
|
+
|
|
116
|
+
## [Unreleased]
|
|
117
|
+
|
|
118
|
+
### Planned
|
|
119
|
+
- Database persistence for experiments
|
|
120
|
+
- Authentication system for dashboard
|
|
121
|
+
- PyTorch training integration
|
|
122
|
+
- TensorFlow/Keras integration
|
|
123
|
+
- JAX/Flax integration
|
|
124
|
+
- Plugin system
|
|
125
|
+
- Comprehensive documentation site
|
|
126
|
+
- Docker images
|
|
127
|
+
- Kubernetes deployment configs
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Version History
|
|
132
|
+
|
|
133
|
+
- **0.1.0** (2024-11-11) - Initial release with core NAS functionality, web dashboard, and comprehensive tooling
|
|
134
|
+
|
|
135
|
+
[0.1.0]: https://github.com/TIVerse/MorphML/releases/tag/v0.1.0
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
# Contributing to MorphML
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to MorphML! This document provides guidelines and instructions for contributing to the project.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Code of Conduct](#code-of-conduct)
|
|
8
|
+
- [Getting Started](#getting-started)
|
|
9
|
+
- [Development Setup](#development-setup)
|
|
10
|
+
- [How to Contribute](#how-to-contribute)
|
|
11
|
+
- [Coding Standards](#coding-standards)
|
|
12
|
+
- [Testing](#testing)
|
|
13
|
+
- [Documentation](#documentation)
|
|
14
|
+
- [Pull Request Process](#pull-request-process)
|
|
15
|
+
- [Reporting Bugs](#reporting-bugs)
|
|
16
|
+
- [Suggesting Enhancements](#suggesting-enhancements)
|
|
17
|
+
|
|
18
|
+
## Code of Conduct
|
|
19
|
+
|
|
20
|
+
This project and everyone participating in it is governed by our [Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code.
|
|
21
|
+
|
|
22
|
+
## Getting Started
|
|
23
|
+
|
|
24
|
+
1. Fork the repository on GitHub
|
|
25
|
+
2. Clone your fork locally
|
|
26
|
+
3. Set up the development environment
|
|
27
|
+
4. Create a new branch for your contribution
|
|
28
|
+
5. Make your changes
|
|
29
|
+
6. Submit a pull request
|
|
30
|
+
|
|
31
|
+
## Development Setup
|
|
32
|
+
|
|
33
|
+
MorphML uses Poetry for dependency management. To set up your development environment:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Clone the repository
|
|
37
|
+
git clone https://github.com/TIVerse/MorphML.git
|
|
38
|
+
cd MorphML
|
|
39
|
+
|
|
40
|
+
# Install Poetry (if not already installed)
|
|
41
|
+
curl -sSL https://install.python-poetry.org | python3 -
|
|
42
|
+
|
|
43
|
+
# Install dependencies
|
|
44
|
+
poetry install
|
|
45
|
+
|
|
46
|
+
# Activate the virtual environment
|
|
47
|
+
poetry shell
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## How to Contribute
|
|
51
|
+
|
|
52
|
+
### Types of Contributions
|
|
53
|
+
|
|
54
|
+
- **Bug fixes**: Fix issues reported in the issue tracker
|
|
55
|
+
- **Features**: Implement new features or improve existing ones
|
|
56
|
+
- **Documentation**: Improve or add documentation
|
|
57
|
+
- **Tests**: Add or improve test coverage
|
|
58
|
+
- **Examples**: Add examples demonstrating MorphML usage
|
|
59
|
+
|
|
60
|
+
### Before Starting
|
|
61
|
+
|
|
62
|
+
1. Check the [issue tracker](https://github.com/TIVerse/MorphML/issues) for existing issues
|
|
63
|
+
2. If you're planning a major change, open an issue first to discuss it
|
|
64
|
+
3. Make sure your contribution aligns with the project's goals
|
|
65
|
+
|
|
66
|
+
## Coding Standards
|
|
67
|
+
|
|
68
|
+
### Python Style
|
|
69
|
+
|
|
70
|
+
- Follow [PEP 8](https://www.python.org/dev/peps/pep-0008/) style guide
|
|
71
|
+
- Use type hints for function signatures
|
|
72
|
+
- Write descriptive docstrings (Google style)
|
|
73
|
+
- Keep functions focused and concise
|
|
74
|
+
|
|
75
|
+
### Code Quality Tools
|
|
76
|
+
|
|
77
|
+
We use several tools to maintain code quality:
|
|
78
|
+
|
|
79
|
+
- **Ruff**: For linting and formatting
|
|
80
|
+
- **MyPy**: For static type checking
|
|
81
|
+
- **Pytest**: For testing
|
|
82
|
+
|
|
83
|
+
Run these checks before submitting:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Format code
|
|
87
|
+
poetry run ruff format .
|
|
88
|
+
|
|
89
|
+
# Lint code
|
|
90
|
+
poetry run ruff check .
|
|
91
|
+
|
|
92
|
+
# Type check
|
|
93
|
+
poetry run mypy morphml
|
|
94
|
+
|
|
95
|
+
# Run tests
|
|
96
|
+
poetry run pytest
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Commit Messages
|
|
100
|
+
|
|
101
|
+
- Use clear and descriptive commit messages
|
|
102
|
+
- Start with a verb in the imperative mood (e.g., "Add", "Fix", "Update")
|
|
103
|
+
- Keep the first line under 72 characters
|
|
104
|
+
- Reference relevant issues (e.g., "Fixes #123")
|
|
105
|
+
|
|
106
|
+
Example:
|
|
107
|
+
```
|
|
108
|
+
Add support for custom loss functions
|
|
109
|
+
|
|
110
|
+
- Implement LossFunction base class
|
|
111
|
+
- Add validation for loss function parameters
|
|
112
|
+
- Update documentation with examples
|
|
113
|
+
|
|
114
|
+
Fixes #123
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Testing
|
|
118
|
+
|
|
119
|
+
All contributions should include appropriate tests:
|
|
120
|
+
|
|
121
|
+
- **Unit tests**: Test individual functions and classes
|
|
122
|
+
- **Integration tests**: Test interactions between components
|
|
123
|
+
- **Regression tests**: Ensure bugs don't reappear
|
|
124
|
+
|
|
125
|
+
### Running Tests
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Run all tests
|
|
129
|
+
poetry run pytest
|
|
130
|
+
|
|
131
|
+
# Run with coverage
|
|
132
|
+
poetry run pytest --cov=morphml --cov-report=html
|
|
133
|
+
|
|
134
|
+
# Run specific test file
|
|
135
|
+
poetry run pytest tests/test_phase1_syntax.py
|
|
136
|
+
|
|
137
|
+
# Run tests matching a pattern
|
|
138
|
+
poetry run pytest -k "test_optimizer"
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Documentation
|
|
142
|
+
|
|
143
|
+
Good documentation is crucial:
|
|
144
|
+
|
|
145
|
+
- Update docstrings when changing function signatures
|
|
146
|
+
- Add examples for new features
|
|
147
|
+
- Update README.md if adding significant functionality
|
|
148
|
+
- Keep documentation clear and concise
|
|
149
|
+
|
|
150
|
+
### Docstring Format
|
|
151
|
+
|
|
152
|
+
We use Google-style docstrings:
|
|
153
|
+
|
|
154
|
+
```python
|
|
155
|
+
def function_name(param1: str, param2: int) -> bool:
|
|
156
|
+
"""Short description of the function.
|
|
157
|
+
|
|
158
|
+
Longer description with more details about what the function
|
|
159
|
+
does and how it works.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
param1: Description of param1
|
|
163
|
+
param2: Description of param2
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
Description of return value
|
|
167
|
+
|
|
168
|
+
Raises:
|
|
169
|
+
ValueError: When param2 is negative
|
|
170
|
+
|
|
171
|
+
Examples:
|
|
172
|
+
>>> result = function_name("test", 42)
|
|
173
|
+
>>> print(result)
|
|
174
|
+
True
|
|
175
|
+
"""
|
|
176
|
+
pass
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Pull Request Process
|
|
180
|
+
|
|
181
|
+
1. **Update your branch**: Ensure your branch is up to date with main
|
|
182
|
+
```bash
|
|
183
|
+
git checkout main
|
|
184
|
+
git pull upstream main
|
|
185
|
+
git checkout your-branch
|
|
186
|
+
git rebase main
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
2. **Run all tests and checks**: Make sure everything passes
|
|
190
|
+
```bash
|
|
191
|
+
poetry run pytest
|
|
192
|
+
poetry run ruff check .
|
|
193
|
+
poetry run mypy morphml
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
3. **Update documentation**: If needed, update docs and examples
|
|
197
|
+
|
|
198
|
+
4. **Create pull request**:
|
|
199
|
+
- Use a clear and descriptive title
|
|
200
|
+
- Fill out the PR template completely
|
|
201
|
+
- Link related issues
|
|
202
|
+
- Add screenshots/examples if relevant
|
|
203
|
+
|
|
204
|
+
5. **Code review**:
|
|
205
|
+
- Address review comments promptly
|
|
206
|
+
- Be open to feedback and suggestions
|
|
207
|
+
- Update your PR as needed
|
|
208
|
+
|
|
209
|
+
6. **Merge**: Once approved, a maintainer will merge your PR
|
|
210
|
+
|
|
211
|
+
## Reporting Bugs
|
|
212
|
+
|
|
213
|
+
When reporting bugs, please use the bug report template and include:
|
|
214
|
+
|
|
215
|
+
- **Description**: Clear description of the bug
|
|
216
|
+
- **Steps to reproduce**: Detailed steps to reproduce the issue
|
|
217
|
+
- **Expected behavior**: What you expected to happen
|
|
218
|
+
- **Actual behavior**: What actually happened
|
|
219
|
+
- **Environment**: Python version, OS, MorphML version
|
|
220
|
+
- **Code sample**: Minimal code to reproduce the issue
|
|
221
|
+
- **Error messages**: Full error messages and stack traces
|
|
222
|
+
|
|
223
|
+
## Suggesting Enhancements
|
|
224
|
+
|
|
225
|
+
When suggesting enhancements, please:
|
|
226
|
+
|
|
227
|
+
- Use the feature request template
|
|
228
|
+
- Explain the motivation and use case
|
|
229
|
+
- Provide examples of how it would be used
|
|
230
|
+
- Consider backwards compatibility
|
|
231
|
+
- Discuss alternative approaches
|
|
232
|
+
|
|
233
|
+
## Questions?
|
|
234
|
+
|
|
235
|
+
If you have questions:
|
|
236
|
+
|
|
237
|
+
- Check the [documentation](docs/)
|
|
238
|
+
- Search existing [issues](https://github.com/TIVerse/MorphML/issues)
|
|
239
|
+
- Ask in discussions or open a new issue
|
|
240
|
+
|
|
241
|
+
## Recognition
|
|
242
|
+
|
|
243
|
+
Contributors will be:
|
|
244
|
+
- Listed in the project's contributors page
|
|
245
|
+
- Acknowledged in release notes for significant contributions
|
|
246
|
+
- Part of a growing community building the future of ML frameworks
|
|
247
|
+
|
|
248
|
+
Thank you for contributing to MorphML! 🎉
|
morphml-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 TIVerse
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|