finalcif 147__tar.gz → 149__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 (158) hide show
  1. {finalcif-147 → finalcif-149}/PKG-INFO +1 -1
  2. finalcif-149/finalcif/__init__.py +2 -0
  3. {finalcif-147 → finalcif-149}/finalcif/appwindow.py +5 -2
  4. {finalcif-147 → finalcif-149}/finalcif/finalcif_start.py +21 -6
  5. {finalcif-147 → finalcif-149}/finalcif/report/templated_report.py +3 -0
  6. finalcif-147/finalcif/__init__.py +0 -2
  7. {finalcif-147 → finalcif-149}/.gitattributes +0 -0
  8. {finalcif-147 → finalcif-149}/.gitignore +0 -0
  9. {finalcif-147 → finalcif-149}/.run/Make Documentation MAC.run.xml +0 -0
  10. {finalcif-147 → finalcif-149}/.run/compile_ui_files.run.xml +0 -0
  11. {finalcif-147 → finalcif-149}/.run/make documentation Windows.run.xml +0 -0
  12. {finalcif-147 → finalcif-149}/CODE_OF_CONDUCT.md +0 -0
  13. {finalcif-147 → finalcif-149}/CONTRIBUTING.md +0 -0
  14. {finalcif-147 → finalcif-149}/Finalcif_installer_win.spec +0 -0
  15. {finalcif-147 → finalcif-149}/Finalcif_linux_onefile.spec +0 -0
  16. {finalcif-147 → finalcif-149}/Finalcif_mac.spec +0 -0
  17. {finalcif-147 → finalcif-149}/Hydrogen_solution_type.cif +0 -0
  18. {finalcif-147 → finalcif-149}/LICENSE +0 -0
  19. {finalcif-147 → finalcif-149}/README.md +0 -0
  20. {finalcif-147 → finalcif-149}/finalcif/app_path.py +0 -0
  21. {finalcif-147 → finalcif-149}/finalcif/cif/__init__.py +0 -0
  22. {finalcif-147 → finalcif-149}/finalcif/cif/all_cif_dicts.py +0 -0
  23. {finalcif-147 → finalcif-149}/finalcif/cif/atoms.py +0 -0
  24. {finalcif-147 → finalcif-149}/finalcif/cif/checkcif/__init__.py +0 -0
  25. {finalcif-147 → finalcif-149}/finalcif/cif/checkcif/checkcif.py +0 -0
  26. {finalcif-147 → finalcif-149}/finalcif/cif/cif_dict_foo.py +0 -0
  27. {finalcif-147 → finalcif-149}/finalcif/cif/cif_file_io.py +0 -0
  28. {finalcif-147 → finalcif-149}/finalcif/cif/cif_order.py +0 -0
  29. {finalcif-147 → finalcif-149}/finalcif/cif/cod/__init__.py +0 -0
  30. {finalcif-147 → finalcif-149}/finalcif/cif/cod/deposit.py +0 -0
  31. {finalcif-147 → finalcif-149}/finalcif/cif/cod/deposit_check.py +0 -0
  32. {finalcif-147 → finalcif-149}/finalcif/cif/cod/deposition_list.py +0 -0
  33. {finalcif-147 → finalcif-149}/finalcif/cif/cod/doi.py +0 -0
  34. {finalcif-147 → finalcif-149}/finalcif/cif/cod/upload.py +0 -0
  35. {finalcif-147 → finalcif-149}/finalcif/cif/cod/website_parser.py +0 -0
  36. {finalcif-147 → finalcif-149}/finalcif/cif/core_dict.py +0 -0
  37. {finalcif-147 → finalcif-149}/finalcif/cif/hkl.py +0 -0
  38. {finalcif-147 → finalcif-149}/finalcif/cif/modulation_dict.py +0 -0
  39. {finalcif-147 → finalcif-149}/finalcif/cif/powder_dict.py +0 -0
  40. {finalcif-147 → finalcif-149}/finalcif/cif/reference.py +0 -0
  41. {finalcif-147 → finalcif-149}/finalcif/cif/restraints_dict.py +0 -0
  42. {finalcif-147 → finalcif-149}/finalcif/cif/text.py +0 -0
  43. {finalcif-147 → finalcif-149}/finalcif/cif/twin_dict.py +0 -0
  44. {finalcif-147 → finalcif-149}/finalcif/ciforder/__init__.py +0 -0
  45. {finalcif-147 → finalcif-149}/finalcif/ciforder/order.py +0 -0
  46. {finalcif-147 → finalcif-149}/finalcif/ciforder/order_ui.py +0 -0
  47. {finalcif-147 → finalcif-149}/finalcif/ciforder/order_ui.ui +0 -0
  48. {finalcif-147 → finalcif-149}/finalcif/datafiles/__init__.py +0 -0
  49. {finalcif-147 → finalcif-149}/finalcif/datafiles/bruker_data.py +0 -0
  50. {finalcif-147 → finalcif-149}/finalcif/datafiles/bruker_frame.py +0 -0
  51. {finalcif-147 → finalcif-149}/finalcif/datafiles/ccdc_mail.py +0 -0
  52. {finalcif-147 → finalcif-149}/finalcif/datafiles/data.py +0 -0
  53. {finalcif-147 → finalcif-149}/finalcif/datafiles/p4p_reader.py +0 -0
  54. {finalcif-147 → finalcif-149}/finalcif/datafiles/sadabs.py +0 -0
  55. {finalcif-147 → finalcif-149}/finalcif/datafiles/saint.py +0 -0
  56. {finalcif-147 → finalcif-149}/finalcif/datafiles/shelx_lst.py +0 -0
  57. {finalcif-147 → finalcif-149}/finalcif/datafiles/utils.py +0 -0
  58. {finalcif-147 → finalcif-149}/finalcif/displaymol/__init__.py +0 -0
  59. {finalcif-147 → finalcif-149}/finalcif/displaymol/molecule2D.py +0 -0
  60. {finalcif-147 → finalcif-149}/finalcif/displaymol/sdm.py +0 -0
  61. {finalcif-147 → finalcif-149}/finalcif/displaymol/vtk_molecule.py +0 -0
  62. {finalcif-147 → finalcif-149}/finalcif/equip_property/__init__.py +0 -0
  63. {finalcif-147 → finalcif-149}/finalcif/equip_property/author_loop_templates.py +0 -0
  64. {finalcif-147 → finalcif-149}/finalcif/equip_property/equipment.py +0 -0
  65. {finalcif-147 → finalcif-149}/finalcif/equip_property/properties.py +0 -0
  66. {finalcif-147 → finalcif-149}/finalcif/equip_property/tools.py +0 -0
  67. {finalcif-147 → finalcif-149}/finalcif/gui/__init__.py +0 -0
  68. {finalcif-147 → finalcif-149}/finalcif/gui/block_combobox.py +0 -0
  69. {finalcif-147 → finalcif-149}/finalcif/gui/combobox.py +0 -0
  70. {finalcif-147 → finalcif-149}/finalcif/gui/custom_classes.py +0 -0
  71. {finalcif-147 → finalcif-149}/finalcif/gui/dialogs.py +0 -0
  72. {finalcif-147 → finalcif-149}/finalcif/gui/edit_button.py +0 -0
  73. {finalcif-147 → finalcif-149}/finalcif/gui/equipmenttable.py +0 -0
  74. {finalcif-147 → finalcif-149}/finalcif/gui/file_editor.py +0 -0
  75. {finalcif-147 → finalcif-149}/finalcif/gui/finalcif_gui_ui.py +0 -0
  76. {finalcif-147 → finalcif-149}/finalcif/gui/finalcif_gui_ui.ui +0 -0
  77. {finalcif-147 → finalcif-149}/finalcif/gui/import_selector.py +0 -0
  78. {finalcif-147 → finalcif-149}/finalcif/gui/import_selector_ui.py +0 -0
  79. {finalcif-147 → finalcif-149}/finalcif/gui/import_selector_ui.ui +0 -0
  80. {finalcif-147 → finalcif-149}/finalcif/gui/loop_creator.py +0 -0
  81. {finalcif-147 → finalcif-149}/finalcif/gui/loop_creator_ui.py +0 -0
  82. {finalcif-147 → finalcif-149}/finalcif/gui/loop_creator_ui.ui +0 -0
  83. {finalcif-147 → finalcif-149}/finalcif/gui/loops.py +0 -0
  84. {finalcif-147 → finalcif-149}/finalcif/gui/mainstackwidget.py +0 -0
  85. {finalcif-147 → finalcif-149}/finalcif/gui/mixins.py +0 -0
  86. {finalcif-147 → finalcif-149}/finalcif/gui/new_key_dialog.py +0 -0
  87. {finalcif-147 → finalcif-149}/finalcif/gui/new_key_dialog_ui.py +0 -0
  88. {finalcif-147 → finalcif-149}/finalcif/gui/new_key_dialog_ui.ui +0 -0
  89. {finalcif-147 → finalcif-149}/finalcif/gui/plaintextedit.py +0 -0
  90. {finalcif-147 → finalcif-149}/finalcif/gui/playground.py +0 -0
  91. {finalcif-147 → finalcif-149}/finalcif/gui/propertytable.py +0 -0
  92. {finalcif-147 → finalcif-149}/finalcif/gui/spell_check_edit.py +0 -0
  93. {finalcif-147 → finalcif-149}/finalcif/gui/text_templates_ui.py +0 -0
  94. {finalcif-147 → finalcif-149}/finalcif/gui/text_templates_ui.ui +0 -0
  95. {finalcif-147 → finalcif-149}/finalcif/gui/text_value_editor.py +0 -0
  96. {finalcif-147 → finalcif-149}/finalcif/gui/validators.py +0 -0
  97. {finalcif-147 → finalcif-149}/finalcif/gui/vrf_classes.py +0 -0
  98. {finalcif-147 → finalcif-149}/finalcif/icon/__init__.py +0 -0
  99. {finalcif-147 → finalcif-149}/finalcif/icon/finalcif.png +0 -0
  100. {finalcif-147 → finalcif-149}/finalcif/icon/finalcif2.ico +0 -0
  101. {finalcif-147 → finalcif-149}/finalcif/icon/finalcif2.png +0 -0
  102. {finalcif-147 → finalcif-149}/finalcif/icon/multitable.ico +0 -0
  103. {finalcif-147 → finalcif-149}/finalcif/icon/multitable.png +0 -0
  104. {finalcif-147 → finalcif-149}/finalcif/icon/multitable.xcf +0 -0
  105. {finalcif-147 → finalcif-149}/finalcif/report/__init__.py +0 -0
  106. {finalcif-147 → finalcif-149}/finalcif/report/archive_report.py +0 -0
  107. {finalcif-147 → finalcif-149}/finalcif/report/gui/__init__.py +0 -0
  108. {finalcif-147 → finalcif-149}/finalcif/report/gui/mainwindow.py +0 -0
  109. {finalcif-147 → finalcif-149}/finalcif/report/gui/mainwindow.ui +0 -0
  110. {finalcif-147 → finalcif-149}/finalcif/report/mtools.py +0 -0
  111. {finalcif-147 → finalcif-149}/finalcif/report/references.py +0 -0
  112. {finalcif-147 → finalcif-149}/finalcif/report/report_text.py +0 -0
  113. {finalcif-147 → finalcif-149}/finalcif/report/symm.py +0 -0
  114. {finalcif-147 → finalcif-149}/finalcif/report/tables.py +0 -0
  115. {finalcif-147 → finalcif-149}/finalcif/template/__init__.py +0 -0
  116. {finalcif-147 → finalcif-149}/finalcif/template/bootstrap/bootstrap.min.css +0 -0
  117. {finalcif-147 → finalcif-149}/finalcif/template/machines/D8_VENTURE.cif +0 -0
  118. {finalcif-147 → finalcif-149}/finalcif/template/mathml2omml.xsl +0 -0
  119. {finalcif-147 → finalcif-149}/finalcif/template/report.tmpl +0 -0
  120. {finalcif-147 → finalcif-149}/finalcif/template/report_default.docx +0 -0
  121. {finalcif-147 → finalcif-149}/finalcif/template/template1.docx +0 -0
  122. {finalcif-147 → finalcif-149}/finalcif/template/template_for_multitable.docx +0 -0
  123. {finalcif-147 → finalcif-149}/finalcif/template/template_text.docx +0 -0
  124. {finalcif-147 → finalcif-149}/finalcif/template/template_without_text.docx +0 -0
  125. {finalcif-147 → finalcif-149}/finalcif/template/templates.py +0 -0
  126. {finalcif-147 → finalcif-149}/finalcif/template/xsl/convert.py +0 -0
  127. {finalcif-147 → finalcif-149}/finalcif/template/xsl/xmltohtml.xsl +0 -0
  128. {finalcif-147 → finalcif-149}/finalcif/tools/__init__.py +0 -0
  129. {finalcif-147 → finalcif-149}/finalcif/tools/chemparse.py +0 -0
  130. {finalcif-147 → finalcif-149}/finalcif/tools/download.py +0 -0
  131. {finalcif-147 → finalcif-149}/finalcif/tools/dsrmath.py +0 -0
  132. {finalcif-147 → finalcif-149}/finalcif/tools/misc.py +0 -0
  133. {finalcif-147 → finalcif-149}/finalcif/tools/options.py +0 -0
  134. {finalcif-147 → finalcif-149}/finalcif/tools/platon.py +0 -0
  135. {finalcif-147 → finalcif-149}/finalcif/tools/pupdate.py +0 -0
  136. {finalcif-147 → finalcif-149}/finalcif/tools/settings.py +0 -0
  137. {finalcif-147 → finalcif-149}/finalcif/tools/shred.py +0 -0
  138. {finalcif-147 → finalcif-149}/finalcif/tools/space_groups.py +0 -0
  139. {finalcif-147 → finalcif-149}/finalcif/tools/spgr_format.py +0 -0
  140. {finalcif-147 → finalcif-149}/finalcif/tools/statusbar.py +0 -0
  141. {finalcif-147 → finalcif-149}/finalcif/tools/sumformula.py +0 -0
  142. {finalcif-147 → finalcif-149}/finalcif.exe +0 -0
  143. {finalcif-147 → finalcif-149}/install_requirements +0 -0
  144. {finalcif-147 → finalcif-149}/install_requirements.bat +0 -0
  145. {finalcif-147 → finalcif-149}/pyproject.toml +0 -0
  146. {finalcif-147 → finalcif-149}/requirements.txt +0 -0
  147. {finalcif-147 → finalcif-149}/requirements_devel.txt +0 -0
  148. {finalcif-147 → finalcif-149}/requirements_doku.txt +0 -0
  149. {finalcif-147 → finalcif-149}/run_finalcif +0 -0
  150. {finalcif-147 → finalcif-149}/run_finalcif.bat +0 -0
  151. {finalcif-147 → finalcif-149}/screenshots/finalcif_checkcif.png +0 -0
  152. {finalcif-147 → finalcif-149}/screenshots/finalcif_details.png +0 -0
  153. {finalcif-147 → finalcif-149}/screenshots/finalcif_loops.png +0 -0
  154. {finalcif-147 → finalcif-149}/screenshots/finalcif_loops2.png +0 -0
  155. {finalcif-147 → finalcif-149}/screenshots/finalcif_main.png +0 -0
  156. {finalcif-147 → finalcif-149}/screenshots/finalcif_report.png +0 -0
  157. {finalcif-147 → finalcif-149}/screenshots/finalcif_responses.png +0 -0
  158. {finalcif-147 → finalcif-149}/update.exe +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: finalcif
