sunpy-sphinx-theme 2.4.0__tar.gz → 2.5.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 (57) hide show
  1. sunpy_sphinx_theme-2.5.0/.codespellrc +2 -0
  2. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/PKG-INFO +6 -3
  3. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/conftest.py +3 -2
  4. sunpy_sphinx_theme-2.5.0/flake.nix +35 -0
  5. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/pyproject.toml +14 -3
  6. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/ruff.toml +2 -0
  7. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/tests/test_a11y.py +10 -0
  8. sunpy_sphinx_theme-2.5.0/src/sunpy_sphinx_theme/tests/test_screenshots.py +40 -0
  9. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme.egg-info/PKG-INFO +6 -3
  10. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme.egg-info/SOURCES.txt +2 -1
  11. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme.egg-info/requires.txt +6 -2
  12. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme.egg-info/scm_file_list.json +2 -1
  13. sunpy_sphinx_theme-2.5.0/src/sunpy_sphinx_theme.egg-info/scm_version.json +8 -0
  14. sunpy_sphinx_theme-2.4.0/_typos.toml +0 -25
  15. sunpy_sphinx_theme-2.4.0/flake.nix +0 -34
  16. sunpy_sphinx_theme-2.4.0/src/sunpy_sphinx_theme.egg-info/scm_version.json +0 -8
  17. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/.editorconfig +0 -0
  18. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/.readthedocs.yaml +0 -0
  19. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/.rtd-environment.yml +0 -0
  20. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/.stylelintrc.json +0 -0
  21. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/LICENSE.md +0 -0
  22. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/MANIFEST.in +0 -0
  23. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/README.md +0 -0
  24. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/package.json +0 -0
  25. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/setup.cfg +0 -0
  26. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/__init__.py +0 -0
  27. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/cards.py +0 -0
  28. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/conf.py +0 -0
  29. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/tests/__init__.py +0 -0
  30. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/tests/helpers.py +0 -0
  31. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/tests/sites/base/conf.py +0 -0
  32. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/tests/sites/base/index.rst +0 -0
  33. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/tests/sites/derived/conf.py +0 -0
  34. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/tests/sites/derived/index.rst +0 -0
  35. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/tests/sites/derived/theme/theme.toml +0 -0
  36. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/tests/test_config_subtheme.py +0 -0
  37. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/tests/test_goatcounter.py +0 -0
  38. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/tests/test_options.py +0 -0
  39. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/components/built-with.html +0 -0
  40. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/components/footer-links.html +0 -0
  41. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/components/navbar-logo.html +0 -0
  42. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/components/navbar_center.html +0 -0
  43. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/components/navbar_start.html +0 -0
  44. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/components/sst-sidebar-nav.html +0 -0
  45. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/sections/header.html +0 -0
  46. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/static/css/rtd_enhanced_search.css +0 -0
  47. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/static/css/sunpy_cards.css +0 -0
  48. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/static/img/favicon-32.ico +0 -0
  49. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/static/img/sunpy_icon.svg +0 -0
  50. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/static/img/sunpy_icon_128x128.png +0 -0
  51. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/static/js/rtd_enhanced_search.js +0 -0
  52. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/static/js/submenu-concertina-toggle.js +0 -0
  53. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/static/sunpy_style.css +0 -0
  54. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme/theme/sunpy/theme.toml +0 -0
  55. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme.egg-info/dependency_links.txt +0 -0
  56. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme.egg-info/entry_points.txt +0 -0
  57. {sunpy_sphinx_theme-2.4.0 → sunpy_sphinx_theme-2.5.0}/src/sunpy_sphinx_theme.egg-info/top_level.txt +0 -0
@@ -0,0 +1,2 @@
1
+ [codespell]
2
+ ignore-words-list = ANDed,arange,iy1,iy2,EIS,eis,EIT,eit,HAE,his,His,nd,NDData,along,alog10,FOVs,FOV,OT,ot,pn,CPY
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sunpy-sphinx-theme
3
- Version: 2.4.0
3
+ Version: 2.5.0
4
4
  Summary: The sphinx theme for the SunPy website and documentation.
