finalcif 157__tar.gz → 159__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 (178) hide show
  1. {finalcif-157 → finalcif-159}/.gitignore +2 -0
  2. {finalcif-157 → finalcif-159}/.run/compile_ui_files.run.xml +3 -0
  3. finalcif-159/AGENTS.md +31 -0
  4. {finalcif-157 → finalcif-159}/PKG-INFO +7 -6
  5. {finalcif-157 → finalcif-159}/README.md +3 -3
  6. finalcif-159/finalcif/__init__.py +2 -0
  7. {finalcif-157 → finalcif-159}/finalcif/appwindow.py +337 -232
  8. {finalcif-157 → finalcif-159}/finalcif/cif/checkcif/checkcif.py +25 -22
  9. {finalcif-157 → finalcif-159}/finalcif/cif/cif_file_io.py +28 -1
  10. {finalcif-157 → finalcif-159}/finalcif/cif/text.py +11 -2
  11. finalcif-159/finalcif/cif/vrf_entry.py +92 -0
  12. {finalcif-157 → finalcif-159}/finalcif/equip_property/author_loop_templates.py +81 -51
  13. {finalcif-157 → finalcif-159}/finalcif/equip_property/equipment.py +4 -3
  14. {finalcif-157 → finalcif-159}/finalcif/equip_property/properties.py +2 -3
  15. {finalcif-157 → finalcif-159}/finalcif/finalcif_start.py +11 -3
  16. finalcif-159/finalcif/gui/cif_table_model.py +247 -0
  17. finalcif-159/finalcif/gui/cif_table_view.py +392 -0
  18. {finalcif-157 → finalcif-159}/finalcif/gui/combobox.py +4 -4
  19. finalcif-159/finalcif/gui/custom_classes.py +44 -0
  20. {finalcif-157 → finalcif-159}/finalcif/gui/finalcif_gui_ui.py +56 -127
  21. {finalcif-157 → finalcif-159}/finalcif/gui/finalcif_gui_ui.ui +35 -178
  22. {finalcif-157 → finalcif-159}/finalcif/gui/import_selector.py +3 -2
  23. {finalcif-157 → finalcif-159}/finalcif/gui/loop_creator.py +3 -0
  24. finalcif-159/finalcif/gui/loops.py +555 -0
  25. {finalcif-157 → finalcif-159}/finalcif/gui/plaintextedit.py +25 -9
  26. {finalcif-157 → finalcif-159}/finalcif/gui/playground.py +2 -2
  27. {finalcif-157 → finalcif-159}/finalcif/gui/syntax_highlighter.py +8 -1
  28. {finalcif-157 → finalcif-159}/finalcif/gui/vrf_classes.py +72 -75
  29. {finalcif-157 → finalcif-159}/finalcif/report/templated_report.py +3 -1
  30. finalcif-159/finalcif/template/report_default.docx +0 -0
  31. {finalcif-157 → finalcif-159}/finalcif/tools/download.py +1 -1
  32. {finalcif-157 → finalcif-159}/finalcif/tools/platon.py +1 -1
  33. finalcif-159/finalcif/tools/settings.py +507 -0
  34. {finalcif-157 → finalcif-159}/platon/platon_special.exe +0 -0
  35. {finalcif-157 → finalcif-159}/pyproject.toml +11 -2
  36. finalcif-159/screenshots/finalcif_details.png +0 -0
  37. finalcif-159/screenshots/finalcif_main.png +0 -0
  38. finalcif-159/screenshots/loops_column_buttons.png +0 -0
  39. finalcif-159/uv.lock +1300 -0
  40. finalcif-157/Hydrogen_solution_type.cif +0 -14
  41. finalcif-157/finalcif/__init__.py +0 -2
  42. finalcif-157/finalcif/displaymol/molecule2D.py +0 -313
  43. finalcif-157/finalcif/displaymol/sdm.py +0 -308
  44. finalcif-157/finalcif/gui/custom_classes.py +0 -309
  45. finalcif-157/finalcif/gui/loops.py +0 -332
  46. finalcif-157/finalcif/template/report_default.docx +0 -0
  47. finalcif-157/finalcif/tools/settings.py +0 -231
  48. finalcif-157/requirements.txt +0 -22
  49. finalcif-157/requirements_devel.txt +0 -11
  50. finalcif-157/requirements_doku.txt +0 -5
  51. finalcif-157/screenshots/finalcif_details.png +0 -0
  52. finalcif-157/screenshots/finalcif_main.png +0 -0
  53. finalcif-157/uv.lock +0 -1422
  54. {finalcif-157 → finalcif-159}/.gitattributes +0 -0
  55. {finalcif-157 → finalcif-159}/.python-version +0 -0
  56. {finalcif-157 → finalcif-159}/.ruff.toml +0 -0
  57. {finalcif-157 → finalcif-159}/.run/Make Documentation MAC.run.xml +0 -0
  58. {finalcif-157 → finalcif-159}/.run/make documentation Windows.run.xml +0 -0
  59. {finalcif-157 → finalcif-159}/CODE_OF_CONDUCT.md +0 -0
  60. {finalcif-157 → finalcif-159}/CONTRIBUTING.md +0 -0
  61. {finalcif-157 → finalcif-159}/Finalcif_installer_win.spec +0 -0
  62. {finalcif-157 → finalcif-159}/Finalcif_linux_onefile.spec +0 -0
  63. {finalcif-157 → finalcif-159}/Finalcif_mac.spec +0 -0
  64. {finalcif-157 → finalcif-159}/LICENSE +0 -0
  65. {finalcif-157 → finalcif-159}/finalcif/app_path.py +0 -0
  66. {finalcif-157 → finalcif-159}/finalcif/cif/__init__.py +0 -0
  67. {finalcif-157 → finalcif-159}/finalcif/cif/all_cif_dicts.py +0 -0
  68. {finalcif-157 → finalcif-159}/finalcif/cif/atoms.py +0 -0
  69. {finalcif-157 → finalcif-159}/finalcif/cif/checkcif/__init__.py +0 -0
  70. {finalcif-157 → finalcif-159}/finalcif/cif/cif_dict_foo.py +0 -0
  71. {finalcif-157 → finalcif-159}/finalcif/cif/cif_order.py +0 -0
  72. {finalcif-157 → finalcif-159}/finalcif/cif/cod/__init__.py +0 -0
  73. {finalcif-157 → finalcif-159}/finalcif/cif/cod/deposit.py +0 -0
  74. {finalcif-157 → finalcif-159}/finalcif/cif/cod/deposit_check.py +0 -0
  75. {finalcif-157 → finalcif-159}/finalcif/cif/cod/deposition_list.py +0 -0
  76. {finalcif-157 → finalcif-159}/finalcif/cif/cod/doi.py +0 -0
  77. {finalcif-157 → finalcif-159}/finalcif/cif/cod/upload.py +0 -0
  78. {finalcif-157 → finalcif-159}/finalcif/cif/cod/website_parser.py +0 -0
  79. {finalcif-157 → finalcif-159}/finalcif/cif/core_dict.py +0 -0
  80. {finalcif-157 → finalcif-159}/finalcif/cif/hkl.py +0 -0
  81. {finalcif-157 → finalcif-159}/finalcif/cif/modulation_dict.py +0 -0
  82. {finalcif-157 → finalcif-159}/finalcif/cif/powder_dict.py +0 -0
  83. {finalcif-157 → finalcif-159}/finalcif/cif/reference.py +0 -0
  84. {finalcif-157 → finalcif-159}/finalcif/cif/restraints_dict.py +0 -0
  85. {finalcif-157 → finalcif-159}/finalcif/cif/twin_dict.py +0 -0
  86. {finalcif-157 → finalcif-159}/finalcif/ciforder/__init__.py +0 -0
  87. {finalcif-157 → finalcif-159}/finalcif/ciforder/order.py +0 -0
  88. {finalcif-157 → finalcif-159}/finalcif/ciforder/order_ui.py +0 -0
  89. {finalcif-157 → finalcif-159}/finalcif/ciforder/order_ui.ui +0 -0
  90. {finalcif-157 → finalcif-159}/finalcif/datafiles/__init__.py +0 -0
  91. {finalcif-157 → finalcif-159}/finalcif/datafiles/bruker_data.py +0 -0
  92. {finalcif-157 → finalcif-159}/finalcif/datafiles/bruker_frame.py +0 -0
  93. {finalcif-157 → finalcif-159}/finalcif/datafiles/ccdc_mail.py +0 -0
  94. {finalcif-157 → finalcif-159}/finalcif/datafiles/data.py +0 -0
  95. {finalcif-157 → finalcif-159}/finalcif/datafiles/p4p_reader.py +0 -0
  96. {finalcif-157 → finalcif-159}/finalcif/datafiles/sadabs.py +0 -0
  97. {finalcif-157 → finalcif-159}/finalcif/datafiles/saint.py +0 -0
  98. {finalcif-157 → finalcif-159}/finalcif/datafiles/shelx_lst.py +0 -0
  99. {finalcif-157 → finalcif-159}/finalcif/datafiles/utils.py +0 -0
  100. {finalcif-157 → finalcif-159}/finalcif/displaymol/__init__.py +0 -0
  101. {finalcif-157 → finalcif-159}/finalcif/displaymol/vtk_molecule.py +0 -0
  102. {finalcif-157 → finalcif-159}/finalcif/equip_property/__init__.py +0 -0
  103. {finalcif-157 → finalcif-159}/finalcif/equip_property/tools.py +0 -0
  104. {finalcif-157 → finalcif-159}/finalcif/gui/__init__.py +0 -0
  105. {finalcif-157 → finalcif-159}/finalcif/gui/block_combobox.py +0 -0
  106. {finalcif-157 → finalcif-159}/finalcif/gui/dialogs.py +0 -0
  107. {finalcif-157 → finalcif-159}/finalcif/gui/edit_button.py +0 -0
  108. {finalcif-157 → finalcif-159}/finalcif/gui/equipmenttable.py +0 -0
  109. {finalcif-157 → finalcif-159}/finalcif/gui/file_editor.py +0 -0
  110. {finalcif-157 → finalcif-159}/finalcif/gui/import_selector_ui.py +0 -0
  111. {finalcif-157 → finalcif-159}/finalcif/gui/import_selector_ui.ui +0 -0
  112. {finalcif-157 → finalcif-159}/finalcif/gui/loop_creator_ui.py +0 -0
  113. {finalcif-157 → finalcif-159}/finalcif/gui/loop_creator_ui.ui +0 -0
  114. {finalcif-157 → finalcif-159}/finalcif/gui/mainstackwidget.py +0 -0
  115. {finalcif-157 → finalcif-159}/finalcif/gui/mixins.py +0 -0
  116. {finalcif-157 → finalcif-159}/finalcif/gui/new_key_dialog.py +0 -0
  117. {finalcif-157 → finalcif-159}/finalcif/gui/new_key_dialog_ui.py +0 -0
  118. {finalcif-157 → finalcif-159}/finalcif/gui/new_key_dialog_ui.ui +0 -0
  119. {finalcif-157 → finalcif-159}/finalcif/gui/propertytable.py +0 -0
  120. {finalcif-157 → finalcif-159}/finalcif/gui/spell_check_edit.py +0 -0
  121. {finalcif-157 → finalcif-159}/finalcif/gui/text_templates_ui.py +0 -0
  122. {finalcif-157 → finalcif-159}/finalcif/gui/text_templates_ui.ui +0 -0
  123. {finalcif-157 → finalcif-159}/finalcif/gui/text_value_editor.py +0 -0
  124. {finalcif-157 → finalcif-159}/finalcif/gui/validators.py +0 -0
  125. {finalcif-157 → finalcif-159}/finalcif/gui/vzs_viewer.py +0 -0
  126. {finalcif-157 → finalcif-159}/finalcif/icon/__init__.py +0 -0
  127. {finalcif-157 → finalcif-159}/finalcif/icon/finalcif.png +0 -0
  128. {finalcif-157 → finalcif-159}/finalcif/icon/finalcif2.ico +0 -0
  129. {finalcif-157 → finalcif-159}/finalcif/icon/finalcif2.png +0 -0
  130. {finalcif-157 → finalcif-159}/finalcif/icon/multitable.ico +0 -0
  131. {finalcif-157 → finalcif-159}/finalcif/icon/multitable.png +0 -0
  132. {finalcif-157 → finalcif-159}/finalcif/icon/multitable.xcf +0 -0
  133. {finalcif-157 → finalcif-159}/finalcif/report/__init__.py +0 -0
  134. {finalcif-157 → finalcif-159}/finalcif/report/archive_report.py +0 -0
  135. {finalcif-157 → finalcif-159}/finalcif/report/gui/__init__.py +0 -0
  136. {finalcif-157 → finalcif-159}/finalcif/report/gui/mainwindow.py +0 -0
  137. {finalcif-157 → finalcif-159}/finalcif/report/gui/mainwindow.ui +0 -0
  138. {finalcif-157 → finalcif-159}/finalcif/report/mtools.py +0 -0
  139. {finalcif-157 → finalcif-159}/finalcif/report/references.py +0 -0
  140. {finalcif-157 → finalcif-159}/finalcif/report/report_text.py +0 -0
  141. {finalcif-157 → finalcif-159}/finalcif/report/symm.py +0 -0
  142. {finalcif-157 → finalcif-159}/finalcif/report/tables.py +0 -0
  143. {finalcif-157 → finalcif-159}/finalcif/template/__init__.py +0 -0
  144. {finalcif-157 → finalcif-159}/finalcif/template/bootstrap/bootstrap.min.css +0 -0
  145. {finalcif-157 → finalcif-159}/finalcif/template/machines/D8_VENTURE.cif +0 -0
  146. {finalcif-157 → finalcif-159}/finalcif/template/mathml2omml.xsl +0 -0
  147. {finalcif-157 → finalcif-159}/finalcif/template/report.tmpl +0 -0
  148. {finalcif-157 → finalcif-159}/finalcif/template/template1.docx +0 -0
  149. {finalcif-157 → finalcif-159}/finalcif/template/template_for_multitable.docx +0 -0
  150. {finalcif-157 → finalcif-159}/finalcif/template/template_text.docx +0 -0
  151. {finalcif-157 → finalcif-159}/finalcif/template/template_without_text.docx +0 -0
  152. {finalcif-157 → finalcif-159}/finalcif/template/templates.py +0 -0
  153. {finalcif-157 → finalcif-159}/finalcif/template/xsl/convert.py +0 -0
  154. {finalcif-157 → finalcif-159}/finalcif/template/xsl/xmltohtml.xsl +0 -0
  155. {finalcif-157 → finalcif-159}/finalcif/tools/__init__.py +0 -0
  156. {finalcif-157 → finalcif-159}/finalcif/tools/chemparse.py +0 -0
  157. {finalcif-157 → finalcif-159}/finalcif/tools/dsrmath.py +0 -0
  158. {finalcif-157 → finalcif-159}/finalcif/tools/misc.py +0 -0
  159. {finalcif-157 → finalcif-159}/finalcif/tools/options.py +0 -0
  160. {finalcif-157 → finalcif-159}/finalcif/tools/pupdate.py +0 -0
  161. {finalcif-157 → finalcif-159}/finalcif/tools/shred.py +0 -0
  162. {finalcif-157 → finalcif-159}/finalcif/tools/space_groups.py +0 -0
  163. {finalcif-157 → finalcif-159}/finalcif/tools/spgr_format.py +0 -0
  164. {finalcif-157 → finalcif-159}/finalcif/tools/statusbar.py +0 -0
  165. {finalcif-157 → finalcif-159}/finalcif/tools/sumformula.py +0 -0
  166. {finalcif-157 → finalcif-159}/finalcif.exe +0 -0
  167. {finalcif-157 → finalcif-159}/platon/README.txt +0 -0
  168. {finalcif-157 → finalcif-159}/platon/compile_platon.bat +0 -0
  169. {finalcif-157 → finalcif-159}/platon/platon_special.f +0 -0
  170. {finalcif-157 → finalcif-159}/pylock.toml +0 -0
  171. {finalcif-157 → finalcif-159}/run_finalcif +0 -0
  172. {finalcif-157 → finalcif-159}/run_finalcif.bat +0 -0
  173. {finalcif-157 → finalcif-159}/screenshots/finalcif_checkcif.png +0 -0
  174. {finalcif-157 → finalcif-159}/screenshots/finalcif_loops.png +0 -0
  175. {finalcif-157 → finalcif-159}/screenshots/finalcif_loops2.png +0 -0
  176. {finalcif-157 → finalcif-159}/screenshots/finalcif_report.png +0 -0
  177. {finalcif-157 → finalcif-159}/screenshots/finalcif_responses.png +0 -0
  178. {finalcif-157 → finalcif-159}/update.exe +0 -0
