finalcif 151__tar.gz → 152__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 (160) hide show
  1. {finalcif-151 → finalcif-152}/PKG-INFO +4 -2
  2. finalcif-152/finalcif/__init__.py +2 -0
  3. {finalcif-151 → finalcif-152}/finalcif/cif/hkl.py +5 -1
  4. {finalcif-151 → finalcif-152}/finalcif/equip_property/author_loop_templates.py +25 -0
  5. {finalcif-151 → finalcif-152}/pyproject.toml +3 -1
  6. {finalcif-151 → finalcif-152}/uv.lock +506 -447
  7. finalcif-151/finalcif/__init__.py +0 -2
  8. {finalcif-151 → finalcif-152}/.gitattributes +0 -0
  9. {finalcif-151 → finalcif-152}/.gitignore +0 -0
  10. {finalcif-151 → finalcif-152}/.ruff.toml +0 -0
  11. {finalcif-151 → finalcif-152}/.run/Make Documentation MAC.run.xml +0 -0
  12. {finalcif-151 → finalcif-152}/.run/compile_ui_files.run.xml +0 -0
  13. {finalcif-151 → finalcif-152}/.run/make documentation Windows.run.xml +0 -0
  14. {finalcif-151 → finalcif-152}/CODE_OF_CONDUCT.md +0 -0
  15. {finalcif-151 → finalcif-152}/CONTRIBUTING.md +0 -0
  16. {finalcif-151 → finalcif-152}/Finalcif_installer_win.spec +0 -0
  17. {finalcif-151 → finalcif-152}/Finalcif_linux_onefile.spec +0 -0
  18. {finalcif-151 → finalcif-152}/Finalcif_mac.spec +0 -0
  19. {finalcif-151 → finalcif-152}/Hydrogen_solution_type.cif +0 -0
  20. {finalcif-151 → finalcif-152}/LICENSE +0 -0
  21. {finalcif-151 → finalcif-152}/README.md +0 -0
  22. {finalcif-151 → finalcif-152}/finalcif/app_path.py +0 -0
  23. {finalcif-151 → finalcif-152}/finalcif/appwindow.py +0 -0
  24. {finalcif-151 → finalcif-152}/finalcif/cif/__init__.py +0 -0
  25. {finalcif-151 → finalcif-152}/finalcif/cif/all_cif_dicts.py +0 -0
  26. {finalcif-151 → finalcif-152}/finalcif/cif/atoms.py +0 -0
  27. {finalcif-151 → finalcif-152}/finalcif/cif/checkcif/__init__.py +0 -0
  28. {finalcif-151 → finalcif-152}/finalcif/cif/checkcif/checkcif.py +0 -0
  29. {finalcif-151 → finalcif-152}/finalcif/cif/cif_dict_foo.py +0 -0
  30. {finalcif-151 → finalcif-152}/finalcif/cif/cif_file_io.py +0 -0
  31. {finalcif-151 → finalcif-152}/finalcif/cif/cif_order.py +0 -0
  32. {finalcif-151 → finalcif-152}/finalcif/cif/cod/__init__.py +0 -0
  33. {finalcif-151 → finalcif-152}/finalcif/cif/cod/deposit.py +0 -0
  34. {finalcif-151 → finalcif-152}/finalcif/cif/cod/deposit_check.py +0 -0
  35. {finalcif-151 → finalcif-152}/finalcif/cif/cod/deposition_list.py +0 -0
  36. {finalcif-151 → finalcif-152}/finalcif/cif/cod/doi.py +0 -0
  37. {finalcif-151 → finalcif-152}/finalcif/cif/cod/upload.py +0 -0
  38. {finalcif-151 → finalcif-152}/finalcif/cif/cod/website_parser.py +0 -0
  39. {finalcif-151 → finalcif-152}/finalcif/cif/core_dict.py +0 -0
  40. {finalcif-151 → finalcif-152}/finalcif/cif/modulation_dict.py +0 -0
  41. {finalcif-151 → finalcif-152}/finalcif/cif/powder_dict.py +0 -0
  42. {finalcif-151 → finalcif-152}/finalcif/cif/reference.py +0 -0
  43. {finalcif-151 → finalcif-152}/finalcif/cif/restraints_dict.py +0 -0
  44. {finalcif-151 → finalcif-152}/finalcif/cif/text.py +0 -0
  45. {finalcif-151 → finalcif-152}/finalcif/cif/twin_dict.py +0 -0
  46. {finalcif-151 → finalcif-152}/finalcif/ciforder/__init__.py +0 -0
  47. {finalcif-151 → finalcif-152}/finalcif/ciforder/order.py +0 -0
  48. {finalcif-151 → finalcif-152}/finalcif/ciforder/order_ui.py +0 -0
  49. {finalcif-151 → finalcif-152}/finalcif/ciforder/order_ui.ui +0 -0
  50. {finalcif-151 → finalcif-152}/finalcif/datafiles/__init__.py +0 -0
  51. {finalcif-151 → finalcif-152}/finalcif/datafiles/bruker_data.py +0 -0
  52. {finalcif-151 → finalcif-152}/finalcif/datafiles/bruker_frame.py +0 -0
  53. {finalcif-151 → finalcif-152}/finalcif/datafiles/ccdc_mail.py +0 -0
  54. {finalcif-151 → finalcif-152}/finalcif/datafiles/data.py +0 -0
  55. {finalcif-151 → finalcif-152}/finalcif/datafiles/p4p_reader.py +0 -0
  56. {finalcif-151 → finalcif-152}/finalcif/datafiles/sadabs.py +0 -0
  57. {finalcif-151 → finalcif-152}/finalcif/datafiles/saint.py +0 -0
  58. {finalcif-151 → finalcif-152}/finalcif/datafiles/shelx_lst.py +0 -0
  59. {finalcif-151 → finalcif-152}/finalcif/datafiles/utils.py +0 -0
  60. {finalcif-151 → finalcif-152}/finalcif/displaymol/__init__.py +0 -0
  61. {finalcif-151 → finalcif-152}/finalcif/displaymol/molecule2D.py +0 -0
  62. {finalcif-151 → finalcif-152}/finalcif/displaymol/sdm.py +0 -0
  63. {finalcif-151 → finalcif-152}/finalcif/displaymol/vtk_molecule.py +0 -0
  64. {finalcif-151 → finalcif-152}/finalcif/equip_property/__init__.py +0 -0
  65. {finalcif-151 → finalcif-152}/finalcif/equip_property/equipment.py +0 -0
  66. {finalcif-151 → finalcif-152}/finalcif/equip_property/properties.py +0 -0
  67. {finalcif-151 → finalcif-152}/finalcif/equip_property/tools.py +0 -0
  68. {finalcif-151 → finalcif-152}/finalcif/finalcif_start.py +0 -0
  69. {finalcif-151 → finalcif-152}/finalcif/gui/__init__.py +0 -0
  70. {finalcif-151 → finalcif-152}/finalcif/gui/block_combobox.py +0 -0
  71. {finalcif-151 → finalcif-152}/finalcif/gui/combobox.py +0 -0
  72. {finalcif-151 → finalcif-152}/finalcif/gui/custom_classes.py +0 -0
  73. {finalcif-151 → finalcif-152}/finalcif/gui/dialogs.py +0 -0
  74. {finalcif-151 → finalcif-152}/finalcif/gui/edit_button.py +0 -0
  75. {finalcif-151 → finalcif-152}/finalcif/gui/equipmenttable.py +0 -0
  76. {finalcif-151 → finalcif-152}/finalcif/gui/file_editor.py +0 -0
  77. {finalcif-151 → finalcif-152}/finalcif/gui/finalcif_gui_ui.py +0 -0
  78. {finalcif-151 → finalcif-152}/finalcif/gui/finalcif_gui_ui.ui +0 -0
  79. {finalcif-151 → finalcif-152}/finalcif/gui/import_selector.py +0 -0
  80. {finalcif-151 → finalcif-152}/finalcif/gui/import_selector_ui.py +0 -0
  81. {finalcif-151 → finalcif-152}/finalcif/gui/import_selector_ui.ui +0 -0
  82. {finalcif-151 → finalcif-152}/finalcif/gui/loop_creator.py +0 -0
  83. {finalcif-151 → finalcif-152}/finalcif/gui/loop_creator_ui.py +0 -0
  84. {finalcif-151 → finalcif-152}/finalcif/gui/loop_creator_ui.ui +0 -0
  85. {finalcif-151 → finalcif-152}/finalcif/gui/loops.py +0 -0
  86. {finalcif-151 → finalcif-152}/finalcif/gui/mainstackwidget.py +0 -0
  87. {finalcif-151 → finalcif-152}/finalcif/gui/mixins.py +0 -0
  88. {finalcif-151 → finalcif-152}/finalcif/gui/new_key_dialog.py +0 -0
  89. {finalcif-151 → finalcif-152}/finalcif/gui/new_key_dialog_ui.py +0 -0
  90. {finalcif-151 → finalcif-152}/finalcif/gui/new_key_dialog_ui.ui +0 -0
  91. {finalcif-151 → finalcif-152}/finalcif/gui/plaintextedit.py +0 -0
  92. {finalcif-151 → finalcif-152}/finalcif/gui/playground.py +0 -0
  93. {finalcif-151 → finalcif-152}/finalcif/gui/propertytable.py +0 -0
  94. {finalcif-151 → finalcif-152}/finalcif/gui/spell_check_edit.py +0 -0
  95. {finalcif-151 → finalcif-152}/finalcif/gui/text_templates_ui.py +0 -0
  96. {finalcif-151 → finalcif-152}/finalcif/gui/text_templates_ui.ui +0 -0
  97. {finalcif-151 → finalcif-152}/finalcif/gui/text_value_editor.py +0 -0
  98. {finalcif-151 → finalcif-152}/finalcif/gui/validators.py +0 -0
  99. {finalcif-151 → finalcif-152}/finalcif/gui/vrf_classes.py +0 -0
  100. {finalcif-151 → finalcif-152}/finalcif/icon/__init__.py +0 -0
  101. {finalcif-151 → finalcif-152}/finalcif/icon/finalcif.png +0 -0
  102. {finalcif-151 → finalcif-152}/finalcif/icon/finalcif2.ico +0 -0
  103. {finalcif-151 → finalcif-152}/finalcif/icon/finalcif2.png +0 -0
  104. {finalcif-151 → finalcif-152}/finalcif/icon/multitable.ico +0 -0
  105. {finalcif-151 → finalcif-152}/finalcif/icon/multitable.png +0 -0
  106. {finalcif-151 → finalcif-152}/finalcif/icon/multitable.xcf +0 -0
  107. {finalcif-151 → finalcif-152}/finalcif/report/__init__.py +0 -0
  108. {finalcif-151 → finalcif-152}/finalcif/report/archive_report.py +0 -0
  109. {finalcif-151 → finalcif-152}/finalcif/report/gui/__init__.py +0 -0
  110. {finalcif-151 → finalcif-152}/finalcif/report/gui/mainwindow.py +0 -0
  111. {finalcif-151 → finalcif-152}/finalcif/report/gui/mainwindow.ui +0 -0
  112. {finalcif-151 → finalcif-152}/finalcif/report/mtools.py +0 -0
  113. {finalcif-151 → finalcif-152}/finalcif/report/references.py +0 -0
  114. {finalcif-151 → finalcif-152}/finalcif/report/report_text.py +0 -0
  115. {finalcif-151 → finalcif-152}/finalcif/report/symm.py +0 -0
  116. {finalcif-151 → finalcif-152}/finalcif/report/tables.py +0 -0
  117. {finalcif-151 → finalcif-152}/finalcif/report/templated_report.py +0 -0
  118. {finalcif-151 → finalcif-152}/finalcif/template/__init__.py +0 -0
  119. {finalcif-151 → finalcif-152}/finalcif/template/bootstrap/bootstrap.min.css +0 -0
  120. {finalcif-151 → finalcif-152}/finalcif/template/machines/D8_VENTURE.cif +0 -0
  121. {finalcif-151 → finalcif-152}/finalcif/template/mathml2omml.xsl +0 -0
  122. {finalcif-151 → finalcif-152}/finalcif/template/report.tmpl +0 -0
  123. {finalcif-151 → finalcif-152}/finalcif/template/report_default.docx +0 -0
  124. {finalcif-151 → finalcif-152}/finalcif/template/template1.docx +0 -0
  125. {finalcif-151 → finalcif-152}/finalcif/template/template_for_multitable.docx +0 -0
  126. {finalcif-151 → finalcif-152}/finalcif/template/template_text.docx +0 -0
  127. {finalcif-151 → finalcif-152}/finalcif/template/template_without_text.docx +0 -0
  128. {finalcif-151 → finalcif-152}/finalcif/template/templates.py +0 -0
  129. {finalcif-151 → finalcif-152}/finalcif/template/xsl/convert.py +0 -0
  130. {finalcif-151 → finalcif-152}/finalcif/template/xsl/xmltohtml.xsl +0 -0
  131. {finalcif-151 → finalcif-152}/finalcif/tools/__init__.py +0 -0
  132. {finalcif-151 → finalcif-152}/finalcif/tools/chemparse.py +0 -0
  133. {finalcif-151 → finalcif-152}/finalcif/tools/download.py +0 -0
  134. {finalcif-151 → finalcif-152}/finalcif/tools/dsrmath.py +0 -0
  135. {finalcif-151 → finalcif-152}/finalcif/tools/misc.py +0 -0
  136. {finalcif-151 → finalcif-152}/finalcif/tools/options.py +0 -0
  137. {finalcif-151 → finalcif-152}/finalcif/tools/platon.py +0 -0
  138. {finalcif-151 → finalcif-152}/finalcif/tools/pupdate.py +0 -0
  139. {finalcif-151 → finalcif-152}/finalcif/tools/settings.py +0 -0
  140. {finalcif-151 → finalcif-152}/finalcif/tools/shred.py +0 -0
  141. {finalcif-151 → finalcif-152}/finalcif/tools/space_groups.py +0 -0
  142. {finalcif-151 → finalcif-152}/finalcif/tools/spgr_format.py +0 -0
  143. {finalcif-151 → finalcif-152}/finalcif/tools/statusbar.py +0 -0
  144. {finalcif-151 → finalcif-152}/finalcif/tools/sumformula.py +0 -0
  145. {finalcif-151 → finalcif-152}/finalcif.exe +0 -0
  146. {finalcif-151 → finalcif-152}/install_requirements +0 -0
  147. {finalcif-151 → finalcif-152}/install_requirements.bat +0 -0
  148. {finalcif-151 → finalcif-152}/requirements.txt +0 -0
  149. {finalcif-151 → finalcif-152}/requirements_devel.txt +0 -0
  150. {finalcif-151 → finalcif-152}/requirements_doku.txt +0 -0
  151. {finalcif-151 → finalcif-152}/run_finalcif +0 -0
  152. {finalcif-151 → finalcif-152}/run_finalcif.bat +0 -0
  153. {finalcif-151 → finalcif-152}/screenshots/finalcif_checkcif.png +0 -0
  154. {finalcif-151 → finalcif-152}/screenshots/finalcif_details.png +0 -0
  155. {finalcif-151 → finalcif-152}/screenshots/finalcif_loops.png +0 -0
  156. {finalcif-151 → finalcif-152}/screenshots/finalcif_loops2.png +0 -0
  157. {finalcif-151 → finalcif-152}/screenshots/finalcif_main.png +0 -0
  158. {finalcif-151 → finalcif-152}/screenshots/finalcif_report.png +0 -0
  159. {finalcif-151 → finalcif-152}/screenshots/finalcif_responses.png +0 -0
  160. {finalcif-151 → finalcif-152}/update.exe +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: finalcif
