cfinterface 1.9.0__tar.gz → 1.10.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.
- {cfinterface-1.9.0 → cfinterface-1.10.0}/.gitignore +3 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/CHANGELOG.md +19 -1
- cfinterface-1.10.0/CONTRIBUTING.md +36 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/PKG-INFO +1 -1
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/__init__.py +1 -1
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/floatfield.py +14 -1
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/reading/registerreading.py +1 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/conf.py +1 -1
- cfinterface-1.10.0/docs/source/getting_started/contributing.rst +103 -0
- cfinterface-1.10.0/docs/source/guides/architecture.rst +454 -0
- cfinterface-1.10.0/docs/source/guides/faq.rst +274 -0
- cfinterface-1.10.0/docs/source/guides/migration-v1.9.rst +281 -0
- cfinterface-1.10.0/docs/source/guides/performance.rst +212 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/index.rst +11 -11
- cfinterface-1.10.0/examples/plot_block_file.py +201 -0
- cfinterface-1.10.0/examples/plot_section_file.py +201 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_floatfield.py +105 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/files/test_registerfile.py +42 -0
- cfinterface-1.9.0/CONTRIBUTING.md +0 -37
- cfinterface-1.9.0/docs/source/getting_started/contributing.rst +0 -104
- cfinterface-1.9.0/docs/source/guides/architecture.rst +0 -455
- cfinterface-1.9.0/docs/source/guides/faq.rst +0 -278
- cfinterface-1.9.0/docs/source/guides/migration-v1.9.rst +0 -283
- cfinterface-1.9.0/docs/source/guides/performance.rst +0 -217
- cfinterface-1.9.0/examples/plot_block_file.py +0 -201
- cfinterface-1.9.0/examples/plot_section_file.py +0 -201
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/.implementation-state.json +0 -172
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/00-master-plan.md +0 -143
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/README.md +0 -55
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-01-remove-pandas-dependency/00-epic-overview.md +0 -49
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-01-remove-pandas-dependency/learnings.md +0 -91
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-01-remove-pandas-dependency/ticket-001-create-null-checking-utility.md +0 -176
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-01-remove-pandas-dependency/ticket-002-replace-pd-isnull-in-fields.md +0 -177
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-01-remove-pandas-dependency/ticket-003-lazy-pandas-import-in-registerfile.md +0 -143
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-01-remove-pandas-dependency/ticket-004-move-pandas-to-optional-dependency.md +0 -153
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/00-epic-overview.md +0 -60
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/learnings.md +0 -76
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/ticket-005-compile-regex-patterns.md +0 -183
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/ticket-006-create-storagetype-enum.md +0 -180
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/ticket-007-update-factory-functions.md +0 -194
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/ticket-008-migrate-internal-storage-usage.md +0 -243
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/ticket-009-add-deprecation-warnings.md +0 -193
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-03-optimize-float-field-write/00-epic-overview.md +0 -25
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-03-optimize-float-field-write/learnings.md +0 -69
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-03-optimize-float-field-write/ticket-010-optimize-floatfield-write.md +0 -242
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-03-optimize-float-field-write/ticket-011-add-floatfield-benchmarks.md +0 -224
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/00-epic-overview.md +0 -33
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/learnings.md +0 -96
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/ticket-012-list-backed-registerdata.md +0 -160
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/ticket-013-list-backed-blockdata.md +0 -158
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/ticket-014-list-backed-sectiondata.md +0 -156
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/ticket-015-computed-prev-next-properties.md +0 -266
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/ticket-016-type-indexed-lookup.md +0 -199
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-05-type-safe-text-binary-dispatch/00-epic-overview.md +0 -29
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-05-type-safe-text-binary-dispatch/learnings.md +0 -209
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-05-type-safe-text-binary-dispatch/ticket-017-typed-field-protocol.md +0 -175
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-05-type-safe-text-binary-dispatch/ticket-018-typed-repository-signatures.md +0 -210
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-05-type-safe-text-binary-dispatch/ticket-019-typed-line-dispatch.md +0 -159
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-05-type-safe-text-binary-dispatch/ticket-020-typed-component-io.md +0 -249
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-06-generic-tabular-parser/00-epic-overview.md +0 -27
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-06-generic-tabular-parser/ticket-021-tabular-parser-engine.md +0 -198
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-06-generic-tabular-parser/ticket-022-tabular-section-base.md +0 -220
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-06-generic-tabular-parser/ticket-023-delimited-tabular-parsing.md +0 -198
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-07-schema-versioning-and-batch-ops/00-epic-overview.md +0 -32
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-07-schema-versioning-and-batch-ops/learnings.md +0 -62
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-07-schema-versioning-and-batch-ops/ticket-024-schema-version-descriptor.md +0 -133
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-07-schema-versioning-and-batch-ops/ticket-025-instance-level-version-binding.md +0 -162
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-07-schema-versioning-and-batch-ops/ticket-026-batch-read-api.md +0 -164
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-07-schema-versioning-and-batch-ops/ticket-027-version-validation.md +0 -214
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-01-summary.md +0 -41
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-02-summary.md +0 -64
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-03-summary.md +0 -80
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-04-summary.md +0 -79
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-05-summary.md +0 -96
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-06-summary.md +0 -130
- cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-07-summary.md +0 -125
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/.implementation-state.json +0 -449
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/00-master-plan.md +0 -119
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/README.md +0 -69
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-01-pyproject-and-tool-config/00-epic-overview.md +0 -44
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-01-pyproject-and-tool-config/ticket-001-update-classifiers-and-metadata.md +0 -117
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-01-pyproject-and-tool-config/ticket-002-add-pytest-configuration.md +0 -118
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-01-pyproject-and-tool-config/ticket-003-add-mypy-configuration.md +0 -157
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-01-pyproject-and-tool-config/ticket-004-fix-mypy-strict-errors.md +0 -141
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-01-pyproject-and-tool-config/ticket-005-add-coverage-and-ruff-config.md +0 -131
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-01-pyproject-and-tool-config/ticket-006-add-py-typed-and-dev-deps.md +0 -138
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-02-ci-overhaul/00-epic-overview.md +0 -41
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-02-ci-overhaul/ticket-007-expand-test-matrix.md +0 -166
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-02-ci-overhaul/ticket-008-extract-lint-job.md +0 -138
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-02-ci-overhaul/ticket-009-create-benchmark-workflow.md +0 -135
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-02-ci-overhaul/ticket-010-update-docs-and-publish-workflows.md +0 -189
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-03-test-infrastructure/00-epic-overview.md +0 -40
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-03-test-infrastructure/ticket-011-create-conftest-and-fixtures.md +0 -195
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-03-test-infrastructure/ticket-012-add-hypothesis-field-tests.md +0 -205
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-03-test-infrastructure/ticket-013-add-hypothesis-tabular-tests.md +0 -238
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-03-test-infrastructure/ticket-014-migrate-to-pytest-benchmark.md +0 -179
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-04-sphinx-docs/00-epic-overview.md +0 -41
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-04-sphinx-docs/ticket-015-add-tabular-reference-pages.md +0 -155
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-04-sphinx-docs/ticket-016-add-versioning-reference-page.md +0 -151
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-04-sphinx-docs/ticket-017-add-storage-and-adapter-pages.md +0 -181
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-04-sphinx-docs/ticket-018-fix-docstrings-and-index.md +0 -157
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-05-changelog-and-release-prep/00-epic-overview.md +0 -33
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-05-changelog-and-release-prep/ticket-019-create-changelog.md +0 -169
- cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-05-changelog-and-release-prep/ticket-020-release-prep-review.md +0 -124
- cfinterface-1.9.0/plans/infra-docs-overhaul/.implementation-state.json +0 -337
- cfinterface-1.9.0/plans/infra-docs-overhaul/00-master-plan.md +0 -107
- cfinterface-1.9.0/plans/infra-docs-overhaul/README.md +0 -81
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-01-ci-and-developer-tooling/00-epic-overview.md +0 -26
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-01-ci-and-developer-tooling/ticket-001-add-pre-commit-configuration.md +0 -124
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-01-ci-and-developer-tooling/ticket-002-upgrade-github-actions-versions.md +0 -103
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-01-ci-and-developer-tooling/ticket-003-migrate-docs-deployment.md +0 -149
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-02-sphinx-modernization/00-epic-overview.md +0 -27
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-02-sphinx-modernization/ticket-004-migrate-sphinx-theme-to-furo.md +0 -119
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-02-sphinx-modernization/ticket-005-add-sphinx-gallery-examples.md +0 -119
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-02-sphinx-modernization/ticket-006-update-conf-language-intersphinx.md +0 -113
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-03-documentation-content/00-epic-overview.md +0 -30
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-03-documentation-content/ticket-007-create-architecture-overview.md +0 -132
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-03-documentation-content/ticket-008-create-faq-page.md +0 -129
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-03-documentation-content/ticket-009-create-migration-guide.md +0 -138
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-03-documentation-content/ticket-010-create-performance-tips-page.md +0 -131
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-03-documentation-content/ticket-011-update-contributing-rst.md +0 -130
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-04-repository-polish/00-epic-overview.md +0 -23
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-04-repository-polish/ticket-012-create-root-contributing-md.md +0 -106
- cfinterface-1.9.0/plans/infra-docs-overhaul/epic-04-repository-polish/ticket-013-restructure-index-rst.md +0 -142
- cfinterface-1.9.0/plans/infra-docs-overhaul/learnings/epic-01-summary.md +0 -29
- cfinterface-1.9.0/plans/infra-docs-overhaul/learnings/epic-02-summary.md +0 -31
- cfinterface-1.9.0/plans/infra-docs-overhaul/learnings/epic-03-summary.md +0 -28
- {cfinterface-1.9.0 → cfinterface-1.10.0}/.github/workflows/benchmark.yml +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/.github/workflows/docs.yml +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/.github/workflows/main.yml +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/.github/workflows/publish.yml +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/.pre-commit-config.yaml +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/LICENSE +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/README.md +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/benchmarks/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/benchmarks/bench_floatfield_write.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/_utils/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/components/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/components/line/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/components/line/repository.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/components/repository.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/reading/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/reading/repository.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/writing/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/writing/repository.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/block.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/datetimefield.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/defaultblock.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/defaultregister.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/defaultsection.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/field.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/integerfield.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/line.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/literalfield.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/register.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/section.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/tabular.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/data/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/data/blockdata.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/data/registerdata.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/data/sectiondata.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/files/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/files/blockfile.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/files/registerfile.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/files/sectionfile.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/py.typed +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/reading/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/reading/blockreading.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/reading/sectionreading.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/storage.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/versioning.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/writing/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/writing/blockwriting.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/writing/registerwriting.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/writing/sectionwriting.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/_static/logo_cfinterface.svg +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/getting_started/tutorial.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/install/install.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/adapters/files/components.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/adapters/files/line.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/adapters/files/reading.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/adapters/files/writing.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/adapters/index.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/blocks/files/block.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/blocks/files/blockdata.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/blocks/files/blockfile.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/blocks/index.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/fields/components/datetimefield.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/fields/components/field.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/fields/components/floatfield.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/fields/components/integerfield.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/fields/components/literalfield.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/fields/index.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/line/index.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/registers/files/register.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/registers/files/registerdata.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/registers/files/registerfile.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/registers/index.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/sections/files/section.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/sections/files/sectiondata.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/sections/files/sectionfile.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/sections/index.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/storage/files/storagetype.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/storage/index.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/tabular/files/tabularparser.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/tabular/files/tabularsection.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/tabular/index.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/versioning/files/versioning.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/versioning/index.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/examples/README.rst +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/examples/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/examples/plot_register_file.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/examples/plot_tabular_parsing.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/examples/plot_versioned_file.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/pyproject.toml +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/_utils/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/_utils/test_is_null.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/test_blockrepository.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/test_factory.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/test_linerepository.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/test_pattern_cache.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/test_registerrepository.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/test_sectionrepository.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/reading/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/reading/test_readingrepository.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/writing/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/writing/test_writingrepository.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/conftest.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_block.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_datetimefield.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_defaultblock.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_defaultregister.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_defaultsection.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_field.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_field_hypothesis.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_floatfield_benchmark.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_integerfield.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_line.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_literalfield.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_register.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_section.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_storage_integration.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_tabular.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_tabular_hypothesis.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/conftest.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/data/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/data/test_blockdata.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/data/test_registerdata.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/data/test_sectiondata.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/files/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/files/test_blockfile.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/files/test_sectionfile.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/mocks/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/mocks/mock_open.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/reading/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/reading/test_blockreading.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/reading/test_registerreading.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/reading/test_sectionreading.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/test_storage.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/test_storage_deprecation.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/test_versioning.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/writing/__init__.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/writing/test_blockwriting.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/writing/test_registerwriting.py +0 -0
- {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/writing/test_sectionwriting.py +0 -0
|
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.10.0] - 2026-04-13
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- `compact` parameter on `FloatField` (`compact=False` by default) that omits the leading zero for values where `0 < |value| < 1`, matching Fortran fixed-width file conventions and preserving precision in narrow fields
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- `RegisterReading.read()` now resets its internal data before each call, preventing register duplication when `RegisterFile.read()` retries with fallback encodings after a mid-file `UnicodeDecodeError`
|
|
19
|
+
|
|
20
|
+
## [1.9.1] - 2026-03-08
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- Translate all documentation and examples from pt-BR to English, matching the project's established language
|
|
25
|
+
- Change Sphinx language setting from `pt_BR` to `en`
|
|
26
|
+
|
|
10
27
|
## [1.9.0] - 2026-03-08
|
|
11
28
|
|
|
12
29
|
### Added
|
|
@@ -67,5 +84,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
67
84
|
- Null value detection in `Field` write methods now uses `math.isnan()` instead of `pd.isnull()`, eliminating the unnecessary pandas import at module level
|
|
68
85
|
- `RegisterFile._as_df()` now performs a lazy pandas import, only importing the library when the method is actually called
|
|
69
86
|
|
|
70
|
-
[Unreleased]: https://github.com/rjmalves/cfinterface/compare/v1.9.
|
|
87
|
+
[Unreleased]: https://github.com/rjmalves/cfinterface/compare/v1.9.1...HEAD
|
|
88
|
+
[1.9.1]: https://github.com/rjmalves/cfinterface/compare/v1.9.0...v1.9.1
|
|
71
89
|
[1.9.0]: https://github.com/rjmalves/cfinterface/compare/v1.8.3...v1.9.0
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to **cfinterface**! This page
|
|
4
|
+
summarises the essential steps. For detailed instructions, see the
|
|
5
|
+
[full contribution documentation](https://rjmalves.github.io/cfinterface/getting_started/contributing.html).
|
|
6
|
+
|
|
7
|
+
## Reporting Bugs
|
|
8
|
+
|
|
9
|
+
Found unexpected behavior? Open an
|
|
10
|
+
[issue on GitHub](https://github.com/rjmalves/cfinterface/issues) describing
|
|
11
|
+
the problem. Include the Python version, the operating system, and a code
|
|
12
|
+
snippet that allows the error to be reproduced.
|
|
13
|
+
|
|
14
|
+
## Submitting Pull Requests
|
|
15
|
+
|
|
16
|
+
Fixes and improvements are welcome via
|
|
17
|
+
[pull request](https://github.com/rjmalves/cfinterface/pulls). Before
|
|
18
|
+
submitting, read the full documentation to ensure that the code follows the
|
|
19
|
+
project conventions and that all tests and quality checks pass.
|
|
20
|
+
|
|
21
|
+
## Quick Setup
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
git clone https://github.com/rjmalves/cfinterface.git
|
|
25
|
+
cd cfinterface
|
|
26
|
+
uv sync --extra dev
|
|
27
|
+
uv run pre-commit install
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Full Documentation
|
|
31
|
+
|
|
32
|
+
See the contribution page in the project documentation for details on
|
|
33
|
+
pre-commit hooks, code conventions, running tests, and building the
|
|
34
|
+
documentation:
|
|
35
|
+
|
|
36
|
+
<https://rjmalves.github.io/cfinterface/getting_started/contributing.html>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cfinterface
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.10.0
|
|
4
4
|
Summary: Interface for handling custom formatted files
|
|
5
5
|
Project-URL: Documentation, https://rjmalves.github.io/cfinterface/
|
|
6
6
|
Project-URL: Repository, https://github.com/rjmalves/cfinterface/
|
|
@@ -13,7 +13,7 @@ class FloatField(Field):
|
|
|
13
13
|
by 'F' for fixed point notation and 'E' or 'D' for scientific notation.
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
|
-
__slots__ = ["__decimal_digits", "__format", "__sep", "__type"]
|
|
16
|
+
__slots__ = ["__compact", "__decimal_digits", "__format", "__sep", "__type"]
|
|
17
17
|
|
|
18
18
|
TYPES = {
|
|
19
19
|
2: np.float16,
|
|
@@ -29,12 +29,14 @@ class FloatField(Field):
|
|
|
29
29
|
format: str = "F",
|
|
30
30
|
sep: str = ".",
|
|
31
31
|
value: float | None = None,
|
|
32
|
+
compact: bool = False,
|
|
32
33
|
) -> None:
|
|
33
34
|
super().__init__(
|
|
34
35
|
size,
|
|
35
36
|
starting_position,
|
|
36
37
|
value,
|
|
37
38
|
)
|
|
39
|
+
self.__compact = compact
|
|
38
40
|
self.__decimal_digits = decimal_digits
|
|
39
41
|
self.__format = format
|
|
40
42
|
self.__sep = sep
|
|
@@ -63,6 +65,14 @@ class FloatField(Field):
|
|
|
63
65
|
else:
|
|
64
66
|
return np.array([self._value], dtype=self.__type).tobytes()
|
|
65
67
|
|
|
68
|
+
def _apply_compact(self, value: str) -> str:
|
|
69
|
+
if self.__compact and 0 < abs(self._value) < 1:
|
|
70
|
+
if value.startswith("0."):
|
|
71
|
+
return value[1:]
|
|
72
|
+
if value.startswith("-0."):
|
|
73
|
+
return "-" + value[2:]
|
|
74
|
+
return value
|
|
75
|
+
|
|
66
76
|
def _textual_write(self) -> str:
|
|
67
77
|
value = ""
|
|
68
78
|
if self.value is not None and not _is_null(self.value):
|
|
@@ -97,6 +107,7 @@ class FloatField(Field):
|
|
|
97
107
|
d=self.__decimal_digits,
|
|
98
108
|
format=formatting_format,
|
|
99
109
|
).replace("E", self.__format)
|
|
110
|
+
value = self._apply_compact(value)
|
|
100
111
|
if len(value) > self._size:
|
|
101
112
|
excess = len(value) - self._size
|
|
102
113
|
new_d = self.__decimal_digits - excess
|
|
@@ -107,6 +118,7 @@ class FloatField(Field):
|
|
|
107
118
|
d=new_d,
|
|
108
119
|
format=formatting_format,
|
|
109
120
|
).replace("E", self.__format)
|
|
121
|
+
value = self._apply_compact(value)
|
|
110
122
|
if len(value) > self._size:
|
|
111
123
|
new_d = max(0, new_d - 1)
|
|
112
124
|
value = "{:.{d}{format}}".format(
|
|
@@ -114,6 +126,7 @@ class FloatField(Field):
|
|
|
114
126
|
d=new_d,
|
|
115
127
|
format=formatting_format,
|
|
116
128
|
).replace("E", self.__format)
|
|
129
|
+
value = self._apply_compact(value)
|
|
117
130
|
return value.rjust(self.size)
|
|
118
131
|
|
|
119
132
|
@property
|
|
@@ -82,6 +82,7 @@ class RegisterReading:
|
|
|
82
82
|
:return: The data from the registers found in the file
|
|
83
83
|
:rtype: RegisterData
|
|
84
84
|
"""
|
|
85
|
+
self.__data = RegisterData(DefaultRegister(data=""))
|
|
85
86
|
self.__repository = factory(self.__storage)(
|
|
86
87
|
content, not isfile(content), encoding
|
|
87
88
|
)
|
|
@@ -58,7 +58,7 @@ templates_path = ["_templates"]
|
|
|
58
58
|
#
|
|
59
59
|
# This is also used if you do content translation via gettext catalogs.
|
|
60
60
|
# Usually you set "language" from the command line for these cases.
|
|
61
|
-
language = "
|
|
61
|
+
language = "en"
|
|
62
62
|
|
|
63
63
|
# The suffix of source filenames.
|
|
64
64
|
source_suffix = ".rst"
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
Contributing
|
|
2
|
+
============
|
|
3
|
+
|
|
4
|
+
To report unexpected behavior, open an
|
|
5
|
+
`issue <https://github.com/rjmalves/cfinterface/issues>`_ in the repository.
|
|
6
|
+
When doing so, it is recommended to provide basic information (Python version,
|
|
7
|
+
operating system) along with a code snippet that allows the problem to be
|
|
8
|
+
reproduced. If you have found a possible fix for an existing issue,
|
|
9
|
+
`pull requests <https://github.com/rjmalves/cfinterface/pulls>`_
|
|
10
|
+
are welcome. In that case, please review the content of this page before
|
|
11
|
+
submitting your contribution.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
Development Environment Setup
|
|
15
|
+
-------------------------------
|
|
16
|
+
|
|
17
|
+
To install the development dependencies, run the commands below:
|
|
18
|
+
|
|
19
|
+
.. code-block:: bash
|
|
20
|
+
|
|
21
|
+
git clone https://github.com/rjmalves/cfinterface.git
|
|
22
|
+
cd cfinterface
|
|
23
|
+
uv sync --extra dev
|
|
24
|
+
uv run pre-commit install
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
Pre-commit Hooks
|
|
28
|
+
-----------------
|
|
29
|
+
|
|
30
|
+
The project uses `pre-commit <https://pre-commit.com/>`_ to automatically
|
|
31
|
+
enforce code quality before each commit. Three hooks are configured:
|
|
32
|
+
|
|
33
|
+
- **ruff** (v0.9.10): linter with automatic fixes (``--fix``)
|
|
34
|
+
- **ruff-format** (v0.9.10): code formatting
|
|
35
|
+
- **mypy** (v1.19.1): static type checking, applied only to the
|
|
36
|
+
``cfinterface/`` directory
|
|
37
|
+
|
|
38
|
+
To run all hooks manually against all files:
|
|
39
|
+
|
|
40
|
+
.. code-block:: bash
|
|
41
|
+
|
|
42
|
+
uv run pre-commit run --all-files
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
Code Conventions
|
|
46
|
+
-----------------
|
|
47
|
+
|
|
48
|
+
The project uses ``ruff`` for linting and formatting, and ``mypy`` for static
|
|
49
|
+
typing. To run the checks manually:
|
|
50
|
+
|
|
51
|
+
.. code-block:: bash
|
|
52
|
+
|
|
53
|
+
uv run ruff check ./cfinterface
|
|
54
|
+
uv run ruff format --check ./cfinterface
|
|
55
|
+
uv run mypy ./cfinterface
|
|
56
|
+
|
|
57
|
+
These same checks are run in the CI workflows. For a version to be published
|
|
58
|
+
successfully, all requirements must be met.
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
Tests
|
|
62
|
+
------
|
|
63
|
+
|
|
64
|
+
The adopted testing framework is `pytest <https://docs.pytest.org/en/stable/>`_.
|
|
65
|
+
|
|
66
|
+
To run all tests:
|
|
67
|
+
|
|
68
|
+
.. code-block:: bash
|
|
69
|
+
|
|
70
|
+
uv run pytest ./tests
|
|
71
|
+
|
|
72
|
+
To run only the performance tests with
|
|
73
|
+
`pytest-benchmark <https://pytest-benchmark.readthedocs.io/>`_:
|
|
74
|
+
|
|
75
|
+
.. code-block:: bash
|
|
76
|
+
|
|
77
|
+
uv run pytest ./tests --benchmark-only
|
|
78
|
+
|
|
79
|
+
To check test coverage with
|
|
80
|
+
`pytest-cov <https://pytest-cov.readthedocs.io/>`_:
|
|
81
|
+
|
|
82
|
+
.. code-block:: bash
|
|
83
|
+
|
|
84
|
+
uv run pytest ./tests --cov=cfinterface
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
Documentation
|
|
88
|
+
--------------
|
|
89
|
+
|
|
90
|
+
The documentation is built with `Sphinx <https://www.sphinx-doc.org/>`_ and the
|
|
91
|
+
`Furo <https://pradyunsg.me/furo/>`_ theme. To generate the documentation
|
|
92
|
+
locally:
|
|
93
|
+
|
|
94
|
+
.. code-block:: bash
|
|
95
|
+
|
|
96
|
+
uv run sphinx-build -W -b html docs/source docs/build/html
|
|
97
|
+
|
|
98
|
+
.. note::
|
|
99
|
+
|
|
100
|
+
The content generated by the build **must not be committed** to the
|
|
101
|
+
repository. Artifacts are built and published automatically by the
|
|
102
|
+
`GitHub Actions <https://github.com/features/actions>`_ workflows on
|
|
103
|
+
every change to the ``main`` branch.
|