ctoon 0.2.0__tar.gz → 0.2.2__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 (97) hide show
  1. {ctoon-0.2.0 → ctoon-0.2.2}/.github/workflows/cmake.yml +29 -50
  2. ctoon-0.2.2/.github/workflows/orchestrator.yml +127 -0
  3. ctoon-0.2.2/.github/workflows/process_release.py +77 -0
  4. ctoon-0.2.2/.github/workflows/release_template.md +9 -0
  5. ctoon-0.2.2/.github/workflows/wheels.yml +75 -0
  6. {ctoon-0.2.0 → ctoon-0.2.2}/PKG-INFO +1 -1
  7. ctoon-0.2.2/TECHNICAL.md +336 -0
  8. {ctoon-0.2.0 → ctoon-0.2.2}/cmake/coverage_iframe.html.in +43 -15
  9. {ctoon-0.2.0 → ctoon-0.2.2}/docs/CMakeLists.txt +48 -3
  10. ctoon-0.2.2/docs/CToonPages.cmake +197 -0
  11. {ctoon-0.2.0 → ctoon-0.2.2}/docs/CreateDocs.cmake +7 -2
  12. ctoon-0.2.2/docs/InjectComment.cmake +85 -0
  13. ctoon-0.2.2/docs/cli/examples.md +68 -0
  14. ctoon-0.2.2/docs/cli/index.md +26 -0
  15. ctoon-0.2.2/docs/cli/installation.md +33 -0
  16. ctoon-0.2.2/docs/cli/options.md +22 -0
  17. ctoon-0.2.2/docs/convert_page.py +291 -0
  18. ctoon-0.2.2/docs/ctoon-docs.css +418 -0
  19. ctoon-0.2.2/docs/index.html.in +637 -0
  20. ctoon-0.2.2/docs/initial_comment.in +15 -0
  21. ctoon-0.2.2/docs/page.html.in +416 -0
  22. ctoon-0.2.2/docs/python/CreateDocs.cmake +59 -0
  23. ctoon-0.2.2/docs/python/source/conf.py +99 -0
  24. ctoon-0.2.2/docs/python/source/index.rst +71 -0
  25. ctoon-0.2.2/docs/section.html.in +464 -0
  26. {ctoon-0.2.0 → ctoon-0.2.2}/include/ctoon.h +3 -3
  27. {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/ctoon/__init__.py +11 -10
  28. ctoon-0.2.2/tests/coverage_dashboard.html.in +609 -0
  29. ctoon-0.2.2/tests/genhtml.css +241 -0
  30. {ctoon-0.2.0 → ctoon-0.2.2}/version.py +3 -2
  31. ctoon-0.2.0/.github/workflows/wheels.yml +0 -121
  32. ctoon-0.2.0/TECHNICAL.md +0 -327
  33. ctoon-0.2.0/docs/index.html.in +0 -369
  34. ctoon-0.2.0/docs/python/CreateDocs.cmake +0 -29
  35. ctoon-0.2.0/docs/python/source/conf.py +0 -53
  36. ctoon-0.2.0/docs/python/source/index.rst +0 -63
  37. ctoon-0.2.0/tests/coverage_dashboard.html.in +0 -432
  38. ctoon-0.2.0/tests/genhtml.css +0 -314
  39. {ctoon-0.2.0 → ctoon-0.2.2}/.gitignore +0 -0
  40. {ctoon-0.2.0 → ctoon-0.2.2}/CMakeLists.txt +0 -0
  41. {ctoon-0.2.0 → ctoon-0.2.2}/README.md +0 -0
  42. {ctoon-0.2.0 → ctoon-0.2.2}/cmake/CMakeGraphVizOptions.cmake +0 -0
  43. {ctoon-0.2.0 → ctoon-0.2.2}/cmake/DynamicVersion.cmake +0 -0
  44. {ctoon-0.2.0 → ctoon-0.2.2}/cmake/FixLCovPaths.cmake +0 -0
  45. {ctoon-0.2.0 → ctoon-0.2.2}/cmake/GenerateIframe.cmake +0 -0
  46. {ctoon-0.2.0 → ctoon-0.2.2}/cmake/GoToLcov.cmake +0 -0
  47. {ctoon-0.2.0 → ctoon-0.2.2}/cmake/Optimize.cmake +0 -0
  48. {ctoon-0.2.0 → ctoon-0.2.2}/cmake/PyProject.cmake +0 -0
  49. {ctoon-0.2.0 → ctoon-0.2.2}/cmake/Startup.cmake +0 -0
  50. {ctoon-0.2.0 → ctoon-0.2.2}/ctoon.go +0 -0
  51. {ctoon-0.2.0 → ctoon-0.2.2}/docs/cpp/CreateDocs.cmake +0 -0
  52. {ctoon-0.2.0 → ctoon-0.2.2}/docs/cpp/Doxyfile.in +0 -0
  53. {ctoon-0.2.0 → ctoon-0.2.2}/docs/cpp/footer.html.in +0 -0
  54. {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon-ctoon.txt +0 -0
  55. {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon-sq-ctoon.svg +0 -0
  56. {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon-sq.svg +0 -0
  57. {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon-sq.txt +0 -0
  58. {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon-theme.svg +0 -0
  59. {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon.png +0 -0
  60. {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon.svg +0 -0
  61. {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/og.png +0 -0
  62. {ctoon-0.2.0 → ctoon-0.2.2}/go.mod +0 -0
  63. {ctoon-0.2.0 → ctoon-0.2.2}/pyproject.toml +0 -0
  64. {ctoon-0.2.0 → ctoon-0.2.2}/requirements-dev.txt +0 -0
  65. {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/cpp/ctoon.hpp +0 -0
  66. {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/go/binding.go +0 -0
  67. {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/CMakeLists.txt +0 -0
  68. {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/binding.cpp +0 -0
  69. {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/ctoon/__main__.py +0 -0
  70. {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/ctoon/manager/__init__.py +0 -0
  71. {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/ctoon/manager/__main__.py +0 -0
  72. {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/ctoon/native_cli.py +0 -0
  73. {ctoon-0.2.0 → ctoon-0.2.2}/src/cli/CLI11.hpp +0 -0
  74. {ctoon-0.2.0 → ctoon-0.2.2}/src/cli/cli.cpp +0 -0
  75. {ctoon-0.2.0 → ctoon-0.2.2}/src/ctoon.c +0 -0
  76. {ctoon-0.2.0 → ctoon-0.2.2}/tests/CMakeLists.txt +0 -0
  77. {ctoon-0.2.0 → ctoon-0.2.2}/tests/c/CMakeLists.txt +0 -0
  78. {ctoon-0.2.0 → ctoon-0.2.2}/tests/c/test_ctoon.c +0 -0
  79. {ctoon-0.2.0 → ctoon-0.2.2}/tests/cpp/CMakeLists.txt +0 -0
  80. {ctoon-0.2.0 → ctoon-0.2.2}/tests/cpp/test_ctoon.cpp +0 -0
  81. {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample1_user.json +0 -0
  82. {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample1_user.toon +0 -0
  83. {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample2_users.json +0 -0
  84. {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample2_users.toon +0 -0
  85. {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample3_nested.json +0 -0
  86. {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample3_nested.toon +0 -0
  87. {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample4_users.json +0 -0
  88. {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample4_users.toon +0 -0
  89. {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/twitter.json +0 -0
  90. {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/twitter.toon +0 -0
  91. {ctoon-0.2.0 → ctoon-0.2.2}/tests/go/CMakeLists.txt +0 -0
  92. {ctoon-0.2.0 → ctoon-0.2.2}/tests/go/ctoon_test.go +0 -0
  93. {ctoon-0.2.0 → ctoon-0.2.2}/tests/python/CMakeLists.txt +0 -0
  94. {ctoon-0.2.0 → ctoon-0.2.2}/tests/python/test_json.py +0 -0
  95. {ctoon-0.2.0 → ctoon-0.2.2}/tests/python/test_toon.py +0 -0
  96. {ctoon-0.2.0 → ctoon-0.2.2}/tests/utest/utest.h +0 -0
  97. {ctoon-0.2.0 → ctoon-0.2.2}/tests/utest/utest_main.cxx +0 -0
@@ -1,11 +1,10 @@
1
1
  name: cmake stuff
2
2
 
3
3
  on:
4
- push:
5
- branches: [ master ]
4
+ workflow_dispatch:
5
+ workflow_call:
6
6
  pull_request:
7
7
  branches: [ master ]
8
- workflow_dispatch:
9
8
 
10
9
  jobs:
11
10
  build-and-test:
@@ -17,12 +16,14 @@ jobs:
17
16
 
18
17
  steps:
19
18
  - name: Checkout repository
20
- uses: actions/checkout@v4
19
+ uses: actions/checkout@v6
21
20
 
22
21
  - name: Set up Python
23
- uses: actions/setup-python@v4
22
+ uses: actions/setup-python@v6
24
23
  with:
25
24
  python-version: "3.11"
25
+ cache: "pip"
26
+
26
27
 
27
28
  - name: Install python deps
28
29
  run: pip install -r requirements-dev.txt
@@ -53,7 +54,7 @@ jobs:
53
54
 
54
55
  steps:
55
56
  - name: Checkout repository
56
- uses: actions/checkout@v4
57
+ uses: actions/checkout@v6
57
58
 
58
59
  - name: Setup cmake
59
60
  uses: jwlawson/actions-setup-cmake@v2
@@ -65,23 +66,36 @@ jobs:
65
66
  sudo apt-get update
66
67
  sudo apt-get install -y doxygen graphviz
67
68
 
69
+
70
+ - name: Set up Python
71
+ uses: actions/setup-python@v6
72
+ with:
73
+ python-version: "3.11"
74
+ cache: "pip"
75
+
76
+ - name: Install python deps
77
+ run: pip install -r requirements-dev.txt
78
+
68
79
  - name: Configure CMake
69
80
  run: |
70
81
  cmake -B build \
71
82
  -DCMAKE_BUILD_TYPE=Release \
72
83
  -DCTOON_BUILD_EXAMPLES=OFF \
73
- -DCTOON_BUILD_PYTHON=OFF \
84
+ -DCTOON_BUILD_PYTHON=ON \
74
85
  -DCTOON_BUILD_TESTS=OFF \
75
86
  -DCTOON_BUILD_DOCS=ON
76
87
 
77
88
  - name: Build documentation
78
89
  run: cmake --build build --target ctoon_docs
79
90
 
91
+ - name: List docs directory
92
+ run: tree --du -shaC build/docs/out
93
+
80
94
  - name: Upload documentation artifacts
81
- uses: actions/upload-artifact@v4
95
+ uses: actions/upload-artifact@v7
82
96
  with:
83
- name: documentation
84
- path: build/docs/
97
+ name: cmake-documentation
98
+ path: build/docs/out
85
99
  retention-days: 5
86
100
 
87
101
  build-coverage:
@@ -91,7 +105,7 @@ jobs:
91
105
 
92
106
  steps:
93
107
  - name: Checkout repository
94
- uses: actions/checkout@v4
108
+ uses: actions/checkout@v6
95
109
 
96
110
  - name: Setup cmake
97
111
  uses: jwlawson/actions-setup-cmake@v2
@@ -99,9 +113,10 @@ jobs:
99
113
  cmake-version: '3.28.x'
100
114
 
101
115
  - name: Set up Python
102
- uses: actions/setup-python@v4
116
+ uses: actions/setup-python@v6
103
117
  with:
104
118
  python-version: "3.11"
119
+ cache: "pip"
105
120
 
106
121
  - name: Install python dependencies
107
122
  run: pip install -r requirements-dev.txt
@@ -132,44 +147,8 @@ jobs:
132
147
  verbose: true
133
148
 
134
149
  - name: Upload coverage artifacts
135
- uses: actions/upload-artifact@v4
150
+ uses: actions/upload-artifact@v7
136
151
  with:
137
- name: coverage-report
152
+ name: cmake-coverage-report
138
153
  path: build/coverage/
139
154
  retention-days: 5
140
-
141
- deploy-pages:
142
- needs: [build-docs, build-coverage]
143
- runs-on: ubuntu-latest
144
- permissions:
145
- contents: write
146
- pages: write
147
- id-token: write
148
-
149
- steps:
150
- - name: Checkout repository
151
- uses: actions/checkout@v4
152
-
153
- - name: Download documentation artifact
154
- uses: actions/download-artifact@v4
155
- with:
156
- name: documentation
157
- path: ./pages
158
-
159
- - name: Download coverage artifact
160
- uses: actions/download-artifact@v4
161
- with:
162
- name: coverage-report
163
- path: ./pages/coverage
164
-
165
- - name: Setup Pages
166
- uses: actions/configure-pages@v4
167
-
168
- - name: Upload artifact
169
- uses: actions/upload-pages-artifact@v3
170
- with:
171
- path: ./pages
172
-
173
- - name: Deploy to GitHub Pages
174
- id: deployment
175
- uses: actions/deploy-pages@v4
@@ -0,0 +1,127 @@
1
+ name: Orchestration & Release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ branches: [ master ]
7
+ tags: [ "v*" ]
8
+
9
+ jobs:
10
+ init:
11
+ runs-on: ubuntu-latest
12
+ outputs:
13
+ release_name: ${{ steps.init.outputs.release_name }}
14
+ is_tag: ${{ steps.init.outputs.is_tag }}
15
+ version_string: ${{ steps.init.outputs.version_string }}
16
+ steps:
17
+ - name: Checkout repository
18
+ uses: actions/checkout@v6
19
+
20
+ - name: Initalize
21
+ id: init
22
+ env:
23
+ GH_TOKEN: ${{ github.token }}
24
+ run: |
25
+ export version_string="$(python version.py | tr -d '\n')"
26
+ echo "version_string=${version_string}" | tee -a "$GITHUB_OUTPUT"
27
+ if [[ "${{ github.ref }}" =~ ^refs/tags/v.*$ ]]; then
28
+ TAG_NAME="${GITHUB_REF#refs/tags/}"
29
+ [[ "${version_string}" == "${GITHUB_REF#refs/tags/v}" ]] || (echo "❌ Version mismatch!" && exit 1)
30
+ export release_name="$TAG_NAME"
31
+ export is_tag="true"
32
+ else
33
+ gh api repos/${{ github.repository }}/releases/tags/__beta__ --jq '.assets[].id' 2>/dev/null | xargs -r -I {} gh api repos/${{ github.repository }}/releases/assets/{} -X DELETE 2>/dev/null || true
34
+ export release_name="__beta__"
35
+ export is_tag="false"
36
+ fi
37
+ echo "release_name=${release_name}" | tee -a "$GITHUB_OUTPUT"
38
+ echo "is_tag=${is_tag}" | tee -a "$GITHUB_OUTPUT"
39
+ sed -i -e "s/RELEASE_NAME/${release_name}/g" -e "s/VERSION_STRING/${version_string}/g" .github/workflows/release_template.md
40
+
41
+
42
+ - name: Initialize release body
43
+ uses: softprops/action-gh-release@v3
44
+ with:
45
+ tag_name: ${{ steps.init.outputs.release_name }}
46
+ name: ${{ steps.init.outputs.release_name }}
47
+ draft: false
48
+ prerelease: ${{ steps.init.outputs.is_tag == 'false' }}
49
+ token: ${{ secrets.GITHUB_TOKEN }}
50
+ body_path: .github/workflows/release_template.md
51
+
52
+ cmake:
53
+ uses: ./.github/workflows/cmake.yml
54
+ needs: [init]
55
+
56
+ wheel:
57
+ uses: ./.github/workflows/wheels.yml
58
+ needs: [init]
59
+
60
+
61
+ release-wheels:
62
+ needs: [wheel,init]
63
+ runs-on: ubuntu-latest
64
+ steps:
65
+ - name: Download all artifacts
66
+ uses: actions/download-artifact@v8
67
+ with:
68
+ pattern: wheelhouse-*
69
+ path: dist
70
+ merge-multiple: true
71
+
72
+ - name: List dist directory
73
+ run: tree --du -shaC .
74
+
75
+ - name: create release body
76
+ uses: softprops/action-gh-release@v3
77
+ with:
78
+ tag_name: ${{ needs.init.outputs.release_name }}
79
+ name: ${{ needs.init.outputs.release_name }}
80
+ draft: false
81
+ prerelease: ${{ needs.init.outputs.is_tag == 'false' }}
82
+ token: ${{ secrets.GITHUB_TOKEN }}
83
+ files: dist/*
84
+
85
+ - name: Publishing to PyPi
86
+ uses: pypa/gh-action-pypi-publish@release/v1
87
+ if: startsWith(github.ref, 'refs/tags/')
88
+ with:
89
+ password: ${{ secrets.PYPI_PASSWORD }}
90
+ user: ${{ secrets.PYPI_USERNAME }}
91
+
92
+
93
+ deploy-pages:
94
+ needs: [cmake]
95
+ runs-on: ubuntu-latest
96
+ permissions:
97
+ contents: write
98
+ pages: write
99
+ id-token: write
100
+
101
+ steps:
102
+ - name: Download documentation artifact
103
+ uses: actions/download-artifact@v8
104
+ with:
105
+ name: cmake-documentation
106
+ path: ./pages
107
+
108
+ - name: Download coverage artifact
109
+ uses: actions/download-artifact@v8
110
+ with:
111
+ name: cmake-coverage-report
112
+ path: ./pages/coverage
113
+
114
+ - name: List pages directory
115
+ run: tree --du -shaC pages
116
+
117
+ - name: Setup Pages
118
+ uses: actions/configure-pages@v4
119
+
120
+ - name: Upload artifact
121
+ uses: actions/upload-pages-artifact@v3
122
+ with:
123
+ path: ./pages
124
+
125
+ - name: Deploy to GitHub Pages
126
+ id: deployment
127
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,77 @@
1
+ import argparse
2
+ import re
3
+ from pathlib import Path
4
+
5
+
6
+ def parse_vars(var_list):
7
+ """Parse variables passed as NAME=VALUE into a dictionary."""
8
+ out = {}
9
+ for item in var_list:
10
+ if "=" not in item:
11
+ raise ValueError(f"Invalid variable: {item}")
12
+ k, v = item.split("=", 1)
13
+ out[k] = v
14
+ return out
15
+
16
+
17
+ def replace_vars(text, vars_dict):
18
+ """Replace all variable placeholders in the text."""
19
+ for k, v in vars_dict.items():
20
+ text = text.replace(k, v)
21
+ return text
22
+
23
+
24
+ def main():
25
+ parser = argparse.ArgumentParser(description="Process release template.")
26
+ parser.add_argument("-i", "--input", required=True, help="Input file path")
27
+ parser.add_argument("-o", "--output", help="Output file path (default: overwrite input)")
28
+ parser.add_argument("-s", "--section", required=True, help="Section name (e.g., PYTHON_SECTION)")
29
+ parser.add_argument("-v", "--variable", action="append", required=True, help="Variables in NAME=VALUE format")
30
+
31
+ args = parser.parse_args()
32
+
33
+ input_path = Path(args.input)
34
+ output_path = Path(args.output) if args.output else input_path
35
+
36
+ content = input_path.read_text(encoding="utf-8")
37
+ variables = parse_vars(args.variable)
38
+
39
+ # 1. Locate the full section block:
40
+ # <!--SECTION_BEGIN ... SECTION_END-->
41
+ section_re = re.compile(
42
+ rf"<!--{args.section}_BEGIN(.*?){args.section}_END-->",
43
+ re.DOTALL,
44
+ )
45
+
46
+ match = section_re.search(content)
47
+ if not match:
48
+ raise ValueError(f"Section {args.section} not found")
49
+
50
+ full_section = match.group(0)
51
+ section_body = match.group(1)
52
+
53
+ # 2. Remove everything between:
54
+ # PLACEHOLDER--> ... <!--PLACEHOLDER
55
+ # This deletes the placeholder/warning content entirely
56
+ cleaned_body = re.sub(
57
+ r"PLACEHOLDER-->.*?<!--PLACEHOLDER",
58
+ "",
59
+ section_body,
60
+ flags=re.DOTALL,
61
+ )
62
+
63
+ # Trim extra whitespace
64
+ cleaned_body = cleaned_body.strip()
65
+
66
+ # 3. Replace variables (e.g., RELEASE_NAME, VERSION_STRING)
67
+ cleaned_body = replace_vars(cleaned_body, variables)
68
+
69
+ # 4. Replace the entire section (including comments) with final content
70
+ new_content = content.replace(full_section, cleaned_body)
71
+
72
+ # 5. Write output
73
+ output_path.write_text(new_content, encoding="utf-8")
74
+
75
+
76
+ if __name__ == "__main__":
77
+ main()
@@ -0,0 +1,9 @@
1
+
2
+ | OS | Available Wheels & Source |
3
+ | :--- | :--- |
4
+ | **Windows** | [![win_amd64-cp314](https://img.shields.io/badge/win_amd64-cp314-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314-win_amd64.whl) [![win_amd64-cp314t](https://img.shields.io/badge/win_amd64-cp314t-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314t-win_amd64.whl) [![win_amd64-cp313](https://img.shields.io/badge/win_amd64-cp313-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp313-cp313-win_amd64.whl) [![win_amd64-cp312](https://img.shields.io/badge/win_amd64-cp312-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp312-cp312-win_amd64.whl) [![win_amd64-cp311](https://img.shields.io/badge/win_amd64-cp311-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp311-cp311-win_amd64.whl) [![win_amd64-cp310](https://img.shields.io/badge/win_amd64-cp310-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp310-cp310-win_amd64.whl) [![win_amd64-cp39](https://img.shields.io/badge/win_amd64-cp39-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp39-cp39-win_amd64.whl) [![win32-cp314](https://img.shields.io/badge/win32-cp314-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314-win32.whl) [![win32-cp314t](https://img.shields.io/badge/win32-cp314t-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314t-win32.whl) [![win32-cp313](https://img.shields.io/badge/win32-cp313-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp313-cp313-win32.whl) [![win32-cp312](https://img.shields.io/badge/win32-cp312-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp312-cp312-win32.whl) [![win32-cp311](https://img.shields.io/badge/win32-cp311-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp311-cp311-win32.whl) [![win32-cp310](https://img.shields.io/badge/win32-cp310-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp310-cp310-win32.whl) [![win32-cp39](https://img.shields.io/badge/win32-cp39-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp39-cp39-win32.whl) |
5
+ | **Linux (glibc)** | [![manylinux_2__24_x86__64-cp314](https://img.shields.io/badge/manylinux_2__24_x86__64-cp314-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl) [![manylinux_2__27_x86__64-cp314t](https://img.shields.io/badge/manylinux_2__27_x86__64-cp314t-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl) [![manylinux_2__24_x86__64-cp313](https://img.shields.io/badge/manylinux_2__24_x86__64-cp313-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl) [![manylinux_2__24_x86__64-cp312](https://img.shields.io/badge/manylinux_2__24_x86__64-cp312-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl) [![manylinux_2__24_x86__64-cp311](https://img.shields.io/badge/manylinux_2__24_x86__64-cp311-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl) [![manylinux_2__24_x86__64-cp310](https://img.shields.io/badge/manylinux_2__24_x86__64-cp310-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl) [![manylinux_2__24_x86__64-cp39](https://img.shields.io/badge/manylinux_2__24_x86__64-cp39-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl) |
6
+ | **Linux (musl)** | [![musllinux_1__2_x86__64-cp314](https://img.shields.io/badge/musllinux_1__2_x86__64-cp314-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314-musllinux_1_2_x86_64.whl) [![musllinux_1__2_x86__64-cp314t](https://img.shields.io/badge/musllinux_1__2_x86__64-cp314t-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314t-musllinux_1_2_x86_64.whl) [![musllinux_1__2_x86__64-cp313](https://img.shields.io/badge/musllinux_1__2_x86__64-cp313-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp313-cp313-musllinux_1_2_x86_64.whl) [![musllinux_1__2_x86__64-cp312](https://img.shields.io/badge/musllinux_1__2_x86__64-cp312-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp312-cp312-musllinux_1_2_x86_64.whl) [![musllinux_1__2_x86__64-cp311](https://img.shields.io/badge/musllinux_1__2_x86__64-cp311-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp311-cp311-musllinux_1_2_x86_64.whl) [![musllinux_1__2_x86__64-cp310](https://img.shields.io/badge/musllinux_1__2_x86__64-cp310-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp310-cp310-musllinux_1_2_x86_64.whl) [![musllinux_1__2_x86__64-cp39](https://img.shields.io/badge/musllinux_1__2_x86__64-cp39-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp39-cp39-musllinux_1_2_x86_64.whl) |
7
+ | **macOS** | [![macosx_10__15_universal2-cp314](https://img.shields.io/badge/macosx_10__15_universal2-cp314-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314-macosx_10_15_universal2.whl) [![macosx_10__15_universal2-cp314t](https://img.shields.io/badge/macosx_10__15_universal2-cp314t-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314t-macosx_10_15_universal2.whl) [![macosx_10__13_universal2-cp313](https://img.shields.io/badge/macosx_10__13_universal2-cp313-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp313-cp313-macosx_10_13_universal2.whl) [![macosx_10__13_universal2-cp312](https://img.shields.io/badge/macosx_10__13_universal2-cp312-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp312-cp312-macosx_10_13_universal2.whl) [![macosx_10__13_universal2-cp311](https://img.shields.io/badge/macosx_10__13_universal2-cp311-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp311-cp311-macosx_10_13_universal2.whl) [![macosx_10__13_universal2-cp310](https://img.shields.io/badge/macosx_10__13_universal2-cp310-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp310-cp310-macosx_10_13_universal2.whl) [![macosx_10__13_universal2-cp39](https://img.shields.io/badge/macosx_10__13_universal2-cp39-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp39-cp39-macosx_10_13_universal2.whl) |
8
+ | **Source** | [![sdist-tar](https://img.shields.io/badge/sdist-tar-blue)](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING.tar.gz) [![source-zip](https://img.shields.io/badge/source-zip-blue)](https://github.com/MohammadRaziei/ctoon/archive/refs/tags/RELEASE_NAME.zip) [![source-tar](https://img.shields.io/badge/source-tar-blue)](https://github.com/MohammadRaziei/ctoon/archive/refs/tags/RELEASE_NAME.tar.gz) |
9
+
@@ -0,0 +1,75 @@
1
+ name: python build wheels
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ workflow_call:
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ env:
10
+ FORCE_COLOR: 3
11
+
12
+ concurrency:
13
+ group: ${{ github.workflow }}-${{ github.ref }}
14
+ cancel-in-progress: true
15
+
16
+ jobs:
17
+ build_sdist:
18
+ name: Build SDist
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - uses: actions/checkout@v6
22
+ with:
23
+ submodules: false
24
+
25
+ - uses: actions/setup-python@v6
26
+ with:
27
+ python-version: "3.11"
28
+ cache: "pip"
29
+
30
+
31
+ # - name: Ruff Check
32
+ # run: pipx run ruff check .
33
+
34
+ - name: Build SDist
35
+ run: pipx run build --sdist
36
+
37
+ - name: Check metadata
38
+ run: pipx run twine check dist/*
39
+
40
+ - uses: actions/upload-artifact@v7
41
+ with:
42
+ name: wheelhouse-sdist
43
+ path: dist/*.tar.gz
44
+ overwrite: true
45
+
46
+
47
+ build_wheels:
48
+ name: Wheels on ${{ matrix.os }}
49
+ runs-on: ${{ matrix.os }}
50
+ strategy:
51
+ fail-fast: true
52
+ matrix:
53
+ os: [ubuntu-latest, macos-latest, windows-latest]
54
+
55
+ steps:
56
+ - uses: actions/checkout@v6
57
+ with:
58
+ submodules: true
59
+
60
+ - name: Build wheels
61
+ uses: pypa/cibuildwheel@v3.4.1
62
+ env:
63
+ MACOSX_DEPLOYMENT_TARGET: "10.13"
64
+ CIBW_ARCHS_MACOS: universal2
65
+ # CIBW_ARCHS_WINDOWS: auto ARM64
66
+ # Disable building PyPy wheels on all platforms
67
+ CIBW_SKIP: pp*
68
+ # CIBW_PRERELEASE_PYTHONS: true
69
+
70
+ - uses: actions/upload-artifact@v7
71
+ with:
72
+ name: wheelhouse-${{ matrix.os }}
73
+ path: wheelhouse/*.whl
74
+ overwrite: false
75
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ctoon
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: A C++ TOON/JSON serialization library with Python bindings
5
5
  Author-Email: Mohammad Raziei <mohammadraziei1375@gmail.com>
6
6
  License: MIT