paperpush 0.2.0__tar.gz → 0.4.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.
- paperpush-0.4.0/PKG-INFO +390 -0
- paperpush-0.4.0/README.md +338 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/__init__.py +3 -2
- paperpush-0.4.0/paperpush/_docs/agents.md +384 -0
- paperpush-0.4.0/paperpush/_skills/paperpush-add-venue/SKILL.md +180 -0
- paperpush-0.4.0/paperpush/_skills/paperpush-add-venue-validate/SKILL.md +157 -0
- paperpush-0.4.0/paperpush/_skills/paperpush-autofill/SKILL.md +197 -0
- paperpush-0.4.0/paperpush/_skills/paperpush-portal-debug/SKILL.md +129 -0
- paperpush-0.4.0/paperpush/_skills/paperpush-prepare-submission/SKILL.md +160 -0
- paperpush-0.4.0/paperpush/_skills/paperpush-validate/SKILL.md +112 -0
- paperpush-0.4.0/paperpush/ai_validate.py +362 -0
- paperpush-0.4.0/paperpush/anonymity.py +592 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/autofill.py +319 -70
- paperpush-0.4.0/paperpush/bibliography_check.py +404 -0
- paperpush-0.4.0/paperpush/citation_check.py +672 -0
- paperpush-0.4.0/paperpush/cli.py +2697 -0
- paperpush-0.4.0/paperpush/codegen/__init__.py +20 -0
- paperpush-0.4.0/paperpush/codegen/model.py +837 -0
- paperpush-0.4.0/paperpush/codegen/recorder.js +771 -0
- paperpush-0.4.0/paperpush/codegen/session.py +732 -0
- paperpush-0.4.0/paperpush/colorblind.py +595 -0
- paperpush-0.4.0/paperpush/common_fields.json +80 -0
- paperpush-0.4.0/paperpush/consistency.py +663 -0
- paperpush-0.4.0/paperpush/cover_letter_check.py +395 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/database.py +475 -43
- paperpush-0.4.0/paperpush/document.py +180 -0
- paperpush-0.4.0/paperpush/figure_check.py +833 -0
- paperpush-0.4.0/paperpush/filematch.py +211 -0
- paperpush-0.4.0/paperpush/front_matter_check.py +295 -0
- paperpush-0.4.0/paperpush/hidden_text.py +293 -0
- paperpush-0.4.0/paperpush/latex_cleaner.py +195 -0
- paperpush-0.4.0/paperpush/layout_check.py +929 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/manuscript.py +65 -2
- paperpush-0.4.0/paperpush/manuscript_requirements.json +18450 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/manuscript_requirements.schema.json +155 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/mcp_server.py +445 -36
- paperpush-0.4.0/paperpush/openreview_profiles.py +260 -0
- paperpush-0.4.0/paperpush/pdf_layout.py +272 -0
- paperpush-0.4.0/paperpush/pdf_report.py +207 -0
- paperpush-0.4.0/paperpush/prose_check.py +735 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/references.py +71 -2
- paperpush-0.4.0/paperpush/report.py +483 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/requirements.py +217 -6
- paperpush-0.4.0/paperpush/requirements_check.py +992 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/schema_models.py +65 -37
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/sensitive.py +1 -1
- paperpush-0.4.0/paperpush/skills.py +150 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/subfile.py +224 -9
- paperpush-0.4.0/paperpush/subfile_templates/acl_arr.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/ajhg.sub.txt +76 -0
- paperpush-0.2.0/paperpush/subfile_templates/arxiv.sub → paperpush-0.4.0/paperpush/subfile_templates/arxiv.sub.txt +49 -29
- paperpush-0.2.0/paperpush/subfile_templates/bioinformatics.sub → paperpush-0.4.0/paperpush/subfile_templates/bioinformatics.sub.txt +90 -62
- paperpush-0.2.0/paperpush/subfile_templates/biorxiv.sub → paperpush-0.4.0/paperpush/subfile_templates/biorxiv.sub.txt +64 -36
- paperpush-0.2.0/paperpush/subfile_templates/bmc_bioinformatics.sub → paperpush-0.4.0/paperpush/subfile_templates/bmc_bioinformatics.sub.txt +45 -21
- paperpush-0.4.0/paperpush/subfile_templates/bmc_biology.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/bmc_genomics.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/bmc_medicine.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/bmj.sub.txt +76 -0
- paperpush-0.2.0/paperpush/subfile_templates/cell.sub → paperpush-0.4.0/paperpush/subfile_templates/cell.sub.txt +65 -33
- paperpush-0.2.0/paperpush/subfile_templates/cell_genomics.sub → paperpush-0.4.0/paperpush/subfile_templates/cell_genomics.sub.txt +61 -33
- paperpush-0.4.0/paperpush/subfile_templates/cell_reports.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/cell_reports_methods.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/cell_stem_cell.sub.txt +76 -0
- paperpush-0.2.0/paperpush/subfile_templates/cell_systems.sub → paperpush-0.4.0/paperpush/subfile_templates/cell_systems.sub.txt +65 -33
- paperpush-0.2.0/paperpush/subfile_templates/combinatorica.sub → paperpush-0.4.0/paperpush/subfile_templates/combinatorica.sub.txt +42 -18
- paperpush-0.4.0/paperpush/subfile_templates/communications_biology.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/cvpr_2027.sub.txt +67 -0
- paperpush-0.2.0/paperpush/subfile_templates/discrete_mathematics.sub → paperpush-0.4.0/paperpush/subfile_templates/discrete_mathematics.sub.txt +54 -25
- paperpush-0.4.0/paperpush/subfile_templates/elife.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/european_radiology.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/frontiers_bioinformatics.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/frontiers_genetics.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/frontiers_immunology.sub.txt +76 -0
- paperpush-0.2.0/paperpush/subfile_templates/genome_biology.sub → paperpush-0.4.0/paperpush/subfile_templates/genome_biology.sub.txt +45 -21
- paperpush-0.4.0/paperpush/subfile_templates/genome_medicine.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/genome_research.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/ieee_tmi.sub.txt +67 -0
- paperpush-0.4.0/paperpush/subfile_templates/ieee_tnnls.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/ieee_tpami.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/iscience.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/jama.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/jmlr.sub.txt +67 -0
- paperpush-0.4.0/paperpush/subfile_templates/jnm.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/lancet.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/lancet_digital_health.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/medical_image_analysis.sub.txt +67 -0
- paperpush-0.2.0/paperpush/subfile_templates/medrxiv.sub → paperpush-0.4.0/paperpush/subfile_templates/medrxiv.sub.txt +72 -44
- paperpush-0.4.0/paperpush/subfile_templates/molecular_cell.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/nar_cancer.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/nar_genomics_bioinformatics.sub.txt +67 -0
- paperpush-0.2.0/paperpush/subfile_templates/nature.sub → paperpush-0.4.0/paperpush/subfile_templates/nature.sub.txt +61 -33
- paperpush-0.4.0/paperpush/subfile_templates/nature_biomedical_engineering.sub.txt +142 -0
- paperpush-0.2.0/paperpush/subfile_templates/nature_biotech.sub → paperpush-0.4.0/paperpush/subfile_templates/nature_biotech.sub.txt +61 -33
- paperpush-0.4.0/paperpush/subfile_templates/nature_cell_biology.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/nature_communications.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/nature_computational_science.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/nature_genetics.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/nature_machine_intelligence.sub.txt +142 -0
- paperpush-0.4.0/paperpush/subfile_templates/nature_medicine.sub.txt +76 -0
- paperpush-0.2.0/paperpush/subfile_templates/nature_methods.sub → paperpush-0.4.0/paperpush/subfile_templates/nature_methods.sub.txt +56 -28
- paperpush-0.4.0/paperpush/subfile_templates/nature_neuroscience.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/nature_structural_molecular_biology.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/nejm.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/neuron.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/npj_digital_medicine.sub.txt +76 -0
- paperpush-0.2.0/paperpush/subfile_templates/nucleic_acids_research.sub → paperpush-0.4.0/paperpush/subfile_templates/nucleic_acids_research.sub.txt +101 -69
- paperpush-0.4.0/paperpush/subfile_templates/patterns.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/plos_biology.sub.txt +76 -0
- paperpush-0.2.0/paperpush/subfile_templates/plos_compbio.sub → paperpush-0.4.0/paperpush/subfile_templates/plos_compbio.sub.txt +95 -63
- paperpush-0.4.0/paperpush/subfile_templates/plos_genetics.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/plos_medicine.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/plos_one.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/pnas.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/radiology.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/radiology_ai.sub.txt +76 -0
- paperpush-0.2.0/paperpush/subfile_templates/science.sub → paperpush-0.4.0/paperpush/subfile_templates/science.sub.txt +63 -31
- paperpush-0.2.0/paperpush/subfile_templates/science_advances.sub → paperpush-0.4.0/paperpush/subfile_templates/science_advances.sub.txt +62 -30
- paperpush-0.2.0/paperpush/subfile_templates/science_immunology.sub → paperpush-0.4.0/paperpush/subfile_templates/science_immunology.sub.txt +62 -30
- paperpush-0.2.0/paperpush/subfile_templates/science_robotics.sub → paperpush-0.4.0/paperpush/subfile_templates/science_robotics.sub.txt +64 -32
- paperpush-0.2.0/paperpush/subfile_templates/science_signaling.sub → paperpush-0.4.0/paperpush/subfile_templates/science_signaling.sub.txt +62 -30
- paperpush-0.2.0/paperpush/subfile_templates/science_translational_medicine.sub → paperpush-0.4.0/paperpush/subfile_templates/science_translational_medicine.sub.txt +62 -30
- paperpush-0.4.0/paperpush/subfile_templates/scientific_reports.sub.txt +76 -0
- paperpush-0.4.0/paperpush/subfile_templates/tmlr.sub.txt +67 -0
- paperpush-0.2.0/paperpush/venues.json → paperpush-0.4.0/paperpush/submission_forms.json +339 -172
- paperpush-0.2.0/paperpush/venues.schema.json → paperpush-0.4.0/paperpush/submission_forms.schema.json +45 -38
- paperpush-0.4.0/paperpush/template_check.py +261 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/validate.py +638 -55
- paperpush-0.4.0/paperpush/venue_data.py +380 -0
- paperpush-0.4.0/paperpush/venue_select.py +719 -0
- paperpush-0.4.0/paperpush/venuefile.py +1079 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/__init__.py +1 -1
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/arxiv/arxiv.py +36 -10
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/base.py +23 -2
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/common.py +39 -58
- paperpush-0.4.0/paperpush/venues/discrete_mathematics/discrete_mathematics.py +702 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/editflow/main.py +29 -6
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/editorialmanager/main.py +182 -70
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/login.py +9 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/nature/main.py +257 -68
- paperpush-0.4.0/paperpush/venues/nature/nature_biomedical_engineering.py +36 -0
- paperpush-0.4.0/paperpush/venues/nature/nature_machine_intelligence.py +36 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/openreview/aaai_2027.py +29 -8
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/openreview/iclr_2027.py +25 -4
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/openrxiv/main.py +32 -4
- paperpush-0.4.0/paperpush/venues/recovery.py +480 -0
- paperpush-0.4.0/paperpush/venues/recovery_ai.py +443 -0
- paperpush-0.4.0/paperpush/venues/recovery_channel.py +636 -0
- paperpush-0.4.0/paperpush/venues/recovery_report.py +322 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/scholarone/bioinformatics.py +38 -10
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/scholarone/main.py +36 -2
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/scholarone/nucleic_acids_research.py +94 -24
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/science/science.py +46 -8
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/snapp/main.py +26 -2
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/template/template.py +11 -2
- paperpush-0.4.0/paperpush/venues.json +1038 -0
- paperpush-0.4.0/paperpush/venues.schema.json +84 -0
- paperpush-0.4.0/paperpush/web/__init__.py +12 -0
- paperpush-0.4.0/paperpush/web/app.py +1506 -0
- paperpush-0.4.0/paperpush/web/shared.py +243 -0
- paperpush-0.4.0/paperpush/web/static/add-venue.html +147 -0
- paperpush-0.4.0/paperpush/web/static/add-venue.js +649 -0
- paperpush-0.4.0/paperpush/web/static/app.js +2543 -0
- paperpush-0.4.0/paperpush/web/static/checks.js +306 -0
- paperpush-0.4.0/paperpush/web/static/fonts/OFL-STIXTwoText.txt +93 -0
- paperpush-0.4.0/paperpush/web/static/fonts/OFL-SourceSans3.txt +93 -0
- paperpush-0.4.0/paperpush/web/static/fonts/source-sans-3-latin-ext.woff2 +0 -0
- paperpush-0.4.0/paperpush/web/static/fonts/source-sans-3-latin.woff2 +0 -0
- paperpush-0.4.0/paperpush/web/static/fonts/stix-two-text-italic-latin-ext.woff2 +0 -0
- paperpush-0.4.0/paperpush/web/static/fonts/stix-two-text-italic-latin.woff2 +0 -0
- paperpush-0.4.0/paperpush/web/static/fonts/stix-two-text-latin-ext.woff2 +0 -0
- paperpush-0.4.0/paperpush/web/static/fonts/stix-two-text-latin.woff2 +0 -0
- paperpush-0.4.0/paperpush/web/static/index.html +216 -0
- paperpush-0.4.0/paperpush/web/static/shared.js +67 -0
- paperpush-0.4.0/paperpush/web/static/style.css +670 -0
- paperpush-0.4.0/paperpush/web/static/subfile.js +209 -0
- paperpush-0.4.0/paperpush/web/static/viewer.js +199 -0
- paperpush-0.4.0/paperpush.egg-info/PKG-INFO +390 -0
- paperpush-0.4.0/paperpush.egg-info/SOURCES.txt +273 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush.egg-info/entry_points.txt +1 -0
- paperpush-0.4.0/paperpush.egg-info/requires.txt +45 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/pyproject.toml +17 -6
- paperpush-0.4.0/tests/test_anonymity.py +287 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/tests/test_autofill.py +301 -22
- paperpush-0.4.0/tests/test_bibliography_check.py +166 -0
- paperpush-0.4.0/tests/test_check_guidelines.py +167 -0
- paperpush-0.4.0/tests/test_check_submit_walkthrough.py +125 -0
- paperpush-0.4.0/tests/test_cli_web.py +126 -0
- paperpush-0.4.0/tests/test_codegen.py +691 -0
- paperpush-0.4.0/tests/test_colorblind.py +222 -0
- paperpush-0.4.0/tests/test_cover_letter_and_counts.py +311 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/tests/test_editorialmanager_login.py +41 -1
- paperpush-0.4.0/tests/test_filematch.py +78 -0
- paperpush-0.4.0/tests/test_front_matter_check.py +185 -0
- paperpush-0.4.0/tests/test_hidden_text.py +196 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/tests/test_internals.py +54 -29
- paperpush-0.4.0/tests/test_latex_cleaner.py +134 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/tests/test_login.py +562 -3
- {paperpush-0.2.0 → paperpush-0.4.0}/tests/test_mcp_server.py +217 -5
- paperpush-0.4.0/tests/test_nature_biomedical_engineering.py +101 -0
- paperpush-0.4.0/tests/test_nature_machine_intelligence.py +125 -0
- paperpush-0.4.0/tests/test_openreview_profiles.py +154 -0
- paperpush-0.4.0/tests/test_pick_venue.py +529 -0
- paperpush-0.4.0/tests/test_prose_check.py +253 -0
- paperpush-0.4.0/tests/test_recovery.py +287 -0
- paperpush-0.4.0/tests/test_recovery_ai.py +309 -0
- paperpush-0.4.0/tests/test_recovery_channel.py +388 -0
- paperpush-0.4.0/tests/test_recovery_coverage.py +64 -0
- paperpush-0.4.0/tests/test_recovery_report.py +174 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/tests/test_references.py +70 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/tests/test_requirements.py +9 -4
- paperpush-0.4.0/tests/test_skills.py +104 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/tests/test_subfile.py +233 -15
- {paperpush-0.2.0 → paperpush-0.4.0}/tests/test_submit.py +65 -7
- paperpush-0.4.0/tests/test_template_check.py +173 -0
- paperpush-0.4.0/tests/test_unattended_sign_in.py +133 -0
- paperpush-0.4.0/tests/test_update_guidelines.py +110 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/tests/test_validate.py +56 -20
- paperpush-0.4.0/tests/test_validate_only_venue.py +239 -0
- paperpush-0.4.0/tests/test_validate_report.py +1020 -0
- paperpush-0.4.0/tests/test_venue_consistency.py +173 -0
- paperpush-0.4.0/tests/test_venue_data.py +570 -0
- paperpush-0.4.0/tests/test_venuefile.py +159 -0
- paperpush-0.4.0/tests/test_web.py +1061 -0
- paperpush-0.2.0/PKG-INFO +0 -155
- paperpush-0.2.0/README.md +0 -123
- paperpush-0.2.0/paperpush/_docs/agents.md +0 -206
- paperpush-0.2.0/paperpush/cli.py +0 -1207
- paperpush-0.2.0/paperpush/manuscript_requirements.json +0 -5211
- paperpush-0.2.0/paperpush/requirements_check.py +0 -513
- paperpush-0.2.0/paperpush/subfile_templates/iclr_2027.sub +0 -74
- paperpush-0.2.0/paperpush/venues/discrete_mathematics/discrete_mathematics.py +0 -431
- paperpush-0.2.0/paperpush.egg-info/PKG-INFO +0 -155
- paperpush-0.2.0/paperpush.egg-info/SOURCES.txt +0 -127
- paperpush-0.2.0/paperpush.egg-info/requires.txt +0 -19
- paperpush-0.2.0/tests/test_portal_drift.py +0 -459
- {paperpush-0.2.0 → paperpush-0.4.0}/LICENSE +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/__main__.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/_logging.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/credentials.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/orcid.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/aaai_2027_countries.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/aaai_2027_topics.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/arxiv_categories.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/bioinformatics_keywords.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/genome_biology_institution_countries.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/iclr_2027_primary_areas.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/nature_biotech_categories.json +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/nature_categories.json +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/nature_methods_categories.json +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/plos_compbio_classifications.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/plos_compbio_funding_countries.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/science_advances_subjects.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/science_immunology_subjects.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/science_robotics_subjects.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/science_signaling_subjects.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/science_subjects.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/_assets/science_translational_medicine_subjects.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/arxiv/__init__.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/discrete_mathematics/__init__.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/editflow/__init__.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/editflow/combinatorica.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/editorialmanager/__init__.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/editorialmanager/cell.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/editorialmanager/cell_genomics.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/editorialmanager/cell_systems.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/editorialmanager/plos_compbio.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/nature/__init__.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/nature/nature.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/nature/nature_biotech.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/nature/nature_methods.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/openreview/__init__.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/openreview/main.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/openrxiv/__init__.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/openrxiv/biorxiv.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/openrxiv/medrxiv.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/scholarone/__init__.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/science/__init__.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/snapp/__init__.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/snapp/bmc_bioinformatics.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/snapp/genome_biology.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush/venues/template/__init__.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush.egg-info/dependency_links.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/paperpush.egg-info/top_level.txt +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/setup.cfg +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/tests/test_logging.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/tests/test_sensitive.py +0 -0
- {paperpush-0.2.0 → paperpush-0.4.0}/tests/test_venue_interface.py +0 -0
paperpush-0.4.0/PKG-INFO
ADDED
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: paperpush
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: A Python library for automating the submission of manuscripts to academic venues.
|
|
5
|
+
Author-email: Joseph Rich <josephrich98@gmail.com>
|
|
6
|
+
Maintainer-email: Joseph Rich <josephrich98@gmail.com>
|
|
7
|
+
License-Expression: BSD-2-Clause
|
|
8
|
+
Project-URL: Homepage, https://github.com/pachterlab/paperpush
|
|
9
|
+
Project-URL: Repository, https://github.com/pachterlab/paperpush
|
|
10
|
+
Project-URL: Documentation, https://github.com/pachterlab/paperpush#readme
|
|
11
|
+
Project-URL: Issues, https://github.com/pachterlab/paperpush/issues
|
|
12
|
+
Requires-Python: >=3.10
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
Requires-Dist: playwright>=1.40
|
|
16
|
+
Requires-Dist: keyring>=24.0
|
|
17
|
+
Requires-Dist: pydantic>=2.0
|
|
18
|
+
Requires-Dist: pypdf>=6.0.0
|
|
19
|
+
Requires-Dist: pillow>=10.0
|
|
20
|
+
Requires-Dist: rich>=13.0
|
|
21
|
+
Provides-Extra: ai-anthropic
|
|
22
|
+
Requires-Dist: anthropic>=0.40; extra == "ai-anthropic"
|
|
23
|
+
Provides-Extra: ai-openai
|
|
24
|
+
Requires-Dist: openai>=2.0; extra == "ai-openai"
|
|
25
|
+
Provides-Extra: ai-google
|
|
26
|
+
Requires-Dist: google-genai>=2.3.0; extra == "ai-google"
|
|
27
|
+
Provides-Extra: mcp
|
|
28
|
+
Requires-Dist: mcp>=1.2; extra == "mcp"
|
|
29
|
+
Provides-Extra: ai
|
|
30
|
+
Requires-Dist: paperpush[ai-anthropic,ai-google,ai-openai,mcp]; extra == "ai"
|
|
31
|
+
Provides-Extra: web
|
|
32
|
+
Requires-Dist: fastapi>=0.115; extra == "web"
|
|
33
|
+
Requires-Dist: uvicorn>=0.30; extra == "web"
|
|
34
|
+
Requires-Dist: python-multipart>=0.0.9; extra == "web"
|
|
35
|
+
Requires-Dist: psycopg[binary]>=3.1; extra == "web"
|
|
36
|
+
Provides-Extra: validate
|
|
37
|
+
Requires-Dist: pdfminer.six>=20240706; extra == "validate"
|
|
38
|
+
Requires-Dist: arxiv_latex_cleaner>=0.1.0; extra == "validate"
|
|
39
|
+
Requires-Dist: codespell>=2.2; extra == "validate"
|
|
40
|
+
Requires-Dist: tqdm>=4.60; extra == "validate"
|
|
41
|
+
Provides-Extra: all
|
|
42
|
+
Requires-Dist: paperpush[ai,validate,web]; extra == "all"
|
|
43
|
+
Provides-Extra: dev
|
|
44
|
+
Requires-Dist: paperpush[mcp,validate,web]; extra == "dev"
|
|
45
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
46
|
+
Requires-Dist: bandit; extra == "dev"
|
|
47
|
+
Requires-Dist: black; extra == "dev"
|
|
48
|
+
Requires-Dist: jsonschema>=4.18; extra == "dev"
|
|
49
|
+
Requires-Dist: sphinx; extra == "dev"
|
|
50
|
+
Requires-Dist: isort; extra == "dev"
|
|
51
|
+
Dynamic: license-file
|
|
52
|
+
|
|
53
|
+
# PaperPush: Automated manuscript submission to journals, conferences, and preprint servers
|
|
54
|
+
|
|
55
|
+
<!-- [](https://paperpush.readthedocs.io/en/latest/?badge=latest) -->
|
|
56
|
+
|
|
57
|
+
Prepare manuscripts for submission to preprint servers, journals, and conferences with just a few commands. No need to spend hours verifying manuscript files for journal compliance and filling out submission portal forms manually. Just provide a manuscript directory and submission venue of interest, and PaperPush will validate the documents and fill out the submission portal for you.
|
|
58
|
+
|
|
59
|
+
PaperPush provides the following services:
|
|
60
|
+
- A standardized system to share all data submitted to a journal/conference
|
|
61
|
+
- Extensive venue-specific manuscript guideline checking including section lengths, reference hallucination, figure resolution, link validation, anonymization, and much much more — up to 100 checks!
|
|
62
|
+
- A central database of journal/conference manuscript requirements
|
|
63
|
+
- Automated and fast submission portal filling with deterministic scripts
|
|
64
|
+
- Free, open-source, actively-maintained, and never stores your data
|
|
65
|
+
|
|
66
|
+
## tl;dr
|
|
67
|
+
|
|
68
|
+
Workflow to create the manuscript metadata (.sub) file, validate against author guidelines, and fill out the submission portal. Follow your favorite path:
|
|
69
|
+
|
|
70
|
+
### Claude Code (other AI agents listed below):
|
|
71
|
+
- `/plugin marketplace add pachterlab/paperpush`
|
|
72
|
+
- `/plugin install paperpush@paperpush`
|
|
73
|
+
- `/paperpush-prepare-submission Prepare my manuscript in /PATH/TO/MANUSCRIPT/DIRECTORY for submission to VENUE with PaperPush.`
|
|
74
|
+
|
|
75
|
+
### Website:
|
|
76
|
+
- Visit [paperpush.onrender.com](https://paperpush.onrender.com)
|
|
77
|
+
- Select the VENUE (or upload a .sub file)
|
|
78
|
+
- Upload manuscript files and fill out the metadata fields
|
|
79
|
+
- Click the blue "Validate" button to validate the files and metadata against author guidelines
|
|
80
|
+
- Click the blue "Share" button to share the editable form with co-authors (or download and share the .sub file)
|
|
81
|
+
- (If available) Click the "Fill out submission portal automatically" button and follow the instructions
|
|
82
|
+
|
|
83
|
+
### CLI:
|
|
84
|
+
- `paperpush subfile VENUE` # create a .sub file
|
|
85
|
+
- Fill out VENUE.sub.txt
|
|
86
|
+
- `paperpush validate VENUE.sub.txt` # validate the files and data in VENUE.sub.txt
|
|
87
|
+
- Share VENUE.sub.txt with co-authors (it can be viewed in a text editor, with `paperpush web VENUE.sub.txt`, or via upload onto [paperpush.onrender.com](https://paperpush.onrender.com))
|
|
88
|
+
- (If available) `paperpush login VENUE` # log in to the VENUE submission portal
|
|
89
|
+
- (If available) `paperpush submit VENUE.sub.txt` # fill out the VENUE submission portal with information in VENUE.sub.txt
|
|
90
|
+
|
|
91
|
+
## Website
|
|
92
|
+
|
|
93
|
+
[paperpush.onrender.com](https://paperpush.onrender.com): prepare a submission in your browser, validate it, and share the editable form with co-authors — no install needed.
|
|
94
|
+
|
|
95
|
+
## Install
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
pip install paperpush["all"] # Recommended — for AI API usage, MCP server, local web deployment, and additional manuscript validation checks
|
|
99
|
+
pip install paperpush # basic CLI usage
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
(Required for `submit`): To install the playwright dependency and the required chromium browser, run:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
playwright install chromium
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Use with AI
|
|
109
|
+
|
|
110
|
+
Install the paperpush skills for your agent, so it knows how to autofill, validate, and submit:
|
|
111
|
+
|
|
112
|
+
**Claude Code** (two separate prompts):
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
/plugin marketplace add pachterlab/paperpush
|
|
116
|
+
```
|
|
117
|
+
```
|
|
118
|
+
/plugin install paperpush@paperpush
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Codex:**
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
codex plugin marketplace add pachterlab/paperpush
|
|
125
|
+
codex plugin add paperpush@paperpush
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**From a pip install** (any agent):
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
paperpush install-skills # Claude Code, every project (~/.claude/skills)
|
|
132
|
+
paperpush install-skills --agent codex # Codex (~/.codex/skills)
|
|
133
|
+
paperpush install-skills --dest DIR # any other agent's skills directory
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Then ask:
|
|
137
|
+
|
|
138
|
+
```LLM
|
|
139
|
+
/paperpush-prepare-submission Prepare my manuscript in /PATH/TO/MANUSCRIPT/DIRECTORY for submission to VENUE with PaperPush.
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
See [`docs/example-session.md`](docs/example-session.md) for a full worked example of this flow.
|
|
143
|
+
|
|
144
|
+
## Quickstart
|
|
145
|
+
1. `paperpush subfile VENUE`: creates a file VENUE.sub.txt that is a template for the VENUE submission. Fields are grouped into the same sections for every venue (manuscript type, files, details, authors, reviewers, declarations, additional); add `--venue-order` to list them in the order the venue's portal asks for them instead.
|
|
146
|
+
2. **fill out VENUE.sub.txt:** Open VENUE.sub.txt in a text editor to edit manually, or run `paperpush web VENUE.sub.txt` to edit in a web browser. Use the agent skill `/paperpush-autofill My manuscript files are in /PATH/TO/MANUSCRIPT/DIRECTORY. Fill out VENUE.sub.txt` or the command `paperpush autofill --engine api -p /PATH/TO/MANUSCRIPT/DIRECTORY ... VENUE.sub.txt` (API) to automatically fill from the manuscript directory with AI. `paperpush autofill` requires the provider's API key. The AI agent may not be able to fill out all fields if some information is not in the manuscript directory.
|
|
147
|
+
3. `paperpush validate VENUE.sub.txt`: run the pre-submission checks on the filled `VENUE.sub.txt`. Use the agent skill `/paperpush-validate` or the CLI flag `--ai` (API) to run checks with AI. The AI checks require the provider's API key.
|
|
148
|
+
4. `paperpush login VENUE`: log in to the VENUE submission portal.
|
|
149
|
+
5. `paperpush submit VENUE.sub.txt`: Fill out the VENUE submission portal. Will not actually submit the manuscript. We highly recommend reviewing the submission form in the venue portal before clicking submit. Use the agent skill `/paperpush-portal-debug` or the CLI flag `--ai` (API) to have AI fix any issues that may arise. Ignore validation checks with the `--skip-validate` flag.
|
|
150
|
+
|
|
151
|
+
Helper commands:
|
|
152
|
+
- `paperpush venues`: List supported venues. Filters combine:
|
|
153
|
+
- `--validate`: only venues paperpush can validate a manuscript against.
|
|
154
|
+
- `--submit`: only venues that also support automated submission portal filling.
|
|
155
|
+
- `-k/--keywords KW[,KW...]`: only venues tagged with any of these subject keywords (e.g. `biology,genetics`).
|
|
156
|
+
- `-t/--type TYPE`: only venues of this kind (`preprint`, `journal`, or `conference`; repeatable).
|
|
157
|
+
- `--columns COL[,COL...]` / `--hide-columns COL[,COL...]`: choose which columns to show (`slug`, `venue`, `keywords`, `type`, `link`, `validate`, `submit`).
|
|
158
|
+
|
|
159
|
+
For example, `paperpush venues --submit -t journal -k biology` lists the biology journals paperpush can submit to.
|
|
160
|
+
- `paperpush pick-venue`: List supported venues that are a good thematic fit for your manuscript. Give it the manuscript's keywords (`pick-venue hippocampus, place cells`; a keyword can be a venue subject such as `immunology`), the manuscript itself (`pick-venue manuscript.pdf`), or its `--title` and `--abstract`, which are matched against each venue's subject keywords (`--venue-name` searches by name instead); add `--ai` (API) for an LLM's ranking with a reason for each venue. Note that this only searches the venues supported in PaperPush; and it only checks for thematic fit, not impact or likelihood of acceptance.
|
|
161
|
+
- `paperpush update-venues`: Update the venue data (venues.json, submission_forms.json, manuscript_requirements.json) from the remote venue-data branch.
|
|
162
|
+
- `paperpush requirements VENUE`: print VENUE's author guidelines, if available.
|
|
163
|
+
- `paperpush options VENUE.FIELD`: print the allowed values for FIELD in VENUE's submission form.
|
|
164
|
+
- `paperpush web VENUE.sub.txt`: open a sub file in a local deployment of the web application
|
|
165
|
+
|
|
166
|
+
See the YouTube tutorial [PaperPush Tutorial](https://youtu.be/ChCYoud0uBk)
|
|
167
|
+
|
|
168
|
+
## Documentation
|
|
169
|
+
|
|
170
|
+
[paperpush.readthedocs.io](https://paperpush.readthedocs.io)
|
|
171
|
+
|
|
172
|
+
## Supported venues
|
|
173
|
+
|
|
174
|
+
<!-- BEGIN SUPPORTED VENUES -->
|
|
175
|
+
**Preprint servers**
|
|
176
|
+
|
|
177
|
+
| Venue | Slug | Validate + basic .sub | Submit + full .sub |
|
|
178
|
+
| --- | --- | :---: | :---: |
|
|
179
|
+
| [arXiv](https://arxiv.org) | `arxiv` | ✅ | ✅ |
|
|
180
|
+
| [bioRxiv](https://www.biorxiv.org) | `biorxiv` | ✅ | ✅ |
|
|
181
|
+
| [medRxiv](https://www.medrxiv.org) | `medrxiv` | ✅ | ✅ |
|
|
182
|
+
|
|
183
|
+
**Journals**
|
|
184
|
+
|
|
185
|
+
| Venue | Slug | Validate + basic .sub | Submit + full .sub |
|
|
186
|
+
| --- | --- | :---: | :---: |
|
|
187
|
+
| [AJHG](https://www.cell.com/ajhg) | `ajhg` | ✅ | |
|
|
188
|
+
| [Bioinformatics](https://academic.oup.com/bioinformatics) | `bioinformatics` | ✅ | ✅ |
|
|
189
|
+
| [BMC Bioinformatics](https://link.springer.com/journal/12859) | `bmc_bioinformatics` | ✅ | ✅ |
|
|
190
|
+
| [BMC Biology](https://bmcbiol.biomedcentral.com) | `bmc_biology` | ✅ | |
|
|
191
|
+
| [BMC Genomics](https://bmcgenomics.biomedcentral.com) | `bmc_genomics` | ✅ | |
|
|
192
|
+
| [BMC Medicine](https://bmcmedicine.biomedcentral.com) | `bmc_medicine` | ✅ | |
|
|
193
|
+
| [The BMJ](https://www.bmj.com) | `bmj` | ✅ | |
|
|
194
|
+
| [Cell](https://www.cell.com/cell/home) | `cell` | ✅ | ✅ |
|
|
195
|
+
| [Cell Genomics](https://www.cell.com/cell-genomics/home) | `cell_genomics` | ✅ | ✅ |
|
|
196
|
+
| [Cell Reports](https://www.cell.com/cell-reports) | `cell_reports` | ✅ | |
|
|
197
|
+
| [Cell Reports Methods](https://www.cell.com/cell-reports-methods) | `cell_reports_methods` | ✅ | |
|
|
198
|
+
| [Cell Stem Cell](https://www.cell.com/cell-stem-cell) | `cell_stem_cell` | ✅ | |
|
|
199
|
+
| [Cell Systems](https://www.cell.com/cell-systems/home) | `cell_systems` | ✅ | ✅ |
|
|
200
|
+
| [Combinatorica](https://link.springer.com/journal/493) | `combinatorica` | ✅ | ✅ |
|
|
201
|
+
| [Communications Biology](https://www.nature.com/commsbio) | `communications_biology` | ✅ | |
|
|
202
|
+
| [Discrete Mathematics](https://www.sciencedirect.com/journal/discrete-mathematics) | `discrete_mathematics` | ✅ | ✅ |
|
|
203
|
+
| [eLife](https://elifesciences.org) | `elife` | ✅ | |
|
|
204
|
+
| [European Radiology](https://link.springer.com/journal/330) | `european_radiology` | ✅ | |
|
|
205
|
+
| [Frontiers in Bioinformatics](https://www.frontiersin.org/journals/bioinformatics) | `frontiers_bioinformatics` | ✅ | |
|
|
206
|
+
| [Frontiers in Genetics](https://www.frontiersin.org/journals/genetics) | `frontiers_genetics` | ✅ | |
|
|
207
|
+
| [Frontiers in Immunology](https://www.frontiersin.org/journals/immunology) | `frontiers_immunology` | ✅ | |
|
|
208
|
+
| [Genome Biology](https://genomebiology.biomedcentral.com) | `genome_biology` | ✅ | ✅ |
|
|
209
|
+
| [Genome Medicine](https://genomemedicine.biomedcentral.com) | `genome_medicine` | ✅ | |
|
|
210
|
+
| [Genome Research](https://genome.cshlp.org) | `genome_research` | ✅ | |
|
|
211
|
+
| [IEEE TMI](https://ieeetmi.org/) | `ieee_tmi` | ✅ | |
|
|
212
|
+
| [IEEE TNNLS](https://cis.ieee.org/publications/t-neural-networks-and-learning-systems) | `ieee_tnnls` | ✅ | |
|
|
213
|
+
| [IEEE TPAMI](https://www.computer.org/csdl/journal/tp) | `ieee_tpami` | ✅ | |
|
|
214
|
+
| [iScience](https://www.cell.com/iscience) | `iscience` | ✅ | |
|
|
215
|
+
| [JAMA](https://jamanetwork.com/journals/jama) | `jama` | ✅ | |
|
|
216
|
+
| [JMLR](https://www.jmlr.org) | `jmlr` | ✅ | |
|
|
217
|
+
| [JNM](https://jnm.snmjournals.org) | `jnm` | ✅ | |
|
|
218
|
+
| [The Lancet](https://www.thelancet.com/journals/lancet/home) | `lancet` | ✅ | |
|
|
219
|
+
| [Lancet Digital Health](https://www.thelancet.com/journals/landig/home) | `lancet_digital_health` | ✅ | |
|
|
220
|
+
| [Medical Image Analysis](https://www.sciencedirect.com/journal/medical-image-analysis) | `medical_image_analysis` | ✅ | |
|
|
221
|
+
| [Molecular Cell](https://www.cell.com/molecular-cell) | `molecular_cell` | ✅ | |
|
|
222
|
+
| [NAR Cancer](https://academic.oup.com/narcancer) | `nar_cancer` | ✅ | |
|
|
223
|
+
| [NAR Genomics and Bioinformatics](https://academic.oup.com/nargab) | `nar_genomics_bioinformatics` | ✅ | |
|
|
224
|
+
| [Nature](https://www.nature.com) | `nature` | ✅ | ✅ |
|
|
225
|
+
| [Nature Biomedical Engineering](https://www.nature.com/natbiomedeng) | `nature_biomedical_engineering` | ✅ | ✅ |
|
|
226
|
+
| [Nature Biotechnology](https://www.nature.com/nbt) | `nature_biotech` | ✅ | ✅ |
|
|
227
|
+
| [Nature Cell Biology](https://www.nature.com/ncb) | `nature_cell_biology` | ✅ | |
|
|
228
|
+
| [Nature Communications](https://www.nature.com/ncomms) | `nature_communications` | ✅ | |
|
|
229
|
+
| [Nature Computational Science](https://www.nature.com/natcomputsci) | `nature_computational_science` | ✅ | |
|
|
230
|
+
| [Nature Genetics](https://www.nature.com/ng) | `nature_genetics` | ✅ | |
|
|
231
|
+
| [Nature Machine Intelligence](https://www.nature.com/natmachintell) | `nature_machine_intelligence` | ✅ | ✅ |
|
|
232
|
+
| [Nature Medicine](https://www.nature.com/nm) | `nature_medicine` | ✅ | |
|
|
233
|
+
| [Nature Methods](https://www.nature.com/nmeth) | `nature_methods` | ✅ | ✅ |
|
|
234
|
+
| [Nature Neuroscience](https://www.nature.com/neuro) | `nature_neuroscience` | ✅ | |
|
|
235
|
+
| [Nature Structural & Molecular Biology](https://www.nature.com/nsmb) | `nature_structural_molecular_biology` | ✅ | |
|
|
236
|
+
| [NEJM](https://www.nejm.org) | `nejm` | ✅ | |
|
|
237
|
+
| [Neuron](https://www.cell.com/neuron) | `neuron` | ✅ | |
|
|
238
|
+
| [npj Digital Medicine](https://www.nature.com/npjdigitalmed) | `npj_digital_medicine` | ✅ | |
|
|
239
|
+
| [Nucleic Acids Research](https://academic.oup.com/nar) | `nucleic_acids_research` | ✅ | ✅ |
|
|
240
|
+
| [Patterns](https://www.cell.com/patterns) | `patterns` | ✅ | |
|
|
241
|
+
| [PLOS Biology](https://journals.plos.org/plosbiology/) | `plos_biology` | ✅ | |
|
|
242
|
+
| [PLOS Computational Biology](https://journal.plos.org/ploscompbiol/) | `plos_compbio` | ✅ | ✅ |
|
|
243
|
+
| [PLOS Genetics](https://journals.plos.org/plosgenetics/) | `plos_genetics` | ✅ | |
|
|
244
|
+
| [PLOS Medicine](https://journals.plos.org/plosmedicine/) | `plos_medicine` | ✅ | |
|
|
245
|
+
| [PLOS ONE](https://journals.plos.org/plosone/) | `plos_one` | ✅ | |
|
|
246
|
+
| [PNAS](https://www.pnas.org) | `pnas` | ✅ | |
|
|
247
|
+
| [Radiology](https://pubs.rsna.org/journal/radiology) | `radiology` | ✅ | |
|
|
248
|
+
| [Radiology: Artificial Intelligence](https://pubs.rsna.org/journal/ai) | `radiology_ai` | ✅ | |
|
|
249
|
+
| [Science](https://www.science.org/journal/science) | `science` | ✅ | ✅ |
|
|
250
|
+
| [Science Advances](https://www.science.org/journal/sciadv) | `science_advances` | ✅ | ✅ |
|
|
251
|
+
| [Science Immunology](https://www.science.org/journal/sciimmunol) | `science_immunology` | ✅ | ✅ |
|
|
252
|
+
| [Science Robotics](https://www.science.org/journal/scirobotics) | `science_robotics` | ✅ | ✅ |
|
|
253
|
+
| [Science Signaling](https://www.science.org/journal/signaling) | `science_signaling` | ✅ | ✅ |
|
|
254
|
+
| [Science Translational Medicine](https://www.science.org/journal/stm) | `science_translational_medicine` | ✅ | ✅ |
|
|
255
|
+
| [Scientific Reports](https://www.nature.com/srep) | `scientific_reports` | ✅ | |
|
|
256
|
+
| [TMLR](https://jmlr.org/tmlr/) | `tmlr` | ✅ | |
|
|
257
|
+
|
|
258
|
+
**Conferences**
|
|
259
|
+
|
|
260
|
+
| Venue | Slug | Validate + basic .sub | Submit + full .sub |
|
|
261
|
+
| --- | --- | :---: | :---: |
|
|
262
|
+
| [ACL Rolling Review](https://aclrollingreview.org) | `acl_arr` | ✅ | |
|
|
263
|
+
| [CVPR 2027](https://cvpr.thecvf.com/Conferences/2027) | `cvpr_2027` | ✅ | |
|
|
264
|
+
<!-- END SUPPORTED VENUES -->
|
|
265
|
+
|
|
266
|
+
View the list on the command line with `paperpush venues`.
|
|
267
|
+
|
|
268
|
+
Venues are added (for validate) and updated (for validate and submit) daily. `paperpush update-venues` updates immediately.
|
|
269
|
+
|
|
270
|
+
New venues are added for submit with paperpush releases - `pip install -U paperpush`.
|
|
271
|
+
|
|
272
|
+
## Adding new venues
|
|
273
|
+
|
|
274
|
+
Each venue is listed in `paperpush/venues.json` (the master list of venues and their general metadata), `paperpush/manuscript_requirements.json` (the manuscript guidelines), and `paperpush/submission_forms.json` (the fields the portal asks for). The script for automatic venue login and submission lives in `/paperpush/venues/PLATFORM/VENUE.py` in a VENUE class with methods `login` and `submit`. See [`CONTRIBUTING.md`](CONTRIBUTING.md) and [`DEVELOPMENT.md`](DEVELOPMENT.md) for more details.
|
|
275
|
+
|
|
276
|
+
## What is a .sub file
|
|
277
|
+
|
|
278
|
+
The .sub file is the yaml-like text file that contains all metadata and file paths required to upload a manuscript onto a venue's submission portal. An example snippet is shown below. In this case, you would provide "/PATH/TO/MANUSCRIPT.pdf", "TITLE", and "HERE IS THE ABSTRACT".
|
|
279
|
+
|
|
280
|
+
```venue.sub.txt
|
|
281
|
+
@venue: venue
|
|
282
|
+
|
|
283
|
+
# Manuscript file (file, REQUIRED)
|
|
284
|
+
# Path to the submission.
|
|
285
|
+
manuscript_file: /PATH/TO/MANUSCRIPT.pdf
|
|
286
|
+
|
|
287
|
+
# Title (text, REQUIRED)
|
|
288
|
+
# The full title of the article.
|
|
289
|
+
title: TITLE
|
|
290
|
+
|
|
291
|
+
# Abstract (textarea, REQUIRED)
|
|
292
|
+
# Plain-text abstract, at least 20 characters
|
|
293
|
+
abstract: |
|
|
294
|
+
HERE IS THE ABSTRACT
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
## MCP server
|
|
298
|
+
|
|
299
|
+
To drive paperpush from any MCP client — Claude Desktop, an IDE extension — run
|
|
300
|
+
it as an MCP server:
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
pip install 'paperpush[mcp]'
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
```json
|
|
307
|
+
{
|
|
308
|
+
"mcpServers": {
|
|
309
|
+
"paperpush": {
|
|
310
|
+
"command": "paperpush-mcp"
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
The server exposes the whole pipeline as tools. See [`AGENTS.md`](AGENTS.md) for
|
|
317
|
+
the tool list and the contract agents should follow.
|
|
318
|
+
|
|
319
|
+
## AI Skills
|
|
320
|
+
|
|
321
|
+
| Skill | Use it to |
|
|
322
|
+
| --- | --- |
|
|
323
|
+
| `/paperpush-prepare-submission` | go from a manuscript directory to a filled-in portal (autofill, validate, submit) |
|
|
324
|
+
| `/paperpush-autofill` | fill a `.sub` from the manuscript files |
|
|
325
|
+
| `/paperpush-validate` | run every check, including the ones that need a reader |
|
|
326
|
+
| `/paperpush-portal-debug` | get a stalled `paperpush submit` run unstuck |
|
|
327
|
+
| `/paperpush-add-venue-validate` | add or refresh a venue's author guidelines (contributors) |
|
|
328
|
+
| `/paperpush-add-venue` | run `/paperpush-add-venue-validate` and add `login` and `submit` support for a venue, with tests (contributors) |
|
|
329
|
+
|
|
330
|
+
## For AI agents
|
|
331
|
+
|
|
332
|
+
If you are an AI agent asked to submit a manuscript on the user's behalf, read
|
|
333
|
+
[`AGENTS.md`](AGENTS.md) — or, if you are working from a `pip install` rather
|
|
334
|
+
than a clone of this repo, run `paperpush --agent-guide`, which prints the same
|
|
335
|
+
document from the copy that shipped with the installed version. It describes how to run the full pipeline while doing
|
|
336
|
+
your **own** field extraction (reading the manuscript and writing a
|
|
337
|
+
`values.json` for the default `--engine manual`) rather than relying on the
|
|
338
|
+
API-backed engine. It also asks the agent to check `paperpush login --list`
|
|
339
|
+
before it starts, and to tell you right away if you still need to run
|
|
340
|
+
`paperpush login <venue>` yourself — that sign-in is interactive and belongs in
|
|
341
|
+
your terminal. Agents that support skills should install them (see
|
|
342
|
+
[Use with AI](#use-with-ai)); `AGENTS.md` lists what each skill does and when
|
|
343
|
+
to use it.
|
|
344
|
+
|
|
345
|
+
## FAQ
|
|
346
|
+
|
|
347
|
+
*How does PaperPush work?*
|
|
348
|
+
|
|
349
|
+
Supported venues are listed in `paperpush/venues.json`, their submission form data are in `paperpush/submission_forms.json`, and their author guidelines are in `paperpush/manuscript_requirements.json`. `paperpush subfile` generates a file from the form for the specified venue. The file can be filled out manually, or with the help of an LLM via `paperpush autofill`. The manuscript documents are validated with `paperpush validate`. The submission portal for a selected venue is filled out with the information from this file with a `paperpush submit`. This runs a Playwright script that is written specifically for each supported venue.
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
*The repository says that it supports a given venue, but it fails when I try. Why is that?*
|
|
353
|
+
|
|
354
|
+
Here are a few possibilities, in order of decreasing ease of resolution:
|
|
355
|
+
- Sometimes, submission portals can be a bit funny, and the solution can be as simple as retrying the command 1-2 more times.
|
|
356
|
+
- The submission portal is having server issues. You can try logging in to the portal manually to see if it is working, as well as on a different browser and at a different time.
|
|
357
|
+
- The sub file has an option that we did not anticipate. You can try running the unit test for the venue with `pytest tests/test_submit.py --run-portal -s --venue VENUE`. If this passes, then it indicates an option in the sub file is not being handled correctly. If this fails, then it indicates that the submission portal has changed since the last time the venue was tested. In either case, please open an issue with the error message.
|
|
358
|
+
- The submission portal has changed since the last time the venue was tested. You can run the unit test listed above to see if this is the case. If so, please open an issue with the error message.
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
*I do not see my venue in the supported list. Is it possible to add a venue?*
|
|
362
|
+
|
|
363
|
+
Yes! See [`CONTRIBUTING.md`](CONTRIBUTING.md) if you would like to add a journal yourself, and feel free to ask any questions in the Discussion forum.
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
*Does PaperPush press submit for me?*
|
|
367
|
+
|
|
368
|
+
No. PaperPush will bring you to one of the final steps on your venue of interest, but it will never actually press submit. I always recommend viewing any compiled PDFs and entered information to ensure accuracy and acknowledgment of guidelines.
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
*Does every venue have a unique submission portal?*
|
|
372
|
+
|
|
373
|
+
No — in fact, many share the same type of platform. PaperPush has a unique Playwright script for each supported venue, but many venues share the same submission platform. The big ones are Editorial Manager (including the Cell family and PLOS family), ScholarOne Manuscripts, eJournalPress, Snapp, and OpenReview (for many computer science conferences). The submission script may be highly similar for venues that share the same platform, so check the folders within `paperpush/venues` to see which venues share the same submission platform. See screenshots of each of the major supported venues in [`docs/portal_screenshots`](docs/portal_screenshots) to see what each submission portal looks like.
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
*How long does it take to add a new journal?*
|
|
377
|
+
|
|
378
|
+
It depends on the complexity of the submission portal and your comfort with coding, but I would say roughly 1-3 hours manually. AI tools with the paperpush skills can potentially do this in under 20 minutes.
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
*Can I vibe code a new journal?*
|
|
382
|
+
|
|
383
|
+
Yes, with `/paperpush-add-venue` (see [`CONTRIBUTING.md`](CONTRIBUTING.md)). AI agents can navigate submission portals and write the Venue class for login and submit, but it can take a lot of tokens and may stall at times, so some human oversight helps. In my experience, LLMs can make the code a bit verbose and abstract away some of the action names, which may be harder to read/maintain in my opinion, but this is just stylistic. My favorite code style is in `arxiv.py`.
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
## License
|
|
387
|
+
|
|
388
|
+
This project is licensed under the BSD-2 License - see the [LICENSE](LICENSE) file for details.
|
|
389
|
+
|
|
390
|
+
Developed by Joe Rich
|