3
- Version: 147
3
+ Version: 149
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
@@ -0,0 +1,2 @@
1
+
2
+ VERSION = 149
@@ -1604,8 +1604,11 @@ class AppWindow(QMainWindow):
1604
1604
  """
1605
1605
  vheader: QtWidgets.QHeaderView = self.ui.cif_main_table.verticalHeader()
1606
1606
  fm = QtGui.QFontMetrics(vheader.font(), self)
1607
- # noinspection PyTypeChecker
1608
- longest_string: str = max(self.ui.cif_main_table.vheaderitems, key=len)
1607
+ try:
1608
+ # noinspection PyTypeChecker
1609
+ longest_string: str = max(self.ui.cif_main_table.vheaderitems, key=len)
1610
+ except ValueError:
1611
+ longest_string = '_chemical_formula_sum_foo'
1609
1612
  vheader.setMaximumWidth(fm.width(longest_string + 'O'))
1610
1613
 
1611
1614
  def changes_cif_has_values(self) -> bool:
@@ -14,8 +14,7 @@ from typing import Type
14
14
  from finalcif import VERSION
15
15
  from finalcif.app_path import application_path
16
16
  from finalcif.appwindow import AppWindow, DEBUG, app
17
- from finalcif.gui.dialogs import show_bug_found_warning
18
- from finalcif.gui.dialogs import show_general_warning
17
+ from finalcif.gui.dialogs import show_bug_found_warning, show_general_warning
19
18
 
20
19
 
21
20
  def my_exception_hook(exctype: Type[BaseException], value: BaseException, error_traceback: traceback,
@@ -30,10 +29,26 @@ def my_exception_hook(exctype: Type[BaseException], value: BaseException, error_
30
29
  f'Date: {time.asctime(time.localtime(time.time()))}\n'
31
30
  f'Finalcif crashed during the following operation:\n\n'
32
31
  f'{"-" * 120}\n'
33
- f'{"".join(traceback.format_tb(error_traceback))}\n'
34
- f'{str(exctype.__name__)}: '
35
- f'{str(value)} \n'
36
- f'{"-" * 120}\n')
32
+ # f'{"".join(traceback.format_tb(error_traceback))}\n'
33
+ # f'{str(exctype.__name__)}: '
34
+ # f'{str(value)} \n'
35
+ # f'{"-" * 120}\n'
36
+ )
37
+
38
+ # Walk through the traceback and extract local variables
39
+ for frame, _ in traceback.walk_tb(error_traceback):
40
+ errortext += (f'File "{frame.f_code.co_filename}", line {frame.f_lineno}, in '
41
+ f'{frame.f_code.co_qualname}(...):\n')
42
+ newline = '\n'
43
+ errortext += f' Locals: \n '
44
+ errortext += " ".join(
45
+ [f" {k}:{newline} {' '.join([x + newline for x in repr(v).splitlines()])}" for k, v in
46
+ frame.f_locals.items()]) + '\n\n'
47
+
48
+ errortext += f'{"-" * 120}\n'
49
+ errortext += f'{str(exctype.__name__)}: {str(value)} \n'
50
+ errortext += f'{"-" * 120}\n'
51
+
37
52
  logfile = Path.home().joinpath(Path(r'finalcif-crash.txt'))
38
53
  try:
39
54
  logfile.write_text(errortext)
@@ -1105,7 +1105,9 @@ class TemplatedReport():
1105
1105
  context, tpl_doc = self.prepare_report_data(self.cif, self.options, picfile, tpl_doc)
1106
1106
  # Filter definition for {{foobar|filter}} things:
1107
1107
  jinja_env = jinja2.Environment()
1108
+ jinja_env.globals.update(zip=zip)
1108
1109
  jinja_env.globals.update(strip=str.strip)
1110
+ jinja_env.filters['utf8'] = report_text.utf8
1109
1111
  jinja_env.filters['inv_article'] = report_text.get_inf_article
1110
1112
  jinja_env.filters['to_pm'] = angstrom_to_pm if self.options.use_picometers else do_nothing
1111
1113
  jinja_env.filters['to_nm'] = angstrom_to_nanometers if self.options.use_picometers else do_nothing
@@ -1144,6 +1146,7 @@ class TemplatedReport():
1144
1146
  autoescape=select_autoescape(['html', 'htm', 'xml']))
1145
1147
  # Add zip() method to global namespace of the template:
1146
1148
  jinja_env.globals.update(zip=zip)
1149
+ jinja_env.globals.update(strip=str.strip)
1147
1150
  jinja_env.filters['to_pm'] = angstrom_to_pm if self.options.use_picometers else do_nothing
1148
1151
  jinja_env.filters['to_nm'] = angstrom_to_nanometers if self.options.use_picometers else do_nothing
1149
1152
  jinja_env.filters['inv_article'] = report_text.get_inf_article
@@ -1,2 +0,0 @@
1
-
2
- VERSION = 147
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes