apyds 0.0.12__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 (143) hide show
  1. apyds-0.0.12/.clang-format +120 -0
  2. apyds-0.0.12/.devcontainer/devcontainer.json +31 -0
  3. apyds-0.0.12/.devcontainer/post-create.sh +6 -0
  4. apyds-0.0.12/.github/dependabot.yml +37 -0
  5. apyds-0.0.12/.github/workflows/bnf-jest.yml +86 -0
  6. apyds-0.0.12/.github/workflows/bnf-pytest.yml +87 -0
  7. apyds-0.0.12/.github/workflows/ctest.yml +29 -0
  8. apyds-0.0.12/.github/workflows/docs.yml +37 -0
  9. apyds-0.0.12/.github/workflows/egg-jest.yml +80 -0
  10. apyds-0.0.12/.github/workflows/egg-pytest.yml +81 -0
  11. apyds-0.0.12/.github/workflows/example.yml +88 -0
  12. apyds-0.0.12/.github/workflows/jest.yml +93 -0
  13. apyds-0.0.12/.github/workflows/pre-commit.yml +16 -0
  14. apyds-0.0.12/.github/workflows/pytest.yml +117 -0
  15. apyds-0.0.12/.gitignore +131 -0
  16. apyds-0.0.12/.pre-commit-config.yaml +19 -0
  17. apyds-0.0.12/CMakeLists.txt +59 -0
  18. apyds-0.0.12/CONTRIBUTING.md +146 -0
  19. apyds-0.0.12/LICENSE.md +660 -0
  20. apyds-0.0.12/PKG-INFO +408 -0
  21. apyds-0.0.12/README.md +390 -0
  22. apyds-0.0.12/apyds/.gitignore +1 -0
  23. apyds-0.0.12/apyds/__init__.py +25 -0
  24. apyds-0.0.12/apyds/_ds.pyi +676 -0
  25. apyds-0.0.12/apyds/buffer_size.py +55 -0
  26. apyds-0.0.12/apyds/common.py +125 -0
  27. apyds-0.0.12/apyds/ds.cc +171 -0
  28. apyds-0.0.12/apyds/ds.py +13 -0
  29. apyds-0.0.12/apyds/item_t.py +31 -0
  30. apyds-0.0.12/apyds/list_t.py +49 -0
  31. apyds-0.0.12/apyds/py.typed +0 -0
  32. apyds-0.0.12/apyds/rule_t.py +144 -0
  33. apyds-0.0.12/apyds/search_t.py +79 -0
  34. apyds-0.0.12/apyds/string_t.py +22 -0
  35. apyds-0.0.12/apyds/term_t.py +126 -0
  36. apyds-0.0.12/apyds/variable_t.py +31 -0
  37. apyds-0.0.12/atsds/.gitignore +4 -0
  38. apyds-0.0.12/atsds/ds.cc +189 -0
  39. apyds-0.0.12/atsds/index.mts +623 -0
  40. apyds-0.0.12/biome.json +18 -0
  41. apyds-0.0.12/bnf/Ds.g4 +37 -0
  42. apyds-0.0.12/bnf/Dsp.g4 +48 -0
  43. apyds-0.0.12/bnf/README.md +193 -0
  44. apyds-0.0.12/bnf/apyds_bnf/__init__.py +103 -0
  45. apyds-0.0.12/bnf/apyds_bnf/py.typed +0 -0
  46. apyds-0.0.12/bnf/atsds_bnf/index.d.mts +13 -0
  47. apyds-0.0.12/bnf/atsds_bnf/index.mjs +137 -0
  48. apyds-0.0.12/bnf/jest.config.mjs +4 -0
  49. apyds-0.0.12/bnf/package-lock.json +9126 -0
  50. apyds-0.0.12/bnf/package.json +41 -0
  51. apyds-0.0.12/bnf/pyproject.toml +51 -0
  52. apyds-0.0.12/bnf/rollup.config.mjs +22 -0
  53. apyds-0.0.12/bnf/setup.py +49 -0
  54. apyds-0.0.12/bnf/tests/test_parse_unparse.mjs +175 -0
  55. apyds-0.0.12/bnf/tests/test_parse_unparse.py +181 -0
  56. apyds-0.0.12/bnf/uv.lock +277 -0
  57. apyds-0.0.12/docs/api/cpp.md +622 -0
  58. apyds-0.0.12/docs/api/python.md +538 -0
  59. apyds-0.0.12/docs/api/typescript.md +550 -0
  60. apyds-0.0.12/docs/concepts/rules.md +392 -0
  61. apyds-0.0.12/docs/concepts/search.md +311 -0
  62. apyds-0.0.12/docs/concepts/terms.md +377 -0
  63. apyds-0.0.12/docs/examples/Sudoku.ejs +144 -0
  64. apyds-0.0.12/docs/examples/Sudoku.vue +401 -0
  65. apyds-0.0.12/docs/examples/basic.md +166 -0
  66. apyds-0.0.12/docs/examples/sudoku.md +43 -0
  67. apyds-0.0.12/docs/getting-started/installation.md +206 -0
  68. apyds-0.0.12/docs/getting-started/quickstart.md +241 -0
  69. apyds-0.0.12/docs/index.md +61 -0
  70. apyds-0.0.12/docs/support-packages/bnf.md +123 -0
  71. apyds-0.0.12/docs/support-packages/egg.md +196 -0
  72. apyds-0.0.12/egg/README.md +229 -0
  73. apyds-0.0.12/egg/apyds_egg/__init__.py +215 -0
  74. apyds-0.0.12/egg/apyds_egg/py.typed +0 -0
  75. apyds-0.0.12/egg/atsds_egg/index.mts +259 -0
  76. apyds-0.0.12/egg/jest.config.mjs +8 -0
  77. apyds-0.0.12/egg/package-lock.json +7239 -0
  78. apyds-0.0.12/egg/package.json +42 -0
  79. apyds-0.0.12/egg/pyproject.toml +51 -0
  80. apyds-0.0.12/egg/rollup.config.mjs +27 -0
  81. apyds-0.0.12/egg/tests/test_egraph.mjs +226 -0
  82. apyds-0.0.12/egg/tests/test_egraph.py +224 -0
  83. apyds-0.0.12/egg/tsconfig.json +11 -0
  84. apyds-0.0.12/egg/uv.lock +295 -0
  85. apyds-0.0.12/examples/main.cc +68 -0
  86. apyds-0.0.12/examples/main.mjs +50 -0
  87. apyds-0.0.12/examples/main.py +48 -0
  88. apyds-0.0.12/include/ds/config.hh +17 -0
  89. apyds-0.0.12/include/ds/ds.hh +11 -0
  90. apyds-0.0.12/include/ds/helper.hh +30 -0
  91. apyds-0.0.12/include/ds/item.hh +52 -0
  92. apyds-0.0.12/include/ds/list.hh +126 -0
  93. apyds-0.0.12/include/ds/rule.hh +128 -0
  94. apyds-0.0.12/include/ds/search.hh +71 -0
  95. apyds-0.0.12/include/ds/string.hh +97 -0
  96. apyds-0.0.12/include/ds/term.hh +167 -0
  97. apyds-0.0.12/include/ds/utility.hh +35 -0
  98. apyds-0.0.12/include/ds/variable.hh +52 -0
  99. apyds-0.0.12/jest.config.mjs +8 -0
  100. apyds-0.0.12/mkdocs.yml +106 -0
  101. apyds-0.0.12/package-lock.json +7270 -0
  102. apyds-0.0.12/package.json +41 -0
  103. apyds-0.0.12/ports/ds/portfile.cmake +19 -0
  104. apyds-0.0.12/ports/ds/vcpkg.json +17 -0
  105. apyds-0.0.12/pyproject.toml +63 -0
  106. apyds-0.0.12/rollup.config.mjs +30 -0
  107. apyds-0.0.12/src/ground.cc +108 -0
  108. apyds-0.0.12/src/item.cc +27 -0
  109. apyds-0.0.12/src/list.cc +131 -0
  110. apyds-0.0.12/src/match.cc +306 -0
  111. apyds-0.0.12/src/rename.cc +158 -0
  112. apyds-0.0.12/src/rule.cc +142 -0
  113. apyds-0.0.12/src/search.cc +123 -0
  114. apyds-0.0.12/src/string.cc +102 -0
  115. apyds-0.0.12/src/term.cc +114 -0
  116. apyds-0.0.12/src/utility.cc +45 -0
  117. apyds-0.0.12/src/variable.cc +32 -0
  118. apyds-0.0.12/tests/test_ground.cc +132 -0
  119. apyds-0.0.12/tests/test_item.cc +65 -0
  120. apyds-0.0.12/tests/test_item.mjs +55 -0
  121. apyds-0.0.12/tests/test_item.py +64 -0
  122. apyds-0.0.12/tests/test_list.cc +162 -0
  123. apyds-0.0.12/tests/test_list.mjs +64 -0
  124. apyds-0.0.12/tests/test_list.py +76 -0
  125. apyds-0.0.12/tests/test_match.cc +106 -0
  126. apyds-0.0.12/tests/test_rename.cc +148 -0
  127. apyds-0.0.12/tests/test_rule.cc +182 -0
  128. apyds-0.0.12/tests/test_rule.mjs +123 -0
  129. apyds-0.0.12/tests/test_rule.py +135 -0
  130. apyds-0.0.12/tests/test_search.cc +104 -0
  131. apyds-0.0.12/tests/test_search.mjs +90 -0
  132. apyds-0.0.12/tests/test_search.py +96 -0
  133. apyds-0.0.12/tests/test_string.cc +136 -0
  134. apyds-0.0.12/tests/test_string.mjs +51 -0
  135. apyds-0.0.12/tests/test_string.py +60 -0
  136. apyds-0.0.12/tests/test_term.cc +201 -0
  137. apyds-0.0.12/tests/test_term.mjs +124 -0
  138. apyds-0.0.12/tests/test_term.py +135 -0
  139. apyds-0.0.12/tests/test_variable.cc +65 -0
  140. apyds-0.0.12/tests/test_variable.mjs +55 -0
  141. apyds-0.0.12/tests/test_variable.py +64 -0
  142. apyds-0.0.12/tsconfig.json +11 -0
  143. apyds-0.0.12/uv.lock +829 -0
