milia-py 1.2.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.
Files changed (195) hide show
  1. milia_py-1.2.0/CHANGELOG.md +51 -0
  2. milia_py-1.2.0/CITATION.cff +47 -0
  3. milia_py-1.2.0/LICENSE +21 -0
  4. milia_py-1.2.0/MANIFEST.in +80 -0
  5. milia_py-1.2.0/PKG-INFO +472 -0
  6. milia_py-1.2.0/README.md +391 -0
  7. milia_py-1.2.0/configs/datasets/ani1ccx.yaml +92 -0
  8. milia_py-1.2.0/configs/datasets/ani1x.yaml +136 -0
  9. milia_py-1.2.0/configs/datasets/ani2x.yaml +132 -0
  10. milia_py-1.2.0/configs/datasets/dft.yaml +103 -0
  11. milia_py-1.2.0/configs/datasets/dmc.yaml +80 -0
  12. milia_py-1.2.0/configs/datasets/qdpi.yaml +158 -0
  13. milia_py-1.2.0/configs/datasets/qm40.yaml +194 -0
  14. milia_py-1.2.0/configs/datasets/qm9.yaml +164 -0
  15. milia_py-1.2.0/configs/datasets/rmd17.yaml +159 -0
  16. milia_py-1.2.0/configs/datasets/wavefunction.yaml +173 -0
  17. milia_py-1.2.0/configs/datasets/xxmd.yaml +147 -0
  18. milia_py-1.2.0/configs/descriptors.yaml +139 -0
  19. milia_py-1.2.0/configs/filter_config.yaml +54 -0
  20. milia_py-1.2.0/configs/main.yaml +74 -0
  21. milia_py-1.2.0/configs/models.yaml +1066 -0
  22. milia_py-1.2.0/configs/plugins.yaml +98 -0
  23. milia_py-1.2.0/configs/structural_features.yaml +71 -0
  24. milia_py-1.2.0/configs/transformations.yaml +136 -0
  25. milia_py-1.2.0/main.py +5575 -0
  26. milia_py-1.2.0/milia_pipeline/__init__.py +833 -0
  27. milia_py-1.2.0/milia_pipeline/cli_manager.py +3739 -0
  28. milia_py-1.2.0/milia_pipeline/config/__init__.py +1303 -0
  29. milia_py-1.2.0/milia_pipeline/config/config_accessors.py +4613 -0
  30. milia_py-1.2.0/milia_pipeline/config/config_constants.py +2735 -0
  31. milia_py-1.2.0/milia_pipeline/config/config_containers.py +4703 -0
  32. milia_py-1.2.0/milia_pipeline/config/config_loader.py +2926 -0
  33. milia_py-1.2.0/milia_pipeline/config/config_schemas.py +3514 -0
  34. milia_py-1.2.0/milia_pipeline/config/data_refining.py +3309 -0
  35. milia_py-1.2.0/milia_pipeline/config/validators.py +5160 -0
  36. milia_py-1.2.0/milia_pipeline/datasets/__init__.py +706 -0
  37. milia_py-1.2.0/milia_pipeline/datasets/base.py +264 -0
  38. milia_py-1.2.0/milia_pipeline/datasets/implementations/__init__.py +58 -0
  39. milia_py-1.2.0/milia_pipeline/datasets/implementations/ani1ccx.py +254 -0
  40. milia_py-1.2.0/milia_pipeline/datasets/implementations/ani1x.py +241 -0
  41. milia_py-1.2.0/milia_pipeline/datasets/implementations/ani2x.py +241 -0
  42. milia_py-1.2.0/milia_pipeline/datasets/implementations/dft.py +158 -0
  43. milia_py-1.2.0/milia_pipeline/datasets/implementations/dmc.py +159 -0
  44. milia_py-1.2.0/milia_pipeline/datasets/implementations/qdpi.py +257 -0
  45. milia_py-1.2.0/milia_pipeline/datasets/implementations/qm40.py +248 -0
  46. milia_py-1.2.0/milia_pipeline/datasets/implementations/qm9.py +237 -0
  47. milia_py-1.2.0/milia_pipeline/datasets/implementations/rmd17.py +316 -0
  48. milia_py-1.2.0/milia_pipeline/datasets/implementations/wavefunction.py +193 -0
  49. milia_py-1.2.0/milia_pipeline/datasets/implementations/xxmd.py +268 -0
  50. milia_py-1.2.0/milia_pipeline/datasets/milia_dataset.py +7897 -0
  51. milia_py-1.2.0/milia_pipeline/datasets/protocols.py +113 -0
  52. milia_py-1.2.0/milia_pipeline/datasets/registry.py +189 -0
  53. milia_py-1.2.0/milia_pipeline/descriptors/__init__.py +454 -0
  54. milia_py-1.2.0/milia_pipeline/descriptors/descriptor_calculator.py +446 -0
  55. milia_py-1.2.0/milia_pipeline/descriptors/descriptor_categories.py +917 -0
  56. milia_py-1.2.0/milia_pipeline/descriptors/descriptor_integration.py +313 -0
  57. milia_py-1.2.0/milia_pipeline/descriptors/descriptor_plugin_system.py +929 -0
  58. milia_py-1.2.0/milia_pipeline/descriptors/descriptor_registry.py +785 -0
  59. milia_py-1.2.0/milia_pipeline/descriptors/descriptor_validator.py +353 -0
  60. milia_py-1.2.0/milia_pipeline/exceptions.py +4164 -0
  61. milia_py-1.2.0/milia_pipeline/handlers/__init__.py +660 -0
  62. milia_py-1.2.0/milia_pipeline/handlers/base_handler.py +1591 -0
  63. milia_py-1.2.0/milia_pipeline/handlers/handler_registry.py +347 -0
  64. milia_py-1.2.0/milia_pipeline/handlers/implementations/__init__.py +88 -0
  65. milia_py-1.2.0/milia_pipeline/handlers/implementations/ani1ccx.py +1109 -0
  66. milia_py-1.2.0/milia_pipeline/handlers/implementations/ani1x.py +1108 -0
  67. milia_py-1.2.0/milia_pipeline/handlers/implementations/ani2x.py +1008 -0
  68. milia_py-1.2.0/milia_pipeline/handlers/implementations/dft.py +1398 -0
  69. milia_py-1.2.0/milia_pipeline/handlers/implementations/dmc.py +1049 -0
  70. milia_py-1.2.0/milia_pipeline/handlers/implementations/qdpi.py +828 -0
  71. milia_py-1.2.0/milia_pipeline/handlers/implementations/qm40.py +946 -0
  72. milia_py-1.2.0/milia_pipeline/handlers/implementations/qm9.py +947 -0
  73. milia_py-1.2.0/milia_pipeline/handlers/implementations/rmd17.py +1028 -0
  74. milia_py-1.2.0/milia_pipeline/handlers/implementations/wavefunction.py +1096 -0
  75. milia_py-1.2.0/milia_pipeline/handlers/implementations/xxmd.py +1045 -0
  76. milia_py-1.2.0/milia_pipeline/logging_config.py +1302 -0
  77. milia_py-1.2.0/milia_pipeline/models/__init__.py +962 -0
  78. milia_py-1.2.0/milia_pipeline/models/acceleration/__init__.py +771 -0
  79. milia_py-1.2.0/milia_pipeline/models/acceleration/computation_optimization.py +754 -0
  80. milia_py-1.2.0/milia_pipeline/models/acceleration/device_manager.py +685 -0
  81. milia_py-1.2.0/milia_pipeline/models/acceleration/distributed_strategies.py +799 -0
  82. milia_py-1.2.0/milia_pipeline/models/acceleration/memory_optimization.py +798 -0
  83. milia_py-1.2.0/milia_pipeline/models/builders/__init__.py +138 -0
  84. milia_py-1.2.0/milia_pipeline/models/builders/architecture_builder.py +960 -0
  85. milia_py-1.2.0/milia_pipeline/models/builders/config_parser.py +933 -0
  86. milia_py-1.2.0/milia_pipeline/models/builders/layer_registry.py +837 -0
  87. milia_py-1.2.0/milia_pipeline/models/builders/model_composer.py +2135 -0
  88. milia_py-1.2.0/milia_pipeline/models/builders/templates.py +1006 -0
  89. milia_py-1.2.0/milia_pipeline/models/builders/validation.py +414 -0
  90. milia_py-1.2.0/milia_pipeline/models/deployment/__init__.py +773 -0
  91. milia_py-1.2.0/milia_pipeline/models/deployment/deployment_strategies.py +825 -0
  92. milia_py-1.2.0/milia_pipeline/models/deployment/model_optimization.py +778 -0
  93. milia_py-1.2.0/milia_pipeline/models/deployment/monitoring.py +763 -0
  94. milia_py-1.2.0/milia_pipeline/models/factory/__init__.py +306 -0
  95. milia_py-1.2.0/milia_pipeline/models/factory/model_factory.py +4297 -0
  96. milia_py-1.2.0/milia_pipeline/models/factory/target_selection_config.py +724 -0
  97. milia_py-1.2.0/milia_pipeline/models/hpo/__init__.py +650 -0
  98. milia_py-1.2.0/milia_pipeline/models/hpo/analysis/__init__.py +45 -0
  99. milia_py-1.2.0/milia_pipeline/models/hpo/analysis/study_analyzer.py +1710 -0
  100. milia_py-1.2.0/milia_pipeline/models/hpo/backends/__init__.py +46 -0
  101. milia_py-1.2.0/milia_pipeline/models/hpo/backends/base.py +212 -0
  102. milia_py-1.2.0/milia_pipeline/models/hpo/backends/optuna_backend.py +538 -0
  103. milia_py-1.2.0/milia_pipeline/models/hpo/callbacks/__init__.py +78 -0
  104. milia_py-1.2.0/milia_pipeline/models/hpo/callbacks/optuna_callback.py +242 -0
  105. milia_py-1.2.0/milia_pipeline/models/hpo/hpo_config.py +633 -0
  106. milia_py-1.2.0/milia_pipeline/models/hpo/hpo_manager.py +2858 -0
  107. milia_py-1.2.0/milia_pipeline/models/hpo/nas/__init__.py +289 -0
  108. milia_py-1.2.0/milia_pipeline/models/hpo/nas/nas_manager.py +1142 -0
  109. milia_py-1.2.0/milia_pipeline/models/hpo/nas/search_space.py +983 -0
  110. milia_py-1.2.0/milia_pipeline/models/hpo/search_spaces/__init__.py +113 -0
  111. milia_py-1.2.0/milia_pipeline/models/hpo/search_spaces/param_types.py +196 -0
  112. milia_py-1.2.0/milia_pipeline/models/hpo/search_spaces/search_space_builder.py +1085 -0
  113. milia_py-1.2.0/milia_pipeline/models/hpo/transfer/__init__.py +259 -0
  114. milia_py-1.2.0/milia_pipeline/models/hpo/transfer/meta_features.py +1176 -0
  115. milia_py-1.2.0/milia_pipeline/models/hpo/transfer/transfer_manager.py +1269 -0
  116. milia_py-1.2.0/milia_pipeline/models/hpo/transfer/warm_start.py +851 -0
  117. milia_py-1.2.0/milia_pipeline/models/plugins/__init__.py +442 -0
  118. milia_py-1.2.0/milia_pipeline/models/plugins/model_plugin_system.py +1000 -0
  119. milia_py-1.2.0/milia_pipeline/models/post_training/__init__.py +363 -0
  120. milia_py-1.2.0/milia_pipeline/models/post_training/checkpoint/__init__.py +19 -0
  121. milia_py-1.2.0/milia_pipeline/models/post_training/checkpoint/checkpoint_manager.py +398 -0
  122. milia_py-1.2.0/milia_pipeline/models/post_training/data_preparation/__init__.py +299 -0
  123. milia_py-1.2.0/milia_pipeline/models/post_training/data_preparation/data_converter.py +1333 -0
  124. milia_py-1.2.0/milia_pipeline/models/post_training/inference/__init__.py +181 -0
  125. milia_py-1.2.0/milia_pipeline/models/post_training/inference/model_loader.py +560 -0
  126. milia_py-1.2.0/milia_pipeline/models/post_training/inference/predictor.py +591 -0
  127. milia_py-1.2.0/milia_pipeline/models/post_training/transfer_learning/__init__.py +176 -0
  128. milia_py-1.2.0/milia_pipeline/models/post_training/transfer_learning/fine_tuner.py +276 -0
  129. milia_py-1.2.0/milia_pipeline/models/registry/__init__.py +507 -0
  130. milia_py-1.2.0/milia_pipeline/models/registry/model_registry.py +972 -0
  131. milia_py-1.2.0/milia_pipeline/models/registry/pyg_introspector.py +1781 -0
  132. milia_py-1.2.0/milia_pipeline/models/training/__init__.py +766 -0
  133. milia_py-1.2.0/milia_pipeline/models/training/callbacks.py +1089 -0
  134. milia_py-1.2.0/milia_pipeline/models/training/data_preparation.py +1354 -0
  135. milia_py-1.2.0/milia_pipeline/models/training/data_splitting.py +647 -0
  136. milia_py-1.2.0/milia_pipeline/models/training/loss_functions.py +642 -0
  137. milia_py-1.2.0/milia_pipeline/models/training/metrics.py +710 -0
  138. milia_py-1.2.0/milia_pipeline/models/training/optimizers.py +389 -0
  139. milia_py-1.2.0/milia_pipeline/models/training/schedulers.py +495 -0
  140. milia_py-1.2.0/milia_pipeline/models/training/trainer.py +2256 -0
  141. milia_py-1.2.0/milia_pipeline/models/training/visualization.py +552 -0
  142. milia_py-1.2.0/milia_pipeline/models/utils/__init__.py +600 -0
  143. milia_py-1.2.0/milia_pipeline/models/utils/config_bridge.py +1593 -0
  144. milia_py-1.2.0/milia_pipeline/models/utils/pyg_integration.py +847 -0
  145. milia_py-1.2.0/milia_pipeline/molecules/__init__.py +335 -0
  146. milia_py-1.2.0/milia_pipeline/molecules/mol_conversion_utils.py +1320 -0
  147. milia_py-1.2.0/milia_pipeline/molecules/mol_structural_features.py +1004 -0
  148. milia_py-1.2.0/milia_pipeline/molecules/molecule_converter_core.py +4021 -0
  149. milia_py-1.2.0/milia_pipeline/molecules/molecule_feature_enricher.py +1915 -0
  150. milia_py-1.2.0/milia_pipeline/molecules/molecule_filters.py +2828 -0
  151. milia_py-1.2.0/milia_pipeline/molecules/molecule_validator.py +1715 -0
  152. milia_py-1.2.0/milia_pipeline/molecules/property_enrichment.py +2212 -0
  153. milia_py-1.2.0/milia_pipeline/plugins/__init__.py +459 -0
  154. milia_py-1.2.0/milia_pipeline/plugins/descriptors/example_descriptors/descriptors.py +181 -0
  155. milia_py-1.2.0/milia_pipeline/plugins/descriptors/example_descriptors/plugin.yaml +40 -0
  156. milia_py-1.2.0/milia_pipeline/plugins/myplugins/__init__.py +150 -0
  157. milia_py-1.2.0/milia_pipeline/plugins/myplugins/plugin.yaml +95 -0
  158. milia_py-1.2.0/milia_pipeline/plugins/myplugins/transforms/__init__.py +10 -0
  159. milia_py-1.2.0/milia_pipeline/plugins/pyg_augmentation/__init__.py +452 -0
  160. milia_py-1.2.0/milia_pipeline/plugins/pyg_augmentation/plugin.yaml +36 -0
  161. milia_py-1.2.0/milia_pipeline/plugins/pyg_augmentation/transforms.py +368 -0
  162. milia_py-1.2.0/milia_pipeline/preprocessing/__init__.py +503 -0
  163. milia_py-1.2.0/milia_pipeline/preprocessing/base_preprocessor.py +136 -0
  164. milia_py-1.2.0/milia_pipeline/preprocessing/preprocessors/__init__.py +45 -0
  165. milia_py-1.2.0/milia_pipeline/preprocessing/preprocessors/ani1ccx.py +588 -0
  166. milia_py-1.2.0/milia_pipeline/preprocessing/preprocessors/ani1x.py +507 -0
  167. milia_py-1.2.0/milia_pipeline/preprocessing/preprocessors/ani2x.py +524 -0
  168. milia_py-1.2.0/milia_pipeline/preprocessing/preprocessors/qdpi.py +789 -0
  169. milia_py-1.2.0/milia_pipeline/preprocessing/preprocessors/qm40.py +232 -0
  170. milia_py-1.2.0/milia_pipeline/preprocessing/preprocessors/qm9.py +222 -0
  171. milia_py-1.2.0/milia_pipeline/preprocessing/preprocessors/rmd17.py +548 -0
  172. milia_py-1.2.0/milia_pipeline/preprocessing/preprocessors/wavefunction.py +199 -0
  173. milia_py-1.2.0/milia_pipeline/preprocessing/preprocessors/xxmd.py +697 -0
  174. milia_py-1.2.0/milia_pipeline/preprocessing/registry.py +158 -0
  175. milia_py-1.2.0/milia_pipeline/preprocessing/utils/__init__.py +45 -0
  176. milia_py-1.2.0/milia_pipeline/preprocessing/utils/archive_handlers.py +197 -0
  177. milia_py-1.2.0/milia_pipeline/preprocessing/utils/format_parsers.py +495 -0
  178. milia_py-1.2.0/milia_pipeline/preprocessing/utils/npz_builders.py +187 -0
  179. milia_py-1.2.0/milia_pipeline/preprocessing/utils/qm40_csv_parser.py +588 -0
  180. milia_py-1.2.0/milia_pipeline/preprocessing/utils/qm9_xyz_parser.py +448 -0
  181. milia_py-1.2.0/milia_pipeline/transformations/__init__.py +677 -0
  182. milia_py-1.2.0/milia_pipeline/transformations/custom_transforms.py +2685 -0
  183. milia_py-1.2.0/milia_pipeline/transformations/graph_transforms.py +9416 -0
  184. milia_py-1.2.0/milia_pipeline/transformations/plugin_system.py +1979 -0
  185. milia_py-1.2.0/milia_pipeline/transformations/research_api.py +1266 -0
  186. milia_py-1.2.0/milia_py.egg-info/PKG-INFO +472 -0
  187. milia_py-1.2.0/milia_py.egg-info/SOURCES.txt +193 -0
  188. milia_py-1.2.0/milia_py.egg-info/dependency_links.txt +1 -0
  189. milia_py-1.2.0/milia_py.egg-info/entry_points.txt +2 -0
  190. milia_py-1.2.0/milia_py.egg-info/requires.txt +59 -0
  191. milia_py-1.2.0/milia_py.egg-info/top_level.txt +2 -0
  192. milia_py-1.2.0/pyproject.toml +402 -0
  193. milia_py-1.2.0/research_experiments.yaml +466 -0
  194. milia_py-1.2.0/setup.cfg +4 -0
  195. milia_py-1.2.0/setup.py +14 -0