5
5
  Author: The SunPy Developers
6
6
  License: BSD 2-Clause License
@@ -39,7 +39,7 @@ Classifier: Operating System :: OS Independent
39
39
  Requires-Python: >=3.11
40
40
  Description-Content-Type: text/markdown
41
41
  License-File: LICENSE.md
42
- Requires-Dist: pydata-sphinx-theme<0.24,>=0.22.0
42
+ Requires-Dist: pydata-sphinx-theme<0.25,>=0.24.0
43
43
  Requires-Dist: sphinxext-opengraph>=0.13
44
44
  Requires-Dist: sphinx>=7.3.0
45
45
  Provides-Extra: docs
@@ -52,7 +52,10 @@ Requires-Dist: sphinx-togglebutton; extra == "docs"
52
52
  Requires-Dist: sunpy; extra == "docs"
53
53
  Provides-Extra: test
54
54
  Requires-Dist: pytest>=7.0; extra == "test"
55
- Requires-Dist: pytest-playwright; extra == "test"
55
+ Provides-Extra: test-playwright
56
+ Requires-Dist: playwright==1.64.1; extra == "test-playwright"
57
+ Requires-Dist: pytest-playwright==0.10.0; extra == "test-playwright"
58
+ Requires-Dist: playwright-figure-tests; extra == "test-playwright"
56
59
  Dynamic: license-file
57
60
 
58
61
  # SunPy Project Sphinx Theme
@@ -19,7 +19,8 @@ if TYPE_CHECKING:
19
19
 
20
20
  from sphinx.testing.util import SphinxTestApp
21
21
 
22
- pytest_plugins = "sphinx.testing.fixtures"
22
+ pytest_plugins = ("sphinx.testing.fixtures",)
23
+
23
24
 
24
25
  repo_path = Path(__file__).parent
25
26
  tests_path = repo_path / "src" / "sunpy_sphinx_theme" / "tests"
@@ -92,7 +93,7 @@ def sphinx_build_factory(make_app: Callable, tmp_path: Path, request) -> Callabl
92
93
  # -- global fixture to serve the built docs ----------------------------------
93
94
 
94
95
 
95
- @pytest.fixture(scope="module")
96
+ @pytest.fixture(scope="session")
96
97
  def url_base():
97
98
  """Start local server on built docs and return the localhost URL as the base URL."""
98
99
  # The accessibility tests are run against a build of our documentation, so
@@ -0,0 +1,35 @@
1
+ {
2
+ description = "sunpy-sphinx-theme dev shell (provides Playwright browsers for NixOS)";
3
+
4
+ inputs = {
5
+ flake-parts.url = "github:hercules-ci/flake-parts";
6
+ nixpkgs.url = "https://channels.nixos.org/nixos-unstable/nixexprs.tar.zst";
7
+ };
8
+
9
+ outputs = { flake-parts, ... } @ inputs: flake-parts.lib.mkFlake { inherit inputs; } {
10
+ perSystem = { config, self', inputs', pkgs, system, ... }: {
11
+ devShells.default = pkgs.mkShell {
12
+ # playwright-driver.browsers provides Firefox/Chromium patched to run on
13
+ # NixOS. The pip `playwright` package reads PLAYWRIGHT_BROWSERS_PATH and
14
+ # uses these browsers directly; its version must match whatever nixpkgs
15
+ # pins here. nodejs is for the a11y env's npm install (axe-core).
16
+ # bash is needed so `nix develop --command` can evaluate shellHook
17
+ # (the devShell otherwise has no shell on PATH).
18
+ packages = with pkgs; [
19
+ bash
20
+ nodejs_latest
21
+ playwright-test
22
+ playwright-driver.browsers
23
+ ];
24
+
25
+ shellHook = ''
26
+ export PLAYWRIGHT_BROWSERS_PATH=${pkgs.playwright-driver.browsers}
27
+ export PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS=true
28
+ # Browsers installed by nix so no-op the install command in tox
29
+ export PLAYWRIGHT_INSTALL_CMD="python -c pass"
30
+ '';
31
+ };
32
+ };
33
+ systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
34
+ };
35
+ }
@@ -22,7 +22,7 @@ classifiers = [
22
22
  ]