@@ -235,3 +235,5 @@ finalcif_keys_order.cif
235
235
  /tests/examples/work/cu_BruecknerJK_153F40_0m-finalcif-2.zip
236
236
  /tests/examples/work/cu_BruecknerJK_153F40_0m_video-finalcif.png
237
237
  /tests/examples/work/report_cu_BruecknerJK_153F40_0m-finalcif.html
238
+ /test-data/checkcif-DK_Zucker2_0m-finalcif.html
239
+ /test-data/report_DK_Zucker2_0m-finalcif.html
@@ -1,6 +1,7 @@
1
1
  <component name="ProjectRunConfigurationManager">
2
2
  <configuration default="false" name="compile_ui_files" type="PythonConfigurationType" factoryName="Python" activateToolWindowBeforeRun="false" nameIsGenerated="true">
3
3
  <module name="FinalCif" />
4
+ <option name="ENV_FILES" value="" />
4
5
  <option name="INTERPRETER_OPTIONS" value="" />
5
6
  <option name="PARENT_ENVS" value="true" />
6
7
  <envs>
@@ -11,7 +12,9 @@
11
12
  <option name="IS_MODULE_SDK" value="true" />
12
13
  <option name="ADD_CONTENT_ROOTS" value="true" />
13
14
  <option name="ADD_SOURCE_ROOTS" value="true" />
