figpress 2026.10.28__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,8 @@
1
+ __pycache__/
2
+ *.egg-info/
3
+ dist/
4
+ build/
5
+ _site/
6
+ node_modules/
7
+ *.tgz
8
+ .DS_Store
@@ -0,0 +1,9 @@
1
+ # Changelog
2
+
3
+ Versions are dates: `vYYYY.MM.DD` (PyPI `YYYY.MM.DD`, npm `YYYYMMDD.0.0`), and `vYYYY.MM.DD.N` for
4
+ another release the same day.
5
+
6
+ ## 2026.10.28
7
+
8
+ First release: the family's website and the `figpress` package on PyPI and npm, listing
9
+ figpress-plotly and figpress-apps.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Nathaniel Starkman
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,54 @@
1
+ Metadata-Version: 2.5
2
+ Name: figpress
3
+ Version: 2026.10.28
4
+ Summary: The home of the figpress family: packages for the figures of scientific papers, in print and on the web.
5
+ Project-URL: Homepage, https://nstarkman.space/figpress/
6
+ Project-URL: Repository, https://github.com/nstarman/figpress
7
+ Author: Nathaniel Starkman
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: Topic :: Scientific/Engineering :: Visualization
13
+ Requires-Python: >=3.10
14
+ Description-Content-Type: text/markdown
15
+
16
+ # figpress
17
+
18
+ Packages for the figures of scientific papers: figures that go to press as print figures and to
19
+ the web as interactive ones.
20
+
21
+ The family's website, **<https://nstarkman.space/figpress/>**, lists every member with what it is
22
+ for and how to install it. The members today:
23
+
24
+ - **[figpress-plotly](https://github.com/nstarman/figpress-plotly)**: a paper's figures in Plotly.
25
+ One definition gives the print figure the paper publishes and a matching interactive web figure
26
+ that can do more. *Not released yet.*
27
+ - **[figpress-apps](https://github.com/nstarman/figpress-apps)**: interactive apps that are the
28
+ counterparts of a paper's figures, built from the paper's own data and published next to the
29
+ PDF. Formerly figkit. *Not released yet.*
30
+
31
+ This repository hosts the website and the small `figpress` package, on
32
+ [PyPI](https://pypi.org/project/figpress/) as `figpress` and on
33
+ [npm](https://www.npmjs.com/package/@nstarkman/figpress) as `@nstarkman/figpress`, which prints the
34
+ same list:
35
+
36
+ ```bash
37
+ pipx run figpress # or: uvx figpress
38
+ npx @nstarkman/figpress
39
+ ```
40
+
41
+ ## Developing
42
+
43
+ ```bash
44
+ python -m unittest discover -s tests # site, CLI, versions
45
+ node --test "tests/*.test.mjs" # npm CLI
46
+ python scripts/build_site.py # → _site/index.html
47
+ ```
48
+
49
+ The members are listed once, in [`family.json`](family.json); the website and both packages read
50
+ it. Releases are dated: see [AGENTS.md](AGENTS.md).
51
+
52
+ ## Licence
53
+
54
+ MIT.
@@ -0,0 +1,39 @@
1
+ # figpress
2
+
3
+ Packages for the figures of scientific papers: figures that go to press as print figures and to
4
+ the web as interactive ones.
5
+
6
+ The family's website, **<https://nstarkman.space/figpress/>**, lists every member with what it is
7
+ for and how to install it. The members today:
8
+
9
+ - **[figpress-plotly](https://github.com/nstarman/figpress-plotly)**: a paper's figures in Plotly.
10
+ One definition gives the print figure the paper publishes and a matching interactive web figure
11
+ that can do more. *Not released yet.*
12
+ - **[figpress-apps](https://github.com/nstarman/figpress-apps)**: interactive apps that are the
13
+ counterparts of a paper's figures, built from the paper's own data and published next to the
14
+ PDF. Formerly figkit. *Not released yet.*
15
+
16
+ This repository hosts the website and the small `figpress` package, on
17
+ [PyPI](https://pypi.org/project/figpress/) as `figpress` and on
18
+ [npm](https://www.npmjs.com/package/@nstarkman/figpress) as `@nstarkman/figpress`, which prints the
19
+ same list:
20
+
21
+ ```bash
22
+ pipx run figpress # or: uvx figpress
23
+ npx @nstarkman/figpress
24
+ ```
25
+
26
+ ## Developing
27
+
28
+ ```bash
29
+ python -m unittest discover -s tests # site, CLI, versions
30
+ node --test "tests/*.test.mjs" # npm CLI
31
+ python scripts/build_site.py # → _site/index.html
32
+ ```
33
+
34
+ The members are listed once, in [`family.json`](family.json); the website and both packages read
35
+ it. Releases are dated: see [AGENTS.md](AGENTS.md).
36
+
37
+ ## Licence
38
+
39
+ MIT.
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "figpress",
3
+ "about": "Packages for the figures of scientific papers: figures that go to press as print figures and to the web as interactive ones.",
4
+ "website": "https://nstarkman.space/figpress/",
5
+ "repository": "https://github.com/nstarman/figpress",
6
+ "members": [
7
+ {
8
+ "name": "figpress-plotly",
9
+ "purpose": "A paper's figures in Plotly: one definition gives the print figure the paper publishes and a matching interactive web figure that can do more.",
10
+ "repository": "https://github.com/nstarman/figpress-plotly",
11
+ "docs": "https://github.com/nstarman/figpress-plotly#readme",
12
+ "indexes": {
13
+ "pypi": "figpress-plotly",
14
+ "npm": "@nstarkman/figpress-plotly"
15
+ },
16
+ "released": false
17
+ },
18
+ {
19
+ "name": "figpress-apps",
20
+ "purpose": "Interactive apps that are the counterparts of a paper's figures, such as globes of viewing directions and linked sky panels, built from the paper's own data and published next to the PDF.",
21
+ "repository": "https://github.com/nstarman/figpress-apps",
22
+ "docs": "https://github.com/nstarman/figpress-apps#readme",
23
+ "indexes": {
24
+ "pypi": "figpress-apps",
25
+ "npm": "@nstarkman/figpress-apps"
26
+ },
27
+ "released": false,
28
+ "note": "Formerly figkit."
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,37 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.25"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "figpress"
7
+ dynamic = ["version"]
8
+ description = "The home of the figpress family: packages for the figures of scientific papers, in print and on the web."
9
+ readme = "README.md"
10
+ license = "MIT"
11
+ authors = [{ name = "Nathaniel Starkman" }]
12
+ requires-python = ">=3.10"
13
+ dependencies = []
14
+ classifiers = [
15
+ "Development Status :: 3 - Alpha",
16
+ "Intended Audience :: Science/Research",
17
+ "Topic :: Scientific/Engineering :: Visualization",
18
+ ]
19
+
20
+ [project.urls]
21
+ Homepage = "https://nstarkman.space/figpress/"
22
+ Repository = "https://github.com/nstarman/figpress"
23
+
24
+ [project.scripts]
25
+ figpress = "figpress.__main__:main"
26
+
27
+ [tool.hatch.version]
28
+ path = "src/figpress/__init__.py"
29
+
30
+ [tool.hatch.build.targets.wheel]
31
+ packages = ["src/figpress"]
32
+
33
+ [tool.hatch.build.targets.wheel.force-include]
34
+ "family.json" = "figpress/family.json"
35
+
36
+ [tool.hatch.build.targets.sdist]
37
+ include = ["src/figpress", "family.json", "README.md", "LICENSE", "CHANGELOG.md"]
@@ -0,0 +1,22 @@
1
+ """figpress: the home of a family of packages for the figures of scientific papers.
2
+
3
+ This package lists the family's members and points to its website; the members are separate
4
+ packages (``figpress-plotly``, ``figpress-apps``). ``python -m figpress`` prints the list.
5
+ """
6
+
7
+ import json
8
+ from importlib.resources import files
9
+ from pathlib import Path
10
+
11
+ __all__ = ("__version__", "family")
12
+
13
+ __version__ = "2026.10.28"
14
+
15
+
16
+ def family() -> dict:
17
+ """The family: what it is for, its website and its members (``family.json``)."""
18
+ bundled = files(__package__).joinpath("family.json")
19
+ if bundled.is_file(): # installed: shipped inside the package
20
+ return json.loads(bundled.read_text(encoding="utf-8"))
21
+ # Run from a checkout: the repository's own list.
22
+ return json.loads((Path(__file__).resolve().parents[2] / "family.json").read_text(encoding="utf-8"))
@@ -0,0 +1,20 @@
1
+ """``figpress`` / ``python -m figpress``: the family's members and its website."""
2
+
3
+ from figpress import __version__, family
4
+
5
+
6
+ def render(f: dict) -> str:
7
+ lines = [f"figpress {__version__}: {f['about']}", ""]
8
+ for m in f["members"]:
9
+ status = "" if m["released"] else " (not released yet)"
10
+ lines += [f" {m['name']}{status}", f" {m['purpose']}", f" {m['repository']}", ""]
11
+ lines.append(f"More: {f['website']}")
12
+ return "\n".join(lines)
13
+
14
+
15
+ def main() -> None:
16
+ print(render(family()))
17
+
18
+
19
+ if __name__ == "__main__":
20
+ main()