3
- Version: 151
3
+ Version: 152
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
@@ -16,7 +16,7 @@ Requires-Dist: certifi
16
16
  Requires-Dist: chardet
17
17
  Requires-Dist: crossrefapi
18
18
  Requires-Dist: docxtpl
19
- Requires-Dist: gemmi<0.7.0
19
+ Requires-Dist: gemmi
20
20
  Requires-Dist: hatchling>=1.27.0
21
21
  Requires-Dist: html2text
22
22
  Requires-Dist: lxml
@@ -24,6 +24,8 @@ Requires-Dist: numpy
24
24
  Requires-Dist: pefile
25
25
  Requires-Dist: pybind11
26
26
  Requires-Dist: pyenchant
27
+ Requires-Dist: pyqt5
28
+ Requires-Dist: pyqt5-qt5==5.15.2
27
29
  Requires-Dist: pyside6<6.9
28
30
  Requires-Dist: python-docx
29
31
  Requires-Dist: qtawesome
@@ -0,0 +1,2 @@
1
+
2
+ VERSION = 152
@@ -5,6 +5,7 @@ from pathlib import Path
5
5
  import gemmi
6
6
  import numpy as np
7
7
  from gemmi.cif import Loop, Document, Style
8
+ from packaging import version
8
9
 
9
10
  Limit = namedtuple('Limit', 'h_max, h_min, k_max, k_min, l_max, l_min')