15
+ <option name="DEBUG_JUST_MY_CODE" value="true" />
14
16
  <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
17
+ <option name="RUN_TOOL" value="true" />
15
18
  <option name="SCRIPT_NAME" value="scripts/compile_ui_files.py" />
16
19
  <option name="PARAMETERS" value="" />
17
20
  <option name="SHOW_COMMAND_LINE" value="false" />
finalcif-159/AGENTS.md ADDED
@@ -0,0 +1,31 @@
1
+ # FinalCif AI Developer Instructions
2
+
3
+ ## General Principles
4
+ - **No Assumptions:** If information or code is missing, ask for it. Do not make assumptions.
5
+ - **Refuse over Guessing:** Prefer refusing over guessing. If you don't know how to complete the code, say you don't know.
6
+ - **Require Specifications:** If the user asks you to write code, ask for a detailed specification first. Do not write code until you have a detailed specification.
7
+ - **Quality Standards:** Follow the rules of 'Refactoring' and 'Clean Code' as described by Martin Fowler and Robert C. Martin, respectively.
8
+
9
+ ## Core Setup Conventions
10
+ - **Language/Runtime:** Use Python >=3.12 (`pyproject.toml`), with CI tested on 3.12/3.13/3.14 (`.github/workflows/python_tests.yml`).
11
+ - **UI Framework:** Assume PySide6. UI imports in the codebase are typically routed through `qtpy` (note that UI files are compiled locally via bindings).
12
+ - **Qt Binding Selection:** Set `QT_API=pyside6` before `qtpy` imports (see `finalcif/finalcif_start.py`).
13
+
14
+ ## Architecture
15
+ - **Desktop Application:** FinalCif is a crystallographic information file (CIF) editor built with a Qt frontend.
16
+ - **Entry Point:** The application starts from `finalcif/finalcif_start.py` (registered as `finalcif` in `pyproject.toml`).
17
+ - **External Tool Integration:** Offline CheckCIF uses PLATON via `finalcif/tools/platon.py`; executable resolution checks bundled `platon/platon_special.exe`, then `C:\pwt\platon.exe` (Windows), then `platon` on `PATH`.
18
+
19
+ ## Workflow & Commands
20
+ - **Dependency Management:** The project uses `uv` for package management (e.g., `uv.lock`, `pyproject.toml`).
21
+ - *Setup:* `uv sync --all-extras --dev`
22
+ - **Testing:**
23
+ - *Command:* `uv run pytest tests`
24
+ - *CI/Linux Headless:* run tests with `QT_QPA_PLATFORM=offscreen` (see `.github/workflows/python_tests.yml`).
25
+ - *Network-Gated Tests:* set `NO_NETWORK=1` to skip network-dependent checks (see `tests/test_checkcif.py`, `tests/test_doi.py`).
26
+ - **Linting:**
27
+ - *Command:* `ruff check .`
28
+ - *CI Lint:* GitHub Actions currently runs `flake8` in `.github/workflows/python_tests.yml`.
29
+ - **UI Compilation:**
30
+ - *Command:* `python scripts/compile_ui_files.py` (this discovers `.ui` files, compiles them, and hot-fixes imports to `qtpy`).
31
+ - **Build/Releases:** Packaged with `hatchling`. Desktop releases use scripts in the `scripts/` directory (like `make_win_release.bat`).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: finalcif
3
- Version: 157
3
+ Version: 159
4
4
  Summary: CIF file editor