23
23
  requires-python = ">=3.11"
24
24
  dependencies = [
25
- "pydata-sphinx-theme>=0.22.0,<0.24",
25
+ "pydata-sphinx-theme>=0.24.0,<0.25",
26
26
  "sphinxext-opengraph>=0.13",
27
27
  "sphinx>=7.3.0"
28
28
  ]
@@ -39,7 +39,11 @@ docs = [
39
39
  ]
40
40
  test = [
41
41
  "pytest>=7.0",
42
- "pytest-playwright",
42
+ ]
43
+ test-playwright = [
44
+ "playwright==1.64.1",
45
+ "pytest-playwright==0.10.0",
46
+ "playwright-figure-tests",
43
47
  ]
44
48
 
45
49
  [project.entry-points]
@@ -53,7 +57,9 @@ include-package-data = true
53
57
  [tool.pytest.ini_options]
54
58
  markers = "a11y: mark a test as an accessibility test"
55
59
  testpaths = ["tests"]
56
- addopts = "--durations=10"
60
+ addopts = ["--durations=10", "-m not mpl_image_compare and not a11y"]
61
+ mpl-results-path = "figure_test_images"
62
+ mpl-use-full-test-name = true
57
63
 
58
64
  [ tool.gilesbot ]
59
65
  [ tool.gilesbot.circleci_artifacts.giles ]
@@ -74,6 +80,11 @@ addopts = "--durations=10"
74
80
  message = "sunpy docs with devdeps preview"
75
81
  report_on_fail = true
76
82
 
83
+ [ tool.gilesbot.circleci_artifacts.visual-tests-summary ]
84
+ url = "fig_comparison.html"
85
+ message = "screenshot test summary page"
86
+ report_on_fail = true
87
+
77
88
  [ tool.gilesbot.circleci_artifacts.astropy_website ]
78
89
  url = "astropy.org/_build/html/index.html"
79
90
  message = "Astropy website preview"
@@ -57,6 +57,8 @@ lint.extend-ignore = [
57
57
  "S404", # subprocess module is possibly insecure
58
58
  "S603", # subprocess call: check for execution of untrusted input
59
59
  "ARG001", # Unused function argument (kept for interface compatibility)
60
+ "PLR0913", # Too many arguments in function definition
61
+ "PLR0917", # Too many positional arguments
60
62
  ]
61
63
 
62
64
  [lint.pydocstyle]
@@ -37,9 +37,19 @@ def filter_ignored_violations(violations, url_pathname, theme):
37
37
  for violation in violations:
38
38
  ignore = False
39
39
 
40
+ all_targets = [t for n in violation["nodes"] for t in n["target"]]
41
+
40
42
  # TODO: Our light theme link color does not pass, either fix it or just accept it
41
43
  if violation["id"] == "color-contrast" and theme == "light":
42
44
  ignore = True
45
+
46
+ # This is an upstream issue, and seems that the problem is the
47
+ # shortcut key text is missing from the aria-label
48
+ if violation["id"] == "label-content-name-mismatch" and any(
49
+ 'search-button-field.search-button__button[aria-label="Search"]' in t for t in all_targets
50
+ ):
51
+ ignore = True
52
+
43
53
  # This one is probably fine, it's the headings inside the popup
44
54
  if url_pathname == "/cards.html" and violation["id"] == "heading-order":
45
55
  ignore = True
