rxiv-maker 1.18.4__tar.gz → 1.19.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 (386) hide show
  1. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/.gitignore +5 -0
  2. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/CHANGELOG.md +37 -0
  3. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/PKG-INFO +1 -1
  4. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/__version__.py +1 -1
  5. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/__init__.py +2 -0
  6. rxiv_maker-1.19.0/src/rxiv_maker/cli/commands/biorxiv.py +51 -0
  7. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/framework/base.py +91 -0
  8. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/framework/workflow_commands.py +99 -31
  9. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/main.py +2 -1
  10. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/content_processor.py +6 -6
  11. rxiv_maker-1.19.0/src/rxiv_maker/engines/operations/prepare_biorxiv.py +401 -0
  12. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/processors/template_processor.py +11 -11
  13. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/cli/test_changelog_command.py +12 -1
  14. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_repository_cli_integration.py +5 -4
  15. rxiv_maker-1.19.0/tests/unit/test_biorxiv_command.py +17 -0
  16. rxiv_maker-1.19.0/tests/unit/test_prepare_biorxiv.py +369 -0
  17. rxiv_maker-1.18.4/tests/fixtures/docx_export/sample_manuscript/2025__unknown_et_al__rxiv.docx +0 -0
  18. rxiv_maker-1.18.4/tests/fixtures/docx_export/sample_manuscript/sample_manuscript.docx +0 -0
  19. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/LICENSE +0 -0
  20. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/README.md +0 -0
  21. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/pyproject.toml +0 -0
  22. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/docs/api/README.md +0 -0
  23. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/docs/api/index.md +0 -0
  24. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/logo/logo-rxiv-maker.afdesign +0 -0
  25. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/logo/logo-rxiv-maker.png +0 -0
  26. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/logo/logo-rxiv-maker.svg +0 -0
  27. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/__init__.py +0 -0
  28. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/__init__.py +0 -0
  29. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/__main__.py +0 -0
  30. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/arxiv.py +0 -0
  31. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/bibliography.py +0 -0
  32. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/build.py +0 -0
  33. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/cache_management.py +0 -0
  34. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/changelog.py +0 -0
  35. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/check_installation.py +0 -0
  36. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/clean.py +0 -0
  37. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/completion.py +0 -0
  38. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/config.py +0 -0
  39. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/create_repo.py +0 -0
  40. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/docx.py +0 -0
  41. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/figures.py +0 -0
  42. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/get_rxiv_preprint.py +0 -0
  43. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/init.py +0 -0
  44. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/install_deps.py +0 -0
  45. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/repo_init.py +0 -0
  46. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/repos.py +0 -0
  47. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/repos_search.py +0 -0
  48. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/setup.py +0 -0
  49. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/track_changes.py +0 -0
  50. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/upgrade.py +0 -0
  51. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/validate.py +0 -0
  52. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/commands/version.py +0 -0
  53. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/framework/__init__.py +0 -0
  54. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/framework/cache_commands.py +0 -0
  55. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/framework/config_commands.py +0 -0
  56. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/framework/content_commands.py +0 -0
  57. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/framework/decorators.py +0 -0
  58. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/framework/utility_commands.py +0 -0
  59. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/framework.py +0 -0
  60. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/interactive.py +0 -0
  61. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/cli/interactive_prompts.py +0 -0
  62. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/config/defaults.py +0 -0
  63. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/config/validator.py +0 -0
  64. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/__init__.py +0 -0
  65. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/citation_processor.py +0 -0
  66. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/code_processor.py +0 -0
  67. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/comment_processor.py +0 -0
  68. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/custom_command_processor.py +0 -0
  69. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/figure_processor.py +0 -0
  70. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/html_processor.py +0 -0
  71. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/list_processor.py +0 -0
  72. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/math_processor.py +0 -0
  73. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/md2tex.py +0 -0
  74. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/python_executor.py +0 -0
  75. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/section_processor.py +0 -0
  76. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/supplementary_note_processor.py +0 -0
  77. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/table_processor.py +0 -0
  78. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/text_formatters.py +0 -0
  79. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/types.py +0 -0
  80. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/converters/url_processor.py +0 -0
  81. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/cache/__init__.py +0 -0
  82. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/cache/advanced_cache.py +0 -0
  83. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/cache/bibliography_cache.py +0 -0
  84. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/cache/cache_utils.py +0 -0
  85. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/cache/doi_cache.py +0 -0
  86. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/cache/secure_cache_utils.py +0 -0
  87. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/environment_bootstrap.py +0 -0
  88. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/environment_manager.py +0 -0
  89. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/error_codes.py +0 -0
  90. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/error_recovery.py +0 -0
  91. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/logging_config.py +0 -0
  92. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/managers/__init__.py +0 -0
  93. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/managers/cache_manager.py +0 -0
  94. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/managers/config_manager.py +0 -0
  95. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/managers/dependency_manager.py +0 -0
  96. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/managers/execution_manager.py +0 -0
  97. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/managers/file_manager.py +0 -0
  98. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/managers/install_manager.py +0 -0
  99. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/managers/state_manager.py +0 -0
  100. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/managers/unified_config_manager.py +0 -0
  101. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/managers/validation_manager.py +0 -0
  102. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/managers/workflow_manager.py +0 -0
  103. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/path_manager.py +0 -0
  104. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/progress_framework.py +0 -0
  105. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/repo_config.py +0 -0
  106. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/repository.py +0 -0
  107. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/session_optimizer.py +0 -0
  108. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/core/validation_framework.py +0 -0
  109. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/data/tips.yaml +0 -0
  110. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/__init__.py +0 -0
  111. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/operations/__init__.py +0 -0
  112. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/operations/add_bibliography.py +0 -0
  113. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/operations/build_manager.py +0 -0
  114. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/operations/cleanup.py +0 -0
  115. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/operations/fix_bibliography.py +0 -0
  116. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/operations/generate_docs.py +0 -0
  117. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/operations/generate_figures.py +0 -0
  118. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/operations/generate_preprint.py +0 -0
  119. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/operations/prepare_arxiv.py +0 -0
  120. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/operations/setup_environment.py +0 -0
  121. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/operations/track_changes.py +0 -0
  122. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/operations/validate.py +0 -0
  123. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/engines/operations/validate_pdf.py +0 -0
  124. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/exporters/__init__.py +0 -0
  125. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/exporters/docx_citation_mapper.py +0 -0
  126. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/exporters/docx_content_processor.py +0 -0
  127. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/exporters/docx_exporter.py +0 -0
  128. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/exporters/docx_writer.py +0 -0
  129. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/__init__.py +0 -0
  130. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/dependency_handlers/__init__.py +0 -0
  131. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/dependency_handlers/latex.py +0 -0
  132. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/dependency_handlers/r_lang.py +0 -0
  133. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/dependency_handlers/system_libs.py +0 -0
  134. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/platform_installers/__init__.py +0 -0
  135. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/platform_installers/base.py +0 -0
  136. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/platform_installers/linux.py +0 -0
  137. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/platform_installers/macos.py +0 -0
  138. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/platform_installers/windows.py +0 -0
  139. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/utils/__init__.py +0 -0
  140. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/utils/logging.py +0 -0
  141. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/utils/progress.py +0 -0
  142. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/install/utils/verification.py +0 -0
  143. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/manuscript_utils/__init__.py +0 -0
  144. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/manuscript_utils/figure_utils.py +0 -0
  145. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/processors/__init__.py +0 -0
  146. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/processors/author_processor.py +0 -0
  147. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/processors/markdown_preprocessor.py +0 -0
  148. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/processors/yaml_processor.py +0 -0
  149. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/rxiv_maker_cli.py +0 -0
  150. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/scripts/__init__.py +0 -0
  151. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/scripts/custom_doc_generator.py +0 -0
  152. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/scripts/validate_manuscript.py +0 -0
  153. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/services/__init__.py +0 -0
  154. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/services/base.py +0 -0
  155. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/services/build_service.py +0 -0
  156. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/services/configuration_service.py +0 -0
  157. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/services/manuscript_service.py +0 -0
  158. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/services/publication_service.py +0 -0
  159. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/services/validation_service.py +0 -0
  160. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/templates/__init__.py +0 -0
  161. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/templates/manager.py +0 -0
  162. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/templates/registry.py +0 -0
  163. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/tex/python_execution_section.tex +0 -0
  164. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/__init__.py +0 -0
  165. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/accent_character_map.py +0 -0
  166. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/author_affiliation_processor.py +0 -0
  167. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/author_name_formatter.py +0 -0
  168. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/bibliography_checksum.py +0 -0
  169. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/bibliography_parser.py +0 -0
  170. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/bst_generator.py +0 -0
  171. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/changelog_parser.py +0 -0
  172. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/citation_range_formatter.py +0 -0
  173. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/citation_utils.py +0 -0
  174. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/comment_filter.py +0 -0
  175. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/dependency_checker.py +0 -0
  176. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/docx_helpers.py +0 -0
  177. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/doi_resolver.py +0 -0
  178. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/email_encoder.py +0 -0
  179. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/figure_checksum.py +0 -0
  180. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/file_helpers.py +0 -0
  181. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/github.py +0 -0
  182. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/homebrew_checker.py +0 -0
  183. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/install_detector.py +0 -0
  184. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/label_extractor.py +0 -0
  185. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/operation_ids.py +0 -0
  186. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/pdf_splitter.py +0 -0
  187. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/pdf_utils.py +0 -0
  188. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/performance.py +0 -0
  189. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/platform.py +0 -0
  190. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/python_execution_reporter.py +0 -0
  191. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/retry.py +0 -0
  192. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/rich_upgrade_notifier.py +0 -0
  193. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/text_utils.py +0 -0
  194. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/tips.py +0 -0
  195. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/title_sync.py +0 -0
  196. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/unicode_safe.py +0 -0
  197. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/update_checker.py +0 -0
  198. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/utils/url_to_doi.py +0 -0
  199. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validate.py +0 -0
  200. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validators/__init__.py +0 -0
  201. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validators/base_validator.py +0 -0
  202. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validators/citation_validator.py +0 -0
  203. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validators/doi/__init__.py +0 -0
  204. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validators/doi/api_clients.py +0 -0
  205. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validators/doi/metadata_comparator.py +0 -0
  206. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validators/doi_validator.py +0 -0
  207. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validators/figure_validator.py +0 -0
  208. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validators/latex_error_parser.py +0 -0
  209. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validators/math_validator.py +0 -0
  210. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validators/pdf_validator.py +0 -0
  211. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validators/reference_validator.py +0 -0
  212. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/rxiv_maker/validators/syntax_validator.py +0 -0
  213. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/tex/style/rxiv_maker_style.bst +0 -0
  214. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/tex/style/rxiv_maker_style.cls +0 -0
  215. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/src/tex/template.tex +0 -0
  216. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/__init__.py +0 -0
  217. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/cli/__init__.py +0 -0
  218. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/cli/test_build.py +0 -0
  219. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/cli/test_init_command.py +0 -0
  220. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/cli/test_main.py +0 -0
  221. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/conftest.py +0 -0
  222. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/e2e/__init__.py +0 -0
  223. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/e2e/test_dummy_manuscript_generator.py +0 -0
  224. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/e2e/test_figure_workflow_validation.py +0 -0
  225. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/fixtures/00_CONFIG.yml +0 -0
  226. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/fixtures/01_MAIN.md +0 -0
  227. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/fixtures/03_REFERENCES.bib +0 -0
  228. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/fixtures/FIGURES/Fig1.png +0 -0
  229. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/fixtures/FIGURES/Fig2.png +0 -0
  230. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/fixtures/FIGURES/Fig3.png +0 -0
  231. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/fixtures/README.md +0 -0
  232. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/fixtures/docx_export/sample_manuscript/01_MAIN.md +0 -0
  233. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/fixtures/docx_export/sample_manuscript/02_SUPPLEMENTARY_INFO.md +0 -0
  234. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/fixtures/docx_export/sample_manuscript/03_REFERENCES.bib +0 -0
  235. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/__init__.py +0 -0
  236. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_article_generation.py +0 -0
  237. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_bibliography_author_format_docx.py +0 -0
  238. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_binary_distribution.py +0 -0
  239. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_centralized_components.py +0 -0
  240. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_citation_injection.py +0 -0
  241. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_comment_system_integration.py +0 -0
  242. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_docx_export_integration.py +0 -0
  243. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_doi_fallback_integration.py +0 -0
  244. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_doi_validation_integration.py +0 -0
  245. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_example_manuscript.py +0 -0
  246. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_guillaume_fixtures.py +0 -0
  247. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_homebrew_workflow_validation.py +0 -0
  248. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_infrastructure_suite.py +0 -0
  249. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_init_build_workflow.py +0 -0
  250. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_install_verification_integration.py +0 -0
  251. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_latex_dependency_integration.py +0 -0
  252. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_manuscript_directory_integration.py +0 -0
  253. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_manuscript_python_execution_reporting.py +0 -0
  254. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_practical_manuscript_workflows.py +0 -0
  255. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_pypi_package_integration.py +0 -0
  256. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_python_execution_integration.py +0 -0
  257. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_supplementary_formatting.py +0 -0
  258. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_user_reported_issue.py +0 -0
  259. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/integration/test_validation_workflow.py +0 -0
  260. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/regression/README.md +0 -0
  261. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/regression/conftest.py +0 -0
  262. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/regression/test_cli_argument_parsing.py +0 -0
  263. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/regression/test_discord_reported_issues.py +0 -0
  264. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/regression/test_error_message_quality.py +0 -0
  265. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/regression/test_google_colab_integration.py +0 -0
  266. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/regression/test_guillaume_edge_cases.py +0 -0
  267. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/regression/test_guillaume_pr131_rewrite.py +0 -0
  268. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/regression/test_path_resolution.py +0 -0
  269. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/regression/test_widget_author_behavior.py +0 -0
  270. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/regression/test_widget_interactions_playwright.py +0 -0
  271. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/smoke/__init__.py +0 -0
  272. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/smoke/test_basic_functionality.py +0 -0
  273. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/smoke/test_cli_smoke.py +0 -0
  274. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/system/__init__.py +0 -0
  275. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/system/test_ci_matrix.py +0 -0
  276. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/system/test_cli_workflows.py +0 -0
  277. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/system/test_end_to_end.py +0 -0
  278. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/test_homebrew_checker.py +0 -0
  279. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/test_install_detector.py +0 -0
  280. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/__init__.py +0 -0
  281. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/exporters/__init__.py +0 -0
  282. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/exporters/test_docx_citation_mapper.py +0 -0
  283. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/exporters/test_docx_content_processor.py +0 -0
  284. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_add_bibliography.py +0 -0
  285. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_arxiv_command.py +0 -0
  286. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_async_execution_manager.py +0 -0
  287. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_author_name_formatter.py +0 -0
  288. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_author_processor.py +0 -0
  289. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_bst_generator.py +0 -0
  290. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_build_command.py +0 -0
  291. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_build_manager.py +0 -0
  292. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_build_manager_manuscript_path.py +0 -0
  293. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_cache_security.py +0 -0
  294. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_cache_utils.py +0 -0
  295. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_check_installation_command.py +0 -0
  296. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_citation_processor.py +0 -0
  297. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_citation_rendering.py +0 -0
  298. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_citation_style.py +0 -0
  299. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_citation_utils.py +0 -0
  300. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_cli_cleanup_integration.py +0 -0
  301. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_cli_structure.py +0 -0
  302. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_comment_processor.py +0 -0
  303. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_conda_installation_manager.py +0 -0
  304. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_conda_platform_detection.py +0 -0
  305. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_cross_platform_optimizations.py +0 -0
  306. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_custom_command_processor.py +0 -0
  307. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_dependency_manager.py +0 -0
  308. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_dependency_package_names.py +0 -0
  309. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_docx_doi_resolution.py +0 -0
  310. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_docx_helpers.py +0 -0
  311. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_doi_fallback_system.py +0 -0
  312. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_doi_resolver.py +0 -0
  313. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_doi_validator.py +0 -0
  314. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_email_encoder.py +0 -0
  315. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_environment_manager.py +0 -0
  316. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_error_handling_scenarios.py +0 -0
  317. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_execution_manager_comprehensive.py +0 -0
  318. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_figure_generator.py +0 -0
  319. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_figure_processor.py +0 -0
  320. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_figure_processor_error_handling.py +0 -0
  321. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_file_helpers.py +0 -0
  322. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_fix_bibliography.py +0 -0
  323. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_generate_docs.py +0 -0
  324. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_generate_preprint.py +0 -0
  325. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_github.py +0 -0
  326. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_github_actions_integration.py +0 -0
  327. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_importlib_edge_cases.py +0 -0
  328. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_install_platform_installers.py +0 -0
  329. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_install_system_libs.py +0 -0
  330. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_install_verification.py +0 -0
  331. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_interactive_path_change.py +0 -0
  332. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_interactive_validators.py +0 -0
  333. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_latex_dependency_handler.py +0 -0
  334. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_manuscript_figure_utils.py +0 -0
  335. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_manuscript_repository.py +0 -0
  336. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_math_processor.py +0 -0
  337. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_md2tex.py +0 -0
  338. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_mermaid_fallback.py +0 -0
  339. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_path_manager.py +0 -0
  340. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_pdf_validator.py +0 -0
  341. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_platform_comprehensive.py +0 -0
  342. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_platform_detector.py +0 -0
  343. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_processor_suite.py +0 -0
  344. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_python_execution_reporter.py +0 -0
  345. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_python_executor.py +0 -0
  346. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_release_orchestrator.py +0 -0
  347. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_repository_manager.py +0 -0
  348. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_rich_upgrade_notifier.py +0 -0
  349. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_rxiv_setup_command.py +0 -0
  350. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_security_features.py +0 -0
  351. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_security_scanner.py +0 -0
  352. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_setup_environment.py +0 -0
  353. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_style_file_resolution.py +0 -0
  354. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_supplementary_note_processor.py +0 -0
  355. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_table_rotation.py +0 -0
  356. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_template_processor.py +0 -0
  357. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_text_formatters.py +0 -0
  358. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_text_utils.py +0 -0
  359. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_tips.py +0 -0
  360. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_title_sync.py +0 -0
  361. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_title_sync_validation.py +0 -0
  362. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_track_changes.py +0 -0
  363. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_trailing_slash_regression.py +0 -0
  364. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_upgrade_command.py +0 -0
  365. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_url_to_doi.py +0 -0
  366. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_utils.py +0 -0
  367. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_validate_backticks.py +0 -0
  368. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_validate_command_fixed.py +0 -0
  369. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_validate_manuscript.py +0 -0
  370. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_validation_suite.py +0 -0
  371. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_validators.py +0 -0
  372. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/unit/test_yaml_processor.py +0 -0
  373. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/README.md +0 -0
  374. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/figure-positioning/00_CONFIG.yml +0 -0
  375. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/figure-positioning/01_MAIN.md +0 -0
  376. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/figure-positioning/03_REFERENCES.bib +0 -0
  377. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/figure-positioning/FIGURES/Figure__positioning_test.png +0 -0
  378. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/figure-positioning/FIGURES/Figure__positioning_test.py +0 -0
  379. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/figure-positioning/FIGURES/ReadyFig.png +0 -0
  380. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/figure-positioning/FIGURES/ReadyFig.py +0 -0
  381. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/figure-positioning/README.md +0 -0
  382. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/methods-placement/00_CONFIG.yml +0 -0
  383. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/methods-placement/01_MAIN.md +0 -0
  384. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/methods-placement/02_SUPPLEMENTARY_INFO.md +0 -0
  385. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/methods-placement/03_REFERENCES.bib +0 -0
  386. {rxiv_maker-1.18.4 → rxiv_maker-1.19.0}/tests/visual/methods-placement/README.md +0 -0
