Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
e6c5c1f
chore(plan): disallow main or master work
lmeyerov Dec 1, 2025
0fbd280
feat(graphviz): add plot_static and render args with tests
lmeyerov Dec 1, 2025
fdbd5a1
ci(docs): build sphinx image with graphviz
lmeyerov Dec 1, 2025
ff8b490
docs(graphviz): enable sphinx directive and embed static examples
lmeyerov Dec 1, 2025
36c8f08
feat(graphviz): add dot/mermaid engines to plot_static
lmeyerov Dec 1, 2025
130c71e
docs(graphviz): add dot/mermaid examples across rst/md
lmeyerov Dec 1, 2025
b5dcd9c
chore(changelog): note graphviz static rendering work
lmeyerov Dec 1, 2025
28907cb
docs(graphviz): add small graphviz diagrams to overview/quick/ecosyst…
lmeyerov Dec 1, 2025
eafe3ef
fix(docs): guard mermaid and tidy docstrings for pdf build
lmeyerov Dec 1, 2025
8e38f1c
ci(docs): allow latexpdf DOCS_FORMAT
lmeyerov Dec 1, 2025
2a694f4
Revert "ci(docs): allow latexpdf DOCS_FORMAT"
lmeyerov Dec 1, 2025
65939b3
fix(docs): clean ASTLet and spanner docstrings for RTD
lmeyerov Dec 1, 2025
f275b92
fix(docs): normalize indentation for ast and gfql_validation
lmeyerov Dec 1, 2025
566b158
fix(docs): correct indentation in AST.__call__/reverse
lmeyerov Dec 1, 2025
5c7ca51
docs(rtd): exclude problematic memgraph and hop notebooks
lmeyerov Dec 1, 2025
e4e46a6
fix(docs): clean demo notebooks and reinclude in build
lmeyerov Dec 1, 2025
fb0f1c1
fix(tests): dedupe static graphviz/mermaid cases
lmeyerov Dec 1, 2025
69caf94
docs(memgraph): use raw.githubusercontent.com for IAM screenshots
lmeyerov Dec 2, 2025
2a70d14
fix(docs): clean memgraph notebook and docstrings for rtd
lmeyerov Dec 2, 2025
b8d4ec6
chore(docs): clarify docs build call and graphviz render note
lmeyerov Dec 4, 2025
ca8f932
fix(ast): restore _validate_fields indentation
lmeyerov Dec 4, 2025
c53a5a5
chore(ast): restore upstream formatting after rebase
lmeyerov Dec 4, 2025
eed86af
fix(docs): make ci.sh path-agnostic for CI
lmeyerov Dec 4, 2025
a350e43
chore(docs): guard graphviz build when dot missing
lmeyerov Dec 4, 2025
de233cb
fix(docs): avoid graphviz map file when dot missing
lmeyerov Dec 4, 2025
752724b
fix(docs): set graphviz format per builder and pdf-safe placeholder
lmeyerov Dec 4, 2025
23fb635
fix(docs): use real pdf placeholder when dot missing
lmeyerov Dec 4, 2025
1bac50b
fix(docs): switch RTD from commands to jobs to enable apt_packages
lmeyerov Dec 4, 2025
ea70584
fix(docs): add sphinx config key to RTD for proper install ordering
lmeyerov Dec 4, 2025
af028dc
chore(docs): add warning when graphviz placeholder is triggered
lmeyerov Dec 4, 2025
8ea5be4
fix(docs): remove graphviz placeholder shim - fail hard if dot missing
lmeyerov Dec 4, 2025
50cf767
docs(changelog): document RTD graphviz fix
lmeyerov Dec 4, 2025
29f41de
fix(docs): use svg:img for graphviz to fix rendering in browsers
lmeyerov Dec 4, 2025
ee323c7
fix(docs): revert to svg format (svg:img not supported in Sphinx 8.0)
lmeyerov Dec 4, 2025
1c0422e
docs(plan): add PR split strategy for safe work preservation
lmeyerov Dec 4, 2025
94dfdb0
refactor(docs): trim to minimal graphviz proof-of-work examples
lmeyerov Dec 5, 2025
a2cd74f
chore: trigger RTD rebuild after fixing backup tag name
lmeyerov Dec 5, 2025
6262dc8
chore: trigger RTD rebuild after removing backup tag
lmeyerov Dec 5, 2025
7f26afb
docs(plan): update Phase 4 status - PR split complete
lmeyerov Dec 5, 2025
15f8cb5
feat(plot_static): auto-display SVG/PNG in Jupyter notebooks
lmeyerov Dec 5, 2025
8242989
docs: add plot_static demo notebook with RTD execution
lmeyerov Dec 5, 2025
79ace9b
fix(docs): handle missing pygraphviz in plot_static demo notebook
lmeyerov Dec 5, 2025
85243e1
fix(docs): add pygraphviz to RTD for live notebook execution
lmeyerov Dec 5, 2025
8de5932
docs: add plot_static_demo notebook to toctree for RTD execution
lmeyerov Dec 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 30 additions & 26 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,50 +10,54 @@ build:
tools:
python: "3.12"
apt_packages:
# System dependencies - now works because we use jobs instead of commands
# More closely mirror https://github.com/sphinx-doc/sphinx-docker-images
- graphviz
- graphviz-dev # Headers for pygraphviz compilation
- imagemagick
- make
- pandoc
- texlive-latex-base
- texlive-latex-recommended
- texlive-latex-extra
- texlive-fonts-recommended
commands:
jobs:
post_install:
# Copy content into docs/source after pip install
- cp -r demos docs/source/demos
- cp README.md docs/source/README.md
- cp ARCHITECTURE.md docs/source/ARCHITECTURE.md
- cp CONTRIBUTING.md docs/source/CONTRIBUTING.md
- cp DEVELOP.md docs/source/DEVELOP.md
build:
html:
- sphinx-build -b html -d docs/doctrees docs/source $READTHEDOCS_OUTPUT/html/
epub:
- sphinx-build -b epub -d docs/doctrees docs/source docs/_build/epub
- mkdir -p $READTHEDOCS_OUTPUT/epub
- cp docs/_build/epub/PyGraphistry.epub $READTHEDOCS_OUTPUT/epub/PyGraphistry.epub
pdf:
# Build LaTeX then run pdflatex 3 times to resolve cross-references
- sphinx-build -b latex -d docs/doctrees docs/source docs/_build/latexpdf
- cd docs/_build/latexpdf && pdflatex -file-line-error -interaction=nonstopmode PyGraphistry.tex
- cd docs/_build/latexpdf && pdflatex -file-line-error -interaction=nonstopmode PyGraphistry.tex
- cd docs/_build/latexpdf && pdflatex -file-line-error -interaction=nonstopmode PyGraphistry.tex
- mkdir -p $READTHEDOCS_OUTPUT/pdf
- cp docs/_build/latexpdf/PyGraphistry.pdf $READTHEDOCS_OUTPUT/pdf/PyGraphistry.pdf