10
11
 
@@ -30,7 +31,10 @@ class HKL:
30
31
 
31
32
  @property
32
33
  def hkl_as_cif(self) -> str:
33
- return self._doc.as_string(style=Style.Simple)
34
+ if version.parse(gemmi.__version__) < version.parse('0.5.1'):
35
+ return self._doc.as_string(style=Style.Simple)
36
+ else:
37
+ return self._doc.as_string(options=gemmi.cif.WriteOptions(Style.Simple))
34
38
 
35
39
  def _add_hkl_as_loop(self) -> None:
36
40
  """
@@ -59,6 +59,7 @@ class AuthorLoops:
59
59
  f'{self.cif_key}_phone', f'{self.cif_key}_id_orcid', f'{self.cif_key}_id_iucr',
60
60
  f'{self.cif_key}_footnote']
61
61
  self.settings = FinalCifSettings()
62
+ self._migrate_pyqt_saved_templates()
62
63
  if app:
63
64
  self.ui.authorEditTabWidget.setCurrentIndex(0)
64
65
  self.contact_author_checked(self.ui.ContactAuthorCheckBox.isChecked())
@@ -67,6 +68,30 @@ class AuthorLoops:
67
68
  self.show_authors_list()
68
69
  self.make_sure_to_save_only_when_name_field_has_text()
69
70
 
71
+ def _migrate_pyqt_saved_templates(self) -> None:
72
+ """Author entries saved by PyQt5 (pre-v151) cannot be loaded by PySide2. Load such entries
73
+ using PyQt5 and re-save with PySide2.
74
+ """
75
+
76
+ UPGRADE_FLAG = "v152_migrated_author_templates"
77
+ if self.settings.load_value_of_key(UPGRADE_FLAG):
78
+ return
79
+
80
+ import PyQt5.QtCore
81
+ pyqt_settings = PyQt5.QtCore.QSettings(self.settings.organization, self.settings.software_name)
82
+
83
+ pyqt_settings.beginGroup("authors_list")
84
+ for author in self.authors_list():
85
+ pyside_loopdata = self.author_loopdata(author)
86
+ pyqt_loopdata = pyqt_settings.value(author)
87
+ if not pyside_loopdata and isinstance(pyqt_loopdata, Author):
88
+ self.general_author_save(pyqt_loopdata)
89
+ print(f"Migrated pre-v151 saved author data for \"{author}\".")
90
+ pyqt_settings.endGroup()
91
+
92
+ self.settings.save_key_value(UPGRADE_FLAG, True)
93
+ del pyqt_settings
94
+
70
95
  def connect_signals_and_slots(self) -> None:
71
96
  self.ui.AddThisAuthorToLoopPushButton.clicked.connect(self.save_author_to_loop)
72
97
  self.ui.AddThisAuthorToLoopPushButton_cif.clicked.connect(self.save_author_to_loop)
@@ -25,12 +25,14 @@ dependencies = [
25
25
  "wheel",
26
26
  "certifi",
27
27
  "chardet",
28
- "gemmi<0.7.0",
28
+ "gemmi",
29
29
  "html2text",
30
30
  "lxml",
31
31
  "pefile",
32
32
  "pybind11",
33
33
  "pyside6<6.9",
34
+ "PyQt5",
35
+ "PyQt5-Qt5==5.15.2",
34
36
  "python-docx",
35
37
  "QtAwesome",
36
38
  "QtPy",