pyopenxlsx 0.2.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 (622) hide show
  1. pyopenxlsx-0.2.0/.clang-format +3 -0
  2. pyopenxlsx-0.2.0/.gitignore +20 -0
  3. pyopenxlsx-0.2.0/.gitmodules +6 -0
  4. pyopenxlsx-0.2.0/.python-version +1 -0
  5. pyopenxlsx-0.2.0/CMakeLists.txt +33 -0
  6. pyopenxlsx-0.2.0/PKG-INFO +8 -0
  7. pyopenxlsx-0.2.0/README.md +514 -0
  8. pyopenxlsx-0.2.0/pyproject.toml +53 -0
  9. pyopenxlsx-0.2.0/src/bindings.cpp +12 -0
  10. pyopenxlsx-0.2.0/src/bindings.hpp +21 -0
  11. pyopenxlsx-0.2.0/src/cell.cpp +118 -0
  12. pyopenxlsx-0.2.0/src/constants.cpp +61 -0
  13. pyopenxlsx-0.2.0/src/document.cpp +279 -0
  14. pyopenxlsx-0.2.0/src/pyopenxlsx/__init__.py +85 -0
  15. pyopenxlsx-0.2.0/src/pyopenxlsx/cell.py +181 -0
  16. pyopenxlsx-0.2.0/src/pyopenxlsx/column.py +54 -0
  17. pyopenxlsx-0.2.0/src/pyopenxlsx/formula.py +33 -0
  18. pyopenxlsx-0.2.0/src/pyopenxlsx/merge.py +30 -0
  19. pyopenxlsx-0.2.0/src/pyopenxlsx/range.py +49 -0
  20. pyopenxlsx-0.2.0/src/pyopenxlsx/styles.py +165 -0
  21. pyopenxlsx-0.2.0/src/pyopenxlsx/workbook.py +523 -0
  22. pyopenxlsx-0.2.0/src/pyopenxlsx/worksheet.py +522 -0
  23. pyopenxlsx-0.2.0/src/styles.cpp +259 -0
  24. pyopenxlsx-0.2.0/src/types.cpp +58 -0
  25. pyopenxlsx-0.2.0/src/workbook.cpp +44 -0
  26. pyopenxlsx-0.2.0/src/worksheet.cpp +1039 -0
  27. pyopenxlsx-0.2.0/tests/test_async.py +160 -0
  28. pyopenxlsx-0.2.0/tests/test_benchmark.py +303 -0
  29. pyopenxlsx-0.2.0/tests/test_bulk_read.py +478 -0
  30. pyopenxlsx-0.2.0/tests/test_cell.py +108 -0
  31. pyopenxlsx-0.2.0/tests/test_column.py +46 -0
  32. pyopenxlsx-0.2.0/tests/test_comments.py +76 -0
  33. pyopenxlsx-0.2.0/tests/test_content_types.py +65 -0
  34. pyopenxlsx-0.2.0/tests/test_coverage_boost.py +376 -0
  35. pyopenxlsx-0.2.0/tests/test_datetime.py +59 -0
  36. pyopenxlsx-0.2.0/tests/test_document.py +42 -0
  37. pyopenxlsx-0.2.0/tests/test_enhanced_cells.py +69 -0
  38. pyopenxlsx-0.2.0/tests/test_formula.py +52 -0
  39. pyopenxlsx-0.2.0/tests/test_image.py +173 -0
  40. pyopenxlsx-0.2.0/tests/test_memory_safety.py +47 -0
  41. pyopenxlsx-0.2.0/tests/test_merge_cells.py +51 -0
  42. pyopenxlsx-0.2.0/tests/test_properties.py +113 -0
  43. pyopenxlsx-0.2.0/tests/test_protection.py +74 -0
  44. pyopenxlsx-0.2.0/tests/test_range.py +103 -0
  45. pyopenxlsx-0.2.0/tests/test_read_write.py +87 -0
  46. pyopenxlsx-0.2.0/tests/test_styles.py +161 -0
  47. pyopenxlsx-0.2.0/tests/test_weakref_memory.py +488 -0
  48. pyopenxlsx-0.2.0/tests/test_workbook.py +38 -0
  49. pyopenxlsx-0.2.0/tests/test_worksheet.py +83 -0
  50. pyopenxlsx-0.2.0/third_party/OpenXLSX/.clang-format +118 -0
  51. pyopenxlsx-0.2.0/third_party/OpenXLSX/.clang-tidy +28 -0
  52. pyopenxlsx-0.2.0/third_party/OpenXLSX/.gitignore +113 -0
  53. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
  54. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
  55. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
  56. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
  57. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
  58. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
  59. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
  60. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
  61. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
  62. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
  63. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
  64. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
  65. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
  66. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
  67. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
  68. pyopenxlsx-0.2.0/third_party/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
  69. pyopenxlsx-0.2.0/third_party/OpenXLSX/CMakeLists.txt +62 -0
  70. pyopenxlsx-0.2.0/third_party/OpenXLSX/Documentation/CMakeLists.txt +31 -0
  71. pyopenxlsx-0.2.0/third_party/OpenXLSX/Documentation/Doxyfile.in +2471 -0
  72. pyopenxlsx-0.2.0/third_party/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
  73. pyopenxlsx-0.2.0/third_party/OpenXLSX/Documentation/customdoxygen.css +1355 -0
  74. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/CMakeLists.txt +89 -0
  75. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/Demo1.cpp +278 -0
  76. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/Demo10.cpp +540 -0
  77. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/Demo1A.cpp +126 -0
  78. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/Demo2.cpp +65 -0
  79. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/Demo3.cpp +89 -0
  80. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/Demo4.cpp +74 -0
  81. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/Demo5.cpp +77 -0
  82. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/Demo6.cpp +101 -0
  83. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/Demo7.cpp +79 -0
  84. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/Demo8.cpp +117 -0
  85. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/Demo9.cpp +364 -0
  86. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
  87. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +225 -0
  88. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/CMakeLists.txt +83 -0
  89. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/LICENSE +23 -0
  90. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/README.md +105 -0
  91. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/cmake/InstallTargets.cmake +73 -0
  92. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/cmake/NowideAddWarnings.cmake +42 -0
  93. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/config/check_lfs_support.cpp +30 -0
  94. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/config/check_movable_fstreams.cpp +18 -0
  95. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/args.hpp +194 -0
  96. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/config.hpp +79 -0
  97. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/convert.hpp +135 -0
  98. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/cstdio.hpp +45 -0
  99. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/cstdlib.hpp +65 -0
  100. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/detail/convert.hpp +23 -0
  101. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/detail/is_path.hpp +37 -0
  102. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/detail/is_string_container.hpp +94 -0
  103. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/detail/utf.hpp +21 -0
  104. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/filebuf.hpp +477 -0
  105. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/filesystem.hpp +25 -0
  106. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/fstream.hpp +360 -0
  107. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/iostream.hpp +99 -0
  108. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/replacement.hpp +19 -0
  109. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/stackstring.hpp +210 -0
  110. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/stat.hpp +63 -0
  111. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/utf/convert.hpp +96 -0
  112. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/utf/utf.hpp +450 -0
  113. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/utf8_codecvt.hpp +425 -0
  114. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/include/nowide/windows.hpp +32 -0
  115. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/src/cstdio.cpp +72 -0
  116. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/src/cstdlib.cpp +117 -0
  117. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/src/filebuf.cpp +78 -0
  118. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/src/iostream.cpp +290 -0
  119. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/src/stat.cpp +55 -0
  120. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/CMakeLists.txt +49 -0
  121. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/benchmark_fstream.cpp +291 -0
  122. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/cmake_test/CMakeLists.txt +15 -0
  123. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/cmake_test/main.cpp +20 -0
  124. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/exampleProject/CMakeLists.txt +10 -0
  125. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/exampleProject/example_main.cpp +20 -0
  126. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test.hpp +107 -0
  127. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test_codecvt.cpp +328 -0
  128. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test_convert.cpp +206 -0
  129. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test_env.cpp +57 -0
  130. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test_fs.cpp +61 -0
  131. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test_fstream.cpp +615 -0
  132. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test_fstream_cxx11.cpp +188 -0
  133. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test_iostream.cpp +106 -0
  134. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test_sets.hpp +169 -0
  135. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test_stackstring.cpp +247 -0
  136. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test_stat.cpp +69 -0
  137. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test_stdio.cpp +144 -0
  138. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test_system.cpp +179 -0
  139. pyopenxlsx-0.2.0/third_party/OpenXLSX/Examples/external/nowide/test/test_traits.cpp +68 -0
  140. pyopenxlsx-0.2.0/third_party/OpenXLSX/LICENSE.md +29 -0
  141. pyopenxlsx-0.2.0/third_party/OpenXLSX/Makefile.GNU +412 -0
  142. pyopenxlsx-0.2.0/third_party/OpenXLSX/Notes/TBDs.txt +16 -0
  143. pyopenxlsx-0.2.0/third_party/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
  144. pyopenxlsx-0.2.0/third_party/OpenXLSX/Notes/styles-missing-support.xml +12 -0
  145. pyopenxlsx-0.2.0/third_party/OpenXLSX/Notes/todo-list.txt +108 -0
  146. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/CMakeLists.txt +354 -0
  147. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
  148. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +1 -0
  149. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/args.hpp +162 -0
  150. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/cenv.hpp +112 -0
  151. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/config.hpp +35 -0
  152. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/convert.hpp +151 -0
  153. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/cstdio.hpp +99 -0
  154. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/cstdlib.hpp +16 -0
  155. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/encoding_errors.hpp +57 -0
  156. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/encoding_utf.hpp +76 -0
  157. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/filebuf.hpp +363 -0
  158. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/fstream.hpp +271 -0
  159. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/iostream.hpp +102 -0
  160. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/scoped_ptr.hpp +88 -0
  161. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/stackstring.hpp +143 -0
  162. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/system.hpp +44 -0
  163. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/utf.hpp +443 -0
  164. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/utf8_codecvt.hpp +475 -0
  165. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/nowide/nowide/windows.hpp +36 -0
  166. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/pugixml/pugiconfig.hpp +77 -0
  167. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/pugixml/pugixml.cpp +13226 -0
  168. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/pugixml/pugixml.hpp +1516 -0
  169. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/external/zippy/zippy.hpp +11104 -0
  170. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +350 -0
  171. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLCell.hpp +366 -0
  172. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
  173. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +229 -0
  174. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
  175. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
  176. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
  177. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
  178. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
  179. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLComments.hpp +271 -0
  180. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
  181. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
  182. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
  183. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +507 -0
  184. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +446 -0
  185. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
  186. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +372 -0
  187. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +15 -0
  188. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
  189. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +336 -0
  190. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
  191. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLRow.hpp +554 -0
  192. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +477 -0
  193. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +217 -0
  194. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1602 -0
  195. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2389 -0
  196. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
  197. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
  198. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +250 -0
  199. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
  200. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +295 -0
  201. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +174 -0
  202. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
  203. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +462 -0
  204. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +242 -0
  205. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +396 -0
  206. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +507 -0
  207. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
  208. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +135 -0
  209. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLComments.cpp +587 -0
  210. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +330 -0
  211. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
  212. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1705 -0
  213. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +668 -0
  214. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +196 -0
  215. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
  216. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +705 -0
  217. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +468 -0
  218. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLRow.cpp +718 -0
  219. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +553 -0
  220. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +242 -0
  221. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1800 -0
  222. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +2685 -0
  223. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLTables.cpp +100 -0
  224. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +747 -0
  225. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +183 -0
  226. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +132 -0
  227. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +249 -0
  228. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +142 -0
  229. pyopenxlsx-0.2.0/third_party/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +611 -0
  230. pyopenxlsx-0.2.0/third_party/OpenXLSX/README.md +929 -0
  231. pyopenxlsx-0.2.0/third_party/OpenXLSX/Scripts/cmake-cleanup.sh +72 -0
  232. pyopenxlsx-0.2.0/third_party/OpenXLSX/Scripts/demos-cleanup.sh +23 -0
  233. pyopenxlsx-0.2.0/third_party/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
  234. pyopenxlsx-0.2.0/third_party/OpenXLSX/Scripts/make-gnu.sh +11 -0
  235. pyopenxlsx-0.2.0/third_party/OpenXLSX/Scripts/xml-format-all.sh +19 -0
  236. pyopenxlsx-0.2.0/third_party/OpenXLSX/Scripts/xml-format.sh +38 -0
  237. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/CMakeLists.txt +37 -0
  238. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/catch/catch.hpp +17799 -0
  239. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
  240. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
  241. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
  242. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
  243. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/main.cpp +55 -0
  244. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/testXLCell.cpp +176 -0
  245. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
  246. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
  247. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
  248. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
  249. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/testXLColor.cpp +75 -0
  250. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
  251. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/testXLDocument.cpp +197 -0
  252. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/testXLFormula.cpp +131 -0
  253. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/testXLRow.cpp +597 -0
  254. pyopenxlsx-0.2.0/third_party/OpenXLSX/Tests/testXLSheet.cpp +77 -0
  255. pyopenxlsx-0.2.0/third_party/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports.hpp +43 -0
  256. pyopenxlsx-0.2.0/third_party/OpenXLSX/vcpkg.json +9 -0
  257. pyopenxlsx-0.2.0/third_party/pybind11/.appveyor.yml +35 -0
  258. pyopenxlsx-0.2.0/third_party/pybind11/.clang-format +38 -0
  259. pyopenxlsx-0.2.0/third_party/pybind11/.clang-tidy +83 -0
  260. pyopenxlsx-0.2.0/third_party/pybind11/.cmake-format.yaml +73 -0
  261. pyopenxlsx-0.2.0/third_party/pybind11/.codespell-ignore-lines +36 -0
  262. pyopenxlsx-0.2.0/third_party/pybind11/.gitattributes +1 -0
  263. pyopenxlsx-0.2.0/third_party/pybind11/.github/CODEOWNERS +9 -0
  264. pyopenxlsx-0.2.0/third_party/pybind11/.github/CONTRIBUTING.md +349 -0
  265. pyopenxlsx-0.2.0/third_party/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +61 -0
  266. pyopenxlsx-0.2.0/third_party/pybind11/.github/ISSUE_TEMPLATE/config.yml +8 -0
  267. pyopenxlsx-0.2.0/third_party/pybind11/.github/dependabot.yml +11 -0
  268. pyopenxlsx-0.2.0/third_party/pybind11/.github/labeler.yml +13 -0
  269. pyopenxlsx-0.2.0/third_party/pybind11/.github/labeler_merged.yml +8 -0
  270. pyopenxlsx-0.2.0/third_party/pybind11/.github/matchers/pylint.json +32 -0
  271. pyopenxlsx-0.2.0/third_party/pybind11/.github/pull_request_template.md +15 -0
  272. pyopenxlsx-0.2.0/third_party/pybind11/.github/workflows/ci.yml +1357 -0
  273. pyopenxlsx-0.2.0/third_party/pybind11/.github/workflows/configure.yml +85 -0
  274. pyopenxlsx-0.2.0/third_party/pybind11/.github/workflows/docs-link.yml +41 -0
  275. pyopenxlsx-0.2.0/third_party/pybind11/.github/workflows/format.yml +54 -0
  276. pyopenxlsx-0.2.0/third_party/pybind11/.github/workflows/labeler.yml +25 -0
  277. pyopenxlsx-0.2.0/third_party/pybind11/.github/workflows/nightlies.yml +59 -0
  278. pyopenxlsx-0.2.0/third_party/pybind11/.github/workflows/pip.yml +118 -0
  279. pyopenxlsx-0.2.0/third_party/pybind11/.github/workflows/reusable-standard.yml +98 -0
  280. pyopenxlsx-0.2.0/third_party/pybind11/.github/workflows/tests-cibw.yml +95 -0
  281. pyopenxlsx-0.2.0/third_party/pybind11/.github/workflows/upstream.yml +118 -0
  282. pyopenxlsx-0.2.0/third_party/pybind11/.gitignore +54 -0
  283. pyopenxlsx-0.2.0/third_party/pybind11/.pre-commit-config.yaml +158 -0
  284. pyopenxlsx-0.2.0/third_party/pybind11/.readthedocs.yml +20 -0
  285. pyopenxlsx-0.2.0/third_party/pybind11/CMakeLists.txt +425 -0
  286. pyopenxlsx-0.2.0/third_party/pybind11/CMakePresets.json +93 -0
  287. pyopenxlsx-0.2.0/third_party/pybind11/LICENSE +29 -0
  288. pyopenxlsx-0.2.0/third_party/pybind11/README.rst +215 -0
  289. pyopenxlsx-0.2.0/third_party/pybind11/SECURITY.md +13 -0
  290. pyopenxlsx-0.2.0/third_party/pybind11/docs/Doxyfile +21 -0
  291. pyopenxlsx-0.2.0/third_party/pybind11/docs/_static/css/custom.css +3 -0
  292. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/cast/chrono.rst +81 -0
  293. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/cast/custom.rst +137 -0
  294. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/cast/eigen.rst +310 -0
  295. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/cast/functional.rst +109 -0
  296. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/cast/index.rst +43 -0
  297. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/cast/overview.rst +170 -0
  298. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/cast/stl.rst +249 -0
  299. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/cast/strings.rst +296 -0
  300. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/classes.rst +1432 -0
  301. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/deadlock.md +391 -0
  302. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/deprecated.rst +179 -0
  303. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/embedding.rst +499 -0
  304. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/exceptions.rst +422 -0
  305. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/functions.rst +616 -0
  306. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/misc.rst +615 -0
  307. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/pycpp/index.rst +13 -0
  308. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/pycpp/numpy.rst +493 -0
  309. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/pycpp/object.rst +286 -0
  310. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/pycpp/utilities.rst +155 -0
  311. pyopenxlsx-0.2.0/third_party/pybind11/docs/advanced/smart_ptrs.rst +179 -0
  312. pyopenxlsx-0.2.0/third_party/pybind11/docs/basics.rst +316 -0
  313. pyopenxlsx-0.2.0/third_party/pybind11/docs/benchmark.py +89 -0
  314. pyopenxlsx-0.2.0/third_party/pybind11/docs/benchmark.rst +95 -0
  315. pyopenxlsx-0.2.0/third_party/pybind11/docs/changelog.md +3389 -0
  316. pyopenxlsx-0.2.0/third_party/pybind11/docs/classes.rst +652 -0
  317. pyopenxlsx-0.2.0/third_party/pybind11/docs/cmake/index.rst +8 -0
  318. pyopenxlsx-0.2.0/third_party/pybind11/docs/compiling.rst +731 -0
  319. pyopenxlsx-0.2.0/third_party/pybind11/docs/conf.py +369 -0
  320. pyopenxlsx-0.2.0/third_party/pybind11/docs/faq.rst +351 -0
  321. pyopenxlsx-0.2.0/third_party/pybind11/docs/index.rst +49 -0
  322. pyopenxlsx-0.2.0/third_party/pybind11/docs/installing.rst +105 -0
  323. pyopenxlsx-0.2.0/third_party/pybind11/docs/limitations.rst +68 -0
  324. pyopenxlsx-0.2.0/third_party/pybind11/docs/pybind11-logo.png +0 -0
  325. pyopenxlsx-0.2.0/third_party/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  326. pyopenxlsx-0.2.0/third_party/pybind11/docs/pybind11_vs_boost_python1.svg +427 -0
  327. pyopenxlsx-0.2.0/third_party/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  328. pyopenxlsx-0.2.0/third_party/pybind11/docs/pybind11_vs_boost_python2.svg +427 -0
  329. pyopenxlsx-0.2.0/third_party/pybind11/docs/reference.rst +130 -0
  330. pyopenxlsx-0.2.0/third_party/pybind11/docs/release.rst +135 -0
  331. pyopenxlsx-0.2.0/third_party/pybind11/docs/requirements.in +7 -0
  332. pyopenxlsx-0.2.0/third_party/pybind11/docs/requirements.txt +87 -0
  333. pyopenxlsx-0.2.0/third_party/pybind11/docs/upgrade.rst +748 -0
  334. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/attr.h +730 -0
  335. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/buffer_info.h +209 -0
  336. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/cast.h +2433 -0
  337. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/chrono.h +228 -0
  338. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/common.h +2 -0
  339. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/complex.h +93 -0
  340. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/conduit/README.txt +15 -0
  341. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/conduit/pybind11_conduit_v1.h +116 -0
  342. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/conduit/pybind11_platform_abi_id.h +87 -0
  343. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/conduit/wrap_include_python_h.h +72 -0
  344. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/critical_section.h +56 -0
  345. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/argument_vector.h +417 -0
  346. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/class.h +836 -0
  347. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/common.h +1353 -0
  348. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/cpp_conduit.h +75 -0
  349. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/descr.h +226 -0
  350. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/dynamic_raw_ptr_cast_if_possible.h +39 -0
  351. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/exception_translation.h +71 -0
  352. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/function_record_pyobject.h +192 -0
  353. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/holder_caster_foreign_helpers.h +86 -0
  354. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/init.h +544 -0
  355. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/internals.h +1063 -0
  356. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/native_enum_data.h +227 -0
  357. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/pybind11_namespace_macros.h +82 -0
  358. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/struct_smart_holder.h +398 -0
  359. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/type_caster_base.h +1711 -0
  360. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/typeid.h +65 -0
  361. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/using_smart_holder.h +22 -0
  362. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/detail/value_and_holder.h +92 -0
  363. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/eigen/common.h +9 -0
  364. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/eigen/matrix.h +723 -0
  365. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/eigen/tensor.h +520 -0
  366. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/eigen.h +12 -0
  367. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/embed.h +320 -0
  368. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/eval.h +161 -0
  369. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/functional.h +147 -0
  370. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/gil.h +203 -0
  371. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/gil_safe_call_once.h +273 -0
  372. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/gil_simple.h +37 -0
  373. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/iostream.h +265 -0
  374. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/native_enum.h +76 -0
  375. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/numpy.h +2312 -0
  376. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/operators.h +202 -0
  377. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/options.h +92 -0
  378. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/pybind11.h +3742 -0
  379. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/pytypes.h +2738 -0
  380. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/stl/filesystem.h +114 -0
  381. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/stl.h +666 -0
  382. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/stl_bind.h +858 -0
  383. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/subinterpreter.h +291 -0
  384. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/trampoline_self_life_support.h +65 -0
  385. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/type_caster_pyobject_ptr.h +61 -0
  386. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/typing.h +295 -0
  387. pyopenxlsx-0.2.0/third_party/pybind11/include/pybind11/warnings.h +75 -0
  388. pyopenxlsx-0.2.0/third_party/pybind11/noxfile.py +151 -0
  389. pyopenxlsx-0.2.0/third_party/pybind11/pybind11/__init__.py +19 -0
  390. pyopenxlsx-0.2.0/third_party/pybind11/pybind11/__main__.py +97 -0
  391. pyopenxlsx-0.2.0/third_party/pybind11/pybind11/_version.py +34 -0
  392. pyopenxlsx-0.2.0/third_party/pybind11/pybind11/commands.py +39 -0
  393. pyopenxlsx-0.2.0/third_party/pybind11/pybind11/py.typed +0 -0
  394. pyopenxlsx-0.2.0/third_party/pybind11/pybind11/setup_helpers.py +500 -0
  395. pyopenxlsx-0.2.0/third_party/pybind11/pyproject.toml +209 -0
  396. pyopenxlsx-0.2.0/third_party/pybind11/tests/CMakeLists.txt +684 -0
  397. pyopenxlsx-0.2.0/third_party/pybind11/tests/conftest.py +313 -0
  398. pyopenxlsx-0.2.0/third_party/pybind11/tests/constructor_stats.h +330 -0
  399. pyopenxlsx-0.2.0/third_party/pybind11/tests/cross_module_gil_utils.cpp +111 -0
  400. pyopenxlsx-0.2.0/third_party/pybind11/tests/cross_module_interleaved_error_already_set.cpp +54 -0
  401. pyopenxlsx-0.2.0/third_party/pybind11/tests/custom_exceptions.py +10 -0
  402. pyopenxlsx-0.2.0/third_party/pybind11/tests/eigen_tensor_avoid_stl_array.cpp +16 -0
  403. pyopenxlsx-0.2.0/third_party/pybind11/tests/env.py +59 -0
  404. pyopenxlsx-0.2.0/third_party/pybind11/tests/exo_planet_c_api.cpp +76 -0
  405. pyopenxlsx-0.2.0/third_party/pybind11/tests/exo_planet_pybind11.cpp +19 -0
  406. pyopenxlsx-0.2.0/third_party/pybind11/tests/extra_python_package/pytest.ini +0 -0
  407. pyopenxlsx-0.2.0/third_party/pybind11/tests/extra_python_package/test_files.py +385 -0
  408. pyopenxlsx-0.2.0/third_party/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  409. pyopenxlsx-0.2.0/third_party/pybind11/tests/extra_setuptools/test_setuphelper.py +153 -0
  410. pyopenxlsx-0.2.0/third_party/pybind11/tests/home_planet_very_lonely_traveler.cpp +13 -0
  411. pyopenxlsx-0.2.0/third_party/pybind11/tests/local_bindings.h +93 -0
  412. pyopenxlsx-0.2.0/third_party/pybind11/tests/mod_per_interpreter_gil.cpp +20 -0
  413. pyopenxlsx-0.2.0/third_party/pybind11/tests/mod_per_interpreter_gil_with_singleton.cpp +147 -0
  414. pyopenxlsx-0.2.0/third_party/pybind11/tests/mod_shared_interpreter_gil.cpp +17 -0
  415. pyopenxlsx-0.2.0/third_party/pybind11/tests/object.h +205 -0
  416. pyopenxlsx-0.2.0/third_party/pybind11/tests/pure_cpp/CMakeLists.txt +22 -0
  417. pyopenxlsx-0.2.0/third_party/pybind11/tests/pure_cpp/smart_holder_poc.h +56 -0
  418. pyopenxlsx-0.2.0/third_party/pybind11/tests/pure_cpp/smart_holder_poc_test.cpp +427 -0
  419. pyopenxlsx-0.2.0/third_party/pybind11/tests/pybind11_cross_module_tests.cpp +163 -0
  420. pyopenxlsx-0.2.0/third_party/pybind11/tests/pybind11_tests.cpp +129 -0
  421. pyopenxlsx-0.2.0/third_party/pybind11/tests/pybind11_tests.h +119 -0
  422. pyopenxlsx-0.2.0/third_party/pybind11/tests/pyproject.toml +40 -0
  423. pyopenxlsx-0.2.0/third_party/pybind11/tests/pytest.ini +22 -0
  424. pyopenxlsx-0.2.0/third_party/pybind11/tests/requirements.txt +20 -0
  425. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_async.cpp +25 -0
  426. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_async.py +31 -0
  427. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_buffers.cpp +442 -0
  428. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_buffers.py +401 -0
  429. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_builtin_casters.cpp +393 -0
  430. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_builtin_casters.py +624 -0
  431. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_call_policies.cpp +113 -0
  432. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_call_policies.py +256 -0
  433. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_callbacks.cpp +302 -0
  434. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_callbacks.py +247 -0
  435. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_chrono.cpp +81 -0
  436. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_chrono.py +207 -0
  437. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class.cpp +694 -0
  438. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class.py +557 -0
  439. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_cross_module_use_after_one_module_dealloc.cpp +23 -0
  440. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_cross_module_use_after_one_module_dealloc.py +43 -0
  441. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_release_gil_before_calling_cpp_dtor.cpp +54 -0
  442. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_release_gil_before_calling_cpp_dtor.py +21 -0
  443. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_basic.cpp +248 -0
  444. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_basic.py +248 -0
  445. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_disowning.cpp +41 -0
  446. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_disowning.py +78 -0
  447. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_disowning_mi.cpp +85 -0
  448. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_disowning_mi.py +246 -0
  449. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_factory_constructors.cpp +156 -0
  450. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_factory_constructors.py +53 -0
  451. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_inheritance.cpp +90 -0
  452. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_inheritance.py +63 -0
  453. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_mi_thunks.cpp +230 -0
  454. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_mi_thunks.py +104 -0
  455. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_property.cpp +94 -0
  456. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_property.py +166 -0
  457. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_property_non_owning.cpp +65 -0
  458. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_property_non_owning.py +30 -0
  459. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_shared_ptr_copy_move.cpp +103 -0
  460. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_shared_ptr_copy_move.py +41 -0
  461. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_trampoline_basic.cpp +57 -0
  462. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_trampoline_basic.py +35 -0
  463. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_trampoline_self_life_support.cpp +86 -0
  464. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_trampoline_self_life_support.py +38 -0
  465. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_trampoline_shared_from_this.cpp +137 -0
  466. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_trampoline_shared_from_this.py +247 -0
  467. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_trampoline_shared_ptr_cpp_arg.cpp +92 -0
  468. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_trampoline_shared_ptr_cpp_arg.py +154 -0
  469. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_trampoline_unique_ptr.cpp +63 -0
  470. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_trampoline_unique_ptr.py +31 -0
  471. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_unique_ptr_custom_deleter.cpp +30 -0
  472. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_unique_ptr_custom_deleter.py +8 -0
  473. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_unique_ptr_member.cpp +50 -0
  474. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_unique_ptr_member.py +26 -0
  475. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_virtual_py_cpp_mix.cpp +58 -0
  476. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_class_sh_virtual_py_cpp_mix.py +66 -0
  477. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cmake_build/CMakeLists.txt +91 -0
  478. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cmake_build/embed.cpp +23 -0
  479. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +19 -0
  480. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +29 -0
  481. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +37 -0
  482. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cmake_build/main.cpp +6 -0
  483. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +38 -0
  484. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +32 -0
  485. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +38 -0
  486. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cmake_build/test.py +10 -0
  487. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_const_name.cpp +55 -0
  488. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_const_name.py +31 -0
  489. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_constants_and_functions.cpp +158 -0
  490. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_constants_and_functions.py +58 -0
  491. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_copy_move.cpp +546 -0
  492. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_copy_move.py +144 -0
  493. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cpp_conduit.cpp +22 -0
  494. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cpp_conduit.py +183 -0
  495. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cpp_conduit_traveler_bindings.h +47 -0
  496. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cpp_conduit_traveler_types.h +25 -0
  497. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cross_module_rtti/CMakeLists.txt +70 -0
  498. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cross_module_rtti/bindings.cpp +20 -0
  499. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cross_module_rtti/catch.cpp +22 -0
  500. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cross_module_rtti/lib.cpp +13 -0
  501. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cross_module_rtti/lib.h +31 -0
  502. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_cross_module_rtti/test_cross_module_rtti.cpp +50 -0
  503. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_custom_type_casters.cpp +217 -0
  504. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_custom_type_casters.py +126 -0
  505. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_custom_type_setup.cpp +104 -0
  506. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_custom_type_setup.py +84 -0
  507. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_docs_advanced_cast_custom.cpp +69 -0
  508. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_docs_advanced_cast_custom.py +40 -0
  509. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_docstring_options.cpp +129 -0
  510. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_docstring_options.py +72 -0
  511. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_eigen_matrix.cpp +448 -0
  512. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_eigen_matrix.py +839 -0
  513. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_eigen_tensor.cpp +18 -0
  514. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_eigen_tensor.inl +338 -0
  515. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_eigen_tensor.py +316 -0
  516. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_enum.cpp +149 -0
  517. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_enum.py +344 -0
  518. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_eval.cpp +118 -0
  519. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_eval.py +52 -0
  520. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_eval_call.py +5 -0
  521. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_exceptions.cpp +427 -0
  522. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_exceptions.h +13 -0
  523. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_exceptions.py +439 -0
  524. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_factory_constructors.cpp +434 -0
  525. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_factory_constructors.py +531 -0
  526. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_gil_scoped.cpp +144 -0
  527. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_gil_scoped.py +291 -0
  528. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_iostream.cpp +126 -0
  529. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_iostream.py +304 -0
  530. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_kwargs_and_defaults.cpp +331 -0
  531. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_kwargs_and_defaults.py +473 -0
  532. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_local_bindings.cpp +131 -0
  533. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_local_bindings.py +291 -0
  534. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_methods_and_attributes.cpp +492 -0
  535. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_methods_and_attributes.py +574 -0
  536. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_modules.cpp +124 -0
  537. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_modules.py +146 -0
  538. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_multiple_inheritance.cpp +341 -0
  539. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_multiple_inheritance.py +500 -0
  540. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_multiple_interpreters.py +432 -0
  541. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_native_enum.cpp +262 -0
  542. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_native_enum.py +377 -0
  543. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_numpy_array.cpp +599 -0
  544. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_numpy_array.py +710 -0
  545. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_numpy_dtypes.cpp +745 -0
  546. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_numpy_dtypes.py +464 -0
  547. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_numpy_scalars.cpp +63 -0
  548. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_numpy_scalars.py +54 -0
  549. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_numpy_vectorize.cpp +107 -0
  550. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_numpy_vectorize.py +268 -0
  551. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_opaque_types.cpp +77 -0
  552. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_opaque_types.py +64 -0
  553. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_operator_overloading.cpp +281 -0
  554. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_operator_overloading.py +161 -0
  555. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_pickling.cpp +191 -0
  556. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_pickling.py +149 -0
  557. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_potentially_slicing_weak_ptr.cpp +170 -0
  558. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_potentially_slicing_weak_ptr.py +174 -0
  559. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_python_multiple_inheritance.cpp +45 -0
  560. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_python_multiple_inheritance.py +36 -0
  561. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_pytypes.cpp +1216 -0
  562. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_pytypes.py +1374 -0
  563. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_scoped_critical_section.cpp +274 -0
  564. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_scoped_critical_section.py +30 -0
  565. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_sequences_and_iterators.cpp +600 -0
  566. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_sequences_and_iterators.py +307 -0
  567. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_smart_ptr.cpp +594 -0
  568. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_smart_ptr.py +357 -0
  569. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_stl.cpp +667 -0
  570. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_stl.py +735 -0
  571. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_stl_binders.cpp +275 -0
  572. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_stl_binders.py +414 -0
  573. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_tagbased_polymorphic.cpp +150 -0
  574. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_tagbased_polymorphic.py +30 -0
  575. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_thread.cpp +108 -0
  576. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_thread.py +80 -0
  577. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_type_caster_pyobject_ptr.cpp +168 -0
  578. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_type_caster_pyobject_ptr.py +125 -0
  579. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_type_caster_std_function_specializations.cpp +46 -0
  580. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_type_caster_std_function_specializations.py +15 -0
  581. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_union.cpp +22 -0
  582. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_union.py +10 -0
  583. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_unnamed_namespace_a.cpp +37 -0
  584. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_unnamed_namespace_a.py +33 -0
  585. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_unnamed_namespace_b.cpp +13 -0
  586. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_unnamed_namespace_b.py +7 -0
  587. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_vector_unique_ptr_member.cpp +54 -0
  588. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_vector_unique_ptr_member.py +16 -0
  589. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_virtual_functions.cpp +592 -0
  590. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_virtual_functions.py +468 -0
  591. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_warnings.cpp +46 -0
  592. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_warnings.py +68 -0
  593. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_with_catch/CMakeLists.txt +64 -0
  594. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_with_catch/catch.cpp +175 -0
  595. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_with_catch/catch_skip.h +16 -0
  596. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_with_catch/external_module.cpp +39 -0
  597. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_with_catch/test_args_convert_vector.cpp +80 -0
  598. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_with_catch/test_argument_vector.cpp +94 -0
  599. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_with_catch/test_interpreter.cpp +483 -0
  600. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_with_catch/test_interpreter.py +16 -0
  601. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_with_catch/test_subinterpreter.cpp +579 -0
  602. pyopenxlsx-0.2.0/third_party/pybind11/tests/test_with_catch/test_trampoline.py +18 -0
  603. pyopenxlsx-0.2.0/third_party/pybind11/tests/valgrind-numpy-scipy.supp +140 -0
  604. pyopenxlsx-0.2.0/third_party/pybind11/tests/valgrind-python.supp +117 -0
  605. pyopenxlsx-0.2.0/third_party/pybind11/tools/FindCatch.cmake +74 -0
  606. pyopenxlsx-0.2.0/third_party/pybind11/tools/FindEigen3.cmake +86 -0
  607. pyopenxlsx-0.2.0/third_party/pybind11/tools/FindPythonLibsNew.cmake +320 -0
  608. pyopenxlsx-0.2.0/third_party/pybind11/tools/JoinPaths.cmake +23 -0
  609. pyopenxlsx-0.2.0/third_party/pybind11/tools/check-style.sh +44 -0
  610. pyopenxlsx-0.2.0/third_party/pybind11/tools/cmake_uninstall.cmake.in +23 -0
  611. pyopenxlsx-0.2.0/third_party/pybind11/tools/codespell_ignore_lines_from_errors.py +40 -0
  612. pyopenxlsx-0.2.0/third_party/pybind11/tools/libsize.py +38 -0
  613. pyopenxlsx-0.2.0/third_party/pybind11/tools/make_changelog.py +121 -0
  614. pyopenxlsx-0.2.0/third_party/pybind11/tools/make_global.py +33 -0
  615. pyopenxlsx-0.2.0/third_party/pybind11/tools/pybind11.pc.in +7 -0
  616. pyopenxlsx-0.2.0/third_party/pybind11/tools/pybind11Common.cmake +458 -0
  617. pyopenxlsx-0.2.0/third_party/pybind11/tools/pybind11Config.cmake.in +240 -0
  618. pyopenxlsx-0.2.0/third_party/pybind11/tools/pybind11GuessPythonExtSuffix.cmake +94 -0
  619. pyopenxlsx-0.2.0/third_party/pybind11/tools/pybind11NewTools.cmake +339 -0
  620. pyopenxlsx-0.2.0/third_party/pybind11/tools/pybind11Tools.cmake +217 -0
  621. pyopenxlsx-0.2.0/third_party/pybind11/tools/test-pybind11GuessPythonExtSuffix.cmake +185 -0
  622. pyopenxlsx-0.2.0/uv.lock +558 -0