@@ -0,0 +1,120 @@
1
+ AccessModifierOffset: -2
2
+ AlignAfterOpenBracket: BlockIndent
3
+ AlignArrayOfStructures: None
4
+ AlignConsecutiveAssignments: false
5
+ AlignConsecutiveBitFields: false
6
+ AlignConsecutiveDeclarations: false
7
+ AlignConsecutiveMacros: false
8
+ AlignEscapedNewlines: DontAlign
9
+ AlignOperands: Align
10
+ AlignTrailingComments: false
11
+ AllowAllArgumentsOnNextLine: false
12
+ AllowAllParametersOfDeclarationOnNextLine: false
13
+ AllowShortBlocksOnASingleLine: false
14
+ AllowShortCaseLabelsOnASingleLine: false
15
+ AllowShortEnumsOnASingleLine: false
16
+ AllowShortFunctionsOnASingleLine: Empty
17
+ AllowShortIfStatementsOnASingleLine: false
18
+ AllowShortLambdasOnASingleLine: All
19
+ AllowShortLoopsOnASingleLine: false
20
+ AlwaysBreakAfterReturnType: None
21
+ AlwaysBreakBeforeMultilineStrings: false
22
+ AlwaysBreakTemplateDeclarations: Yes
23
+ AttributeMacros: ["__restrict"]
24
+ BinPackArguments: false
25
+ BinPackParameters: false
26
+ BitFieldColonSpacing: Both
27
+ BreakAfterAttributes: Never
28
+ BreakBeforeBinaryOperators: None
29
+ BreakBeforeBraces: Attach
30
+ BreakBeforeConceptDeclarations: Always
31
+ BreakBeforeInlineASMColon: OnlyMultiline
32
+ BreakBeforeTernaryOperators: false
33
+ BreakConstructorInitializers: AfterColon
34
+ BreakInheritanceList: AfterColon
35
+ BreakStringLiterals: true
36
+ ColumnLimit: 150
37
+ CompactNamespaces: false
38
+ ConstructorInitializerIndentWidth: 4
39
+ ContinuationIndentWidth: 4
40
+ Cpp11BracedListStyle: true
41
+ DerivePointerAlignment: false
42
+ DisableFormat: false
43
+ EmptyLineAfterAccessModifier: Never
44
+ EmptyLineBeforeAccessModifier: Leave
45
+ ExperimentalAutoDetectBinPacking: false
46
+ FixNamespaceComments: true
47
+ ForEachMacros: []
48
+ IfMacros: []
49
+ IncludeBlocks: Preserve
50
+ IndentAccessModifiers: false
51
+ IndentCaseBlocks: false
52
+ IndentCaseLabels: false
53
+ IndentExternBlock: Indent
54
+ IndentGotoLabels: true
55
+ IndentPPDirectives: None
56
+ IndentRequires: true
57
+ IndentWidth: 4
58
+ IndentWrappedFunctionNames: false
59
+ InsertBraces: true
60
+ InsertNewlineAtEOF: true
61
+ InsertTrailingCommas: Wrapped
62
+ KeepEmptyLinesAtTheStartOfBlocks: false
63
+ LambdaBodyIndentation: Signature
64
+ Language: Cpp
65
+ LineEnding: LF
66
+ MaxEmptyLinesToKeep: 1
67
+ NamespaceIndentation: All
68
+ NamespaceMacros: []
69
+ PPIndentWidth: 0
70
+ PackConstructorInitializers: CurrentLine
71
+ PenaltyBreakAssignment: 2
72
+ PenaltyBreakBeforeFirstCallParameter: 1
73
+ PenaltyBreakComment: 300
74
+ PenaltyBreakFirstLessLess: 120
75
+ PenaltyBreakOpenParenthesis: 0
76
+ PenaltyBreakString: 1000
77
+ PenaltyBreakTemplateDeclaration: 10
78
+ PenaltyExcessCharacter: 1000000
79
+ PenaltyIndentedWhitespace: 0
80
+ PenaltyReturnTypeOnItsOwnLine: 200
81
+ PointerAlignment: Left
82
+ QualifierAlignment: Left
83
+ ReferenceAlignment: Left
84
+ ReflowComments: true
85
+ RemoveBracesLLVM: false
86
+ RemoveSemicolon: true
87
+ RequiresClausePosition: OwnLine
88
+ RequiresExpressionIndentation: Keyword
89
+ SeparateDefinitionBlocks: Leave
90
+ ShortNamespaceLines: 0
91
+ SortIncludes: CaseSensitive
92
+ SortUsingDeclarations: Lexicographic
93
+ SpaceAfterCStyleCast: false
94
+ SpaceAfterLogicalNot: false
95
+ SpaceAfterTemplateKeyword: false
96
+ SpaceAroundPointerQualifiers: Before
97
+ SpaceBeforeAssignmentOperators: true
98
+ SpaceBeforeCaseColon: false
99
+ SpaceBeforeCpp11BracedList: false
100
+ SpaceBeforeCtorInitializerColon: true
101
+ SpaceBeforeInheritanceColon: true
102
+ SpaceBeforeParens: ControlStatements
103
+ SpaceBeforeRangeBasedForLoopColon: true
104
+ SpaceBeforeSquareBrackets: false
105
+ SpaceInEmptyBlock: true
106
+ SpaceInEmptyParentheses: false
107
+ SpacesBeforeTrailingComments: 1
108
+ SpacesInAngles: false
109
+ SpacesInCStyleCastParentheses: false
110
+ SpacesInConditionalStatement: false
111
+ SpacesInContainerLiterals: false
112
+ SpacesInParentheses: false
113
+ SpacesInSquareBrackets: false
114
+ Standard: Latest
115
+ StatementAttributeLikeMacros: []
116
+ StatementMacros: []
117
+ TypenameMacros: []
118
+ TabWidth: 4
119
+ UseTab: Never
120
+ WhitespaceSensitiveMacros: []
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "DS Development Container",
3
+ "image": "mcr.microsoft.com/devcontainers/base:debian",
4
+ "features": {
5
+ "ghcr.io/devcontainers/features/python:1": {
6
+ "installJupyterlab": true,
7
+ "version": "latest"
8
+ },
9
+ "ghcr.io/devcontainers/features/node:1": {
10
+ "version": "latest"
11
+ },
12
+ "ghcr.io/devcontainers-extra/features/uv:1": {
13
+ "version": "latest"
14
+ },
15
+ "ghcr.io/ebaskoro/devcontainer-features/emscripten:1": {
16
+ "version": "latest"
17
+ }
18
+ },
19
+ "postCreateCommand": ".devcontainer/post-create.sh",
20
+ "customizations": {
21
+ "vscode": {
22
+ "extensions": [
23
+ "ms-vscode.cpptools-extension-pack",
24
+ "clang-format.vscode-clang-format",
25
+ "ms-python.python",
26
+ "charliermarsh.ruff",
27
+ "biomejs.biome"
28
+ ]
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ # Install apt packages
5
+ sudo apt-get update
6
+ sudo apt-get install -y libgtest-dev clang-format cmake
@@ -0,0 +1,37 @@
1
+ version: 2
2
+ updates:
3
+
4
+ - package-ecosystem: "github-actions"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "weekly"
8
+
9
+ - package-ecosystem: "npm"
10
+ directory: "/"
11
+ schedule:
12
+ interval: "weekly"
13
+
14
+ - package-ecosystem: "npm"
15
+ directory: "/bnf"
16
+ schedule:
17
+ interval: "weekly"
18
+
19
+ - package-ecosystem: "npm"
20
+ directory: "/egg"
21
+ schedule:
22
+ interval: "weekly"
23
+
24
+ - package-ecosystem: "uv"
25
+ directory: "/"
26
+ schedule:
27
+ interval: "weekly"
28
+
29
+ - package-ecosystem: "uv"
30
+ directory: "/bnf"
31
+ schedule:
32
+ interval: "weekly"
33
+
34
+ - package-ecosystem: "uv"
35
+ directory: "/egg"
36
+ schedule:
37
+ interval: "weekly"
@@ -0,0 +1,86 @@
1
+ name: bnf-jest
2
+ permissions:
3
+ contents: read
4
+
5
+ on:
6
+ - pull_request
7
+ - push
8
+
9
+ env:
10
+ NODE_LATEST_VERSION: '24'
11
+
12
+ jobs:
13
+ jest:
14
+ runs-on: ubuntu-latest
15
+
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ node-version: ['20', '22', '24']
20
+
21
+ steps:
22
+ - uses: actions/checkout@v6
23
+
24
+ - name: install antlr4
25
+ run: pip install antlr4-tools
26
+
27
+ - uses: actions/setup-node@v6
28
+ with:
29
+ node-version: ${{ matrix.node-version }}
30
+ cache: 'npm'
31
+
32
+ - name: dependencies
33
+ working-directory: bnf
34
+ run: npm ci
35
+
36
+ - name: jest
37
+ working-directory: bnf
38
+ run: npm run all
39
+
40
+ npm:
41
+ runs-on: ubuntu-latest
42
+ needs: jest
43
+
44
+ if: "github.event_name == 'push' && startsWith(github.ref, 'refs/tags')"
45
+
46
+ environment:
47
+ name: npm-bnf
48
+ url: https://www.npmjs.com/package/atsds-bnf
49
+ permissions:
50
+ id-token: write
51
+
52
+ steps:
53
+ - uses: actions/checkout@v6
54
+
55
+ - name: recovery tag information
56
+ run: git fetch --tags --force
57
+
58
+ - name: install antlr4
59
+ run: pip install antlr4-tools
60
+
61
+ - uses: actions/setup-node@v6
62
+ with:
63
+ node-version: ${{ env.NODE_LATEST_VERSION }}
64
+ cache: 'npm'
65
+
66
+ - name: version
67
+ working-directory: bnf
68
+ run: npm version from-git --no-git-tag-version
69
+
70
+ - name: extract tag
71
+ run: |
72
+ GIT_TAG=${GITHUB_REF#refs/tags/}
73
+ TAG=$(echo $GIT_TAG | sed -E 's/^v//' | sed -E 's/[0-9\.-]//g' | sed -E 's/^$/latest/g')
74
+ echo TAG=$TAG >> $GITHUB_ENV
75
+
76
+ - name: dependencies
77
+ working-directory: bnf
78
+ run: npm ci
79
+
80
+ - name: build
81
+ working-directory: bnf
82
+ run: npm run build
83
+
84
+ - name: publish
85
+ working-directory: bnf
86
+ run: npm publish --tag $TAG
@@ -0,0 +1,87 @@
1
+ name: bnf-pytest
2
+ permissions:
3
+ contents: read
4
+
5
+ on:
6
+ - pull_request
7
+ - push
8
+
9
+ env:
10
+ PYTHON_LATEST_VERSION: '3.14'
11
+
12
+ jobs:
13
+ pytest:
14
+ runs-on: ubuntu-latest
15
+
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ python-version: ['3.11', '3.12', '3.13', '3.14']
20
+
21
+ steps:
22
+ - uses: actions/checkout@v6
23
+
24
+ - name: install antlr4
25
+ run: pip install antlr4-tools
26
+
27
+ - uses: astral-sh/setup-uv@v7
28
+ with:
29
+ python-version: ${{ matrix.python-version }}
30
+ enable-cache: true
31
+
32
+ - name: dependencies
33
+ working-directory: bnf
34
+ run: uv sync --locked --extra dev
35
+
36
+ - name: pytest
37
+ working-directory: bnf
38
+ run: uv run pytest
39
+
40
+ build:
41
+ runs-on: ubuntu-latest
42
+ needs: pytest
43
+
44
+ if: "github.event_name == 'push' && startsWith(github.ref, 'refs/tags')"
45
+
46
+ steps:
47
+ - uses: actions/checkout@v6
48
+
49
+ - name: recovery tag information
50
+ run: git fetch --tags --force
51
+
52
+ - name: install antlr4
53
+ run: pip install antlr4-tools
54
+
55
+ - uses: astral-sh/setup-uv@v7
56
+ with:
57
+ python-version: ${{ matrix.python-version }}
58
+ enable-cache: true
59
+
60
+ - name: build
61
+ working-directory: bnf
62
+ run: uv build
63
+
64
+ - uses: actions/upload-artifact@v6
65
+ with:
66
+ name: dist
67
+ path: bnf/dist/
68
+
69
+ upload:
70
+ runs-on: ubuntu-latest
71
+ needs: build
72
+
73
+ environment:
74
+ name: pypi-bnf
75
+ url: https://pypi.org/project/apyds-bnf
76
+ permissions:
77
+ id-token: write
78
+
79
+ steps:
80
+ - uses: actions/download-artifact@v7
81
+ with:
82
+ name: dist
83
+ path: dist
84
+
85
+ - uses: pypa/gh-action-pypi-publish@release/v1
86
+ with:
87
+ packages-dir: dist
@@ -0,0 +1,29 @@
1
+ name: ctest
2
+ permissions:
3
+ contents: read
4
+
5
+ on:
6
+ - pull_request
7
+ - push
8
+
9
+ jobs:
10
+ ctest:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v6
15
+
16
+ - name: dependencies
17
+ run: sudo apt-get update && sudo apt-get install -y libgtest-dev
18
+
19
+ - name: mkdir
20
+ run: mkdir ${{runner.workspace}}/build
21
+
22
+ - name: configure
23
+ run: cmake -S ${{github.workspace}} -B ${{runner.workspace}}/build
24
+
25
+ - name: build
26
+ run: cmake --build ${{runner.workspace}}/build --target test_executables
27
+
28
+ - name: ctest
29
+ run: ctest --test-dir ${{runner.workspace}}/build
@@ -0,0 +1,37 @@
1
+ name: docs
2
+ permissions:
3
+ contents: write
4
+
5
+ on:
6
+ push:
7
+ tags:
8
+ - "v*"
9
+
10
+ jobs:
11
+ docs:
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - uses: actions/checkout@v6
16
+
17
+ - name: recovery tag information
18
+ run: git fetch --tags --force
19
+
20
+ - uses: astral-sh/setup-uv@v7
21
+ with:
22
+ python-version: '3.14'
23
+ enable-cache: true
24
+
25
+ - name: install dependencies
26
+ run: uv sync --locked --extra docs
27
+
28
+ - name: configure git
29
+ run: |
30
+ git config --global user.name "github-actions[bot]"
31
+ git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
32
+
33
+ - name: build docs
34
+ run: uv run mike deploy --push --update-aliases --alias-type=redirect ${GITHUB_REF#refs/tags/} latest
35
+
36
+ - name: set default
37
+ run: uv run mike set-default --push latest
@@ -0,0 +1,80 @@
1
+ name: egg-jest
2
+ permissions:
3
+ contents: read
4
+
5
+ on:
6
+ - pull_request
7
+ - push
8
+
9
+ env:
10
+ NODE_LATEST_VERSION: '24'
11
+
12
+ jobs:
13
+ jest:
14
+ runs-on: ubuntu-latest
15
+
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ node-version: ['20', '22', '24']
20
+
21
+ steps:
22
+ - uses: actions/checkout@v6
23
+
24
+ - uses: actions/setup-node@v6
25
+ with:
26
+ node-version: ${{ matrix.node-version }}
27
+ cache: 'npm'
28
+
29
+ - name: dependencies
30
+ working-directory: egg
31
+ run: npm ci
32
+
33
+ - name: jest
34
+ working-directory: egg
35
+ run: npm run all
36
+
37
+ npm:
38
+ runs-on: ubuntu-latest
39
+ needs: jest
40
+
41
+ if: "github.event_name == 'push' && startsWith(github.ref, 'refs/tags')"
42
+
43
+ environment:
44
+ name: npm-egg
45
+ url: https://www.npmjs.com/package/atsds-egg
46
+ permissions:
47
+ id-token: write
48
+
49
+ steps:
50
+ - uses: actions/checkout@v6
51
+
52
+ - name: recovery tag information
53
+ run: git fetch --tags --force
54
+
55
+ - uses: actions/setup-node@v6
56
+ with:
57
+ node-version: ${{ env.NODE_LATEST_VERSION }}
58
+ cache: 'npm'
59
+
60
+ - name: version
61
+ working-directory: egg
62
+ run: npm version from-git --no-git-tag-version
63
+
64
+ - name: extract tag
65
+ run: |
66
+ GIT_TAG=${GITHUB_REF#refs/tags/}
67
+ TAG=$(echo $GIT_TAG | sed -E 's/^v//' | sed -E 's/[0-9\.-]//g' | sed -E 's/^$/latest/g')
68
+ echo TAG=$TAG >> $GITHUB_ENV
69
+
70
+ - name: dependencies
71
+ working-directory: egg
72
+ run: npm ci
73
+
74
+ - name: build
75
+ working-directory: egg
76
+ run: npm run build
77
+
78
+ - name: publish
79
+ working-directory: egg
80
+ run: npm publish --tag $TAG
@@ -0,0 +1,81 @@
1
+ name: egg-pytest
2
+ permissions:
3
+ contents: read
4
+
5
+ on:
6
+ - pull_request
7
+ - push
8
+
9
+ env:
10
+ PYTHON_LATEST_VERSION: '3.14'
11
+
12
+ jobs:
13
+ pytest:
14
+ runs-on: ubuntu-latest
15
+
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ python-version: ['3.11', '3.12', '3.13', '3.14']
20
+
21
+ steps:
22
+ - uses: actions/checkout@v6
23
+
24
+ - uses: astral-sh/setup-uv@v7
25
+ with:
26
+ python-version: ${{ matrix.python-version }}
27
+ enable-cache: true
28
+
29
+ - name: dependencies
30
+ working-directory: egg
31
+ run: uv sync --locked --extra dev
32
+
33
+ - name: pytest
34
+ working-directory: egg
35
+ run: uv run pytest
36
+
37
+ build:
38
+ runs-on: ubuntu-latest
39
+ needs: pytest
40
+
41
+ if: "github.event_name == 'push' && startsWith(github.ref, 'refs/tags')"
42
+
43
+ steps:
44
+ - uses: actions/checkout@v6
45
+
46
+ - name: recovery tag information
47
+ run: git fetch --tags --force
48
+
49
+ - uses: astral-sh/setup-uv@v7
50
+ with:
51
+ python-version: ${{ env.PYTHON_LATEST_VERSION }}
52
+ enable-cache: true
53
+
54
+ - name: build
55
+ working-directory: egg
56
+ run: uv build
57
+
58
+ - uses: actions/upload-artifact@v6
59
+ with:
60
+ name: dist
61
+ path: egg/dist/
62
+
63
+ upload:
64
+ runs-on: ubuntu-latest
65
+ needs: build
66
+
67
+ environment:
68
+ name: pypi-egg
69
+ url: https://pypi.org/project/apyds-egg
70
+ permissions:
71
+ id-token: write
72
+
73
+ steps:
74
+ - uses: actions/download-artifact@v7
75
+ with:
76
+ name: dist
77
+ path: dist
78
+
79
+ - uses: pypa/gh-action-pypi-publish@release/v1
80
+ with:
81
+ packages-dir: dist
@@ -0,0 +1,88 @@
1
+ name: examples
2
+ permissions:
3
+ contents: read
4
+
5
+ on:
6
+ - pull_request
7
+ - push
8
+
9
+ env:
10
+ EM_CACHE_FOLDER: 'emsdk-cache'
11
+
12
+ jobs:
13
+ cxx:
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+ - uses: actions/checkout@v6
18
+
19
+ - name: dependencies
20
+ run: sudo apt-get update && sudo apt-get install -y libgtest-dev
21
+
22
+ - name: mkdir
23
+ run: mkdir ${{runner.workspace}}/build
24
+
25
+ - name: configure
26
+ run: cmake -S ${{github.workspace}} -B ${{runner.workspace}}/build
27
+
28
+ - name: build
29
+ run: cmake --build ${{runner.workspace}}/build --target main
30
+
31
+ - name: run
32
+ run: ${{runner.workspace}}/build/main
33
+
34
+ python:
35
+ runs-on: ubuntu-latest
36
+
37
+ strategy:
38
+ fail-fast: false
39
+ matrix:
40
+ python-version: ['3.11', '3.12', '3.13', '3.14']
41
+
42
+ steps:
43
+ - uses: actions/checkout@v6
44
+
45
+ - uses: astral-sh/setup-uv@v7
46
+ with:
47
+ python-version: ${{ matrix.python-version }}
48
+ enable-cache: true
49
+
50
+ - name: build
51
+ run: uv sync --locked
52
+
53
+ - name: run
54
+ run: uv run python examples/main.py
55
+
56
+ javascript:
57
+ runs-on: ubuntu-latest
58
+
59
+ strategy:
60
+ fail-fast: false
61
+ matrix:
62
+ node-version: ['20', '22', '24']
63
+
64
+ steps:
65
+ - uses: actions/checkout@v6
66
+
67
+ - uses: actions/setup-node@v6
68
+ with:
69
+ node-version: ${{ matrix.node-version }}
70
+ cache: 'npm'
71
+
72
+ - uses: actions/cache@v5
73
+ with:
74
+ path: ${{ env.EM_CACHE_FOLDER }}
75
+ key: example-em-cache-${{ runner.os }}-${{ matrix.node-version }}
76
+
77
+ - uses: pyodide/setup-emsdk@v15
78
+ with:
79
+ actions-cache-folder: ${{ env.EM_CACHE_FOLDER }}
80
+
81
+ - name: dependencies
82
+ run: npm ci
83
+
84
+ - name: build
85
+ run: npm run build
86
+
87
+ - name: run
88
+ run: node dist/example.mjs