pretty-notebook 0.10.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 (134) hide show
  1. pretty_notebook-0.10.0/LICENSE +22 -0
  2. pretty_notebook-0.10.0/PKG-INFO +77 -0
  3. pretty_notebook-0.10.0/README.md +51 -0
  4. pretty_notebook-0.10.0/docs/pnbp.md +56 -0
  5. pretty_notebook-0.10.0/pyproject.toml +61 -0
  6. pretty_notebook-0.10.0/setup.cfg +4 -0
  7. pretty_notebook-0.10.0/src/pnbp/__init__.py +2 -0
  8. pretty_notebook-0.10.0/src/pnbp/_icons.py +5 -0
  9. pretty_notebook-0.10.0/src/pnbp/_identities.py +5 -0
  10. pretty_notebook-0.10.0/src/pnbp/_journal.py +5 -0
  11. pretty_notebook-0.10.0/src/pnbp/_links.py +5 -0
  12. pretty_notebook-0.10.0/src/pnbp/_moves.py +5 -0
  13. pretty_notebook-0.10.0/src/pnbp/_navigation.py +5 -0
  14. pretty_notebook-0.10.0/src/pnbp/_publication_execute.py +5 -0
  15. pretty_notebook-0.10.0/src/pnbp/_publication_plan.py +5 -0
  16. pretty_notebook-0.10.0/src/pnbp/_publication_state.py +5 -0
  17. pretty_notebook-0.10.0/src/pnbp/_publishing.py +5 -0
  18. pretty_notebook-0.10.0/src/pnbp/_rendering.py +5 -0
  19. pretty_notebook-0.10.0/src/pnbp/_routes.py +5 -0
  20. pretty_notebook-0.10.0/src/pnbp/_search.py +5 -0
  21. pretty_notebook-0.10.0/src/pnbp/_storage.py +5 -0
  22. pretty_notebook-0.10.0/src/pnbp/cli.py +5 -0
  23. pretty_notebook-0.10.0/src/pnbp/commands/__init__.py +2 -0
  24. pretty_notebook-0.10.0/src/pnbp/commands/code.py +5 -0
  25. pretty_notebook-0.10.0/src/pnbp/commands/collect.py +5 -0
  26. pretty_notebook-0.10.0/src/pnbp/commands/commit.py +5 -0
  27. pretty_notebook-0.10.0/src/pnbp/commands/correct.py +5 -0
  28. pretty_notebook-0.10.0/src/pnbp/commands/deploy.py +5 -0
  29. pretty_notebook-0.10.0/src/pnbp/commands/graph.py +5 -0
  30. pretty_notebook-0.10.0/src/pnbp/commands/pprint.py +5 -0
  31. pretty_notebook-0.10.0/src/pnbp/commands/subl.py +5 -0
  32. pretty_notebook-0.10.0/src/pnbp/commands/tasks.py +5 -0
  33. pretty_notebook-0.10.0/src/pnbp/helpers/__init__.py +2 -0
  34. pretty_notebook-0.10.0/src/pnbp/helpers/_datetime.py +5 -0
  35. pretty_notebook-0.10.0/src/pnbp/helpers/wrappers.py +5 -0
  36. pretty_notebook-0.10.0/src/pnbp/models/__init__.py +2 -0
  37. pretty_notebook-0.10.0/src/pnbp/models/components/__init__.py +2 -0
  38. pretty_notebook-0.10.0/src/pnbp/models/components/codeblock.py +5 -0
  39. pretty_notebook-0.10.0/src/pnbp/models/components/component.py +5 -0
  40. pretty_notebook-0.10.0/src/pnbp/models/components/link.py +5 -0
  41. pretty_notebook-0.10.0/src/pnbp/models/components/tag.py +5 -0
  42. pretty_notebook-0.10.0/src/pnbp/models/components/url.py +5 -0
  43. pretty_notebook-0.10.0/src/pnbp/models/note.py +5 -0
  44. pretty_notebook-0.10.0/src/pnbp/models/notebook.py +5 -0
  45. pretty_notebook-0.10.0/src/pnbp/settings.py +5 -0
  46. pretty_notebook-0.10.0/src/pretty_notebook/__init__.py +7 -0
  47. pretty_notebook-0.10.0/src/pretty_notebook/_internal/__init__.py +1 -0
  48. pretty_notebook-0.10.0/src/pretty_notebook/_internal/deployment.py +184 -0
  49. pretty_notebook-0.10.0/src/pretty_notebook/_internal/icons.py +51 -0
  50. pretty_notebook-0.10.0/src/pretty_notebook/_internal/identities.py +295 -0
  51. pretty_notebook-0.10.0/src/pretty_notebook/_internal/journal.py +305 -0
  52. pretty_notebook-0.10.0/src/pretty_notebook/_internal/links.py +187 -0
  53. pretty_notebook-0.10.0/src/pretty_notebook/_internal/moves.py +168 -0
  54. pretty_notebook-0.10.0/src/pretty_notebook/_internal/navigation.py +242 -0
  55. pretty_notebook-0.10.0/src/pretty_notebook/_internal/publication_execute.py +125 -0
  56. pretty_notebook-0.10.0/src/pretty_notebook/_internal/publication_plan.py +296 -0
  57. pretty_notebook-0.10.0/src/pretty_notebook/_internal/publication_state.py +111 -0
  58. pretty_notebook-0.10.0/src/pretty_notebook/_internal/publishing.py +447 -0
  59. pretty_notebook-0.10.0/src/pretty_notebook/_internal/rendering.py +163 -0
  60. pretty_notebook-0.10.0/src/pretty_notebook/_internal/routes.py +82 -0
  61. pretty_notebook-0.10.0/src/pretty_notebook/_internal/search.py +113 -0
  62. pretty_notebook-0.10.0/src/pretty_notebook/_internal/storage.py +271 -0
  63. pretty_notebook-0.10.0/src/pretty_notebook/appearance.py +63 -0
  64. pretty_notebook-0.10.0/src/pretty_notebook/cli.py +533 -0
  65. pretty_notebook-0.10.0/src/pretty_notebook/commands/__init__.py +0 -0
  66. pretty_notebook-0.10.0/src/pretty_notebook/commands/code.py +173 -0
  67. pretty_notebook-0.10.0/src/pretty_notebook/commands/collect.py +249 -0
  68. pretty_notebook-0.10.0/src/pretty_notebook/commands/commit.py +281 -0
  69. pretty_notebook-0.10.0/src/pretty_notebook/commands/correct.py +234 -0
  70. pretty_notebook-0.10.0/src/pretty_notebook/commands/deploy.py +63 -0
  71. pretty_notebook-0.10.0/src/pretty_notebook/commands/graph.py +189 -0
  72. pretty_notebook-0.10.0/src/pretty_notebook/commands/pprint.py +81 -0
  73. pretty_notebook-0.10.0/src/pretty_notebook/commands/subl.py +75 -0
  74. pretty_notebook-0.10.0/src/pretty_notebook/commands/tasks.py +323 -0
  75. pretty_notebook-0.10.0/src/pretty_notebook/helpers/__init__.py +2 -0
  76. pretty_notebook-0.10.0/src/pretty_notebook/helpers/_datetime.py +26 -0
  77. pretty_notebook-0.10.0/src/pretty_notebook/helpers/wrappers.py +77 -0
  78. pretty_notebook-0.10.0/src/pretty_notebook/models/__init__.py +4 -0
  79. pretty_notebook-0.10.0/src/pretty_notebook/models/components/__init__.py +13 -0
  80. pretty_notebook-0.10.0/src/pretty_notebook/models/components/codeblock.py +123 -0
  81. pretty_notebook-0.10.0/src/pretty_notebook/models/components/component.py +79 -0
  82. pretty_notebook-0.10.0/src/pretty_notebook/models/components/link.py +252 -0
  83. pretty_notebook-0.10.0/src/pretty_notebook/models/components/tag.py +72 -0
  84. pretty_notebook-0.10.0/src/pretty_notebook/models/components/url.py +104 -0
  85. pretty_notebook-0.10.0/src/pretty_notebook/models/note.py +504 -0
  86. pretty_notebook-0.10.0/src/pretty_notebook/models/notebook.py +633 -0
  87. pretty_notebook-0.10.0/src/pretty_notebook/resources/deploy/checkpoint.py.tmpl +42 -0
  88. pretty_notebook-0.10.0/src/pretty_notebook/resources/deploy/common.sh.tmpl +56 -0
  89. pretty_notebook-0.10.0/src/pretty_notebook/resources/deploy/environment.example.tmpl +10 -0
  90. pretty_notebook-0.10.0/src/pretty_notebook/resources/deploy/init.sh.tmpl +29 -0
  91. pretty_notebook-0.10.0/src/pretty_notebook/resources/deploy/nginx.conf.tmpl +33 -0
  92. pretty_notebook-0.10.0/src/pretty_notebook/resources/deploy/rollback.sh.tmpl +27 -0
  93. pretty_notebook-0.10.0/src/pretty_notebook/resources/deploy/service.tmpl +25 -0
  94. pretty_notebook-0.10.0/src/pretty_notebook/resources/deploy/upgrade.sh.tmpl +36 -0
  95. pretty_notebook-0.10.0/src/pretty_notebook/settings.py +422 -0
  96. pretty_notebook-0.10.0/src/pretty_notebook.egg-info/PKG-INFO +77 -0
  97. pretty_notebook-0.10.0/src/pretty_notebook.egg-info/SOURCES.txt +132 -0
  98. pretty_notebook-0.10.0/src/pretty_notebook.egg-info/dependency_links.txt +1 -0
  99. pretty_notebook-0.10.0/src/pretty_notebook.egg-info/entry_points.txt +2 -0
  100. pretty_notebook-0.10.0/src/pretty_notebook.egg-info/requires.txt +4 -0
  101. pretty_notebook-0.10.0/src/pretty_notebook.egg-info/top_level.txt +2 -0
  102. pretty_notebook-0.10.0/tests/test_appearance.py +49 -0
  103. pretty_notebook-0.10.0/tests/test_checked_publication_execution.py +306 -0
  104. pretty_notebook-0.10.0/tests/test_cleanup_contracts.py +108 -0
  105. pretty_notebook-0.10.0/tests/test_cli_collections.py +64 -0
  106. pretty_notebook-0.10.0/tests/test_code_extraction.py +173 -0
  107. pretty_notebook-0.10.0/tests/test_component_semantics.py +62 -0
  108. pretty_notebook-0.10.0/tests/test_config_contracts.py +158 -0
  109. pretty_notebook-0.10.0/tests/test_current_content.py +75 -0
  110. pretty_notebook-0.10.0/tests/test_deploy.py +174 -0
  111. pretty_notebook-0.10.0/tests/test_empty_sections.py +44 -0
  112. pretty_notebook-0.10.0/tests/test_favicon_client.py +104 -0
  113. pretty_notebook-0.10.0/tests/test_git_automation.py +188 -0
  114. pretty_notebook-0.10.0/tests/test_hash_publication_plans.py +235 -0
  115. pretty_notebook-0.10.0/tests/test_icons.py +56 -0
  116. pretty_notebook-0.10.0/tests/test_identities.py +281 -0
  117. pretty_notebook-0.10.0/tests/test_links.py +118 -0
  118. pretty_notebook-0.10.0/tests/test_lookup.py +63 -0
  119. pretty_notebook-0.10.0/tests/test_moves.py +311 -0
  120. pretty_notebook-0.10.0/tests/test_namespace.py +48 -0
  121. pretty_notebook-0.10.0/tests/test_navigation.py +262 -0
  122. pretty_notebook-0.10.0/tests/test_note_commands.py +170 -0
  123. pretty_notebook-0.10.0/tests/test_note_io.py +155 -0
  124. pretty_notebook-0.10.0/tests/test_note_state.py +95 -0
  125. pretty_notebook-0.10.0/tests/test_protected_text.py +118 -0
  126. pretty_notebook-0.10.0/tests/test_publication_eligibility.py +93 -0
  127. pretty_notebook-0.10.0/tests/test_publication_preflight.py +145 -0
  128. pretty_notebook-0.10.0/tests/test_publication_sync.py +327 -0
  129. pretty_notebook-0.10.0/tests/test_rendering.py +147 -0
  130. pretty_notebook-0.10.0/tests/test_routes.py +105 -0
  131. pretty_notebook-0.10.0/tests/test_search.py +120 -0
  132. pretty_notebook-0.10.0/tests/test_settings.py +300 -0
  133. pretty_notebook-0.10.0/tests/test_smoke.py +28 -0
  134. pretty_notebook-0.10.0/tests/test_tasks.py +143 -0
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 prettynb
4
+ Copyright (c) 2026 Outside Labs
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
@@ -0,0 +1,77 @@
1
+ Metadata-Version: 2.4
2
+ Name: pretty-notebook
3
+ Version: 0.10.0
4
+ Summary: Python tools for parsing and querying wiki-linked, tagged Markdown notebooks.
5
+ Author: prettynb
6
+ Maintainer: Outside Labs
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://outside-labs.com
9
+ Project-URL: Repository, https://github.com/outside-labs/pretty-notebook
10
+ Project-URL: Documentation, https://github.com/outside-labs/pretty-notebook/tree/v0.10.0/docs
11
+ Project-URL: Issues, https://github.com/outside-labs/pretty-notebook/issues
12
+ Keywords: markdown,notes,wikilinks,knowledge-management
13
+ Requires-Python: >=3.11
14
+ Description-Content-Type: text/markdown
15
+ License-File: LICENSE
16
+ Requires-Dist: click>=8.0
17
+ Requires-Dist: markdown>=3.3.4
18
+ Requires-Dist: requests>=2.26
19
+ Requires-Dist: rich>=10.6
20
+ Dynamic: license-file
21
+
22
+ # Pretty Notebook package
23
+
24
+ Pretty Notebook is a Python library and command-line interface for interconnected
25
+ Markdown notebooks. A notebook is an existing directory of Markdown files;
26
+ a note is one source file. Wiki links, tags, code blocks and URLs have explicit
27
+ models, while ordinary Markdown remains the authoritative content.
28
+
29
+ ## Choose a version
30
+
31
+ The 0.10 release is `pretty-notebook==0.10.0` on Python 3.11 or newer.
32
+ It supplies canonical `pretty_notebook` imports, compatible `pnbp` imports,
33
+ and the `pnbp` executable.
34
+
35
+ ```sh
36
+ python -m pip uninstall pnbp
37
+ python -m pip install pretty-notebook==0.10.0
38
+ pnbp --help
39
+ ```
40
+
41
+ Uninstall the old distribution before installing the release to preserve the
42
+ compatibility modules. See [package migration](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/package-migration.md) and
43
+ [0.10 release notes](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/release-0.10.0.md). The historical stable package is
44
+ `pnbp==0.9.0`; its versioned [release notes](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/release-0.9.0.md) retain that contract.
45
+
46
+ For source development, install the checkout with
47
+ `python -m pip install --editable .`.
48
+
49
+ ## First notebook and existing notebooks
50
+
51
+ Follow the [notebook workflow tutorial](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/tutorials.md) for a temporary notebook,
52
+ initialization, pending edits, checked renames, search and navigation. Its local
53
+ examples are executed by the documentation build.
54
+
55
+ ```python
56
+ from pretty_notebook import Notebook
57
+
58
+ nb = Notebook.open("~/notes", settings={"NOTE_NESTED": "recurs"})
59
+ note = nb.get("guides/overview", fuzzy=False)
60
+ ```
61
+
62
+ The path must already exist. Opening reads files without prompting or creating
63
+ configuration. Initialize deliberately with `pnbp init PATH`; see the canonical
64
+ [settings and profile guide](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/settings.md) for precedence, migration and credentials.
65
+ `Notebook()` continues to use `NOTE_PATH` for existing environment-based setups.
66
+
67
+ ## Continue by topic
68
+
69
+ - [Note commands and pending edits](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/editing.md): add/edit, empty bodies, saves and recovery drafts.
70
+ - [Models and methods](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/pnbp_models.md) and [generated API reference](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/reference.md): public imports and signatures.
71
+ - [Local search](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/local-search.md), [navigation](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/navigation.md) and [links](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/links.md): read-only projections and explicit traversal.
72
+ - [Stable identities](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/identities.md) and [publication routes](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/routes.md): identity, source paths and URLs remain separate.
73
+ - [Checked publishing](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/checked-publishing.md): dry-run plans, ETags, retries and explicit pruning.
74
+ - [Web deployment](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/web.md): separate application, bootstrap, durable state and the supported local-host worker profile.
75
+
76
+ The macOS URL handlers are [unsupported](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/pnano.md). The FastAPI app and its
77
+ optional dependencies are absent from the `pnbp` wheel.
@@ -0,0 +1,51 @@
1
+ # Pretty-Notebook
2
+
3
+ A Python toolkit for interconnected Markdown notebooks. The repository also
4
+ contains a FastAPI publisher with a constrained public-deployment profile.
5
+
6
+ The `0.10.0` release supports the `pretty_notebook` Python package and its `pnbp`
7
+ command-line interface on Python 3.11 or newer:
8
+
9
+ ```bash
10
+ python -m pip install --upgrade pip
11
+ python -m pip install pretty-notebook==0.10.0
12
+ ```
13
+
14
+ The repository supports the `apps/web` publisher as one Gunicorn instance with up to four workers,
15
+ one local SQLite database and one owning notebook behind a TLS reverse proxy. Read the
16
+ deployment contract and security boundaries before exposing it publicly. The
17
+ macOS URL handlers remain unsupported.
18
+
19
+ [Documentation index](docs/index.md) · [Workflow tutorial](docs/tutorials.md) · [0.10.0 release notes](docs/release-0.10.0.md) · [Web deployment](docs/web.md) · [Development roadmap](docs/roadmap.md)
20
+
21
+ The current release is `pretty-notebook==0.10.0`. It includes settings/profiles,
22
+ identities, checked publication, search/navigation, reference-style appearance
23
+ preferences and coordinated worker deployments. Upgrade an old installation:
24
+
25
+ ```sh
26
+ python -m pip uninstall pnbp
27
+ python -m pip install pretty-notebook==0.10.0
28
+ ```
29
+
30
+ The final `pnbp==0.10.0` distribution installs the canonical package and contains
31
+ no implementation modules. [0.10 release notes](docs/release-0.10.0.md) and
32
+ [versions/support](docs/versions.md) define the supported scope. Tagged GitHub
33
+ documentation is the release reference; hosted documentation remains separate.
34
+
35
+ New code uses `from pretty_notebook import Notebook, Note`; existing `pnbp`
36
+ imports and the `pnbp` executable remain compatible. See the
37
+ [package migration](docs/package-migration.md) before upgrading old installations.
38
+
39
+ ```mermaid
40
+ graph BT
41
+ id1[(Notebook)]
42
+ id2[(Note)] --> id1
43
+ Link --> id2
44
+ Url --> id2
45
+ CodeBlock --> id2
46
+ Tag --> id2
47
+ ```
48
+
49
+ <p align=center>
50
+ <img src=https://raw.githubusercontent.com/outside-labs/pretty-notebook/main/docs/IMG_pnbp.png alt=Pretty-Notebook width=200>
51
+ </p>
@@ -0,0 +1,56 @@
1
+ # Pretty Notebook package
2
+
3
+ Pretty Notebook is a Python library and command-line interface for interconnected
4
+ Markdown notebooks. A notebook is an existing directory of Markdown files;
5
+ a note is one source file. Wiki links, tags, code blocks and URLs have explicit
6
+ models, while ordinary Markdown remains the authoritative content.
7
+
8
+ ## Choose a version
9
+
10
+ The 0.10 release is `pretty-notebook==0.10.0` on Python 3.11 or newer.
11
+ It supplies canonical `pretty_notebook` imports, compatible `pnbp` imports,
12
+ and the `pnbp` executable.
13
+
14
+ ```sh
15
+ python -m pip uninstall pnbp
16
+ python -m pip install pretty-notebook==0.10.0
17
+ pnbp --help
18
+ ```
19
+
20
+ Uninstall the old distribution before installing the release to preserve the
21
+ compatibility modules. See [package migration](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/package-migration.md) and
22
+ [0.10 release notes](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/release-0.10.0.md). The historical stable package is
23
+ `pnbp==0.9.0`; its versioned [release notes](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/release-0.9.0.md) retain that contract.
24
+
25
+ For source development, install the checkout with
26
+ `python -m pip install --editable .`.
27
+
28
+ ## First notebook and existing notebooks
29
+
30
+ Follow the [notebook workflow tutorial](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/tutorials.md) for a temporary notebook,
31
+ initialization, pending edits, checked renames, search and navigation. Its local
32
+ examples are executed by the documentation build.
33
+
34
+ ```python
35
+ from pretty_notebook import Notebook
36
+
37
+ nb = Notebook.open("~/notes", settings={"NOTE_NESTED": "recurs"})
38
+ note = nb.get("guides/overview", fuzzy=False)
39
+ ```
40
+
41
+ The path must already exist. Opening reads files without prompting or creating
42
+ configuration. Initialize deliberately with `pnbp init PATH`; see the canonical
43
+ [settings and profile guide](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/settings.md) for precedence, migration and credentials.
44
+ `Notebook()` continues to use `NOTE_PATH` for existing environment-based setups.
45
+
46
+ ## Continue by topic
47
+
48
+ - [Note commands and pending edits](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/editing.md): add/edit, empty bodies, saves and recovery drafts.
49
+ - [Models and methods](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/pnbp_models.md) and [generated API reference](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/reference.md): public imports and signatures.
50
+ - [Local search](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/local-search.md), [navigation](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/navigation.md) and [links](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/links.md): read-only projections and explicit traversal.
51
+ - [Stable identities](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/identities.md) and [publication routes](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/routes.md): identity, source paths and URLs remain separate.
52
+ - [Checked publishing](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/checked-publishing.md): dry-run plans, ETags, retries and explicit pruning.
53
+ - [Web deployment](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/web.md): separate application, bootstrap, durable state and the supported local-host worker profile.
54
+
55
+ The macOS URL handlers are [unsupported](https://github.com/outside-labs/pretty-notebook/blob/v0.10.0/docs/pnano.md). The FastAPI app and its
56
+ optional dependencies are absent from the `pnbp` wheel.
@@ -0,0 +1,61 @@
1
+ [build-system]
2
+ requires = ["setuptools>=77.0.3"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "pretty-notebook"
7
+ version = "0.10.0"
8
+ description = "Python tools for parsing and querying wiki-linked, tagged Markdown notebooks."
9
+ readme = "docs/pnbp.md"
10
+ requires-python = ">=3.11"
11
+ license = "MIT"
12
+ license-files = ["LICENSE"]
13
+
14
+ authors = [
15
+ { name = "prettynb" },
16
+ ]
17
+ maintainers = [
18
+ { name = "Outside Labs" },
19
+ ]
20
+
21
+ keywords = [
22
+ "markdown",
23
+ "notes",
24
+ "wikilinks",
25
+ "knowledge-management",
26
+ ]
27
+
28
+ dependencies = [
29
+ "click>=8.0",
30
+ "markdown>=3.3.4",
31
+ "requests>=2.26",
32
+ "rich>=10.6",
33
+ ]
34
+
35
+ [project.urls]
36
+ Homepage = "https://outside-labs.com"
37
+ Repository = "https://github.com/outside-labs/pretty-notebook"
38
+ Documentation = "https://github.com/outside-labs/pretty-notebook/tree/v0.10.0/docs"
39
+ Issues = "https://github.com/outside-labs/pretty-notebook/issues"
40
+
41
+ [project.scripts]
42
+ pnbp = "pretty_notebook.cli:cli"
43
+
44
+ [tool.setuptools]
45
+ package-dir = { "" = "src" }
46
+
47
+ [tool.setuptools.packages.find]
48
+ where = ["src"]
49
+ include = ["pretty_notebook*", "pnbp*"]
50
+ namespaces = false
51
+
52
+ [tool.setuptools.package-data]
53
+ pretty_notebook = ["resources/deploy/*.tmpl"]
54
+
55
+ [tool.pytest.ini_options]
56
+ addopts = ["-ra", "--strict-config", "--strict-markers"]
57
+ testpaths = ["tests"]
58
+ filterwarnings = [
59
+ "error",
60
+ "ignore:'crypt' is deprecated and slated for removal in Python 3.13:DeprecationWarning:passlib\\.utils",
61
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,2 @@
1
+ """Compatibility exports; prefer pretty_notebook."""
2
+ from pretty_notebook import * # noqa: F403
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.icons."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.icons")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.identities."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.identities")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.journal."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.journal")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.links."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.links")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.moves."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.moves")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.navigation."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.navigation")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.publication_execute."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.publication_execute")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.publication_plan."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.publication_plan")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.publication_state."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.publication_state")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.publishing."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.publishing")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.rendering."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.rendering")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.routes."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.routes")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.search."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.search")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook._internal.storage."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook._internal.storage")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.cli."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.cli")
@@ -0,0 +1,2 @@
1
+ """Compatibility exports; prefer pretty_notebook.commands."""
2
+ from pretty_notebook.commands import * # noqa: F403
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.commands.code."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.commands.code")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.commands.collect."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.commands.collect")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.commands.commit."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.commands.commit")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.commands.correct."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.commands.correct")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.commands.deploy."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module('pretty_notebook.commands.deploy')
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.commands.graph."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.commands.graph")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.commands.pprint."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.commands.pprint")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.commands.subl."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.commands.subl")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.commands.tasks."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.commands.tasks")
@@ -0,0 +1,2 @@
1
+ """Compatibility exports; prefer pretty_notebook.helpers."""
2
+ from pretty_notebook.helpers import * # noqa: F403
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.helpers._datetime."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.helpers._datetime")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.helpers.wrappers."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.helpers.wrappers")
@@ -0,0 +1,2 @@
1
+ """Compatibility exports; prefer pretty_notebook.models."""
2
+ from pretty_notebook.models import * # noqa: F403
@@ -0,0 +1,2 @@
1
+ """Compatibility exports; prefer pretty_notebook.models.components."""
2
+ from pretty_notebook.models.components import * # noqa: F403
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.models.components.codeblock."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.models.components.codeblock")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.models.components.component."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.models.components.component")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.models.components.link."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.models.components.link")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.models.components.tag."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.models.components.tag")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.models.components.url."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.models.components.url")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.models.note."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.models.note")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.models.notebook."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.models.notebook")
@@ -0,0 +1,5 @@
1
+ """Compatibility alias; prefer pretty_notebook.settings."""
2
+ from importlib import import_module
3
+ import sys
4
+
5
+ sys.modules[__name__] = import_module("pretty_notebook.settings")
@@ -0,0 +1,7 @@
1
+ from .models import Notebook, Note
2
+ from .settings import NotebookSettings, SettingsError
3
+ from pretty_notebook._internal.identities import IdentityError
4
+ from pretty_notebook._internal.search import SearchHit
5
+ from pretty_notebook._internal.navigation import NavigationHistory, NavigationIndex
6
+
7
+ __all__ = ["Notebook", "Note", "NotebookSettings", "SettingsError", "IdentityError", "SearchHit", "NavigationIndex", "NavigationHistory"]
@@ -0,0 +1 @@
1
+ """Private implementation helpers; use the public package API."""