peerfold-review 0.1.3__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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Vincenzo Malagola
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,97 @@
1
+ Metadata-Version: 2.4
2
+ Name: peerfold-review
3
+ Version: 0.1.3
4
+ Summary: Local PDF review with browser UI and Acrobat-compatible highlights
5
+ Author: Vincenzo Malagola
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 Vincenzo Malagola
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://vincenzoml.github.io/PeerFold/
29
+ Project-URL: Repository, https://github.com/vincenzoml/PeerFold
30
+ Project-URL: Issues, https://github.com/vincenzoml/PeerFold/issues
31
+ Keywords: pdf,review,annotation,highlights,academic
32
+ Classifier: Development Status :: 4 - Beta
33
+ Classifier: Environment :: Web Environment
34
+ Classifier: Intended Audience :: Science/Research
35
+ Classifier: Programming Language :: Python :: 3
36
+ Classifier: Topic :: Text Editors :: Documentation
37
+ Requires-Python: >=3.10
38
+ Description-Content-Type: text/markdown
39
+ License-File: LICENSE
40
+ Requires-Dist: pymupdf>=1.24.0
41
+ Provides-Extra: dev
42
+ Requires-Dist: build>=1.2; extra == "dev"
43
+ Requires-Dist: playwright>=1.44; extra == "dev"
44
+ Requires-Dist: pyinstaller>=6.6; extra == "dev"
45
+ Requires-Dist: pytest>=8.0; extra == "dev"
46
+ Requires-Dist: twine>=5.0; extra == "dev"
47
+ Dynamic: license-file
48
+
49
+ # PeerFold
50
+
51
+ Review PDFs in your browser. Highlights are written as standard PDF `/Highlight` annotations — open the saved copy in Acrobat, Preview, or any PDF reader.
52
+
53
+ ```bash
54
+ pipx install peerfold-review
55
+ peerfold manuscript.pdf --reviewer VC
56
+ ```
57
+
58
+ Saved reviews: `manuscript_VC-2026-06-09.pdf` next to the original.
59
+
60
+ ## Install
61
+
62
+ | Method | Command |
63
+ |--------|---------|
64
+ | **pipx** (recommended) | `pipx install peerfold-review` |
65
+ | pip | `pip install peerfold-review` |
66
+ | Standalone binary | [GitHub Releases](https://github.com/vincenzoml/PeerFold/releases) |
67
+
68
+ ## Usage
69
+
70
+ ```bash
71
+ peerfold paper.pdf # open browser UI
72
+ peerfold paper.pdf -r VC # reviewer short name (filename + metadata)
73
+ peerfold paper.pdf --port 8765 # fixed port
74
+ peerfold paper.pdf --no-browser # server only
75
+ ```
76
+
77
+ Environment: `PEERFOLD_REVIEWER` sets the default reviewer name.
78
+
79
+ ## Features
80
+
81
+ - Span-accurate text highlights with comment threads
82
+ - Citation links open DOIs/URLs directly
83
+ - Multi-tab sync, autosave, reviewer switching
84
+ - Adobe-compatible annotation format
85
+
86
+ ## Development
87
+
88
+ ```bash
89
+ python -m venv .venv && source .venv/bin/activate
90
+ pip install -e ".[dev]"
91
+ peerfold sample.pdf
92
+ pytest
93
+ ```
94
+
95
+ ## License
96
+
97
+ MIT — see [LICENSE](LICENSE). Uses [PyMuPDF](https://pymupdf.readthedocs.io/) (AGPL).
@@ -0,0 +1,49 @@
1
+ # PeerFold
2
+
3
+ Review PDFs in your browser. Highlights are written as standard PDF `/Highlight` annotations — open the saved copy in Acrobat, Preview, or any PDF reader.
4
+
5
+ ```bash
6
+ pipx install peerfold-review
7
+ peerfold manuscript.pdf --reviewer VC
8
+ ```
9
+
10
+ Saved reviews: `manuscript_VC-2026-06-09.pdf` next to the original.
11
+
12
+ ## Install
13
+
14
+ | Method | Command |
15
+ |--------|---------|
16
+ | **pipx** (recommended) | `pipx install peerfold-review` |
17
+ | pip | `pip install peerfold-review` |
18
+ | Standalone binary | [GitHub Releases](https://github.com/vincenzoml/PeerFold/releases) |
19
+
20
+ ## Usage
21
+
22
+ ```bash
23
+ peerfold paper.pdf # open browser UI
24
+ peerfold paper.pdf -r VC # reviewer short name (filename + metadata)
25
+ peerfold paper.pdf --port 8765 # fixed port
26
+ peerfold paper.pdf --no-browser # server only
27
+ ```
28
+
29
+ Environment: `PEERFOLD_REVIEWER` sets the default reviewer name.
30
+
31
+ ## Features
32
+
33
+ - Span-accurate text highlights with comment threads
34
+ - Citation links open DOIs/URLs directly
35
+ - Multi-tab sync, autosave, reviewer switching
36
+ - Adobe-compatible annotation format
37
+
38
+ ## Development
39
+
40
+ ```bash
41
+ python -m venv .venv && source .venv/bin/activate
42
+ pip install -e ".[dev]"
43
+ peerfold sample.pdf
44
+ pytest
45
+ ```
46
+
47
+ ## License
48
+
49
+ MIT — see [LICENSE](LICENSE). Uses [PyMuPDF](https://pymupdf.readthedocs.io/) (AGPL).
@@ -0,0 +1,46 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "peerfold-review"
7
+ version = "0.1.3"
8
+ description = "Local PDF review with browser UI and Acrobat-compatible highlights"
9
+ readme = "README.md"
10
+ license = { file = "LICENSE" }
11
+ requires-python = ">=3.10"
12
+ authors = [{ name = "Vincenzo Malagola" }]
13
+ keywords = ["pdf", "review", "annotation", "highlights", "academic"]
14
+ classifiers = [
15
+ "Development Status :: 4 - Beta",
16
+ "Environment :: Web Environment",
17
+ "Intended Audience :: Science/Research",
18
+ "Programming Language :: Python :: 3",
19
+ "Topic :: Text Editors :: Documentation",
20
+ ]
21
+ dependencies = [
22
+ "pymupdf>=1.24.0",
23
+ ]
24
+
25
+ [project.optional-dependencies]
26
+ dev = [
27
+ "build>=1.2",
28
+ "playwright>=1.44",
29
+ "pyinstaller>=6.6",
30
+ "pytest>=8.0",
31
+ "twine>=5.0",
32
+ ]
33
+
34
+ [project.scripts]
35
+ peerfold = "peerfold.cli:main"
36
+
37
+ [project.urls]
38
+ Homepage = "https://vincenzoml.github.io/PeerFold/"
39
+ Repository = "https://github.com/vincenzoml/PeerFold"
40
+ Issues = "https://github.com/vincenzoml/PeerFold/issues"
41
+
42
+ [tool.setuptools.packages.find]
43
+ where = ["src"]
44
+
45
+ [tool.pytest.ini_options]
46
+ testpaths = ["tests"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ """PeerFold — local PDF review with standard highlight annotations."""
2
+
3
+ __version__ = "0.1.3"
@@ -0,0 +1,3 @@
1
+ from peerfold.cli import main
2
+
3
+ main()
@@ -0,0 +1,39 @@
1
+ """PeerFold command-line interface."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import argparse
6
+ import os
7
+ from pathlib import Path
8
+
9
+ from peerfold import __version__
10
+ from peerfold.core import run_server
11
+
12
+
13
+ def main() -> None:
14
+ ap = argparse.ArgumentParser(
15
+ prog="peerfold",
16
+ description="Review PDFs in the browser. Highlights are standard PDF annotations.",
17
+ )
18
+ ap.add_argument("pdf", type=Path, help="PDF to review")
19
+ ap.add_argument(
20
+ "--reviewer",
21
+ "-r",
22
+ default=os.environ.get("PEERFOLD_REVIEWER", os.environ.get("REVIEW_VIEWER", "rev")),
23
+ help="Short annotator name (default: $PEERFOLD_REVIEWER or 'rev')",
24
+ )
25
+ ap.add_argument("--port", type=int, default=0, help="Local port (default: ephemeral)")
26
+ ap.add_argument("--no-browser", action="store_true", help="Do not open a browser tab")
27
+ ap.add_argument("--version", action="version", version=f"peerfold {__version__}")
28
+ args = ap.parse_args()
29
+
30
+ run_server(
31
+ args.pdf,
32
+ reviewer=args.reviewer,
33
+ port=args.port,
34
+ open_browser=not args.no_browser,
35
+ )
36
+
37
+
38
+ if __name__ == "__main__":
39
+ main()