5
5
  Project-URL: Homepage, https://dkratzert.de/finalcif.html
6
6
  Project-URL: Bug Tracker, https://github.com/dkratzert/FinalCif/issues
@@ -11,17 +11,18 @@ Classifier: License :: OSI Approved :: MIT License
11
11
  Classifier: Operating System :: OS Independent
12
12
  Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Topic :: Scientific/Engineering :: Chemistry
14
- Requires-Python: >=3.10
14
+ Requires-Python: >=3.12
15
15
  Requires-Dist: certifi
16
16
  Requires-Dist: chardet
17
17
  Requires-Dist: charset-normalizer
18
18
  Requires-Dist: crossrefapi
19
19
  Requires-Dist: docxtpl[subdoc]>=0.20.2
20
+ Requires-Dist: fastmolwidget
20
21
  Requires-Dist: gemmi>=0.7.5
21
22
  Requires-Dist: hatchling
22
23
  Requires-Dist: html2text
23
24
  Requires-Dist: lxml==6.0.2
24
- Requires-Dist: numpy
25
+ Requires-Dist: numpy<2.4,>=2.3.5
25
26
  Requires-Dist: packaging
26
27
  Requires-Dist: pefile
27
28
  Requires-Dist: pybind11
@@ -37,8 +38,8 @@ Requires-Dist: urllib3
37
38
  Requires-Dist: wheel