@@ -394,3 +394,8 @@ rxivdraft/MANUSCRIPT/2025__antónio_d_brito_et_al__rxiv.pdf
394
394
  .gemini-clipboard/
395
395
  gha-creds-*.json
396
396
  fatetracking/MANUSCRIPT/.rxiv_cache
397
+
398
+ # Claude-mem context (override negations above)
399
+ **/CLAUDE.md
400
+
401
+ **/*.docx
@@ -7,6 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.19.0] - 2026-02-05
11
+
12
+ ### Added
13
+
14
+ - **bioRxiv Submission Package Command**: New `rxiv biorxiv` command generates complete submission package
15
+ - Generates bioRxiv author template (TSV format) with HTML entity encoding for special characters
16
+ - Includes manuscript PDF, source files (TeX, figures, bibliography)
17
+ - Creates ZIP archive ready for bioRxiv upload
18
+ - Supports custom submission directory and ZIP filename options
19
+ - HTML entity encoding for accented characters (António → António, Åbo → Åbo)
20
+ - Automatic handling of multiple corresponding authors (keeps last one)
21
+ - Command options: `--biorxiv-dir`, `--zip-filename`, `--no-zip`
22
+
23
+ ### Changed
24
+
25
+ - **Code Architecture**: Centralized common submission logic in BaseCommand
26
+ - Refactored ArxivCommand and BioRxivCommand to share common patterns
27
+ - Added `_clear_output_directory()`, `_ensure_pdf_built()`, `_set_submission_defaults()` helper methods
28
+ - Eliminated ~64 lines of duplicated code between commands
29
+ - Improved maintainability and consistency across submission commands
30
+
31
+ ### Fixed
32
+
33
+ - **bioRxiv Character Encoding**: Special characters now properly encoded as HTML entities
34
+ - Previously stripped accents to ASCII (António → Antonio)
35
+ - Now preserves original characters using HTML entities (António → António)
36
+ - Complies with bioRxiv's TSV import requirements for international author names
37
+
38
+ ## [1.18.5] - 2026-02-05
39
+
40
+ ### Fixed
41
+
42
+ - **Section Header Spacing**: Fixed missing vertical spacing between section titles and content in PDF output
43
+ - Added proper paragraph separation (`\n\n`) after all section headers (Results, Discussion, Introduction, etc.)
44
+ - Ensures readable spacing in LaTeX output for better PDF formatting
45
+ - Resolves issue where section titles appeared too close to following text
46
+
10
47
  ## [1.18.4] - 2026-02-02
11
48
 
12
49
  ### Documentation
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rxiv-maker
3
- Version: 1.18.4
3
+ Version: 1.19.0
4
4
  Summary: Write scientific preprints in Markdown. Generate publication-ready PDFs efficiently.
5
5
  Project-URL: Homepage, https://github.com/HenriquesLab/rxiv-maker
6
6
  Project-URL: Documentation, https://github.com/HenriquesLab/rxiv-maker#readme
@@ -1,3 +1,3 @@
1
1
  """Version information."""
2
2
 
3
- __version__ = "1.18.4"
3
+ __version__ = "1.19.0"
@@ -2,6 +2,7 @@
2
2
 
3
3
  from .arxiv import arxiv
4
4
  from .bibliography import bibliography
5
+ from .biorxiv import biorxiv
5
6
  from .build import build as pdf
6
7
  from .cache_management import cache_group as cache
7
8
  from .changelog import changelog
@@ -29,6 +30,7 @@ from .version import version
29
30
  __all__ = [
30
31
  "arxiv",
31
32
  "bibliography",
33
+ "biorxiv",
32
34
  "cache",
33
35
  "changelog",
34
36
  "config",
@@ -0,0 +1,51 @@
1
+ """bioRxiv submission package generation command."""
2
+
3
+ import rich_click as click
4
+
5
+ from ..framework.workflow_commands import BioRxivCommand
6
+
7
+
8
+ @click.command(context_settings={"help_option_names": ["-h", "--help"]})
9
+ @click.argument("manuscript_path", type=click.Path(exists=True, file_okay=False), required=False)
10
+ @click.option("--output-dir", "-o", default="output", help="Output directory for generated files")
11
+ @click.option(
12
+ "--biorxiv-dir",
13
+ "-b",
14
+ help="Custom bioRxiv submission directory (default: output/biorxiv_submission)",
15
+ )
16
+ @click.option(
17
+ "--zip-filename",
18
+ "-z",
19
+ help="Custom ZIP filename (default: {manuscript}_biorxiv.zip)",
20
+ )
21
+ @click.option(
22
+ "--no-zip",
23
+ is_flag=True,
24
+ help="Don't create ZIP file (only create submission directory)",
25
+ )
26
+ @click.pass_context
27
+ def biorxiv(ctx, manuscript_path, output_dir, biorxiv_dir, zip_filename, no_zip):
28
+ r"""Generate bioRxiv submission package.
29
+
30
+ Creates a complete submission package including:
31
+ - bioRxiv author template (TSV file)
32
+ - Manuscript PDF
33
+ - Source files (TeX, figures, bibliography)
34
+ - ZIP file for upload
35
+
36
+ \b
37
+ Example:
38
+ rxiv biorxiv # Full package with ZIP
39
+ rxiv biorxiv --no-zip # Package without ZIP
40
+ rxiv biorxiv -b custom_dir # Custom submission directory
41
+ rxiv biorxiv -z my_submission.zip # Custom ZIP filename
42
+ """
43
+ command = BioRxivCommand()
44
+ return command.run(
45
+ ctx,
46
+ manuscript_path=manuscript_path,
47
+ output_dir=output_dir,
48
+ biorxiv_dir=biorxiv_dir,
49
+ zip_filename=zip_filename,
50
+ no_zip=no_zip,
51
+ )
@@ -162,6 +162,97 @@ class BaseCommand(ABC):
162
162
  if suggestion:
163
163
  self.console.print(f"💡 {suggestion}", style="yellow")
164
164
 
165
+ def _clear_output_directory(self) -> None:
166
+ """Clear and recreate the output directory.
167
+
168
+ Raises:
169
+ CommandExecutionError: If path_manager is not initialized
170
+ """
171
+ import shutil
172
+
173
+ if not self.path_manager:
174
+ raise CommandExecutionError("Path manager not initialized")
175
+
176
+ if self.path_manager.output_dir.exists():
177
+ shutil.rmtree(self.path_manager.output_dir)
178
+ self.path_manager.output_dir.mkdir(parents=True, exist_ok=True)
179
+
180
+ def _ensure_pdf_built(self, progress_task=None, quiet: bool = True) -> None:
181
+ """Ensure PDF is built, building it if necessary.
182
+
183
+ Args:
184
+ progress_task: Optional progress task to update
185
+ quiet: Whether to suppress build output
186
+
187
+ Raises:
188
+ CommandExecutionError: If path_manager is not initialized or build fails
189
+ """
190
+ from ...engines.operations.build_manager import BuildManager
191
+
192
+ if not self.path_manager:
193
+ raise CommandExecutionError("Path manager not initialized")
194
+
195
+ pdf_filename = f"{self.path_manager.manuscript_name}.pdf"
196
+ pdf_path = self.path_manager.output_dir / pdf_filename
197
+
198
+ if not pdf_path.exists():
199
+ if progress_task:
200
+ progress_task.update(description="Building PDF first...")
201
+
202
+ build_manager = BuildManager(
203
+ manuscript_path=str(self.path_manager.manuscript_path),
204
+ output_dir=str(self.path_manager.output_dir),
205
+ verbose=self.verbose,
206
+ quiet=quiet,
207
+ )
208
+
209
+ try:
210
+ success = build_manager.build()
211
+ if not success:
212
+ raise CommandExecutionError("PDF build failed")
213
+ except Exception as e:
214
+ raise CommandExecutionError(f"Failed to build PDF: {e}") from e
215
+
216
+ def _set_submission_defaults(
217
+ self,
218
+ submission_type: str,
219
+ submission_dir: Optional[str] = None,
220
+ zip_filename: Optional[str] = None,
221
+ ) -> tuple[str, str]:
222
+ """Set default paths for submission directories and ZIP files.
223
+
224
+ Args:
225
+ submission_type: Type of submission ("arxiv" or "biorxiv")
226
+ submission_dir: Custom submission directory path (optional)
227
+ zip_filename: Custom ZIP filename (optional)
228
+
229
+ Returns:
230
+ Tuple of (submission_dir, zip_filename) with defaults applied
231
+
232
+ Raises:
233
+ CommandExecutionError: If path_manager is not initialized
234
+ """
235
+ from pathlib import Path
236
+
237
+ if not self.path_manager:
238
+ raise CommandExecutionError("Path manager not initialized")
239
+
240
+ manuscript_output_dir = str(self.path_manager.output_dir)
241
+
242
+ # Set default submission directory
243
+ if submission_dir is None:
244
+ submission_dir = str(Path(manuscript_output_dir) / f"{submission_type}_submission")
245
+
246
+ # Set default ZIP filename
247
+ if zip_filename is None:
248
+ manuscript_name = self.path_manager.manuscript_name
249
+ if submission_type == "arxiv":
250
+ zip_filename = str(Path(manuscript_output_dir) / "for_arxiv.zip")
251
+ else:
252
+ zip_filename = str(Path(manuscript_output_dir) / f"{manuscript_name}_{submission_type}.zip")
253
+
254
+ return submission_dir, zip_filename
255
+
165
256
  @abstractmethod
166
257
  def execute_operation(self, **kwargs) -> Any:
167
258
  """Execute the main command operation.
@@ -366,46 +366,25 @@ class ArxivCommand(BaseCommand):
366
366
  no_zip: Don't create zip file
367
367
  """
368
368
  import sys
369
- from pathlib import Path
370
369
 
371
- from rxiv_maker.engines.operations.build_manager import BuildManager
372
370
  from rxiv_maker.engines.operations.prepare_arxiv import main as prepare_arxiv_main
373
371
 
374
- if self.path_manager is None:
375
- raise CommandExecutionError("Path manager not initialized")
376
-
372
+ # Set defaults using shared helper
373
+ arxiv_dir, zip_filename = self._set_submission_defaults("arxiv", arxiv_dir, zip_filename)
377
374
  manuscript_output_dir = str(self.path_manager.output_dir)
378
375
 
379
- # Set defaults using PathManager
380
- if arxiv_dir is None:
381
- arxiv_dir = str(Path(manuscript_output_dir) / "arxiv_submission")
382
- if zip_filename is None:
383
- zip_filename = str(Path(manuscript_output_dir) / "for_arxiv.zip")
384
-
385
376
  with self.create_progress() as progress:
386
- # Clear output directory first (similar to PDF command)
377
+ # Clear output directory using shared helper
387
378
  task = progress.add_task("Clearing output directory...", total=None)
388
- if self.path_manager.output_dir.exists():
389
- shutil.rmtree(self.path_manager.output_dir)
390
- self.path_manager.output_dir.mkdir(parents=True, exist_ok=True)
379
+ self._clear_output_directory()
391
380
 
392
- # First, ensure PDF is built
381
+ # Ensure PDF is built using shared helper
393
382
  progress.update(task, description="Checking PDF exists...")
394
- pdf_filename = f"{self.path_manager.manuscript_name}.pdf"
395
- pdf_path = self.path_manager.output_dir / pdf_filename
396
-
397
- if not pdf_path.exists():
398
- progress.update(task, description="Building PDF first...")
399
- build_manager = BuildManager(
400
- manuscript_path=str(self.path_manager.manuscript_path),
401
- output_dir=str(self.path_manager.output_dir),
402
- verbose=self.verbose,
403
- quiet=False,
404
- )
405
- success = build_manager.run()
406
- if not success:
407
- self.error_message("PDF build failed. Cannot prepare arXiv package.")
408
- raise CommandExecutionError("PDF build failed")
383
+ try:
384
+ self._ensure_pdf_built(progress_task=task, quiet=False)
385
+ except CommandExecutionError:
386
+ self.error_message("PDF build failed. Cannot prepare arXiv package.")
387
+ raise
409
388
 
410
389
  # Prepare arXiv package
411
390
  progress.update(task, description="Preparing arXiv package...")
@@ -524,6 +503,95 @@ class ArxivCommand(BaseCommand):
524
503
  return year, first_author
525
504
 
526
505
 
506
+ class BioRxivCommand(BaseCommand):
507
+ """BioRxiv command implementation for generating submission package."""
508
+
509
+ def execute_operation(
510
+ self,
511
+ output_dir: str = "output",
512
+ biorxiv_dir: Optional[str] = None,
513
+ zip_filename: Optional[str] = None,
514
+ no_zip: bool = False,
515
+ ) -> None:
516
+ """Execute bioRxiv submission package preparation.
517
+
518
+ Args:
519
+ output_dir: Output directory for generated files
520
+ biorxiv_dir: Custom bioRxiv submission directory path
521
+ zip_filename: Custom zip filename
522
+ no_zip: Don't create zip file
523
+ """
524
+ from pathlib import Path
525
+
526
+ from ...engines.operations.prepare_biorxiv import (
527
+ BioRxivAuthorError,
528
+ create_biorxiv_zip,
529
+ generate_biorxiv_author_tsv,
530
+ prepare_biorxiv_package,
531
+ )
532
+
533
+ # Set defaults using shared helper
534
+ biorxiv_dir, zip_filename = self._set_submission_defaults("biorxiv", biorxiv_dir, zip_filename)
535
+
536
+ with self.create_progress() as progress:
537
+ # Clear output directory using shared helper
538
+ task = progress.add_task("Clearing output directory...", total=None)
539
+ self._clear_output_directory()
540
+
541
+ # Ensure PDF is built using shared helper
542
+ progress.update(task, description="Checking PDF exists...")
543
+ self._ensure_pdf_built(progress_task=task, quiet=True)
544
+
545
+ # Generate bioRxiv author template TSV
546
+ progress.update(task, description="Generating bioRxiv author template...")
547
+ output_path = self.path_manager.output_dir
548
+ tsv_file = output_path / "biorxiv_authors.tsv"
549
+
550
+ try:
551
+ generate_biorxiv_author_tsv(
552
+ config_path=self.path_manager.get_config_file_path(),
553
+ output_path=tsv_file,
554
+ )
555
+ except BioRxivAuthorError as e:
556
+ progress.update(task, completed=True)
557
+ raise CommandExecutionError(f"Failed to generate bioRxiv template: {e}") from e
558
+
559
+ # Prepare bioRxiv submission package
560
+ progress.update(task, description="Preparing bioRxiv submission package...")
561
+ try:
562
+ biorxiv_path = prepare_biorxiv_package(
563
+ manuscript_path=self.path_manager.manuscript_path,
564
+ output_dir=self.path_manager.output_dir,
565
+ biorxiv_dir=Path(biorxiv_dir),
566
+ )
567
+ except Exception as e:
568
+ progress.update(task, completed=True)
569
+ raise CommandExecutionError(f"Failed to prepare bioRxiv package: {e}") from e
570
+
571
+ # Create ZIP file if requested
572
+ zip_path = None
573
+ if not no_zip:
574
+ progress.update(task, description="Creating ZIP package...")
575
+ try:
576
+ zip_path = create_biorxiv_zip(
577
+ biorxiv_path=biorxiv_path,
578
+ zip_filename=zip_filename,
579
+ manuscript_path=self.path_manager.manuscript_path,
580
+ )
581
+ except Exception as e:
582
+ progress.update(task, completed=True)
583
+ raise CommandExecutionError(f"Failed to create ZIP: {e}") from e
584
+
585
+ progress.update(task, completed=True)
586
+
587
+ # Show success message
588
+ self.console.print("\n[green]✅ bioRxiv submission package ready![/green]")
589
+ self.console.print(f" 📁 Package directory: {biorxiv_path}")
590
+ if zip_path:
591
+ self.console.print(f" 📦 ZIP file: {zip_path}")
592
+ self.console.print("\n📤 Upload to: https://submit.biorxiv.org/")
593
+
594
+
527
595
  class TrackChangesCommand(BaseCommand):
528
596
  """Track changes command implementation using the framework."""
529
597
 
@@ -60,7 +60,7 @@ click.rich_click.COMMAND_GROUPS = {
60
60
  },
61
61
  {
62
62
  "name": "Workflow Commands",
63
- "commands": ["get-rxiv-preprint", "arxiv", "track-changes", "setup"],
63
+ "commands": ["get-rxiv-preprint", "arxiv", "biorxiv", "track-changes", "setup"],
64
64
  },
65
65
  {
66
66
  "name": "Configuration",
@@ -252,6 +252,7 @@ main.add_command(commands.docx)
252
252
  main.add_command(commands.figures)
253
253
  main.add_command(commands.get_rxiv_preprint, name="get-rxiv-preprint")
254
254
  main.add_command(commands.arxiv)
255
+ main.add_command(commands.biorxiv)
255
256
  main.add_command(commands.init)
256
257
  main.add_command(commands.bibliography)
257
258
  main.add_command(commands.track_changes)
@@ -256,9 +256,9 @@ class ContentProcessor(RecoveryEnhancedMixin):
256
256
  # Supplementary note headers must be processed early (before general headers)
257
257
  self.register_processor(
258
258
  "supplementary_notes",
259
- lambda content, **kwargs: process_supplementary_notes(content)
260
- if kwargs.get("is_supplementary", False)
261
- else content,
259
+ lambda content, **kwargs: (
260
+ process_supplementary_notes(content) if kwargs.get("is_supplementary", False) else content
261
+ ),
262
262
  ProcessorConfig(
263
263
  name="supplementary_notes",
264
264
  priority=ProcessorPriority.NORMAL,
@@ -408,9 +408,9 @@ class ContentProcessor(RecoveryEnhancedMixin):
408
408
 
409
409
  self.register_processor(
410
410
  "restore_supplementary_placeholders",
411
- lambda content, **kwargs: restore_supplementary_note_placeholders(content)
412
- if kwargs.get("is_supplementary", False)
413
- else content,
411
+ lambda content, **kwargs: (
412
+ restore_supplementary_note_placeholders(content) if kwargs.get("is_supplementary", False) else content
413
+ ),
414
414
  ProcessorConfig(
415
415
  name="restore_supplementary_placeholders",
416
416
  priority=ProcessorPriority.NORMAL,