Metadata-Version: 2.4
Name: pelican-ipynb-reader
Version: 0.1.0
Summary: Static, non-executing Jupyter Notebook reader for Pelican
Home-page: https://github.com/nekrasovp/pelican-jupyter
Author: Daniel Rodriguez and contributors
License: Apache-2.0
Project-URL: Source, https://github.com/nekrasovp/pelican-jupyter
Project-URL: Issues, https://github.com/nekrasovp/pelican-jupyter/issues
Project-URL: Upstream, https://github.com/danielfrg/pelican-jupyter
Keywords: pelican,jupyter,notebook,reader,static-site
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: Pelican
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10,<3.14
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: pelican<5,>=4.10.2
Requires-Dist: nbconvert<8,>=7.16.6
Requires-Dist: nbformat<6,>=5.10.4
Requires-Dist: markdown<4,>=3.6
Requires-Dist: jinja2<4,>=3.1.4
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: toml; extra == "test"
Provides-Extra: dev
Requires-Dist: build; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: flake8-bugbear; extra == "dev"
Requires-Dist: isort; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: pyyaml; extra == "dev"
Requires-Dist: setuptools; extra == "dev"
Requires-Dist: setuptools-scm<10,>=8; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: uv; extra == "dev"
Requires-Dist: wheel; extra == "dev"
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# pelican-ipynb-reader

`pelican-ipynb-reader` is an independently maintained, static `.ipynb` reader
for Pelican. Its source repository is a public successor-maintenance fork of
[`danielfrg/pelican-jupyter`](https://github.com/danielfrg/pelican-jupyter).
The archived upstream history and Apache-2.0 attribution are preserved. This
distribution is not endorsed by the upstream author or the Pelican project.

## Project status

Version `0.1.0` is the first supported independent release. It converts
outputs already committed in notebooks and never executes cells or starts a
kernel. Install the independent distribution:

```sh
python -m pip install pelican-ipynb-reader==0.1.0
```

The source remains at
[`nekrasovp/pelican-jupyter`](https://github.com/nekrasovp/pelican-jupyter)
to preserve the visible GitHub fork relationship and existing immutable commit
links. The distribution name is intentionally separate from the historical
`pelican-jupyter` project on PyPI. This project does not claim that historical
name or access to it. See the
[independent identity decision](docs/decisions/0002-independent-distribution.md).

Current public project documents:

- [provenance and license](docs/PROVENANCE.md);
- [first-release contract](docs/FIRST_RELEASE_CONTRACT.md);
- [legacy-feature inventory](docs/LEGACY_FEATURE_INVENTORY.md);
- [governance](GOVERNANCE.md) and [contribution boundary](CONTRIBUTING.md);
- [repository settings snapshot](docs/REPOSITORY_SNAPSHOT.md);
- [PLUGIN-003 release-candidate evidence](docs/RELEASE_CANDIDATE.md);
- [release policy](RELEASE.md);
- [public roadmap](docs/ROADMAP.md).

The PLUGIN-002 direct reader is merged. PLUGIN-003 added an independent
publication-completeness gate, hosted compatibility matrix, synthetic
fixtures, artifact inspection, and external 11-notebook evidence. The
independent identity decision and release gates turn that accepted evidence
into the supported `0.1.0` distribution.

## First-release direction

The planned first release is a static Pelican reader for direct `.ipynb`
article sources with adjacent `.nbdata` metadata. It converts outputs already
committed in notebooks and never executes cells or starts a kernel. The
[first-release contract](docs/FIRST_RELEASE_CONTRACT.md) is the authoritative,
self-contained scope for implementation and acceptance.

Liquid-tag embedding, Python 2, IPython 1.x fallbacks, nbconvert 5, and
arbitrary historical templates are outside that release. They must not be
treated as supported merely because their legacy code remains in this fork.

## Usage

The implementation lives at `pelican.plugins.ipynb_reader` and registers an
`IPYNBReader` through Pelican's `readers_init` signal. Load it explicitly:

```python
MARKUP = ("ipynb",)
PLUGINS = ["pelican.plugins.ipynb_reader"]
```

For `content/example.ipynb`, create adjacent `content/example.nbdata` metadata:

```text
Title: Synthetic Notebook
Date: 2026-07-21
Slug: synthetic-notebook
Tags: notebooks, synthetic
Category: Examples
```

The reader settings, stable metadata, failure model, and no-execution boundary
are documented in [the direct-reader contract](docs/DIRECT_READER.md).

## Historical upstream usage

The archived project exposed two modes:

1. a direct `.ipynb` Pelican reader with adjacent `.nbdata` or metadata in the
   first notebook cell; and
2. Liquid-tag embedding of notebooks inside Markdown content.

The original configuration included settings such as `Subcells`,
`IPYNB_NB_SAVE_AS`, `IPYNB_GENERATE_SUMMARY`, `IPYNB_PREPROCESSORS`, and custom
nbconvert templates. These names are recorded for migration analysis in the
[legacy-feature inventory](docs/LEGACY_FEATURE_INVENTORY.md); they are not a
successor compatibility promise.

For historical source and instructions, consult the
[archived upstream repository](https://github.com/danielfrg/pelican-jupyter).
Installing `pelican-jupyter` from PyPI installs the historical distribution,
not `pelican-ipynb-reader`.

## License

The upstream history and attribution are preserved. The repository remains
licensed under the Apache License 2.0; see [LICENSE.txt](LICENSE.txt) and the
[provenance note](docs/PROVENANCE.md).