@@ -0,0 +1,40 @@
1
+ from urllib.parse import urljoin
2
+
3
+ import pytest
4
+
5
+
6
+ @pytest.mark.mpl_image_compare
7
+ @pytest.mark.parametrize(
8
+ "viewport",
9
+ [
10
+ pytest.param((820, 600), id="tablet-width"),
11
+ pytest.param((1920, 1080), id="larger-pc"),
12
+ ],
13
+ )
14
+ @pytest.mark.parametrize("theme", ["light", "dark"])
15
+ @pytest.mark.parametrize(
16
+ "url_pathname",
17
+ [
18
+ "/colors.html",
19
+ "/customizing.html",
20
+ "/web-components.html",
21
+ "/cards.html",
22
+ "/subsections.html",
23
+ "/index.html",
24
+ ],
25
+ )
26
+ def test_screenshots_sst_docs(
27
+ url_base,
28
+ url_pathname,
29
+ theme,
30
+ viewport,
31
+ screenshot,
32
+ page,
33
+ ):
34
+ url_full = urljoin(url_base, url_pathname)
35
+ page.goto(url_full)
36
+
37
+ page.set_viewport_size({"width": viewport[0], "height": viewport[1]})
38
+ # Run a line of JavaScript that sets the light/dark theme on the page
39
+ page.evaluate(f"document.documentElement.dataset.theme = '{theme}'")
40
+ return screenshot.from_locator(page)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sunpy-sphinx-theme
3
- Version: 2.4.0
3
+ Version: 2.5.0
4
4
  Summary: The sphinx theme for the SunPy website and documentation.
5
5
  Author: The SunPy Developers
6
6
  License: BSD 2-Clause License
@@ -39,7 +39,7 @@ Classifier: Operating System :: OS Independent
39
39
  Requires-Python: >=3.11
40
40
  Description-Content-Type: text/markdown
41
41
  License-File: LICENSE.md
42
- Requires-Dist: pydata-sphinx-theme<0.24,>=0.22.0
42
+ Requires-Dist: pydata-sphinx-theme<0.25,>=0.24.0
43
43
  Requires-Dist: sphinxext-opengraph>=0.13
44
44
  Requires-Dist: sphinx>=7.3.0
45
45
  Provides-Extra: docs
@@ -52,7 +52,10 @@ Requires-Dist: sphinx-togglebutton; extra == "docs"
52
52
  Requires-Dist: sunpy; extra == "docs"
53
53
  Provides-Extra: test
54
54
  Requires-Dist: pytest>=7.0; extra == "test"
55
- Requires-Dist: pytest-playwright; extra == "test"
55
+ Provides-Extra: test-playwright
56
+ Requires-Dist: playwright==1.64.1; extra == "test-playwright"
57
+ Requires-Dist: pytest-playwright==0.10.0; extra == "test-playwright"
58
+ Requires-Dist: playwright-figure-tests; extra == "test-playwright"
56
59
  Dynamic: license-file
57
60
 
58
61
  # SunPy Project Sphinx Theme
@@ -1,3 +1,4 @@
1
+ .codespellrc
1
2
  .editorconfig
2
3
  .readthedocs.yaml
3
4
  .rtd-environment.yml
@@ -5,7 +6,6 @@
5
6
  LICENSE.md
6
7
  MANIFEST.in
7
8
  README.md
8
- _typos.toml
9
9
  conftest.py
10
10
  flake.nix
11
11
  package.json
@@ -28,6 +28,7 @@ src/sunpy_sphinx_theme/tests/test_a11y.py
28
28
  src/sunpy_sphinx_theme/tests/test_config_subtheme.py
29
29
  src/sunpy_sphinx_theme/tests/test_goatcounter.py
30
30
  src/sunpy_sphinx_theme/tests/test_options.py
31
+ src/sunpy_sphinx_theme/tests/test_screenshots.py
31
32
  src/sunpy_sphinx_theme/tests/sites/base/conf.py
32
33
  src/sunpy_sphinx_theme/tests/sites/base/index.rst
33
34
  src/sunpy_sphinx_theme/tests/sites/derived/conf.py
