artful 0.0.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.
@@ -0,0 +1 @@
1
+ *.ipynb linguist-documentation
@@ -0,0 +1,228 @@
1
+ name: Continuous Integration (uv)
2
+ on: [push, pull_request]
3
+
4
+ # Note: Environment variables (PROJECT_NAME and vars from [tool.wads.ci.env])
5
+ # are set by the read-ci-config action in the setup job and made available
6
+ # to all subsequent jobs via GITHUB_ENV
7
+
8
+ jobs:
9
+ # First job: Read configuration from pyproject.toml
10
+ setup:
11
+ name: Read Configuration
12
+ runs-on: ubuntu-latest
13
+ outputs:
14
+ project-name: ${{ steps.config.outputs.project-name }}
15
+ python-versions: ${{ steps.config.outputs.python-versions }}
16
+ pytest-args: ${{ steps.config.outputs.pytest-args }}
17
+ coverage-enabled: ${{ steps.config.outputs.coverage-enabled }}
18
+ exclude-paths: ${{ steps.config.outputs.exclude-paths }}
19
+ test-on-windows: ${{ steps.config.outputs.test-on-windows }}
20
+ build-sdist: ${{ steps.config.outputs.build-sdist }}
21
+ build-wheel: ${{ steps.config.outputs.build-wheel }}
22
+ metrics-enabled: ${{ steps.config.outputs.metrics-enabled }}
23
+ metrics-config-path: ${{ steps.config.outputs.metrics-config-path }}
24
+ metrics-storage-branch: ${{ steps.config.outputs.metrics-storage-branch }}
25
+ metrics-python-version: ${{ steps.config.outputs.metrics-python-version }}
26
+ metrics-force-run: ${{ steps.config.outputs.metrics-force-run }}
27
+ ruff-enabled: ${{ steps.config.outputs.ruff-enabled }}
28
+ black-enabled: ${{ steps.config.outputs.black-enabled }}
29
+ mypy-enabled: ${{ steps.config.outputs.mypy-enabled }}
30
+ docs-enabled: ${{ steps.config.outputs.docs-enabled }}
31
+
32
+ steps:
33
+ - uses: actions/checkout@v4
34
+
35
+ - name: Set up uv
36
+ uses: astral-sh/setup-uv@v5
37
+
38
+ - name: Set up Python
39
+ run: uv python install 3.11
40
+
41
+ - name: Read CI Config
42
+ id: config
43
+ uses: i2mint/wads/actions/read-ci-config@master
44
+ with:
45
+ pyproject-path: .
46
+
47
+ # Second job: Validation using the config
48
+ validation:
49
+ name: Validation
50
+ if: "!contains(github.event.head_commit.message, '[skip ci]')"
51
+ needs: setup
52
+ runs-on: ubuntu-latest
53
+ strategy:
54
+ matrix:
55
+ python-version: ${{ fromJson(needs.setup.outputs.python-versions) }}
56
+
57
+ steps:
58
+ - uses: actions/checkout@v4
59
+
60
+ - name: Set up uv
61
+ uses: astral-sh/setup-uv@v5
62
+ with:
63
+ enable-cache: true
64
+
65
+ - name: Set up Python ${{ matrix.python-version }}
66
+ uses: i2mint/wads/actions/setup-python-uv@master
67
+ with:
68
+ python-version: ${{ matrix.python-version }}
69
+
70
+ - name: Install System Dependencies
71
+ uses: i2mint/wads/actions/install-system-deps@master
72
+ with:
73
+ pyproject-path: .
74
+
75
+ - name: Install Dependencies
76
+ uses: i2mint/wads/actions/install-deps-uv@master
77
+
78
+ - name: Format Source Code
79
+ if: needs.setup.outputs.ruff-enabled != 'false'
80
+ run: uvx ruff format .
81
+
82
+ - name: Format Source Code (black)
83
+ if: needs.setup.outputs.black-enabled == 'true'
84
+ run: uvx black .
85
+
86
+ - name: Lint Validation
87
+ if: needs.setup.outputs.ruff-enabled != 'false'
88
+ run: uvx ruff check --output-format=github ${{ needs.setup.outputs.project-name }}
89
+
90
+ - name: Type Check (mypy)
91
+ if: needs.setup.outputs.mypy-enabled == 'true'
92
+ run: uvx mypy ${{ needs.setup.outputs.project-name }}
93
+
94
+ - name: Run Tests
95
+ uses: i2mint/wads/actions/run-tests-uv@master
96
+ with:
97
+ root-dir: ${{ needs.setup.outputs.project-name }}
98
+ pytest-args: ${{ needs.setup.outputs.pytest-args }}
99
+ exclude-paths: ${{ needs.setup.outputs.exclude-paths }}
100
+ coverage: ${{ needs.setup.outputs.coverage-enabled }}
101
+
102
+ - name: Track Code Metrics
103
+ if: needs.setup.outputs.metrics-enabled == 'true'
104
+ uses: i2mint/umpyre/actions/track-metrics@master
105
+ continue-on-error: true
106
+ with:
107
+ github-token: ${{ secrets.GITHUB_TOKEN }}
108
+ config-path: ${{ needs.setup.outputs.metrics-config-path }}
109
+ storage-branch: ${{ needs.setup.outputs.metrics-storage-branch }}
110
+ python-version: ${{ needs.setup.outputs.metrics-python-version }}
111
+ force-run: ${{ needs.setup.outputs.metrics-force-run }}
112
+
113
+ # Optional Windows testing (if enabled in config)
114
+ windows-validation:
115
+ name: Windows Tests
116
+ if: "!contains(github.event.head_commit.message, '[skip ci]') && needs.setup.outputs.test-on-windows == 'true'"
117
+ needs: setup
118
+ runs-on: windows-latest
119
+ continue-on-error: true
120
+
121
+ steps:
122
+ - uses: actions/checkout@v4
123
+
124
+ - name: Set up uv
125
+ uses: astral-sh/setup-uv@v5
126
+ with:
127
+ enable-cache: true
128
+
129
+ - name: Set up Python
130
+ uses: i2mint/wads/actions/setup-python-uv@master
131
+ with:
132
+ python-version: ${{ fromJson(needs.setup.outputs.python-versions)[0] }}
133
+
134
+ - name: Install System Dependencies
135
+ uses: i2mint/wads/actions/install-system-deps@master
136
+ with:
137
+ pyproject-path: .
138
+
139
+ - name: Install Dependencies
140
+ uses: i2mint/wads/actions/install-deps-uv@master
141
+
142
+ - name: Run Tests
143
+ uses: i2mint/wads/actions/run-tests-uv@master
144
+ with:
145
+ root-dir: ${{ needs.setup.outputs.project-name }}
146
+ pytest-args: ${{ needs.setup.outputs.pytest-args }}
147
+ exclude-paths: ${{ needs.setup.outputs.exclude-paths }}
148
+
149
+ # Publishing job
150
+ publish:
151
+ name: Publish
152
+ permissions:
153
+ contents: write
154
+ if: "!contains(github.event.head_commit.message, '[skip ci]') && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main')"
155
+ needs: [setup, validation]
156
+ runs-on: ubuntu-latest
157
+
158
+ steps:
159
+ - uses: actions/checkout@v4
160
+ with:
161
+ fetch-depth: 0
162
+ token: ${{ secrets.GITHUB_TOKEN }}
163
+
164
+ - name: Set up uv
165
+ uses: astral-sh/setup-uv@v5
166
+
167
+ - name: Set up Python
168
+ uses: i2mint/wads/actions/setup-python-uv@master
169
+ with:
170
+ python-version: ${{ fromJson(needs.setup.outputs.python-versions)[0] }}
171
+ create-venv: "false"
172
+
173
+ - name: Format Source Code
174
+ if: needs.setup.outputs.ruff-enabled != 'false'
175
+ run: uvx ruff format .
176
+
177
+ - name: Format Source Code (black)
178
+ if: needs.setup.outputs.black-enabled == 'true'
179
+ run: uvx black .
180
+
181
+ - name: Update Version Number
182
+ id: version
183
+ uses: i2mint/isee/actions/bump-version-number@master
184
+
185
+ - name: Build Distribution
186
+ uses: i2mint/wads/actions/build-dist-uv@master
187
+ with:
188
+ sdist: ${{ needs.setup.outputs.build-sdist }}
189
+ wheel: ${{ needs.setup.outputs.build-wheel }}
190
+
191
+ - name: Publish to PyPI
192
+ uses: i2mint/wads/actions/pypi-publish-uv@master
193
+ with:
194
+ pypi-token: ${{ secrets.PYPI_PASSWORD }}
195
+
196
+ - name: Force SSH for git remote
197
+ run: git remote set-url origin git@github.com:${{ github.repository }}.git
198
+
199
+ - name: Commit Changes
200
+ uses: i2mint/wads/actions/git-commit@master
201
+ with:
202
+ commit-message: "**CI** Formatted code + Updated version to ${{ env.VERSION }} [skip ci]"
203
+ ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
204
+ push: true
205
+
206
+ - name: Tag Repository
207
+ uses: i2mint/wads/actions/git-tag@master
208
+ with:
209
+ tag: ${{ env.VERSION }}
210
+ message: "Release version ${{ env.VERSION }}"
211
+ push: true
212
+
213
+ # Optional GitHub Pages (skipped when [tool.wads.ci.docs].enabled = false)
214
+ github-pages:
215
+ name: Publish GitHub Pages
216
+ permissions:
217
+ contents: write
218
+ pages: write
219
+ id-token: write
220
+ if: "!contains(github.event.head_commit.message, '[skip ci]') && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) && needs.setup.outputs.docs-enabled != 'false'"
221
+ needs: [setup, publish]
222
+ runs-on: ubuntu-latest
223
+
224
+ steps:
225
+ - uses: i2mint/epythet/actions/publish-github-pages@master
226
+ with:
227
+ github-token: ${{ secrets.GITHUB_TOKEN }}
228
+ ignore: "tests/,scrap/,examples/"
@@ -0,0 +1,117 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+
7
+ .DS_Store
8
+ # C extensions
9
+ *.so
10
+
11
+ # TLS certificates
12
+ ## Ignore all PEM files anywhere
13
+ *.pem
14
+ ## Also ignore any certs directory
15
+ certs/
16
+
17
+ # Distribution / packaging
18
+ .Python
19
+ build/
20
+ develop-eggs/
21
+ dist/
22
+ downloads/
23
+ eggs/
24
+ .eggs/
25
+ lib/
26
+ lib64/
27
+ parts/
28
+ sdist/
29
+ var/
30
+ wheels/
31
+ *.egg-info/
32
+ .installed.cfg
33
+ *.egg
34
+ MANIFEST
35
+ _build
36
+
37
+ # PyInstaller
38
+ # Usually these files are written by a python script from a template
39
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
40
+ *.manifest
41
+ *.spec
42
+
43
+ # Installer logs
44
+ pip-log.txt
45
+ pip-delete-this-directory.txt
46
+
47
+ # Unit test / coverage reports
48
+ htmlcov/
49
+ .tox/
50
+ .coverage
51
+ .coverage.*
52
+ .cache
53
+ nosetests.xml
54
+ coverage.xml
55
+ *.cover
56
+ .hypothesis/
57
+ .pytest_cache/
58
+
59
+ # Translations
60
+ *.mo
61
+ *.pot
62
+
63
+ # Django stuff:
64
+ *.log
65
+ local_settings.py
66
+ db.sqlite3
67
+
68
+ # Flask stuff:
69
+ instance/
70
+ .webassets-cache
71
+
72
+ # Scrapy stuff:
73
+ .scrapy
74
+
75
+ # Sphinx documentation
76
+ docs/_build/
77
+ docs/*
78
+
79
+ # PyBuilder
80
+ target/
81
+
82
+ # Jupyter Notebook
83
+ .ipynb_checkpoints
84
+
85
+ # pyenv
86
+ .python-version
87
+
88
+ # celery beat schedule file
89
+ celerybeat-schedule
90
+
91
+ # SageMath parsed files
92
+ *.sage.py
93
+
94
+ # Environments
95
+ .env
96
+ .venv
97
+ env/
98
+ venv/
99
+ ENV/
100
+ env.bak/
101
+ venv.bak/
102
+
103
+ # Spyder project settings
104
+ .spyderproject
105
+ .spyproject
106
+
107
+ # Rope project settings
108
+ .ropeproject
109
+
110
+ # mkdocs documentation
111
+ /site
112
+
113
+ # mypy
114
+ .mypy_cache/
115
+
116
+ # PyCharm
117
+ .idea
artful-0.0.2/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Thor Whalen
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
artful-0.0.2/PKG-INFO ADDED
@@ -0,0 +1,22 @@
1
+ Metadata-Version: 2.4
2
+ Name: artful
3
+ Version: 0.0.2
4
+ Summary: AI agents for storyboard generation
5
+ Project-URL: Homepage, https://github.com/thorwhalen/artful
6
+ Project-URL: Repository, https://github.com/thorwhalen/artful
7
+ Project-URL: Documentation, https://thorwhalen.github.io/artful
8
+ Author: Thor Whalen
9
+ License: mit
10
+ License-File: LICENSE
11
+ Requires-Python: >=3.10
12
+ Provides-Extra: dev
13
+ Requires-Dist: pytest-cov>=4.0; extra == 'dev'
14
+ Requires-Dist: pytest>=7.0; extra == 'dev'
15
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
16
+ Provides-Extra: docs
17
+ Requires-Dist: sphinx-rtd-theme>=1.0; extra == 'docs'
18
+ Requires-Dist: sphinx>=6.0; extra == 'docs'
19
+ Description-Content-Type: text/markdown
20
+
21
+ # artful
22
+ AI agents for storyboard generation
artful-0.0.2/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # artful
2
+ AI agents for storyboard generation
File without changes
@@ -0,0 +1,154 @@
1
+ [build-system]
2
+ requires = [
3
+ "hatchling",
4
+ ]
5
+ build-backend = "hatchling.build"
6
+
7
+ [project]
8
+ name = "artful"
9
+ version = "0.0.2"
10
+ description = "AI agents for storyboard generation"
11
+ readme = "README.md"
12
+ requires-python = ">=3.10"
13
+ keywords = []
14
+ authors = [
15
+ { name = "Thor Whalen" },
16
+ ]
17
+ dependencies = []
18
+
19
+ [project.license]
20
+ text = "mit"
21
+
22
+ [project.urls]
23
+ Homepage = "https://github.com/thorwhalen/artful"
24
+ Repository = "https://github.com/thorwhalen/artful"
25
+ Documentation = "https://thorwhalen.github.io/artful"
26
+
27
+ [project.optional-dependencies]
28
+ dev = [
29
+ "pytest>=7.0",
30
+ "pytest-cov>=4.0",
31
+ "ruff>=0.1.0",
32
+ ]
33
+ docs = [
34
+ "sphinx>=6.0",
35
+ "sphinx-rtd-theme>=1.0",
36
+ ]
37
+
38
+ [tool.ruff]
39
+ line-length = 88
40
+ target-version = "py310"
41
+ exclude = [
42
+ "**/*.ipynb",
43
+ ".git",
44
+ ".venv",
45
+ "build",
46
+ "dist",
47
+ "tests",
48
+ "examples",
49
+ "scrap",
50
+ ]
51
+
52
+ [tool.ruff.lint]
53
+ select = [
54
+ "D100",
55
+ ]
56
+ ignore = [
57
+ "D203",
58
+ "E501",
59
+ "B905",
60
+ ]
61
+
62
+ [tool.ruff.lint.pydocstyle]
63
+ convention = "google"
64
+
65
+ [tool.ruff.lint.per-file-ignores]
66
+ "**/tests/*" = [
67
+ "D",
68
+ ]
69
+ "**/examples/*" = [
70
+ "D",
71
+ ]
72
+ "**/scrap/*" = [
73
+ "D",
74
+ ]
75
+
76
+ [tool.pytest.ini_options]
77
+ minversion = "6.0"
78
+ testpaths = [
79
+ "tests",
80
+ ]
81
+ doctest_optionflags = [
82
+ "NORMALIZE_WHITESPACE",
83
+ "ELLIPSIS",
84
+ ]
85
+
86
+ [tool.wads.ci]
87
+ project_name = ""
88
+
89
+ [tool.wads.ci.commands]
90
+ pre_test = []
91
+ test = []
92
+ post_test = []
93
+ lint = []
94
+ format = []
95
+
96
+ [tool.wads.ci.env]
97
+ required_envvars = []
98
+ test_envvars = []
99
+ extra_envvars = []
100
+
101
+ [tool.wads.ci.env.defaults]
102
+
103
+ [tool.wads.ci.quality.ruff]
104
+ enabled = true
105
+
106
+ [tool.wads.ci.quality.black]
107
+ enabled = false
108
+
109
+ [tool.wads.ci.quality.mypy]
110
+ enabled = false
111
+
112
+ [tool.wads.ci.testing]
113
+ python_versions = [
114
+ "3.10",
115
+ "3.12",
116
+ ]
117
+ pytest_args = [
118
+ "-v",
119
+ "--tb=short",
120
+ ]
121
+ coverage_enabled = true
122
+ coverage_threshold = 0
123
+ coverage_report_format = [
124
+ "term",
125
+ "xml",
126
+ ]
127
+ exclude_paths = [
128
+ "examples",
129
+ "scrap",
130
+ ]
131
+ test_on_windows = true
132
+
133
+ [tool.wads.ci.metrics]
134
+ enabled = true
135
+ config_path = ".github/umpyre-config.yml"
136
+ storage_branch = "code-metrics"
137
+ python_version = "3.10"
138
+ force_run = false
139
+
140
+ [tool.wads.ci.build]
141
+ sdist = true
142
+ wheel = true
143
+
144
+ [tool.wads.ci.publish]
145
+ enabled = true
146
+
147
+ [tool.wads.ci.docs]
148
+ enabled = true
149
+ builder = "epythet"
150
+ ignore_paths = [
151
+ "tests/",
152
+ "scrap/",
153
+ "examples/",
154
+ ]