38
39
  Description-Content-Type: text/markdown
39
40
 
40
- ![Lates Release](https://img.shields.io/github/v/tag/dkratzert/FinalCif?label=Release)
41
- [![Unit Tests](https://github.com/dkratzert/FinalCif/actions/workflows/python-app_windows.yml/badge.svg?branch=master)](https://github.com/dkratzert/FinalCif/actions/workflows/python-app_windows.yml)
41
+ ![Latest Release](https://img.shields.io/github/v/tag/dkratzert/FinalCif?label=Release)
42
+ [![Unit Tests](https://github.com/dkratzert/FinalCif/actions/workflows/python_tests.yml/badge.svg?branch=master)](https://github.com/dkratzert/FinalCif/actions/workflows/python_tests.yml)
42
43
  ![Contributions](https://img.shields.io/badge/contributions-welcome-blue)
43
44
  [![PyPI package](https://repology.org/badge/version-for-repo/pypi/python:finalcif.svg)](https://repology.org/project/python:finalcif/versions)
44
45
  <a href="https://repology.org/project/finalcif/versions">
@@ -48,7 +49,7 @@ Description-Content-Type: text/markdown
48
49
 
49
50
  # FinalCif
50
51
 
51
- FinalCif helps you to get a complete [CIF](https://www.iucr.org/resources/cif) file from a single-xrystal X-ray diffraction experiment. See here [https://dkratzert.de/finalcif.html](https://dkratzert.de/finalcif.html) for details.
52
+ FinalCif helps you to get a complete [CIF](https://www.iucr.org/resources/cif) file from a single-crystal X-ray diffraction experiment. See here [https://dkratzert.de/finalcif.html](https://dkratzert.de/finalcif.html) for details.
52
53
 
53
54
  For tables from multiple CIF files, you may want to use the program [multitable](https://github.com/dkratzert/multitable).
54
55
 
@@ -1,5 +1,5 @@
1
- ![Lates Release](https://img.shields.io/github/v/tag/dkratzert/FinalCif?label=Release)
2
- [![Unit Tests](https://github.com/dkratzert/FinalCif/actions/workflows/python-app_windows.yml/badge.svg?branch=master)](https://github.com/dkratzert/FinalCif/actions/workflows/python-app_windows.yml)
1
+ ![Latest Release](https://img.shields.io/github/v/tag/dkratzert/FinalCif?label=Release)
2
+ [![Unit Tests](https://github.com/dkratzert/FinalCif/actions/workflows/python_tests.yml/badge.svg?branch=master)](https://github.com/dkratzert/FinalCif/actions/workflows/python_tests.yml)
3
3
  ![Contributions](https://img.shields.io/badge/contributions-welcome-blue)
4
4
  [![PyPI package](https://repology.org/badge/version-for-repo/pypi/python:finalcif.svg)](https://repology.org/project/python:finalcif/versions)
5
5
  <a href="https://repology.org/project/finalcif/versions">
@@ -9,7 +9,7 @@
9
9
 
10
10
  # FinalCif
11
11
 
12
- FinalCif helps you to get a complete [CIF](https://www.iucr.org/resources/cif) file from a single-xrystal X-ray diffraction experiment. See here [https://dkratzert.de/finalcif.html](https://dkratzert.de/finalcif.html) for details.
12
+ FinalCif helps you to get a complete [CIF](https://www.iucr.org/resources/cif) file from a single-crystal X-ray diffraction experiment. See here [https://dkratzert.de/finalcif.html](https://dkratzert.de/finalcif.html) for details.
13
13
 
14
14
  For tables from multiple CIF files, you may want to use the program [multitable](https://github.com/dkratzert/multitable).
15
15
 
@@ -0,0 +1,2 @@
1
+
2
+ VERSION = 159