# setup
- pip install ".[docs]"
- cp -r demos docs/source/demos
- cp README.md docs/source/README.md
- cp ARCHITECTURE.md docs/source/ARCHITECTURE.md
- cp CONTRIBUTING.md docs/source/CONTRIBUTING.md
- cp DEVELOP.md docs/source/DEVELOP.md

# build html
- sphinx-build -b html -d docs/doctrees docs/source $READTHEDOCS_OUTPUT/html/

# build epub
- sphinx-build -b epub -d docs/doctrees docs/source docs/_build/latexpdf
- mkdir -p $READTHEDOCS_OUTPUT/epub
- cp docs/_build/latexpdf/PyGraphistry.epub $READTHEDOCS_OUTPUT/epub/PyGraphistry.epub

# build pdf - run pdflatex 3 times to resolve cross-references
- sphinx-build -b latex -d docs/doctrees docs/source docs/_build/latexpdf
- cd docs/_build/latexpdf && pdflatex -file-line-error -interaction=nonstopmode PyGraphistry.tex
- cd docs/_build/latexpdf && pdflatex -file-line-error -interaction=nonstopmode PyGraphistry.tex
- cd docs/_build/latexpdf && pdflatex -file-line-error -interaction=nonstopmode PyGraphistry.tex
- mkdir -p $READTHEDOCS_OUTPUT/pdf
- cp docs/_build/latexpdf/PyGraphistry.pdf $READTHEDOCS_OUTPUT/pdf/PyGraphistry.pdf