@@ -0,0 +1,51 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [1.2.0] - 2026-06-26
11
+
12
+ ### Added
13
+
14
+ - QM40 dataset support: 162,954 neutral drug-like ZINC molecules (10-40 heavy
15
+ atoms) at B3LYP/6-31G(2df,p), with optimized geometries, Mulliken charges,
16
+ 16 scalar quantum-mechanical properties, and per-bond local vibrational mode
17
+ force constants. Reference: Madushanka, Moura Jr. & Kraka, *Scientific Data*
18
+ 11, 1376 (2024). Includes dataset implementation, handler, preprocessor (ZIP
19
+ of three CSV files joined by Zinc_id), CSV parser, colocated YAML
20
+ configuration, and `config_constants` registry entries. Uses the
21
+ `coordinate_based` molecule-creation strategy (SMILES present, no InChI) and
22
+ is neutral-only (`supports_charged_molecules()` is `False`).
23
+
24
+ ## [1.1.0] - 2026-02-12
25
+
26
+ ### Added
27
+
28
+ - Multi-format molecular conversion with RDKit integration (`molecules/`).
29
+ - Automated structural and chemical feature extraction and enrichment.
30
+ - PyTorch Geometric compatible dataset implementation (`miliaDataset`).
31
+ - Modular wavefunction data preprocessing for MOLDEN and FCHK formats.
32
+ - Extensible graph transformation system with experimental setup support.
33
+ - Three-tier plugin architecture for descriptors, transformations, and general extensions.
34
+ - Unified dataset handler pattern with DFT and DMC support (`create_handler`).
35
+ - Schema-validated YAML configuration system (`config/`).
36
+ - Comprehensive CLI with interactive mode and `milia` entry point.
37
+ - GNN model training with hyperparameter optimization support (`models/`).
38
+ - Post-training prediction and inference workflow with checkpoint support (`models/post_training/`).
39
+ - Transfer learning via `FineTuner` and `FreezeStrategy`.
40
+ - Multi-format input support via `DataConverterRegistry`.
41
+ - Molecular descriptor calculation with plugin system (`descriptors/`).
42
+ - Three-tier exception hierarchy with 50+ specialized exception classes.
43
+ - Registry integration for dataset type validation and CLI diagnostics.
44
+ - Full test suite with pytest configuration (`tests/`).
45
+ - MIT license.
46
+ - Production `pyproject.toml` with PEP 517/518/621/639 compliance.
47
+ - Comprehensive `README.md` with installation, quick start, and API reference.
48
+
49
+ [unreleased]: https://github.com/shahram-boshra/MILIA/compare/v1.2.0...HEAD
50
+ [1.2.0]: https://github.com/shahram-boshra/MILIA/compare/v1.1.0...v1.2.0
51
+ [1.1.0]: https://github.com/shahram-boshra/MILIA/releases/tag/v1.1.0
@@ -0,0 +1,47 @@
1
+ # =============================================================================
2
+ # CITATION.cff — MILIA
3
+ # =============================================================================
4
+ # Citation File Format (CFF) version 1.2.0
5
+ # Spec: https://citation-file-format.github.io/
6
+ # Schema: https://github.com/citation-file-format/citation-file-format/blob/1.2.0/schema-guide.md
7
+ #
8
+ # GitHub renders this file as a "Cite this repository" sidebar widget.
9
+ # Zenodo uses it for DOI publication via the GitHub–Zenodo integration.
10
+ # Zotero can import references directly from this file.
11
+ #
12
+ # Metadata sourced from pyproject.toml and milia_pipeline/__init__.py.
13
+ # =============================================================================
14
+
15
+ cff-version: 1.2.0
16
+ message: "If you use this software, please cite it using the metadata from this file."
17
+ title: "MILIA"
18
+ type: software
19
+
20
+ authors:
21
+ - family-names: "Boshra"
22
+ given-names: "Asadollah"
23
+ alias: "Shahram"
24
+ email: "a.boshra@gmail.com"
25
+ orcid: "https://orcid.org/0009-0004-8925-2868"
26
+ - family-names: "Boshra"
27
+ given-names: "Ilia"
28
+ email: "ilia.boshra@gmail.com"
29
+ orcid: "https://orcid.org/0009-0003-8540-1662"
30
+
31
+ version: "1.1.0"
32
+ date-released: "2026-02-12"
33
+ license: "MIT"
34
+
35
+ repository-code: "https://github.com/shahram-boshra/MILIA"
36
+ url: "https://github.com/shahram-boshra/MILIA"
37
+
38
+ abstract: "Molecular graph processing and machine learning framework for molecular sciences"
39
+
40
+ keywords:
41
+ - "molecular machine learning"
42
+ - "quantum chemistry"
43
+ - "graph neural networks"
44
+ - "molecular descriptors"
45
+ - "pytorch geometric"
46
+ - "dataset pipeline"
47
+ - "drug discovery"
milia_py-1.2.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026-present Asadollah Boshra (a.boshra@gmail.com)
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.
@@ -0,0 +1,80 @@
1
+ # =============================================================================
2
+ # MILIA — MANIFEST.in
3
+ # =============================================================================
4
+ # Controls which files are included in source distributions (sdist) when
5
+ # building with setuptools (pyproject.toml [build-system] backend).
6
+ #
7
+ # Context: setuptools (>=77, per pyproject.toml) auto-includes files implied
8
+ # by [project] metadata (readme, license-files), packages, and package-data.
9
+ # This file explicitly declares additional inclusions for completeness and
10
+ # ensures non-package root-level files critical to the distribution are present.
11
+ #
12
+ # Source: PyPA — Controlling files in the distribution
13
+ # (setuptools.pypa.io/en/latest/userguide/miscellaneous.html)
14
+ # PyPA — Including files in source distributions with MANIFEST.in
15
+ # (packaging.python.org/guides/using-manifest-in/)
16
+ #
17
+ # Order: include → recursive-include → recursive-exclude → prune → global-exclude
18
+ # (per setuptools docs: commands execute in order; later commands override earlier)
19
+ # =============================================================================
20
+
21
+ # ---- Root-level metadata and documentation files ----------------------------
22
+ # LICENSE and README.md are auto-included by setuptools >=66.1 via pyproject.toml
23
+ # (readme = "README.md", license-files = ["LICENSE"]). Listed explicitly for
24
+ # clarity and forward-compatibility.
25
+ include LICENSE
26
+ include README.md
27
+ include CHANGELOG.md
28
+ include CITATION.cff
29
+ include pyproject.toml
30
+ include setup.py
31
+
32
+ # ---- Root-level entry point and configuration files -------------------------
33
+ # main.py is the CLI entry point (pyproject.toml: milia = "main:main") but
34
+ # resides at project root, outside the milia_pipeline package. It is NOT
35
+ # discovered by [tool.setuptools.packages.find] (include = ["milia_pipeline*"]),
36
+ # so it must be explicitly included for the sdist to be buildable.
37
+ include main.py
38
+ include research_experiments.yaml
39
+
40
+ # ---- Configuration directory (outside installable package) ------------------
41
+ # configs/ contains runtime YAML configurations (7 root + 10 dataset-specific).
42
+ # Located at project root, outside milia_pipeline/, so not covered by packages
43
+ # or package-data. Required for users building/running from source.
44
+ recursive-include configs *.yaml
45
+
46
+ # ---- Installable package source and data ------------------------------------
47
+ # milia_pipeline/ *.py files are auto-included via [tool.setuptools.packages.find].
48
+ # *.yaml and *.yml are auto-included via [tool.setuptools.package-data].
49
+ # Listed explicitly for sdist completeness and clarity.
50
+ recursive-include milia_pipeline *.py
51
+ recursive-include milia_pipeline *.yaml *.yml
52
+
53
+ # ---- Exclusions — directories not needed in source distribution -------------
54
+ # tests/: 127 test files + fixtures — excluded from sdist per project policy.
55
+ # Tests are available in the Git repository for contributors and CI/CD.
56
+ recursive-exclude tests *
57
+
58
+ # test_data/: Developer-only fixture files (also in .gitignore).
59
+ # Tests use /tmp/test_data/ with mocks, not this directory.
60
+ recursive-exclude test_data *
61
+
62
+ # _legacy/: Deprecated code archive (if present). No distribution value.
63
+ prune _legacy
64
+
65
+ # experiments/: Empty functional placeholder for user experimental extensions.
66
+ prune experiments
67
+
68
+ # docs/: Documentation source files (Sphinx). Available via Git repository,
69
+ # not needed in sdist. Per pyOpenSci: docs are hosted separately (Read the Docs).
70
+ prune docs
71
+
72
+ # milia_pipeline.egg-info/: Setuptools build cache artifact. Each clone
73
+ # generates its own via pip install -e . (pypa/setuptools #3348).
74
+ prune milia_pipeline.egg-info
75
+
76
+ # ---- Global exclusions — compiled/generated artifacts -----------------------
77
+ # Standard safety net: compiled Python files, cache directories, runtime logs.
78
+ global-exclude *.py[codz]
79
+ global-exclude __pycache__
80
+ global-exclude *.log