@@ -0,0 +1,3 @@
1
+ BasedOnStyle: Google
2
+ IndentWidth: 4
3
+ ColumnLimit: 100
@@ -0,0 +1,20 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+ .idea
12
+ .pytest_cache/
13
+ .DS_Store
14
+ .cache
15
+ .ruff_cache
16
+ .coverage
17
+ compile_commands.json
18
+ .benchmarks
19
+ htmlcov
20
+ demo
@@ -0,0 +1,6 @@
1
+ [submodule "third_party/OpenXLSX"]
2
+ path = third_party/OpenXLSX
3
+ url = git@github.com:twn39/OpenXLSX.git
4
+ [submodule "third_party/pybind11"]
5
+ path = third_party/pybind11
6
+ url = https://github.com/pybind/pybind11.git
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,33 @@
1
+ cmake_minimum_required(VERSION 3.15)
2
+ project(pyopenxlsx LANGUAGES CXX)
3
+
4
+ set(CMAKE_CXX_STANDARD 17)
5
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
6
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
7
+
8
+ # Configure OpenXLSX
9
+ set(OPENXLSX_BUILD_SAMPLES OFF CACHE BOOL "" FORCE)
10
+ set(OPENXLSX_BUILD_TESTS OFF CACHE BOOL "" FORCE)
11
+ set(OPENXLSX_BUILD_BENCHMARKS OFF CACHE BOOL "" FORCE)
12
+ add_subdirectory(third_party/OpenXLSX)
13
+
14
+ # Configure pybind11
15
+ add_subdirectory(third_party/pybind11)
16
+
17
+ # Define the python module
18
+ pybind11_add_module(_openxlsx
19
+ src/bindings.cpp
20
+ src/constants.cpp
21
+ src/types.cpp
22
+ src/styles.cpp
23
+ src/document.cpp
24
+ src/workbook.cpp
25
+ src/worksheet.cpp
26
+ src/cell.cpp
27
+ )
28
+
29
+ # Link dependencies
30
+ target_link_libraries(_openxlsx PRIVATE OpenXLSX::OpenXLSX)
31
+
32
+ # Install steps (handled by scikit-build-core)
33
+ install(TARGETS _openxlsx DESTINATION pyopenxlsx)
@@ -0,0 +1,8 @@
1
+ Metadata-Version: 2.2
2
+ Name: pyopenxlsx
3
+ Version: 0.2.0
4
+ Summary: Python bindings for OpenXLSX using pybind11
5
+ Author-Email: curry tang <twn39@163.com>
6
+ License: MIT
7
+ Requires-Python: >=3.11
8
+
@@ -0,0 +1,514 @@
1
+ # pyopenxlsx
2
+
3
+ `pyopenxlsx` is a high-performance Python binding for the [OpenXLSX](https://github.com/troldal/OpenXLSX) C++ library. It aims to provide significantly faster read/write speeds compared to pure Python libraries like `openpyxl`, while maintaining a Pythonic API design.
4
+
5
+ ## Core Features
6
+
7
+ - **High Performance**: Powered by the modern C++17 OpenXLSX library.
8
+ - **Pythonic API**: Intuitive interface with properties, iterators, and context managers.
9
+ - **Async Support**: `async/await` support for key I/O operations.
10
+ - **Rich Styling**: comprehensive support for fonts, fills, borders, alignments, and number formats.
11
+ - **Memory Safety**: Combines C++ efficiency with Python's automatic memory management.
12
+
13
+ ## Tech Stack
14
+
15
+ | Component | Technology |
16
+ | :--- | :--- |
17
+ | **C++ Core** | [OpenXLSX](https://github.com/troldal/OpenXLSX) |
18
+ | **Bindings** | [pybind11](https://github.com/pybind/pybind11) |
19
+ | **Build System** | [scikit-build-core](https://github.com/scikit-build/scikit-build-core) & [CMake](https://cmake.org/) |
20
+
21
+ ## Installation
22
+
23
+ ### Install from Source
24
+
25
+ ```bash
26
+ # Using uv (Recommended)
27
+ uv pip install .
28
+
29
+ # Or using pip
30
+ pip install .
31
+ ```
32
+
33
+ ### Development Installation
34
+
35
+ ```bash
36
+ uv pip install -e .
37
+ ```
38
+
39
+ ## Quick Start
40
+
41
+ ### Create and Save a Workbook
42
+
43
+ ```python
44
+ from pyopenxlsx import Workbook
45
+
46
+ # Create a new workbook
47
+ with Workbook() as wb:
48
+ ws = wb.active
49
+ ws.title = "MySheet"
50
+
51
+ # Write data
52
+ ws["A1"].value = "Hello"
53
+ ws["B1"].value = 42
54
+ ws.cell(row=2, column=1).value = 3.14
55
+
56
+ # Save
57
+ wb.save("example.xlsx")
58
+ ```
59
+
60
+ ### Read a Workbook
61
+
62
+ ```python
63
+ from pyopenxlsx import load_workbook
64
+
65
+ wb = load_workbook("example.xlsx")
66
+ ws = wb["MySheet"]
67
+ print(ws["A1"].value) # Output: Hello
68
+ wb.close()
69
+ ```
70
+
71
+ ### Async Operations
72
+
73
+ ```python
74
+ import asyncio
75
+ from pyopenxlsx import load_workbook_async
76
+
77
+ async def main():
78
+ wb = await load_workbook_async("example.xlsx")
79
+ ws = wb.active
80
+ print(ws["A1"].value)
81
+
82
+ # Async save
83
+ await wb.save_async("example_saved.async.xlsx")
84
+ await wb.close_async()
85
+
86
+ asyncio.run(main())
87
+ ```
88
+
89
+ ### Styling
90
+
91
+ ```python
92
+ from pyopenxlsx import Workbook, Font, Fill, Border, Side, Alignment, XLColor
93
+
94
+ wb = Workbook()
95
+ ws = wb.active
96
+
97
+ # Define styles
98
+ font = Font(name="Arial", size=14, bold=True, color=XLColor(255, 0, 0))
99
+ fill = Fill(pattern_type="solid", color=XLColor(255, 255, 0))
100
+ border = Border(
101
+ left=Side(style="thin", color=XLColor(0, 0, 0)),
102
+ right=Side(style="thin"),
103
+ top=Side(style="thick"),
104
+ bottom=Side(style="thin")
105
+ )
106
+ alignment = Alignment(horizontal="center", vertical="center", wrap_text=True)
107
+
108
+ # Apply style
109
+ style_idx = wb.add_style(font=font, fill=fill, border=border, alignment=alignment)
110
+ ws["A1"].value = "Styled Cell"
111
+ ws["A1"].style_index = style_idx
112
+
113
+ wb.save("styles.xlsx")
114
+ ```
115
+
116
+ ### Insert Images
117
+
118
+ ```python
119
+ from pyopenxlsx import Workbook
120
+
121
+ wb = Workbook()
122
+ ws = wb.active
123
+
124
+ # Insert image at A1, automatically maintaining aspect ratio
125
+ # Requires Pillow: pip install pillow
126
+ ws.add_image("logo.png", anchor="A1", width=200)
127
+
128
+ # Or specify exact dimensions
129
+ ws.add_image("banner.jpg", anchor="B5", width=400, height=100)
130
+
131
+ wb.save("images.xlsx")
132
+ ```
133
+
134
+ ---
135
+
136
+ ## API Documentation
137
+
138
+ ### Module Exports
139
+
140
+ ```python
141
+ from pyopenxlsx import (
142
+ # Core Classes
143
+ Workbook, Worksheet, Cell, Range,
144
+ load_workbook, load_workbook_async,
145
+
146
+ # Style Classes
147
+ Font, Fill, Border, Side, Alignment, Style, Protection,
148
+
149
+ # Enums & Constants
150
+ XLColor, XLSheetState, XLLineStyle, XLPatternType, XLAlignmentStyle,
151
+ XLProperty, XLUnderlineStyle, XLFontSchemeStyle, XLVerticalAlignRunStyle,
152
+ XLFillType,
153
+ )
154
+ ```
155
+
156
+ ---
157
+
158
+ ### `Workbook` Class
159
+
160
+ The top-level container for an Excel file.
161
+
162
+ #### Constructor
163
+
164
+ ```python
165
+ Workbook(filename: str | None = None)
166
+ ```
167
+
168
+ - `filename`: Optional. If provided, opens an existing file; otherwise, creates a new workbook.
169
+
170
+ #### Properties
171
+
172
+ | Property | Type | Description |
173
+ | :--- | :--- | :--- |
174
+ | `active` | `Worksheet \| None` | Get or set the currently active worksheet. |
175
+ | `sheetnames` | `list[str]` | Returns a list of all worksheet names. |
176
+ | `properties` | `DocumentProperties` | Access document metadata (title, author, etc.). |
177
+ | `styles` | `XLStyles` | Access underlying style object (advanced usage). |
178
+ | `workbook` | `XLWorkbook` | Access underlying C++ workbook object (advanced usage). |
179
+
180
+ #### Methods
181
+
182
+ | Method | Return Type | Description |
183
+ | :--- | :--- | :--- |
184
+ | `save(filename=None)` | `None` | Save the workbook. Saves to original path if `filename` is omitted. |
185
+ | `save_async(filename=None)` | `Coroutine` | Asynchronously save the workbook. |
186
+ | `close()` | `None` | Close the workbook and release resources. |
187
+ | `close_async()` | `Coroutine` | Asynchronously close the workbook. |
188
+ | `create_sheet(title=None, index=None)` | `Worksheet` | Create a new worksheet. `title` defaults to "Sheet1", etc. |
189
+ | `create_sheet_async(...)` | `Coroutine` | Asynchronously create a worksheet. |
190
+ | `remove(worksheet)` | `None` | Delete the specified worksheet. |
191
+ | `remove_async(worksheet)` | `Coroutine` | Asynchronously delete a worksheet. |
192
+ | `copy_worksheet(from_worksheet)` | `Worksheet` | Copy a worksheet and return the copy. |
193
+ | `copy_worksheet_async(...)` | `Coroutine` | Asynchronously copy a worksheet. |
194
+ | `add_style(...)` | `int` | Create a new style and return its index. See below. |
195
+ | `add_style_async(...)` | `Coroutine` | Asynchronously create a style. |
196
+ | `get_embedded_images()` | `list[ImageInfo]` | Get list of all images embedded in the workbook. |
197
+ | `get_image_data(name)` | `bytes` | Get binary data of an embedded image by its name or path. |
198
+ | `extract_images(out_dir)` | `list[str]` | Extract all images to a directory. Returns list of file paths. |
199
+ | `extract_images_async(...)` | `Coroutine` | Asynchronously extract all images. |
200
+
201
+ #### `add_style` Method
202
+
203
+ ```python
204
+ def add_style(
205
+ font: Font | int | None = None,
206
+ fill: Fill | int | None = None,
207
+ border: Border | int | None = None,
208
+ alignment: Alignment | None = None,
209
+ number_format: str | int | None = None,
210
+ protection: Protection | None = None,
211
+ ) -> int:
212
+ ```
213
+
214
+ **Returns:** A style index (`int`) that can be assigned to `Cell.style_index`.
215
+
216
+ **Example:**
217
+
218
+ ```python
219
+ # Pass all styles via a Style object
220
+ from pyopenxlsx import Style, Font, Fill
221
+
222
+ style = Style(
223
+ font=Font(bold=True),
224
+ fill=Fill(color=XLColor(200, 200, 200)),
225
+ number_format="0.00"
226
+ )
227
+ idx = wb.add_style(style)
228
+ ```
229
+
230
+ ---
231
+
232
+ ### `Worksheet` Class
233
+
234
+ Represents a sheet within an Excel file.
235
+
236
+ #### Properties
237
+
238
+ | Property | Type | Description |
239
+ | :--- | :--- | :--- |
240
+ | `title` | `str` | Get or set the worksheet name. |
241
+ | `index` | `int` | Get or set the worksheet index (0-based). |
242
+ | `sheet_state` | `str` | Visibility: `"visible"`, `"hidden"`, `"very_hidden"`. |
243
+ | `max_row` | `int` | Returns the maximum row index used. |
244
+ | `max_column` | `int` | Returns the maximum column index used. |
245
+ | `rows` | `Iterator` | Iterate over all rows with data. |
246
+ | `merges` | `MergeCells` | Access merged cells information. |
247
+ | `protection` | `dict` | Get worksheet protection status (read-only). |
248
+
249
+ #### Methods
250
+
251
+ | Method | Return Type | Description |
252
+ | :--- | :--- | :--- |
253
+ | `cell(row, column, value=None)` | `Cell` | Get cell by 1-based indices. Optionally set value. |
254
+ | `range(address)` | `Range` | Get range by string, e.g., `ws.range("A1:C3")`. |
255
+ | `range(start, end)` | `Range` | Get range by endpoints, e.g., `ws.range("A1", "C3")`. |
256
+ | `merge_cells(address)` | `None` | Merge cells, e.g., `ws.merge_cells("A1:B2")`. |
257
+ | `merge_cells_async(...)` | `Coroutine` | Asynchronously merge cells. |
258
+ | `unmerge_cells(address)` | `None` | Unmerge cells. |
259
+ | `unmerge_cells_async(...)` | `Coroutine` | Asynchronously unmerge cells. |
260
+ | `append(iterable)` | `None` | Append a row of data after the last used row. |
261
+ | `append_async(iterable)` | `Coroutine` | Asynchronously append a row. |
262
+ | `set_column_format(col, style_idx)` | `None` | Set default style for a column. `col` can be int or "A". |
263
+ | `set_row_format(row, style_idx)` | `None` | Set default style for a row. |
264
+ | `column(col)` | `Column` | Get column object for width adjustments. |
265
+ | `protect(...)` | `None` | Protect the worksheet. |
266
+ | `protect_async(...)` | `Coroutine` | Asynchronously protect the worksheet. |
267
+ | `unprotect()` | `None` | Unprotect the worksheet. |
268
+ | `unprotect_async()` | `Coroutine` | Asynchronously unprotect. |
269
+ | `add_image(...)` | `None` | Insert an image. |
270
+ | `add_image_async(...)` | `Coroutine` | Asynchronously insert an image. |
271
+
272
+ #### `add_image` Method
273
+
274
+ ```python
275
+ def add_image(
276
+ img_path: str,
277
+ anchor: str = "A1",
278
+ width: int | None = None,
279
+ height: int | None = None,
280
+ ) -> None:
281
+ ```
282
+
283
+ - `img_path`: Path to image (PNG, JPG, GIF).
284
+ - `anchor`: Top-left cell address.
285
+ - `width`, `height`: Pixel dimensions. Requires Pillow for auto-detection if not provided.
286
+
287
+ #### Magic Methods
288
+
289
+ | Method | Description |
290
+ | :--- | :--- |
291
+ | `__getitem__(key)` | Get cell by address: `ws["A1"]` |
292
+
293
+ ---
294
+
295
+ ### `Cell` Class
296
+
297
+ The fundamental unit of data in Excel.
298
+
299
+ #### Properties
300
+
301
+ | Property | Type | Description |
302
+ | :--- | :--- | :--- |
303
+ | `value` | `Any` | Get/Set value. Supports `str`, `int`, `float`, `bool`, `datetime`. |
304
+ | `formula` | `Formula` | Get/Set formula string (without initial `=`). |
305
+ | `style_index` | `int` | Get/Set style index. |
306
+ | `style` | `int` | Alias for `style_index`. |
307
+ | `is_date` | `bool` | True if the cell has a date format. |
308
+ | `comment` | `str \| None` | Get/Set cell comment. Set `None` to remove. |
309
+ | `font` | `XLFont` | Get font object (read-only). |
310
+ | `fill` | `XLFill` | Get fill object (read-only). |
311
+ | `border` | `XLBorder` | Get border object (read-only). |
312
+ | `alignment` | `XLAlignment` | Get alignment object (read-only). |
313
+
314
+ #### Date Handling
315
+
316
+ If `is_date` is `True`, `value` automatically returns a Python `datetime` object.
317
+
318
+ ```python
319
+ # Write
320
+ ws["A1"].value = datetime(2024, 1, 15)
321
+ ws["A1"].style_index = wb.add_style(number_format=14) # Built-in date format
322
+
323
+ # Read
324
+ print(ws["A1"].value) # datetime.datetime(2024, 1, 15, 0, 0)
325
+ print(ws["A1"].is_date) # True
326
+ ```
327
+
328
+ #### Formulas
329
+
330
+ **Note**: Formulas must be set via the `formula` property, not `value`.
331
+
332
+ ```python
333
+ # Correct
334
+ ws["A3"].formula = "SUM(A1:A2)"
335
+
336
+ # Incorrect (treated as string)
337
+ ws["A3"].value = "=SUM(A1:A2)"
338
+ ```
339
+
340
+ ---
341
+
342
+ ### `Range` Class
343
+
344
+ Represents a rectangular area of cells.
345
+
346
+ #### Properties
347
+
348
+ | Property | Type | Description |
349
+ | :--- | :--- | :--- |
350
+ | `address` | `str` | Range address, e.g., `"A1:C3"`. |
351
+ | `num_rows` | `int` | Row count. |
352
+ | `num_columns` | `int` | Column count. |
353
+
354
+ #### Methods
355
+
356
+ | Method | Return Type | Description |
357
+ | :--- | :--- | :--- |
358
+ | `clear()` | `None` | Clear values in all cells of the range. |
359
+ | `clear_async()` | `Coroutine` | Asynchronously clear range. |
360
+
361
+ #### Iteration
362
+
363
+ ```python
364
+ for cell in ws.range("A1:B2"):
365
+ print(cell.value)
366
+ ```
367
+
368
+ ---
369
+
370
+ ### Style Classes
371
+
372
+ #### `Font`
373
+ ```python
374
+ Font(name="Arial", size=11, bold=False, italic=False, color=None)
375
+ ```
376
+
377
+ #### `Fill`
378
+ ```python
379
+ Fill(pattern_type="solid", color=None, background_color=None)
380
+ ```
381
+
382
+ #### `Border`
383
+ ```python
384
+ Border(left=Side(), right=Side(), top=Side(), bottom=Side(), diagonal=Side())
385
+ ```
386
+
387
+ #### `Side`
388
+ ```python
389
+ Side(style="thin", color=None)
390
+ ```
391
+ **Styles**: `"thin"`, `"thick"`, `"dashed"`, `"dotted"`, `"double"`, `"hair"`, `"medium"`, `"mediumDashed"`, `"mediumDashDot"`, `"mediumDashDotDot"`, `"slantDashDot"`
392
+
393
+ #### `Alignment`
394
+ ```python
395
+ Alignment(horizontal="center", vertical="center", wrap_text=True)
396
+ ```
397
+ **Options**: `"left"`, `"center"`, `"right"`, `"general"`, `"top"`, `"bottom"`
398
+
399
+ ---
400
+
401
+ ### `DocumentProperties`
402
+
403
+ Accessed via `wb.properties`. Supports dict-like access.
404
+
405
+ - Metadata: `title`, `subject`, `creator`, `keywords`, `description`, `last_modified_by`, `category`, `company`.
406
+
407
+ ```python
408
+ wb.properties["title"] = "My Report"
409
+ print(wb.properties["creator"])
410
+ ```
411
+
412
+ ---
413
+
414
+ ### `Column` Class
415
+ Accessed via `ws.column(col_index)` or `ws.column("A")`.
416
+
417
+ #### Properties
418
+
419
+ | Property | Type | Description |
420
+ | :--- | :--- | :--- |
421
+ | `width` | `float` | Get or set the column width. |
422
+ | `hidden` | `bool` | Get or set whether the column is hidden. |
423
+ | `style_index` | `int` | Get or set the default style index for the column. |
424
+
425
+ ---
426
+
427
+ ### `Formula` Class
428
+ Accessed via `cell.formula`.
429
+
430
+ #### Properties
431
+
432
+ | Property | Type | Description |
433
+ | :--- | :--- | :--- |
434
+ | `text` | `str` | Get or set the formula string. |
435
+
436
+ #### Methods
437
+
438
+ | Method | Return Type | Description |
439
+ | :--- | :--- | :--- |
440
+ | `clear()` | `None` | Remove the formula from the cell. |
441
+
442
+ ---
443
+
444
+ ### `MergeCells` Class
445
+ Accessed via `ws.merges`. Represents the collection of merged ranges in a worksheet.
446
+
447
+ #### Methods
448
+
449
+ | Method | Return Type | Description |
450
+ | :--- | :--- | :--- |
451
+ | `append(reference)` | `None` | Create a merged range (e.g., `"A1:B2"`). |
452
+ | `delete(index)` | `None` | Remove a merged range by its index. |
453
+ | `find(reference)` | `int` | Find the index of a merged range. Returns -1 if not found. |
454
+ | `__len__()` | `int` | Return the number of merged ranges. |
455
+ | `__getitem__(index)` | `XLMergeCell` | Get a merged range object by index. |
456
+ | `__iter__()` | `Iterator` | Iterate over all merged ranges. |
457
+ | `__contains__(ref)` | `bool` | Check if a reference is within any merged range. |
458
+
459
+ ---
460
+
461
+ ### `ImageInfo` Class
462
+ Returned by `wb.get_embedded_images()`.
463
+
464
+ #### Attributes
465
+
466
+ | Attribute | Type | Description |
467
+ | :--- | :--- | :--- |
468
+ | `name` | `str` | Filename of the image. |
469
+ | `path` | `str` | Internal path in the XLSX archive. |
470
+ | `extension` | `str` | File extension (e.g., "png"). |
471
+
472
+ ---
473
+
474
+ ### Helper Functions
475
+
476
+ #### `load_workbook`
477
+ ```python
478
+ def load_workbook(filename: str) -> Workbook:
479
+ """Open an existing Excel file."""
480
+ ```
481
+
482
+ #### `load_workbook_async`
483
+ ```python
484
+ async def load_workbook_async(filename: str) -> Workbook:
485
+ """Asynchronously open an existing Excel file."""
486
+ ```
487
+
488
+ #### `is_date_format`
489
+ ```python
490
+ def is_date_format(format_code: int | str) -> bool:
491
+ """
492
+ Check if a number format code (int) or string represents a date/time format.
493
+ Useful for determining if a cell value should be treated as a datetime.
494
+ """
495
+ ```
496
+
497
+ ---
498
+
499
+ ## Development
500
+
501
+ ### Run Tests
502
+
503
+ ```bash
504
+ # Run all tests
505
+ uv run pytest
506
+
507
+ # With coverage
508
+ uv run pytest --cov=src/pyopenxlsx --cov-report=term-missing
509
+ ```
510
+
511
+ ## License
512
+
513
+ MIT License.
514
+ The underlying OpenXLSX library is licensed under its own terms.
@@ -0,0 +1,53 @@
1
+ [build-system]
2
+ requires = ["scikit-build-core", "pybind11"]
3
+ build-backend = "scikit_build_core.build"
4
+
5
+ [project]
6
+ name = "pyopenxlsx"
7
+ version = "0.2.0"
8
+ description = "Python bindings for OpenXLSX using pybind11"
9
+ authors = [{name = "curry tang", email = "twn39@163.com"}]
10
+ license = {text = "MIT"}
11
+ requires-python = ">=3.11"
12
+
13
+ [tool.scikit-build]
14
+ cmake.version = ">=3.15"
15
+ wheel.packages = ["src/pyopenxlsx"]
16
+
17
+ [dependency-groups]
18
+ dev = [
19
+ "clang-tidy>=21.1.6",
20
+ "openpyxl>=3.1.5",
21
+ "pillow>=12.1.0",
22
+ "pytest>=9.0.2",
23
+ "pytest-asyncio>=1.3.0",
24
+ "pytest-cov>=7.0.0",
25
+ "ruff>=0.15.0",
26
+ "ty>=0.0.15",
27
+ "pytest-benchmark>=4.0.0",
28
+ "numpy>=1.26.0",
29
+ ]
30
+
31
+ [tool.pytest.ini_options]
32
+ addopts = "--cov=pyopenxlsx --cov-report=term-missing --cov-report=html"
33
+ testpaths = ["tests"]
34
+ norecursedirs = ["third_party"]
35
+
36
+ [tool.coverage.run]
37
+ source = ["src/pyopenxlsx"]
38
+ omit = ["tests/*"]
39
+
40
+ [tool.coverage.report]
41
+ exclude_lines = [
42
+ "pragma: no cover",
43
+ "def __repr__",
44
+ "if self.debug:",
45
+ "raise AssertionError",
46
+ "raise NotImplementedError",
47
+ "if __name__ == .__main__.:",
48
+ "pass",
49
+ "raise ImportError",
50
+ ]
51
+
52
+ [tool.ty.analysis]
53
+ allowed-unresolved-imports = ["pyopenxlsx._openxlsx"]
@@ -0,0 +1,12 @@
1
+ #include "bindings.hpp"
2
+
3
+ PYBIND11_MODULE(_openxlsx, m) {
4
+ m.doc() = "Python bindings for OpenXLSX";
5
+ init_constants(m);
6
+ init_types(m);
7
+ init_styles(m);
8
+ init_document(m);
9
+ init_workbook(m);
10
+ init_worksheet(m);
11
+ init_cell(m);
12
+ }
@@ -0,0 +1,21 @@
1
+ #ifndef PYOPENXLSX_BINDINGS_HPP
2
+ #define PYOPENXLSX_BINDINGS_HPP
3
+
4
+ #include <pybind11/pybind11.h>
5
+ #include <pybind11/stl.h>
6
+
7
+ #include <OpenXLSX.hpp>
8
+
9
+ namespace py = pybind11;
10
+ using namespace OpenXLSX;
11
+
12
+ // 子模块初始化函数声明
13
+ void init_constants(py::module& m);
14
+ void init_types(py::module& m);
15
+ void init_styles(py::module& m);
16
+ void init_document(py::module& m);
17
+ void init_workbook(py::module& m);
18
+ void init_worksheet(py::module& m);
19
+ void init_cell(py::module& m);
20
+
21
+ #endif // PYOPENXLSX_BINDINGS_HPP