vector-mtrl 0.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.
- vector_mtrl-0.2.0/.gitignore +243 -0
- vector_mtrl-0.2.0/CHANGELOG.md +162 -0
- vector_mtrl-0.2.0/LICENSE +373 -0
- vector_mtrl-0.2.0/NOTICE +30 -0
- vector_mtrl-0.2.0/PKG-INFO +142 -0
- vector_mtrl-0.2.0/README.md +121 -0
- vector_mtrl-0.2.0/docs/user/getting-started.md +188 -0
- vector_mtrl-0.2.0/docs/user/reference.md +248 -0
- vector_mtrl-0.2.0/docs/user/workflows.md +576 -0
- vector_mtrl-0.2.0/mtrl/__init__.py +144 -0
- vector_mtrl-0.2.0/mtrl/_alignment_report.py +105 -0
- vector_mtrl-0.2.0/mtrl/_archive_documents.py +73 -0
- vector_mtrl-0.2.0/mtrl/_archive_integrity.py +539 -0
- vector_mtrl-0.2.0/mtrl/_archive_loading.py +1070 -0
- vector_mtrl-0.2.0/mtrl/_archive_serialise.py +696 -0
- vector_mtrl-0.2.0/mtrl/_candidate_matching.py +216 -0
- vector_mtrl-0.2.0/mtrl/_cli.py +28 -0
- vector_mtrl-0.2.0/mtrl/_disclosure.py +735 -0
- vector_mtrl-0.2.0/mtrl/_ingestion_shortcuts.py +99 -0
- vector_mtrl-0.2.0/mtrl/_install_targets.py +36 -0
- vector_mtrl-0.2.0/mtrl/_optional.py +38 -0
- vector_mtrl-0.2.0/mtrl/_provenance.py +32 -0
- vector_mtrl-0.2.0/mtrl/_receipts.py +211 -0
- vector_mtrl-0.2.0/mtrl/_record_resolution.py +60 -0
- vector_mtrl-0.2.0/mtrl/_replay_plan.py +557 -0
- vector_mtrl-0.2.0/mtrl/_replay_run.py +734 -0
- vector_mtrl-0.2.0/mtrl/_run_management.py +400 -0
- vector_mtrl-0.2.0/mtrl/_source_capture.py +507 -0
- vector_mtrl-0.2.0/mtrl/_table_plan.py +271 -0
- vector_mtrl-0.2.0/mtrl/_table_provenance.py +387 -0
- vector_mtrl-0.2.0/mtrl/_table_values.py +188 -0
- vector_mtrl-0.2.0/mtrl/_transform_apply.py +223 -0
- vector_mtrl-0.2.0/mtrl/_transform_validation.py +1367 -0
- vector_mtrl-0.2.0/mtrl/archive/__init__.py +54 -0
- vector_mtrl-0.2.0/mtrl/archive/canonical.py +45 -0
- vector_mtrl-0.2.0/mtrl/archive/codecs.py +88 -0
- vector_mtrl-0.2.0/mtrl/archive/dtypes.py +39 -0
- vector_mtrl-0.2.0/mtrl/archive/reader.py +945 -0
- vector_mtrl-0.2.0/mtrl/archive/validation.py +1872 -0
- vector_mtrl-0.2.0/mtrl/connectors/__init__.py +1 -0
- vector_mtrl-0.2.0/mtrl/connectors/protocols.py +84 -0
- vector_mtrl-0.2.0/mtrl/disclosure.py +273 -0
- vector_mtrl-0.2.0/mtrl/domain/__init__.py +129 -0
- vector_mtrl-0.2.0/mtrl/domain/archive_limits.py +46 -0
- vector_mtrl-0.2.0/mtrl/domain/committed_values.py +539 -0
- vector_mtrl-0.2.0/mtrl/domain/frozen_containers.py +168 -0
- vector_mtrl-0.2.0/mtrl/domain/identities.py +174 -0
- vector_mtrl-0.2.0/mtrl/domain/provenance.py +448 -0
- vector_mtrl-0.2.0/mtrl/domain/records.py +233 -0
- vector_mtrl-0.2.0/mtrl/domain/revisions.py +121 -0
- vector_mtrl-0.2.0/mtrl/domain/source.py +13 -0
- vector_mtrl-0.2.0/mtrl/domain/verification.py +302 -0
- vector_mtrl-0.2.0/mtrl/excel.py +139 -0
- vector_mtrl-0.2.0/mtrl/exceptions.py +215 -0
- vector_mtrl-0.2.0/mtrl/exports.py +326 -0
- vector_mtrl-0.2.0/mtrl/features.py +251 -0
- vector_mtrl-0.2.0/mtrl/frames.py +228 -0
- vector_mtrl-0.2.0/mtrl/grids.py +1172 -0
- vector_mtrl-0.2.0/mtrl/integrity/__init__.py +143 -0
- vector_mtrl-0.2.0/mtrl/integrity/canonical.py +511 -0
- vector_mtrl-0.2.0/mtrl/integrity/digests.py +363 -0
- vector_mtrl-0.2.0/mtrl/integrity/manifest.py +631 -0
- vector_mtrl-0.2.0/mtrl/integrity/receipts.py +771 -0
- vector_mtrl-0.2.0/mtrl/integrity/verification.py +1303 -0
- vector_mtrl-0.2.0/mtrl/models.py +952 -0
- vector_mtrl-0.2.0/mtrl/mtrl.py +1852 -0
- vector_mtrl-0.2.0/mtrl/operations/__init__.py +36 -0
- vector_mtrl-0.2.0/mtrl/operations/_identity.py +17 -0
- vector_mtrl-0.2.0/mtrl/operations/_validation.py +106 -0
- vector_mtrl-0.2.0/mtrl/operations/arithmetic.py +207 -0
- vector_mtrl-0.2.0/mtrl/operations/base.py +292 -0
- vector_mtrl-0.2.0/mtrl/operations/resampling.py +203 -0
- vector_mtrl-0.2.0/mtrl/operations/resampling_scipy.py +138 -0
- vector_mtrl-0.2.0/mtrl/operations/spectra.py +58 -0
- vector_mtrl-0.2.0/mtrl/processing/__init__.py +23 -0
- vector_mtrl-0.2.0/mtrl/processing/_table_capture.py +341 -0
- vector_mtrl-0.2.0/mtrl/processing/limits.py +9 -0
- vector_mtrl-0.2.0/mtrl/processing/registry.py +1533 -0
- vector_mtrl-0.2.0/mtrl/protocols.py +13 -0
- vector_mtrl-0.2.0/mtrl/py.typed +0 -0
- vector_mtrl-0.2.0/mtrl/replay.py +946 -0
- vector_mtrl-0.2.0/mtrl/tables.py +1365 -0
- vector_mtrl-0.2.0/mtrl/transformations/__init__.py +22 -0
- vector_mtrl-0.2.0/mtrl/transformations/base.py +17 -0
- vector_mtrl-0.2.0/mtrl/units.py +60 -0
- vector_mtrl-0.2.0/pyproject.toml +211 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
share/python-wheels/
|
|
24
|
+
*.egg-info/
|
|
25
|
+
.installed.cfg
|
|
26
|
+
*.egg
|
|
27
|
+
MANIFEST
|
|
28
|
+
|
|
29
|
+
# PyInstaller
|
|
30
|
+
# Usually these files are written by a python script from a template
|
|
31
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
32
|
+
*.manifest
|
|
33
|
+
*.spec
|
|
34
|
+
|
|
35
|
+
# Installer logs
|
|
36
|
+
pip-log.txt
|
|
37
|
+
pip-delete-this-directory.txt
|
|
38
|
+
|
|
39
|
+
# Unit test / coverage reports
|
|
40
|
+
htmlcov/
|
|
41
|
+
.tox/
|
|
42
|
+
.nox/
|
|
43
|
+
.coverage
|
|
44
|
+
.coverage.*
|
|
45
|
+
.cache
|
|
46
|
+
nosetests.xml
|
|
47
|
+
coverage.xml
|
|
48
|
+
*.cover
|
|
49
|
+
*.py,cover
|
|
50
|
+
.hypothesis/
|
|
51
|
+
.pytest_cache/
|
|
52
|
+
cover/
|
|
53
|
+
|
|
54
|
+
# Translations
|
|
55
|
+
*.mo
|
|
56
|
+
*.pot
|
|
57
|
+
|
|
58
|
+
# Django stuff:
|
|
59
|
+
*.log
|
|
60
|
+
local_settings.py
|
|
61
|
+
db.sqlite3
|
|
62
|
+
db.sqlite3-journal
|
|
63
|
+
|
|
64
|
+
# Flask stuff:
|
|
65
|
+
instance/
|
|
66
|
+
.webassets-cache
|
|
67
|
+
|
|
68
|
+
# Scrapy stuff:
|
|
69
|
+
.scrapy
|
|
70
|
+
|
|
71
|
+
# Sphinx documentation
|
|
72
|
+
docs/_build/
|
|
73
|
+
|
|
74
|
+
# PyBuilder
|
|
75
|
+
.pybuilder/
|
|
76
|
+
target/
|
|
77
|
+
|
|
78
|
+
# Jupyter Notebook
|
|
79
|
+
.ipynb_checkpoints
|
|
80
|
+
|
|
81
|
+
# IPython
|
|
82
|
+
profile_default/
|
|
83
|
+
ipython_config.py
|
|
84
|
+
|
|
85
|
+
# pyenv
|
|
86
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
87
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
88
|
+
# .python-version
|
|
89
|
+
|
|
90
|
+
# pipenv
|
|
91
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
92
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
93
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
94
|
+
# install all needed dependencies.
|
|
95
|
+
#Pipfile.lock
|
|
96
|
+
|
|
97
|
+
# poetry
|
|
98
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
99
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
100
|
+
# commonly ignored for libraries.
|
|
101
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
102
|
+
#poetry.lock
|
|
103
|
+
|
|
104
|
+
# pdm
|
|
105
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
106
|
+
#pdm.lock
|
|
107
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
|
108
|
+
# in version control.
|
|
109
|
+
# https://pdm.fming.dev/#use-with-ide
|
|
110
|
+
.pdm.toml
|
|
111
|
+
|
|
112
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
113
|
+
__pypackages__/
|
|
114
|
+
|
|
115
|
+
# Celery stuff
|
|
116
|
+
celerybeat-schedule
|
|
117
|
+
celerybeat.pid
|
|
118
|
+
|
|
119
|
+
# SageMath parsed files
|
|
120
|
+
*.sage.py
|
|
121
|
+
|
|
122
|
+
# Environments
|
|
123
|
+
.env
|
|
124
|
+
.venv
|
|
125
|
+
env/
|
|
126
|
+
venv/
|
|
127
|
+
ENV/
|
|
128
|
+
env.bak/
|
|
129
|
+
venv.bak/
|
|
130
|
+
|
|
131
|
+
# Spyder project settings
|
|
132
|
+
.spyderproject
|
|
133
|
+
.spyproject
|
|
134
|
+
|
|
135
|
+
# Rope project settings
|
|
136
|
+
.ropeproject
|
|
137
|
+
|
|
138
|
+
# mkdocs documentation
|
|
139
|
+
/site
|
|
140
|
+
|
|
141
|
+
# mypy
|
|
142
|
+
.mypy_cache/
|
|
143
|
+
.dmypy.json
|
|
144
|
+
dmypy.json
|
|
145
|
+
|
|
146
|
+
# Pyre type checker
|
|
147
|
+
.pyre/
|
|
148
|
+
|
|
149
|
+
# pytype static type analyzer
|
|
150
|
+
.pytype/
|
|
151
|
+
|
|
152
|
+
# Cython debug symbols
|
|
153
|
+
cython_debug/
|
|
154
|
+
|
|
155
|
+
# PyCharm
|
|
156
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
157
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
158
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
159
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
160
|
+
.idea/
|
|
161
|
+
|
|
162
|
+
### macOS ###
|
|
163
|
+
# General
|
|
164
|
+
.DS_Store
|
|
165
|
+
.AppleDouble
|
|
166
|
+
.LSOverride
|
|
167
|
+
|
|
168
|
+
# Icon must end with two \r
|
|
169
|
+
Icon
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
# Thumbnails
|
|
173
|
+
._*
|
|
174
|
+
|
|
175
|
+
# Files that might appear in the root of a volume
|
|
176
|
+
.DocumentRevisions-V100
|
|
177
|
+
.fseventsd
|
|
178
|
+
.Spotlight-V100
|
|
179
|
+
.TemporaryItems
|
|
180
|
+
.Trashes
|
|
181
|
+
.VolumeIcon.icns
|
|
182
|
+
.com.apple.timemachine.donotpresent
|
|
183
|
+
|
|
184
|
+
# Directories potentially created on remote AFP share
|
|
185
|
+
.AppleDB
|
|
186
|
+
.AppleDesktop
|
|
187
|
+
Network Trash Folder
|
|
188
|
+
Temporary Items
|
|
189
|
+
.apdisk
|
|
190
|
+
|
|
191
|
+
### macOS Patch ###
|
|
192
|
+
# iCloud generated files
|
|
193
|
+
*.icloud
|
|
194
|
+
|
|
195
|
+
### Linux ###
|
|
196
|
+
*~
|
|
197
|
+
|
|
198
|
+
# temporary files which can be created if a process still has a handle open of a deleted file
|
|
199
|
+
.fuse_hidden*
|
|
200
|
+
|
|
201
|
+
# KDE directory preferences
|
|
202
|
+
.directory
|
|
203
|
+
|
|
204
|
+
# Linux trash folder which might appear on any partition or disk
|
|
205
|
+
.Trash-*
|
|
206
|
+
|
|
207
|
+
# .nfs files are created when an open file is removed but is still being accessed
|
|
208
|
+
.nfs*
|
|
209
|
+
|
|
210
|
+
### Windows ###
|
|
211
|
+
# Windows thumbnail cache files
|
|
212
|
+
Thumbs.db
|
|
213
|
+
Thumbs.db:encryptable
|
|
214
|
+
ehthumbs.db
|
|
215
|
+
ehthumbs_vista.db
|
|
216
|
+
|
|
217
|
+
# Dump file
|
|
218
|
+
*.stackdump
|
|
219
|
+
|
|
220
|
+
# Folder config file
|
|
221
|
+
[Dd]esktop.ini
|
|
222
|
+
|
|
223
|
+
# Recycle Bin used on file shares
|
|
224
|
+
$RECYCLE.BIN/
|
|
225
|
+
|
|
226
|
+
# Windows Installer files
|
|
227
|
+
*.cab
|
|
228
|
+
*.msi
|
|
229
|
+
*.msix
|
|
230
|
+
*.msm
|
|
231
|
+
*.msp
|
|
232
|
+
|
|
233
|
+
# Windows shortcuts
|
|
234
|
+
*.lnk
|
|
235
|
+
.pi
|
|
236
|
+
|
|
237
|
+
# Private local TRIOS corpus, native files, exports, and reports.
|
|
238
|
+
/data/tri-corpus/
|
|
239
|
+
|
|
240
|
+
# Generated project overview and local test corpora.
|
|
241
|
+
/PROJECT_DIRECTORY_OVERVIEW.md
|
|
242
|
+
/tests/data/mtrl/
|
|
243
|
+
/node_modules/
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to the core distribution are documented in this file. Each private suite
|
|
4
|
+
distribution keeps its own changelog in its own repository. Maintainers keep the versioning, tag and publishing
|
|
5
|
+
contract in the repository file `RELEASE.md`.
|
|
6
|
+
|
|
7
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and each
|
|
8
|
+
distribution uses pre-1.0 Semantic Versioning: while a distribution is `0.x`, a minor bump may
|
|
9
|
+
break, and every breaking change is named in the release entry.
|
|
10
|
+
|
|
11
|
+
## [Unreleased]
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Prepare `0.2.0` as the first public-core release candidate with the interp and tabular
|
|
16
|
+
capabilities folded into the core as public extras (`interp`, `tabular`, `excel`), per the
|
|
17
|
+
2026-10-22 owner decision. The two former suite distributions cease: `vector-mtrl-interp`
|
|
18
|
+
and `vector-mtrl-tabular` no longer exist, and the repository is a single uv project.
|
|
19
|
+
Breaking changes: the `mtrl.resample.pchip` and `mtrl.resample.cubic` operations restore
|
|
20
|
+
as core built-ins, so archives recorded under the suite identifiers
|
|
21
|
+
`vector-mtrl-interp.resample.pchip` and `vector-mtrl-interp.resample.cubic` cannot resolve
|
|
22
|
+
or rerun on this version; the suite `register(registry)` seam is gone; the `.xlsx` writer
|
|
23
|
+
registers at import, so a base install without the `excel` extra raises
|
|
24
|
+
`MissingOptionalDependencyError` naming `vector-mtrl[excel]` instead of
|
|
25
|
+
`UnsupportedExportFormatError`, and the `.xlsx` suffix is no longer free for a custom
|
|
26
|
+
writer; the `vector-mtrl-interp.suite/1` capability string is no longer recorded. The
|
|
27
|
+
base install stays NumPy, Pydantic, and RFC 8785 canonical JSON only. The source-tree
|
|
28
|
+
version fallback also names `0.2.0` when installed distribution metadata is absent.
|
|
29
|
+
Uploads still need separate owner approval, and the public enable switch stays off.
|
|
30
|
+
|
|
31
|
+
- Cut `0.1.4` as the public-core build-only candidate: remove the README section that named
|
|
32
|
+
the private suite distributions and the authorised-customer boundary, so the package long
|
|
33
|
+
description carries no private-suite delivery detail. The source-tree version fallback
|
|
34
|
+
also names `0.1.4` when installed distribution metadata is absent. Uploads still need
|
|
35
|
+
separate owner approval, and the public enable switch stays off.
|
|
36
|
+
|
|
37
|
+
- Cut `0.1.3` as the public-core build-only candidate after the `vector-mtrl-v0.1.2` tag
|
|
38
|
+
was stranded: the tag was pushed before its preparation commits reached `main`, the
|
|
39
|
+
pull-request merge then rewrote the commit identities, and the immutable tag protection
|
|
40
|
+
keeps the tag on the off-main commit. The stranded tag's build-only run stayed
|
|
41
|
+
upload-disabled and its archives were never reviewed for upload. This entry re-cuts the
|
|
42
|
+
same hardened content as `0.1.3` from the merged `main` commit, with the source-tree
|
|
43
|
+
version fallback also naming `0.1.3` when installed distribution metadata is absent.
|
|
44
|
+
Uploads still need separate owner approval, and the public enable switch stays off.
|
|
45
|
+
|
|
46
|
+
- Prepare `0.1.2` as the public-core candidate cut from the hardened toolchain. The 2026-10-20
|
|
47
|
+
eMudhra intermediate-certificate compromise left the previous pins (Node.js `22.15.0`,
|
|
48
|
+
`uv` `0.12.1`) on vulnerable bundled trust stores, so the repository and workflow pins move
|
|
49
|
+
to Node.js `22.23.4` and `uv` `0.13.4`, and the release build runs with the patched
|
|
50
|
+
certificate bundles. Keep the earlier unpublished `0.1.0` and `0.1.1` tags and their
|
|
51
|
+
reviewed files unchanged. Uploads still need separate owner approval, and the public enable
|
|
52
|
+
switch stays off. The source-tree version fallback also names `0.1.2` when installed
|
|
53
|
+
distribution metadata is absent.
|
|
54
|
+
|
|
55
|
+
- Prepare `0.1.1` as a new candidate for the first public-core release, with cleaned documentation.
|
|
56
|
+
Keep the earlier unpublished `0.1.0` tag and reviewed files unchanged. Uploads still need
|
|
57
|
+
separate owner approval, and the public enable switch stays off. The source-tree version
|
|
58
|
+
fallback also names `0.1.1` when installed distribution metadata is absent.
|
|
59
|
+
|
|
60
|
+
- Separate the concise public README and three shipped user guides from private suite guidance,
|
|
61
|
+
maintainer runbooks and dated preparation records. Keep executable documentation coverage and
|
|
62
|
+
the strict public archive boundary. Existing reviewed release files and tags stay unchanged.
|
|
63
|
+
|
|
64
|
+
- Earlier preparation moved the core version from `0.0.1` to the unpublished `0.1.0`
|
|
65
|
+
candidate. The two local suite members update their declared core requirement to
|
|
66
|
+
`vector-mtrl>=0.1.0,<0.2` under the 0.x minor core range rule; their own versions stay at
|
|
67
|
+
`0.0.1` until their first own release entries. No date is filed and no upload is claimed:
|
|
68
|
+
the first upload still needs explicit owner approval, and the public enable switch stays
|
|
69
|
+
off.
|
|
70
|
+
- Public release preparation now permits only core tags. Uploads require an explicit enable
|
|
71
|
+
switch. An offline gate rejects legacy licence metadata, private suite dependencies, and
|
|
72
|
+
non-core archive content. The old six-public-package train workflow is disabled.
|
|
73
|
+
- The core distribution is renamed from `mtrl` to `vector-mtrl` in one change: the root
|
|
74
|
+
project name, the member dependency strings, the wheel manifest key, the README install
|
|
75
|
+
commands, and the diagnostic install guidance all name `vector-mtrl`. The import package
|
|
76
|
+
stays `mtrl`, and the stored identity values keep their spelling: the operation
|
|
77
|
+
identifiers, the capability strings, the format feature names, and the recorded
|
|
78
|
+
`implementation_package` values, including the core value `mtrl`.
|
|
79
|
+
|
|
80
|
+
### Added
|
|
81
|
+
|
|
82
|
+
- Author disclosure: `Mtrl.attach_environment_record` attaches one passive environment record,
|
|
83
|
+
`Mtrl.attach_source_bundle` binds one passive source bundle to the exact custom output record,
|
|
84
|
+
`Mtrl.environment_record` and `Mtrl.source_bundles` inspect the attached values, and
|
|
85
|
+
`Mtrl.export_source_bundle` writes one committed bundle as three fixed files. Attached material
|
|
86
|
+
is inert: MTRL records the author's claim and never imports, compiles, or executes it. The
|
|
87
|
+
value types live in `mtrl.disclosure`, and `EnvironmentRecordError` and `SourceBundleError`
|
|
88
|
+
join the package-root exports.
|
|
89
|
+
- Two core format features, `mtrl.environment-records/1` and `mtrl.source-bundles/1`, gate
|
|
90
|
+
archives that carry attachment content.
|
|
91
|
+
- `Mtrl.export_execution_plan`: the replay plan of one committed target as a
|
|
92
|
+
standalone `mtrl-execution-plan/1` document. The document is code-free, holds
|
|
93
|
+
recorded facts only, and carries no local registration fact, so it never
|
|
94
|
+
grants execution approval. The loader bounds bytes and depth and rejects every
|
|
95
|
+
closed-schema violation.
|
|
96
|
+
- `Mtrl.replay_plan`, `Mtrl.capability_view`, and `Mtrl.rerun`: explicit replay of a committed
|
|
97
|
+
operation chain. The plan and the capability view are read-only and execute nothing; the rerun
|
|
98
|
+
resolves each step only through the local registry, commits fresh identities in one revision,
|
|
99
|
+
and reports the recorded versus fresh canonical digests per step. `ReplayPlanError` and
|
|
100
|
+
`ReplayIneligibleError` join the package-root exports, and the replay types live under
|
|
101
|
+
`mtrl.replay`.
|
|
102
|
+
- Release safety before the first train: the core sdist carries a deliberate allowlist (`mtrl/`
|
|
103
|
+
with its `py.typed` marker, `LICENSE`, `NOTICE`, `README.md`, `CHANGELOG.md`, and the three
|
|
104
|
+
public guides under `docs/user/`) and no tests, because the
|
|
105
|
+
root test tree is workspace-coupled; `tests/test_packaging_inventory.py` pins the exact
|
|
106
|
+
top-level inventory of every workspace sdist; CI rebuilds the core wheel from its extracted
|
|
107
|
+
sdist in an isolated environment and imports `mtrl` from the installed wheel; and
|
|
108
|
+
`scripts/release_core_range_gate.py` fails closed before any upload when a suite tag's
|
|
109
|
+
declared core range does not resolve from PyPI.
|
|
110
|
+
|
|
111
|
+
### Removed
|
|
112
|
+
|
|
113
|
+
- The `vector-mtrl-spa` and `vector-mtrl-trios` suites leave this workspace. They now live in
|
|
114
|
+
the private `vectorlabsonline/vector-mtrl-connectors` repository. The development group, the
|
|
115
|
+
workspace sources, the lockfile, and the CI member steps and wheel rows no longer select them.
|
|
116
|
+
The core `Mtrl.load_spa` and `Mtrl.load_tri` facades stay and fail closed without the suite.
|
|
117
|
+
- The `vector-mtrl-viz` suite leaves this workspace. It now lives in the private
|
|
118
|
+
`vectorlabsonline/vector-mtrl-viz` repository. The development group, the workspace
|
|
119
|
+
sources, and the lockfile no longer select it.
|
|
120
|
+
- The `spa`, `interp`, `tabular`, and `excel` core extras are removed. Development requirements
|
|
121
|
+
select the private suite members of this workspace; users install authorised suite wheels
|
|
122
|
+
from the member repositories. Superseded on 2026-10-22: the fold restores the `interp`,
|
|
123
|
+
`tabular`, and `excel` core extras, and the development group selects them.
|
|
124
|
+
- Legacy archive format support, including the `upgrade_legacy` path and the legacy alias map.
|
|
125
|
+
The single archive format is current-format-only, and an unknown format fails closed.
|
|
126
|
+
- The `mtrl.ftir.excise-co2-window` and `mtrl.ftir.baseline-airpls` operations and the `ftir`
|
|
127
|
+
extra.
|
|
128
|
+
- The `mtrl.resample.pchip` and `mtrl.resample.cubic` identifiers. The operations move to the
|
|
129
|
+
`vector-mtrl-interp` suite under new `vector-mtrl-interp.resample.*` identifiers.
|
|
130
|
+
Superseded on 2026-10-22: the fold returns both operations to the core as built-ins under
|
|
131
|
+
their historical identifiers.
|
|
132
|
+
|
|
133
|
+
### Changed
|
|
134
|
+
|
|
135
|
+
- `MaterialData` accepts `units=None` as an explicit no-unit declaration: the values carry no unit
|
|
136
|
+
contract, construction stores an empty units mapping, and no operation invents a unit for
|
|
137
|
+
undeclared values. Passing `None` raised a pydantic validation error before.
|
|
138
|
+
- The `ReplayPlanError` message for a rerun step with no local implementation now states the
|
|
139
|
+
registry step as well: the registry in use must have registered the operations of the named
|
|
140
|
+
package, and installing the package alone registers nothing.
|
|
141
|
+
- Docstrings: `Mtrl.aggregate` reaches the house standard with Args, Returns, and Raises;
|
|
142
|
+
`Mtrl.save` documents the forced `.mtrl` suffix; and `Mtrl.load` states that the default registry
|
|
143
|
+
is a fresh built-in registry that holds no suite operations.
|
|
144
|
+
- The core distribution registers `mtrl.environment-records/1` and `mtrl.source-bundles/1` at
|
|
145
|
+
import, so the supported feature set is no longer empty by default.
|
|
146
|
+
`clear_supported_features()` still removes every feature; restore the core pair with
|
|
147
|
+
`register_supported_features(CORE_FORMAT_FEATURES)`.
|
|
148
|
+
- The operations layout is unified under `mtrl/operations/`.
|
|
149
|
+
- Instrument ingestion moves to the suites: the SPA connector to `vector-mtrl-spa` and the native
|
|
150
|
+
TRIOS connector to `vector-mtrl-trios`.
|
|
151
|
+
- The pandas frame builders, the Excel writer, and the internal table evaluation move to the
|
|
152
|
+
`vector-mtrl-tabular` suite. Superseded on 2026-10-22: the fold returns them to the core
|
|
153
|
+
through its public `tabular` and `excel` extras.
|
|
154
|
+
- The demo moves to the `vector-mtrl-viz` suite as its first consumer.
|
|
155
|
+
|
|
156
|
+
## [0.0.1] - 2026-10-10
|
|
157
|
+
|
|
158
|
+
Baseline record of the core distribution. The code at this version is the Stage 0-1 modular rework
|
|
159
|
+
branch, `feature/modular-stage0`. It records the approved modular direction and delivers the
|
|
160
|
+
format-feature gate, the frozen manifest, namespace reservation at registration, derived capability
|
|
161
|
+
strings, descriptor-driven validation, and the stdlib CSV writer. This version was not published;
|
|
162
|
+
wheels are CI artefacts only. History before this baseline is not backfilled.
|