#for nav links?
formats:
- pdf
- epub
- htmlzip

# sphinx key triggers RTD's Sphinx support for environment/install steps
sphinx:
configuration: docs/source/conf.py

python:
install:
- method: pip
path: .
extra_requirements:
- docs
- pygraphviz # For plot_static() notebook execution
19 changes: 9 additions & 10 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,22 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
## [Development]
<!-- Do Not Erase This Section - Used for tracking unreleased changes -->

### Added
- **Layouts / Graphviz**: `plot_static` now supports engines `graphviz-svg/png`, `graphviz-dot`, and `mermaid-code`, honoring `reuse_layout` for bound positions and optional file outputs; Graphviz render accepts passthrough args/positions for consistent layouts.

### Fixed
- **GFQL:** `Chain` now validates on construction (matching docs) and rejects invalid hops immediately; pass `validate=False` to defer validation when assembling advanced flows (fixes #860).
- **GFQL / eq:** `eq()` now accepts strings in addition to numeric/temporal values (use `isna()`/`notna()` for nulls); added coverage across validator, schema validation, JSON, and GFQL runtime (fixes #862).

### Docs
- **GFQL validation:** Clarified `Chain` constructor validation defaults, `validate=False` defer option, validation phases, and guidance for large/nested ASTs to reduce redundant validation (issue #860).
- **Graphviz**: Enabled `sphinx.ext.graphviz`, allowed rstcheck `graphviz` directive, and added static Graphviz + DOT/Mermaid examples across 10min, visualization 10min, GFQL spec (MyST), and the Graphviz demo notebook (uses `plot_static` inline). Docs Docker image now installs graphviz/pygraphviz/gcc and `docs/ci.sh` builds only the sphinx service.
- **RTD**: Fixed graphviz on Read the Docs by switching from `build.commands` to `build.jobs` (RTD's `apt_packages` is incompatible with `commands`). Docs now fail fast with clear error if `dot` is missing.

## [0.46.0 - 2025-12-01]
### Tests
- **Graphviz**: Added coverage for `plot_static` DOT/Mermaid engines and position reuse.

### Added
- **Plot: Geographic visualization support with Kepler.gl integration** (#799)
* New bindings: `point_longitude` and `point_latitude` for specifying geographic coordinates
* Kepler.gl encoding methods: `encode_kepler()`, `encode_kepler_dataset()`, `encode_kepler_layer()`, `encode_kepler_options()`, `encode_kepler_config()`
* Configuration classes: `KeplerEncoding`, `KeplerDataset`, `KeplerLayer`, `KeplerOptions`, `KeplerConfig`
* `mercator_layout()` - Convert lat/lon to Mercator projection with GPU/CPU support
* Comprehensive user guide and API documentation
* Added 55 tests in `test_kepler.py` and 6 tests in `test_layout.py`
### Infra
- **AI / Planning**: Plan template now forbids working directly on `main`/`master`.

## [0.45.10 - 2025-11-19]

Expand Down
4 changes: 2 additions & 2 deletions ai/prompts/PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@
**Branch Strategy**: [How branches will be organized]
**PR/Branch Stack**: [If stacked PRs, list order: PR#123 (branch-1) → PR#124 (branch-2)]
**Merge Order**: [Order to merge if multiple PRs]
**Note**: Track branch/PR per phase as they may change (e.g., rebase flows)
**Note**: Track branch/PR per phase as they may change (e.g., rebase flows). Do **not** work on `main`/`master`; create/use a branch that follows this repo’s naming convention and fits the task (e.g., `feat/...`, `fix/...`, or repo-specific dev/staging patterns).

## Status Legend
- 📝 **TODO**: Not started
Expand Down Expand Up @@ -238,4 +238,4 @@ Every ~20 completed phases:

---
*Plan created: [date]*
*Last updated: [date]*
*Last updated: [date]*
Loading
Loading