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.
Files changed (271) hide show
  1. {cfinterface-1.9.0 → cfinterface-1.10.0}/.gitignore +3 -0
  2. {cfinterface-1.9.0 → cfinterface-1.10.0}/CHANGELOG.md +19 -1
  3. cfinterface-1.10.0/CONTRIBUTING.md +36 -0
  4. {cfinterface-1.9.0 → cfinterface-1.10.0}/PKG-INFO +1 -1
  5. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/__init__.py +1 -1
  6. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/floatfield.py +14 -1
  7. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/reading/registerreading.py +1 -0
  8. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/conf.py +1 -1
  9. cfinterface-1.10.0/docs/source/getting_started/contributing.rst +103 -0
  10. cfinterface-1.10.0/docs/source/guides/architecture.rst +454 -0
  11. cfinterface-1.10.0/docs/source/guides/faq.rst +274 -0
  12. cfinterface-1.10.0/docs/source/guides/migration-v1.9.rst +281 -0
  13. cfinterface-1.10.0/docs/source/guides/performance.rst +212 -0
  14. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/index.rst +11 -11
  15. cfinterface-1.10.0/examples/plot_block_file.py +201 -0
  16. cfinterface-1.10.0/examples/plot_section_file.py +201 -0
  17. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_floatfield.py +105 -0
  18. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/files/test_registerfile.py +42 -0
  19. cfinterface-1.9.0/CONTRIBUTING.md +0 -37
  20. cfinterface-1.9.0/docs/source/getting_started/contributing.rst +0 -104
  21. cfinterface-1.9.0/docs/source/guides/architecture.rst +0 -455
  22. cfinterface-1.9.0/docs/source/guides/faq.rst +0 -278
  23. cfinterface-1.9.0/docs/source/guides/migration-v1.9.rst +0 -283
  24. cfinterface-1.9.0/docs/source/guides/performance.rst +0 -217
  25. cfinterface-1.9.0/examples/plot_block_file.py +0 -201
  26. cfinterface-1.9.0/examples/plot_section_file.py +0 -201
  27. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/.implementation-state.json +0 -172
  28. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/00-master-plan.md +0 -143
  29. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/README.md +0 -55
  30. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-01-remove-pandas-dependency/00-epic-overview.md +0 -49
  31. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-01-remove-pandas-dependency/learnings.md +0 -91
  32. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-01-remove-pandas-dependency/ticket-001-create-null-checking-utility.md +0 -176
  33. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-01-remove-pandas-dependency/ticket-002-replace-pd-isnull-in-fields.md +0 -177
  34. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-01-remove-pandas-dependency/ticket-003-lazy-pandas-import-in-registerfile.md +0 -143
  35. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-01-remove-pandas-dependency/ticket-004-move-pandas-to-optional-dependency.md +0 -153
  36. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/00-epic-overview.md +0 -60
  37. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/learnings.md +0 -76
  38. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/ticket-005-compile-regex-patterns.md +0 -183
  39. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/ticket-006-create-storagetype-enum.md +0 -180
  40. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/ticket-007-update-factory-functions.md +0 -194
  41. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/ticket-008-migrate-internal-storage-usage.md +0 -243
  42. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-02-compile-regex-and-storage-enum/ticket-009-add-deprecation-warnings.md +0 -193
  43. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-03-optimize-float-field-write/00-epic-overview.md +0 -25
  44. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-03-optimize-float-field-write/learnings.md +0 -69
  45. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-03-optimize-float-field-write/ticket-010-optimize-floatfield-write.md +0 -242
  46. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-03-optimize-float-field-write/ticket-011-add-floatfield-benchmarks.md +0 -224
  47. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/00-epic-overview.md +0 -33
  48. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/learnings.md +0 -96
  49. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/ticket-012-list-backed-registerdata.md +0 -160
  50. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/ticket-013-list-backed-blockdata.md +0 -158
  51. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/ticket-014-list-backed-sectiondata.md +0 -156
  52. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/ticket-015-computed-prev-next-properties.md +0 -266
  53. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-04-array-backed-data-containers/ticket-016-type-indexed-lookup.md +0 -199
  54. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-05-type-safe-text-binary-dispatch/00-epic-overview.md +0 -29
  55. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-05-type-safe-text-binary-dispatch/learnings.md +0 -209
  56. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-05-type-safe-text-binary-dispatch/ticket-017-typed-field-protocol.md +0 -175
  57. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-05-type-safe-text-binary-dispatch/ticket-018-typed-repository-signatures.md +0 -210
  58. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-05-type-safe-text-binary-dispatch/ticket-019-typed-line-dispatch.md +0 -159
  59. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-05-type-safe-text-binary-dispatch/ticket-020-typed-component-io.md +0 -249
  60. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-06-generic-tabular-parser/00-epic-overview.md +0 -27
  61. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-06-generic-tabular-parser/ticket-021-tabular-parser-engine.md +0 -198
  62. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-06-generic-tabular-parser/ticket-022-tabular-section-base.md +0 -220
  63. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-06-generic-tabular-parser/ticket-023-delimited-tabular-parsing.md +0 -198
  64. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-07-schema-versioning-and-batch-ops/00-epic-overview.md +0 -32
  65. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-07-schema-versioning-and-batch-ops/learnings.md +0 -62
  66. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-07-schema-versioning-and-batch-ops/ticket-024-schema-version-descriptor.md +0 -133
  67. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-07-schema-versioning-and-batch-ops/ticket-025-instance-level-version-binding.md +0 -162
  68. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-07-schema-versioning-and-batch-ops/ticket-026-batch-read-api.md +0 -164
  69. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/epic-07-schema-versioning-and-batch-ops/ticket-027-version-validation.md +0 -214
  70. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-01-summary.md +0 -41
  71. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-02-summary.md +0 -64
  72. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-03-summary.md +0 -80
  73. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-04-summary.md +0 -79
  74. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-05-summary.md +0 -96
  75. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-06-summary.md +0 -130
  76. cfinterface-1.9.0/plans/cfinterface-architecture-improvement/learnings/epic-07-summary.md +0 -125
  77. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/.implementation-state.json +0 -449
  78. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/00-master-plan.md +0 -119
  79. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/README.md +0 -69
  80. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-01-pyproject-and-tool-config/00-epic-overview.md +0 -44
  81. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-01-pyproject-and-tool-config/ticket-001-update-classifiers-and-metadata.md +0 -117
  82. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-01-pyproject-and-tool-config/ticket-002-add-pytest-configuration.md +0 -118
  83. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-01-pyproject-and-tool-config/ticket-003-add-mypy-configuration.md +0 -157
  84. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-01-pyproject-and-tool-config/ticket-004-fix-mypy-strict-errors.md +0 -141
  85. 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
  86. 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
  87. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-02-ci-overhaul/00-epic-overview.md +0 -41
  88. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-02-ci-overhaul/ticket-007-expand-test-matrix.md +0 -166
  89. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-02-ci-overhaul/ticket-008-extract-lint-job.md +0 -138
  90. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-02-ci-overhaul/ticket-009-create-benchmark-workflow.md +0 -135
  91. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-02-ci-overhaul/ticket-010-update-docs-and-publish-workflows.md +0 -189
  92. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-03-test-infrastructure/00-epic-overview.md +0 -40
  93. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-03-test-infrastructure/ticket-011-create-conftest-and-fixtures.md +0 -195
  94. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-03-test-infrastructure/ticket-012-add-hypothesis-field-tests.md +0 -205
  95. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-03-test-infrastructure/ticket-013-add-hypothesis-tabular-tests.md +0 -238
  96. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-03-test-infrastructure/ticket-014-migrate-to-pytest-benchmark.md +0 -179
  97. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-04-sphinx-docs/00-epic-overview.md +0 -41
  98. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-04-sphinx-docs/ticket-015-add-tabular-reference-pages.md +0 -155
  99. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-04-sphinx-docs/ticket-016-add-versioning-reference-page.md +0 -151
  100. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-04-sphinx-docs/ticket-017-add-storage-and-adapter-pages.md +0 -181
  101. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-04-sphinx-docs/ticket-018-fix-docstrings-and-index.md +0 -157
  102. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-05-changelog-and-release-prep/00-epic-overview.md +0 -33
  103. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-05-changelog-and-release-prep/ticket-019-create-changelog.md +0 -169
  104. cfinterface-1.9.0/plans/cfinterface-quality-and-ci/epic-05-changelog-and-release-prep/ticket-020-release-prep-review.md +0 -124
  105. cfinterface-1.9.0/plans/infra-docs-overhaul/.implementation-state.json +0 -337
  106. cfinterface-1.9.0/plans/infra-docs-overhaul/00-master-plan.md +0 -107
  107. cfinterface-1.9.0/plans/infra-docs-overhaul/README.md +0 -81
  108. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-01-ci-and-developer-tooling/00-epic-overview.md +0 -26
  109. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-01-ci-and-developer-tooling/ticket-001-add-pre-commit-configuration.md +0 -124
  110. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-01-ci-and-developer-tooling/ticket-002-upgrade-github-actions-versions.md +0 -103
  111. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-01-ci-and-developer-tooling/ticket-003-migrate-docs-deployment.md +0 -149
  112. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-02-sphinx-modernization/00-epic-overview.md +0 -27
  113. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-02-sphinx-modernization/ticket-004-migrate-sphinx-theme-to-furo.md +0 -119
  114. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-02-sphinx-modernization/ticket-005-add-sphinx-gallery-examples.md +0 -119
  115. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-02-sphinx-modernization/ticket-006-update-conf-language-intersphinx.md +0 -113
  116. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-03-documentation-content/00-epic-overview.md +0 -30
  117. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-03-documentation-content/ticket-007-create-architecture-overview.md +0 -132
  118. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-03-documentation-content/ticket-008-create-faq-page.md +0 -129
  119. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-03-documentation-content/ticket-009-create-migration-guide.md +0 -138
  120. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-03-documentation-content/ticket-010-create-performance-tips-page.md +0 -131
  121. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-03-documentation-content/ticket-011-update-contributing-rst.md +0 -130
  122. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-04-repository-polish/00-epic-overview.md +0 -23
  123. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-04-repository-polish/ticket-012-create-root-contributing-md.md +0 -106
  124. cfinterface-1.9.0/plans/infra-docs-overhaul/epic-04-repository-polish/ticket-013-restructure-index-rst.md +0 -142
  125. cfinterface-1.9.0/plans/infra-docs-overhaul/learnings/epic-01-summary.md +0 -29
  126. cfinterface-1.9.0/plans/infra-docs-overhaul/learnings/epic-02-summary.md +0 -31
  127. cfinterface-1.9.0/plans/infra-docs-overhaul/learnings/epic-03-summary.md +0 -28
  128. {cfinterface-1.9.0 → cfinterface-1.10.0}/.github/workflows/benchmark.yml +0 -0
  129. {cfinterface-1.9.0 → cfinterface-1.10.0}/.github/workflows/docs.yml +0 -0
  130. {cfinterface-1.9.0 → cfinterface-1.10.0}/.github/workflows/main.yml +0 -0
  131. {cfinterface-1.9.0 → cfinterface-1.10.0}/.github/workflows/publish.yml +0 -0
  132. {cfinterface-1.9.0 → cfinterface-1.10.0}/.pre-commit-config.yaml +0 -0
  133. {cfinterface-1.9.0 → cfinterface-1.10.0}/LICENSE +0 -0
  134. {cfinterface-1.9.0 → cfinterface-1.10.0}/README.md +0 -0
  135. {cfinterface-1.9.0 → cfinterface-1.10.0}/benchmarks/__init__.py +0 -0
  136. {cfinterface-1.9.0 → cfinterface-1.10.0}/benchmarks/bench_floatfield_write.py +0 -0
  137. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/_utils/__init__.py +0 -0
  138. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/__init__.py +0 -0
  139. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/components/__init__.py +0 -0
  140. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/components/line/__init__.py +0 -0
  141. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/components/line/repository.py +0 -0
  142. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/components/repository.py +0 -0
  143. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/reading/__init__.py +0 -0
  144. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/reading/repository.py +0 -0
  145. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/writing/__init__.py +0 -0
  146. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/adapters/writing/repository.py +0 -0
  147. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/__init__.py +0 -0
  148. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/block.py +0 -0
  149. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/datetimefield.py +0 -0
  150. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/defaultblock.py +0 -0
  151. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/defaultregister.py +0 -0
  152. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/defaultsection.py +0 -0
  153. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/field.py +0 -0
  154. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/integerfield.py +0 -0
  155. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/line.py +0 -0
  156. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/literalfield.py +0 -0
  157. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/register.py +0 -0
  158. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/section.py +0 -0
  159. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/components/tabular.py +0 -0
  160. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/data/__init__.py +0 -0
  161. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/data/blockdata.py +0 -0
  162. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/data/registerdata.py +0 -0
  163. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/data/sectiondata.py +0 -0
  164. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/files/__init__.py +0 -0
  165. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/files/blockfile.py +0 -0
  166. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/files/registerfile.py +0 -0
  167. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/files/sectionfile.py +0 -0
  168. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/py.typed +0 -0
  169. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/reading/__init__.py +0 -0
  170. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/reading/blockreading.py +0 -0
  171. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/reading/sectionreading.py +0 -0
  172. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/storage.py +0 -0
  173. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/versioning.py +0 -0
  174. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/writing/__init__.py +0 -0
  175. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/writing/blockwriting.py +0 -0
  176. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/writing/registerwriting.py +0 -0
  177. {cfinterface-1.9.0 → cfinterface-1.10.0}/cfinterface/writing/sectionwriting.py +0 -0
  178. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/_static/logo_cfinterface.svg +0 -0
  179. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/getting_started/tutorial.rst +0 -0
  180. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/install/install.rst +0 -0
  181. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/adapters/files/components.rst +0 -0
  182. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/adapters/files/line.rst +0 -0
  183. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/adapters/files/reading.rst +0 -0
  184. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/adapters/files/writing.rst +0 -0
  185. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/adapters/index.rst +0 -0
  186. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/blocks/files/block.rst +0 -0
  187. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/blocks/files/blockdata.rst +0 -0
  188. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/blocks/files/blockfile.rst +0 -0
  189. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/blocks/index.rst +0 -0
  190. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/fields/components/datetimefield.rst +0 -0
  191. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/fields/components/field.rst +0 -0
  192. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/fields/components/floatfield.rst +0 -0
  193. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/fields/components/integerfield.rst +0 -0
  194. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/fields/components/literalfield.rst +0 -0
  195. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/fields/index.rst +0 -0
  196. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/line/index.rst +0 -0
  197. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/registers/files/register.rst +0 -0
  198. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/registers/files/registerdata.rst +0 -0
  199. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/registers/files/registerfile.rst +0 -0
  200. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/registers/index.rst +0 -0
  201. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/sections/files/section.rst +0 -0
  202. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/sections/files/sectiondata.rst +0 -0
  203. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/sections/files/sectionfile.rst +0 -0
  204. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/sections/index.rst +0 -0
  205. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/storage/files/storagetype.rst +0 -0
  206. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/storage/index.rst +0 -0
  207. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/tabular/files/tabularparser.rst +0 -0
  208. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/tabular/files/tabularsection.rst +0 -0
  209. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/tabular/index.rst +0 -0
  210. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/versioning/files/versioning.rst +0 -0
  211. {cfinterface-1.9.0 → cfinterface-1.10.0}/docs/source/reference/versioning/index.rst +0 -0
  212. {cfinterface-1.9.0 → cfinterface-1.10.0}/examples/README.rst +0 -0
  213. {cfinterface-1.9.0 → cfinterface-1.10.0}/examples/__init__.py +0 -0
  214. {cfinterface-1.9.0 → cfinterface-1.10.0}/examples/plot_register_file.py +0 -0
  215. {cfinterface-1.9.0 → cfinterface-1.10.0}/examples/plot_tabular_parsing.py +0 -0
  216. {cfinterface-1.9.0 → cfinterface-1.10.0}/examples/plot_versioned_file.py +0 -0
  217. {cfinterface-1.9.0 → cfinterface-1.10.0}/pyproject.toml +0 -0
  218. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/__init__.py +0 -0
  219. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/_utils/__init__.py +0 -0
  220. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/_utils/test_is_null.py +0 -0
  221. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/__init__.py +0 -0
  222. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/__init__.py +0 -0
  223. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/test_blockrepository.py +0 -0
  224. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/test_factory.py +0 -0
  225. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/test_linerepository.py +0 -0
  226. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/test_pattern_cache.py +0 -0
  227. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/test_registerrepository.py +0 -0
  228. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/components/test_sectionrepository.py +0 -0
  229. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/reading/__init__.py +0 -0
  230. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/reading/test_readingrepository.py +0 -0
  231. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/writing/__init__.py +0 -0
  232. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/adapters/writing/test_writingrepository.py +0 -0
  233. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/__init__.py +0 -0
  234. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/conftest.py +0 -0
  235. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_block.py +0 -0
  236. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_datetimefield.py +0 -0
  237. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_defaultblock.py +0 -0
  238. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_defaultregister.py +0 -0
  239. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_defaultsection.py +0 -0
  240. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_field.py +0 -0
  241. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_field_hypothesis.py +0 -0
  242. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_floatfield_benchmark.py +0 -0
  243. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_integerfield.py +0 -0
  244. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_line.py +0 -0
  245. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_literalfield.py +0 -0
  246. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_register.py +0 -0
  247. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_section.py +0 -0
  248. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_storage_integration.py +0 -0
  249. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_tabular.py +0 -0
  250. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/components/test_tabular_hypothesis.py +0 -0
  251. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/conftest.py +0 -0
  252. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/data/__init__.py +0 -0
  253. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/data/test_blockdata.py +0 -0
  254. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/data/test_registerdata.py +0 -0
  255. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/data/test_sectiondata.py +0 -0
  256. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/files/__init__.py +0 -0
  257. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/files/test_blockfile.py +0 -0
  258. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/files/test_sectionfile.py +0 -0
  259. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/mocks/__init__.py +0 -0
  260. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/mocks/mock_open.py +0 -0
  261. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/reading/__init__.py +0 -0
  262. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/reading/test_blockreading.py +0 -0
  263. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/reading/test_registerreading.py +0 -0
  264. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/reading/test_sectionreading.py +0 -0
  265. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/test_storage.py +0 -0
  266. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/test_storage_deprecation.py +0 -0
  267. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/test_versioning.py +0 -0
  268. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/writing/__init__.py +0 -0
  269. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/writing/test_blockwriting.py +0 -0
  270. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/writing/test_registerwriting.py +0 -0
  271. {cfinterface-1.9.0 → cfinterface-1.10.0}/tests/writing/test_sectionwriting.py +0 -0
@@ -134,5 +134,8 @@ dmypy.json
134
134
 
135
135
  .vscode/
136
136
 
137
+ # Implementation plans
138
+ plans/
139
+
137
140
  # Build system
138
141
  uv.lock
@@ -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.0...HEAD
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.9.0
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/
@@ -6,7 +6,7 @@ cfi is a Python module for handling custom formatted files
6
6
  and provide reading, storing and writing utilities.
7
7
  """
8
8
 
9
- __version__ = "1.9.0"
9
+ __version__ = "1.10.0"
10
10
 
11
11
  from . import components # noqa
12
12
  from . import data # noqa
@@ -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 = "pt_BR"
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.