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.
- figpress-2026.10.28/.gitignore +8 -0
- figpress-2026.10.28/CHANGELOG.md +9 -0
- figpress-2026.10.28/LICENSE +21 -0
- figpress-2026.10.28/PKG-INFO +54 -0
- figpress-2026.10.28/README.md +39 -0
- figpress-2026.10.28/family.json +31 -0
- figpress-2026.10.28/pyproject.toml +37 -0
- figpress-2026.10.28/src/figpress/__init__.py +22 -0
- figpress-2026.10.28/src/figpress/__main__.py +20 -0
|
@@ -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()
|