@@ -1,4 +1,4 @@
1
- pydata-sphinx-theme<0.24,>=0.22.0
1
+ pydata-sphinx-theme<0.25,>=0.24.0
2
2
  sphinxext-opengraph>=0.13
3
3
  sphinx>=7.3.0
4
4
 
@@ -13,4 +13,8 @@ sunpy
13
13
 
14
14
  [test]
15
15
  pytest>=7.0
16
- pytest-playwright
16
+
17
+ [test-playwright]
18
+ playwright==1.64.1
19
+ pytest-playwright==0.10.0
20
+ playwright-figure-tests
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "files": [
3
3
  ".circleci/config.yml",
4
+ ".codespellrc",
4
5
  ".editorconfig",
5
6
  ".github/dependabot.yml",
6
7
  ".github/workflows/pythonpublish.yml",
@@ -12,7 +13,6 @@
12
13
  "LICENSE.md",
13
14
  "MANIFEST.in",
14
15
  "README.md",
15
- "_typos.toml",
16
16
  "conftest.py",
17
17
  "docs/_static/img/Stuart-Mumford.png",
18
18
  "docs/cards.rst",
@@ -51,6 +51,7 @@
51
51
  "src/sunpy_sphinx_theme/tests/test_config_subtheme.py",
52
52
  "src/sunpy_sphinx_theme/tests/test_goatcounter.py",
53
53
  "src/sunpy_sphinx_theme/tests/test_options.py",
54
+ "src/sunpy_sphinx_theme/tests/test_screenshots.py",
54
55
  "src/sunpy_sphinx_theme/theme/sunpy/components/built-with.html",
55
56
  "src/sunpy_sphinx_theme/theme/sunpy/components/footer-links.html",
56
57
  "src/sunpy_sphinx_theme/theme/sunpy/components/navbar-logo.html",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "2.5.0",
3
+ "distance": 0,
4
+ "node": "g15af22af57634aa38fa16b42bb5ef52d03d02bb5",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-11-02"
8
+ }
@@ -1,25 +0,0 @@
1
- default.extend-ignore-identifiers-re = [
2
- "ANDed", # ANDed
3
- "arange",
4
- "iy1",
5
- "iy2",
6
- "EIS",
7
- "eis",
8
- "EIT",
9
- "eit",
10
- "HAE",
11
- "hsi",
12
- "Hsi",
13
- "nd",
14
- "NDData",
15
- "alog",
16
- "alog10",
17
- "FOVs",
18
- "FOV",
19
- # HEK
20
- "OT",
21
- "ot",
22
- # Coords,
23
- "pn",
24
- "CPY",
25
- ]
@@ -1,34 +0,0 @@
1
- {
2
- description = "A very basic flake";
3
-
4
- inputs = {
5
- flake-parts.url = "github:hercules-ci/flake-parts";
6
- nixpkgs.url = "github:nixos/nixpkgs";
7
- };
8
-
9
- outputs = { flake-parts, ... } @ inputs: flake-parts.lib.mkFlake { inherit inputs; } {
10
- perSystem = { config, self', inputs', pkgs, system, ... }: {
11
- devShells.default = pkgs.mkShell {
12
- # venvShellHook needs venvDir set on the shell
13
- venvDir = ".venv";
14
-
15
- packages = with pkgs; [
16
- nodejs_latest
17
- playwright-driver.browsers
18
- uv
19
- ];
20
-
21
- # runs every time you enter the shell, after activation
22
- shellHook = ''
23
- export PLAYWRIGHT_BROWSERS_PATH=${pkgs.playwright-driver.browsers}
24
- export PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS=true;
25
- uv sync --all-extras
26
- source .venv/bin/activate
27
- npm install
28
- '';
29
- };
30
- };
31
- # Declared systems that your flake supports. These will be enumerated in perSystem
32
- systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
33
- };
34
- }
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "2.4.0",
3
- "distance": 0,
4
- "node": "gfd0161cbb672c0deac5247be6eb7d34cd8082cc6",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-09-30"
8
- }