afterpython 0.1.0.dev7__py3-none-any.whl → 0.1.0.dev9__py3-none-any.whl

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 (44) hide show
  1. afterpython/_io/toml.py +5 -3
  2. afterpython/_paths.py +1 -1
  3. afterpython/_typing.py +1 -2
  4. afterpython/builders/__init__.py +0 -1
  5. afterpython/builders/metadata.py +1 -1
  6. afterpython/builders/molab.py +2 -1
  7. afterpython/cli/__init__.py +0 -1
  8. afterpython/cli/commands/add.py +67 -0
  9. afterpython/cli/commands/build.py +10 -9
  10. afterpython/cli/commands/clean.py +2 -1
  11. afterpython/cli/commands/commit.py +16 -1
  12. afterpython/cli/commands/dev.py +3 -2
  13. afterpython/cli/commands/init.py +26 -12
  14. afterpython/cli/commands/init_branch_rules.py +9 -0
  15. afterpython/cli/commands/install.py +8 -2
  16. afterpython/cli/commands/lock.py +23 -0
  17. afterpython/cli/commands/remove.py +67 -0
  18. afterpython/cli/commands/start.py +6 -3
  19. afterpython/cli/commands/sync.py +3 -3
  20. afterpython/cli/commands/update.py +26 -3
  21. afterpython/cli/main.py +75 -14
  22. afterpython/const.py +0 -1
  23. afterpython/pcu.py +3 -1
  24. afterpython/templates/ci-workflow-template.yml +197 -0
  25. afterpython/templates/dependabot-template.yml +30 -0
  26. afterpython/templates/deploy-workflow-template.yml +5 -5
  27. afterpython/templates/release-workflow-template.yml +3 -3
  28. afterpython/templates/ruff-template.toml +1 -1
  29. afterpython/tools/_afterpython.py +2 -1
  30. afterpython/tools/_git.py +28 -2
  31. afterpython/tools/branch_rules.py +106 -0
  32. afterpython/tools/commitizen.py +1 -2
  33. afterpython/tools/github_actions.py +23 -53
  34. afterpython/tools/myst.py +4 -2
  35. afterpython/tools/pre_commit.py +1 -3
  36. afterpython/tools/pyproject.py +4 -2
  37. afterpython/utils.py +9 -0
  38. {afterpython-0.1.0.dev7.dist-info → afterpython-0.1.0.dev9.dist-info}/METADATA +18 -8
  39. afterpython-0.1.0.dev9.dist-info/RECORD +52 -0
  40. {afterpython-0.1.0.dev7.dist-info → afterpython-0.1.0.dev9.dist-info}/WHEEL +1 -1
  41. afterpython/.pre-commit-config.yaml +0 -48
  42. afterpython/cz.toml +0 -27
  43. afterpython-0.1.0.dev7.dist-info/RECORD +0 -47
  44. {afterpython-0.1.0.dev7.dist-info → afterpython-0.1.0.dev9.dist-info}/entry_points.txt +0 -0
@@ -1,78 +1,48 @@
1
1
  import shutil
2
+ from pathlib import Path
2
3
 
3
4
  import click
4
5
 
5
6
  import afterpython as ap
6
7
 
7
8
 
8
- def init_release_workflow():
9
- """Initialize GitHub Actions release workflow.
10
-
11
- Creates .github/workflows/release.yml in the user's project root.
12
- This workflow triggers on version tags and:
13
- - Builds the package with uv
14
- - Publishes to PyPI using trusted publishing
15
- - Creates GitHub releases (with pre-release detection)
16
- """
17
- user_path = ap.paths.user_path
18
- workflow_dir = user_path / ".github" / "workflows"
19
- workflow_path = workflow_dir / "release.yml"
20
-
21
- if workflow_path.exists():
22
- click.echo(f"GitHub Actions release workflow {workflow_path} already exists")
9
+ def _copy_github_template(template_name: str, target_path: Path):
10
+ """Helper to copy GitHub-related templates"""
11
+ if target_path.exists():
12
+ click.echo(f"{target_path} already exists")
23
13
  return
24
14
 
25
- # Create .github/workflows directory if it doesn't exist
26
- workflow_dir.mkdir(parents=True, exist_ok=True)
15
+ # Create parent directory if it doesn't exist
16
+ target_path.parent.mkdir(parents=True, exist_ok=True)
27
17
 
28
18
  # Copy template from package
29
- template_path = ap.paths.templates_path / "release-workflow-template.yml"
19
+ template_path = ap.paths.templates_path / template_name
30
20
  if not template_path.exists():
31
21
  raise FileNotFoundError(
32
22
  f"Template file not found: {template_path}\n"
33
23
  "This might indicate a corrupted installation. Please reinstall afterpython."
34
24
  )
35
25
 
36
- shutil.copy(template_path, workflow_path)
37
- click.echo(f"Created {workflow_path}")
38
- click.echo(
39
- "\n📋 Next steps to enable releases:\n"
40
- " 1. Enable PyPI trusted publishing:\n"
41
- " - Go to https://pypi.org/manage/account/publishing/\n"
42
- " - Add your repository and workflow file: release.yml\n"
43
- " 2. Push tags to trigger releases:\n"
44
- " - Use 'ap bump --release' for stable releases (auto-pushes tag)\n"
45
- " - Use 'ap bump --pre' then 'ap release' for pre-releases\n"
46
- )
26
+ shutil.copy(template_path, target_path)
27
+ print(f"Created {target_path}")
47
28
 
48
29
 
49
- def init_deploy_workflow():
50
- """Initialize GitHub Actions deployment workflow for GitHub Pages.
30
+ def create_workflow(workflow_name: str):
31
+ """Create a GitHub Actions workflow from template"""
32
+ if ".yml" in workflow_name:
33
+ workflow_name = workflow_name.replace(".yml", "")
51
34
 
52
- Creates .github/workflows/deploy.yml in the user's project root.
53
- This workflow triggers on pushes to main branch and:
54
- - Builds the project website with 'ap build'
55
- - Deploys to GitHub Pages
56
- - Allows manual deployment via workflow_dispatch
57
- """
58
35
  user_path = ap.paths.user_path
59
- workflow_dir = user_path / ".github" / "workflows"
60
- workflow_path = workflow_dir / "deploy.yml"
36
+ workflow_path = user_path / ".github" / "workflows" / f"{workflow_name}.yml"
37
+ template_name = f"{workflow_name}-workflow-template.yml"
61
38
 
62
- if workflow_path.exists():
63
- click.echo(f"GitHub Actions deploy workflow {workflow_path} already exists")
64
- return
39
+ _copy_github_template(template_name, workflow_path)
65
40
 
66
- # Create .github/workflows directory if it doesn't exist
67
- workflow_dir.mkdir(parents=True, exist_ok=True)
68
41
 
69
- # Copy template from package
70
- template_path = ap.paths.templates_path / "deploy-workflow-template.yml"
71
- if not template_path.exists():
72
- raise FileNotFoundError(
73
- f"Template file not found: {template_path}\n"
74
- "This might indicate a corrupted installation. Please reinstall afterpython."
75
- )
42
+ def create_dependabot():
43
+ """Create Dependabot configuration for GitHub Actions updates"""
44
+ user_path = ap.paths.user_path
45
+ dependabot_path = user_path / ".github" / "dependabot.yml"
46
+ template_name = "dependabot-template.yml"
76
47
 
77
- shutil.copy(template_path, workflow_path)
78
- click.echo(f"Created {workflow_path}")
48
+ _copy_github_template(template_name, dependabot_path)
afterpython/tools/myst.py CHANGED
@@ -1,15 +1,17 @@
1
1
  from __future__ import annotations
2
+
2
3
  from typing import TYPE_CHECKING
3
4
 
4
5
  if TYPE_CHECKING:
5
6
  from pathlib import Path
6
- from afterpython._typing import tContentType, NodeEnv
7
+
8
+ from afterpython._typing import NodeEnv, tContentType
7
9
 
8
10
  import subprocess
9
11
 
10
12
  import afterpython as ap
13
+ from afterpython._io.yaml import read_yaml, write_yaml
11
14
  from afterpython.utils import deep_merge
12
- from afterpython._io.yaml import write_yaml, read_yaml
13
15
 
14
16
 
15
17
  def update_authors_yml(data_update: dict):
@@ -1,9 +1,7 @@
1
1
  import subprocess
2
2
 
3
3
  import afterpython as ap
4
-
5
- from afterpython._io.yaml import write_yaml, read_yaml
6
-
4
+ from afterpython._io.yaml import read_yaml, write_yaml
7
5
 
8
6
  pre_commit_default = {
9
7
  # default is only ["pre-commit"], without changing the default,
@@ -1,4 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  from typing import TYPE_CHECKING
3
4
 
4
5
  if TYPE_CHECKING:
@@ -9,7 +10,7 @@ import asyncio
9
10
  from pyproject_metadata import StandardMetadata
10
11
 
11
12
  import afterpython as ap
12
- from afterpython._io.toml import read_toml, write_toml, _to_tomlkit
13
+ from afterpython._io.toml import _to_tomlkit, read_toml, write_toml
13
14
 
14
15
 
15
16
  def read_pyproject() -> TOMLDocument:
@@ -32,8 +33,9 @@ def init_pyproject():
32
33
  - add [project.urls] section with homepage, repository, and documentation URLs
33
34
  """
34
35
  import httpx
35
- from afterpython.utils import fetch_pypi_json
36
+
36
37
  from afterpython.tools._git import get_git_user_config, get_github_url
38
+ from afterpython.utils import fetch_pypi_json
37
39
 
38
40
  build_backend = "uv_build"
39
41
 
afterpython/utils.py CHANGED
@@ -1,9 +1,12 @@
1
1
  from __future__ import annotations
2
+
2
3
  from typing import TYPE_CHECKING
3
4
 
4
5
  if TYPE_CHECKING:
5
6
  from pathlib import Path
7
+
6
8
  from httpx import AsyncClient
9
+
7
10
  from afterpython._typing import NodeEnv
8
11
 
9
12
  import os
@@ -20,6 +23,7 @@ def find_node_env() -> NodeEnv:
20
23
  If no, install the Node.js version specified in NODEENV_VERSION
21
24
  """
22
25
  from mystmd_py.nodeenv import find_any_node
26
+
23
27
  from afterpython.const import NODEENV_VERSION
24
28
 
25
29
  # from mystmd_py.main import ensure_valid_version
@@ -35,6 +39,11 @@ def has_uv() -> bool:
35
39
  return shutil.which("uv") is not None
36
40
 
37
41
 
42
+ def has_pixi() -> bool:
43
+ """Check if pixi is installed"""
44
+ return shutil.which("pixi") is not None
45
+
46
+
38
47
  def has_gh() -> bool:
39
48
  """Check if gh is installed"""
40
49
  return shutil.which("gh") is not None
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: afterpython
3
- Version: 0.1.0.dev7
4
- Summary: CLI tool for AfterPython
3
+ Version: 0.1.0.dev9
4
+ Summary: CLI tool to streamline Python package maintenance and generate a dedicated project website
5
5
  Keywords: package-maintenance,project-website,static-site-generator,developer-tools,documentation,cli-tool,ci/cd,mystmd,semantic-release,python-packaging
6
6
  Author: Stephen Yau
7
7
  Author-email: Stephen Yau <softwareentrepreneer+afterpython@gmail.com>
@@ -10,10 +10,10 @@ Classifier: Operating System :: OS Independent
10
10
  Classifier: Intended Audience :: Developers
11
11
  Classifier: Topic :: Software Development :: Build Tools
12
12
  Classifier: Topic :: Software Development :: Documentation
13
+ Classifier: Typing :: Typed
13
14
  Classifier: Programming Language :: Python :: 3.11
14
15
  Classifier: Programming Language :: Python :: 3.12
15
16
  Classifier: Programming Language :: Python :: 3.13
16
- Classifier: Programming Language :: Python :: 3.14
17
17
  Requires-Dist: click>=8.3.1
18
18
  Requires-Dist: trogon>=0.6.0
19
19
  Requires-Dist: httpx>=0.28.1
@@ -22,11 +22,11 @@ Requires-Dist: ruamel-yaml>=0.18.16
22
22
  Requires-Dist: gitpython>=3.1.45
23
23
  Requires-Dist: pygithub>=2.8.1
24
24
  Requires-Dist: python-dotenv>=1.2.1
25
- Requires-Dist: pyproject-metadata>=0.9.1
25
+ Requires-Dist: pyproject-metadata>=0.10.0
26
26
  Requires-Dist: mystmd>=1.6.6
27
27
  Requires-Dist: pdoc>=16.0.0
28
- Requires-Dist: ruff>=0.14.5
29
- Requires-Dist: pre-commit>=4.4.0
28
+ Requires-Dist: ruff>=0.14.6
29
+ Requires-Dist: pre-commit>=4.5.0
30
30
  Requires-Dist: commitizen>=4.10.0
31
31
  Requires-Python: >=3.11
32
32
  Project-URL: documentation, https://afterpython.afterpython.org/doc
@@ -76,8 +76,9 @@ First-time maintainers must learn multiple tools and concepts, e.g. [MyST], [Sem
76
76
 
77
77
  ## Core Features
78
78
  - [x] Write content directly in [MyST Markdown] or [Jupyter Notebook]
79
- - [x] Go from writing to website deployment in minutes — no need to learn any of the underlying tools
80
- - [x] Centralize all your content in a modern, unified project website — from documentation to blog posts
79
+ - [x] Go from writing to **website deployment in minutes** — no need to learn any of the underlying tools
80
+ - [x] Centralize all your content in a modern, **unified project website** — from documentation to blog posts
81
+ - [x] Zero-config orchestration — Pre-configured modern tooling with sane defaults (see [Tech Stack](#tech-stack)), so you can start maintaining packages immediately **without learning each tool**
81
82
  - [ ] Export content as PDF — for example, combine all blog posts into a single PDF file
82
83
  - [ ] **⚡ Full-text search** across **ALL** your content in your website — docs, blogs, tutorials, everything
83
84
  - [ ] **🤖 Embedded AI Chatbot** that answers questions directly using an in-browser LLM — at no cost
@@ -91,16 +92,20 @@ First-time maintainers must learn multiple tools and concepts, e.g. [MyST], [Sem
91
92
  <img alt="Project Website" src="afterpython/static/website-light.png">
92
93
  </picture>
93
94
 
95
+ You can create your own website too and deploy it to GitHub Pages in **less than a minute**! See [Quickstart](https://afterpython.afterpython.org/doc/quickstart).
96
+
94
97
  ---
95
98
  ## Installation
96
99
  ```bash
97
100
  # install afterpython as a dev dependency
98
101
  uv add --dev afterpython
102
+
99
103
  # initialize afterpython
100
104
  ap init
101
105
  ```
102
106
 
103
107
 
108
+ ---
104
109
  ## Tech Stack
105
110
  - [MyST]
106
111
  - [project-website-template]
@@ -114,3 +119,8 @@ ap init
114
119
  - [WebLLM]
115
120
  <!-- - ty -->
116
121
  <!-- - [pixi] -->
122
+
123
+
124
+ ---
125
+ ## *Our Mission*
126
+ > Only by making package maintenance and documentation easy can we encourage more Python developers to publish their own packages and grow the ecosystem even further.
@@ -0,0 +1,52 @@
1
+ afterpython/__init__.py,sha256=aNochs72gU2NR1cBzIkk3NxSsdJ7ceHluI5gdYwaFpI,289
2
+ afterpython/_io/toml.py,sha256=dvmq6n4MhlJ02u_YjfC3mOnCWatfCn_J1lugavigoJw,3410
3
+ afterpython/_io/yaml.py,sha256=raksve_gaIFJim8lQrq-kQHkRjTloed7CT2FY0oUJSg,654
4
+ afterpython/_paths.py,sha256=FTwQ7necKYuRosCyMZPfv1eqaEmGIsyqd3yXpm-WQTA,1584
5
+ afterpython/_typing.py,sha256=FbphSGoujPuTfCZqt0HaKQrBgzhRpCOEAEQU6Cbl7oA,145
6
+ afterpython/builders/__init__.py,sha256=_3x9_xP3xmMn3lJTsKZBrEC8kKFXZfkSa6KhNk1TyLQ,214
7
+ afterpython/builders/metadata.py,sha256=NkhKQLCmdzRId_tHNldIC3h3an3QQPjqBRGnhr9az1U,1273
8
+ afterpython/builders/molab.py,sha256=viQ3HY5tnMiHjrgsm4BAMuYtTpiFJ0SDYzcm1TyoRDI,3715
9
+ afterpython/cli/__init__.py,sha256=G4AB-rllhmr7tURFc5cXJfkjZZ2bXtMBg3oy4zUGEFw,84
10
+ afterpython/cli/commands/add.py,sha256=Ppp4msdvOwN9_-fdG5-b0-IV9p0Eef9CiIEU3srUjYk,1792
11
+ afterpython/cli/commands/build.py,sha256=kFVdu0tNn82qaHVDS9tUKHYwH73zE3adkRBG_c2t44c,8020
12
+ afterpython/cli/commands/bump.py,sha256=Wg-q3UQIkIRGT3umZCUBPpwIQTAHwQZVs1yHSZhmzKE,3088
13
+ afterpython/cli/commands/check.py,sha256=cLP4Vle3ENQHCXBv1okDlWK-L1XK-fv80m66xW3LQkg,1097
14
+ afterpython/cli/commands/clean.py,sha256=ZNhOwxcdxhkzqLPwDJ2_NPLnvMz3C1EKyNttXTyIHnI,2532
15
+ afterpython/cli/commands/commit.py,sha256=TKhlybJxbcChMzZJuTfYafCrYUraqyBpLJ4TP0WA-xs,1335
16
+ afterpython/cli/commands/commitizen.py,sha256=naI8j4pfXIMsiOLmPMeZTGh831I3665_1_Sbn7yoKyE,811
17
+ afterpython/cli/commands/dev.py,sha256=zuto7Z6nfD1FAhZkhZNoLhxVH78Eo3W3iO6QujOMXII,6753
18
+ afterpython/cli/commands/format.py,sha256=cXvuc-6XwULM1VJjS2B2bJBvnV1TVHFl1CeSs0SYQ24,738
19
+ afterpython/cli/commands/init.py,sha256=lyNcE-fmgXyLGoSRkvHg_xpDt9gnySemTh-0m6lX0Ws,3354
20
+ afterpython/cli/commands/init_branch_rules.py,sha256=fzAm8D5qbW3u4bEMpqPuRgO-0akuCGG7pu09JlKhYn4,243
21
+ afterpython/cli/commands/install.py,sha256=K3xYzU7XOts_xdERyd4q3wUFv0hythy7ZP6jr9N_6L4,777
22
+ afterpython/cli/commands/lock.py,sha256=WAfZY4Jb7XLl7_zcjxCAs8VCGitX-zPlkXLTkPtOqDs,605
23
+ afterpython/cli/commands/pre_commit.py,sha256=DdmbkcZgJ7QArAY1y5vODYZmHUXWEIuXRyp69AS-pn0,1981
24
+ afterpython/cli/commands/preview.py,sha256=EbuB-dFcgonmqumTb2aHlLpXRiXkGE4DI3ddJdHwcaM,619
25
+ afterpython/cli/commands/release.py,sha256=6SDEnPtuCL0_XUqWUlvRSKxAv011QqOD0kc5pKu7378,2479
26
+ afterpython/cli/commands/remove.py,sha256=Fl79JSI9IdHyzYflocXxcxgBkBPkNFAW98Yuijly26g,1812
27
+ afterpython/cli/commands/start.py,sha256=nXMOYQmAWqsqLphm09qxag83aLI7_w3TxjJQQt2CQjk,3992
28
+ afterpython/cli/commands/sync.py,sha256=2PQA_jxH701l_Ijmr4hZV6K-f_G1Wx7lRScDttT3-9E,4669
29
+ afterpython/cli/commands/update.py,sha256=inMdpNNtyDdh7311sIFwEiNzetXCzjSFG8YhyM9GVh0,6393
30
+ afterpython/cli/main.py,sha256=m3BJ5rOlllUyOngD2HF2fosDLrduREzAQKpsTqcYPZc,4956
31
+ afterpython/const.py,sha256=B_yUBmHPyu98aOibwt7idWbhKNBBed0TeYXNBd8tPTk,157
32
+ afterpython/main.py,sha256=w0z6mTib3u4p2HxMrk-tIJlZtur7uRaqsbE0ewlYlSs,490
33
+ afterpython/pcu.py,sha256=EoEhSzFZ49b5qc9KH2RLxIHSzY8YFM5uhtw07chcrr8,6093
34
+ afterpython/templates/ci-workflow-template.yml,sha256=2L-SRPB2GKlfR4bQAgpdq4r9bFdT9vCYo4oWjnIzKfg,5933
35
+ afterpython/templates/dependabot-template.yml,sha256=CBQEgh8EsXw2X7IqzGtFI7lVT9liF6PW4DvGLB0X2LY,1136
36
+ afterpython/templates/deploy-workflow-template.yml,sha256=2W4K3lKMYjSTPrlXIsMweBzqP9IoLtZXAAcUu5FA5NA,2365
37
+ afterpython/templates/release-workflow-template.yml,sha256=3YBkgrqmi--uznslpMxPz7Vj7L4_NPlhDxgwYBt-Ui8,1606
38
+ afterpython/templates/ruff-template.toml,sha256=lNCd4EthoLScr4cyVEgGUH4xK5CfIX3f9I3zkJHAYgg,1008
39
+ afterpython/tools/_afterpython.py,sha256=aZdRJ9dprA1HFchDFTqreJbrsI_HTPUaxtuBinVz10I,1905
40
+ afterpython/tools/_git.py,sha256=aO-qDEQ4OevD_B74DYKK4nQKYeiaS1BXmYc8paJRfbQ,3772
41
+ afterpython/tools/branch_rules.py,sha256=ciQ2H2YBnoCZu_plyVeIHzf2FcAILRFhpjzOR2_IfJg,3159
42
+ afterpython/tools/commitizen.py,sha256=xpLZJuEqrRxCYz8la6po1PIlECk9O1BuAgsmSE1EY3I,1468
43
+ afterpython/tools/github_actions.py,sha256=zVmg9aqUg-EO0CnbRHl9i8TmFtXpt7nd0VjzckqqE30,1527
44
+ afterpython/tools/myst.py,sha256=fh0FtgL9A1dmFa98QKsWFqExsG7hPRP3nrj62U9PmaA,6603
45
+ afterpython/tools/pre_commit.py,sha256=U4cazFxaZmyamk_n-85sL6BLOttURm-I2giksgE0qb8,2191
46
+ afterpython/tools/pyproject.py,sha256=YiSbW-bXYtFCkXRl_Ibdca2OeYZT0lsqzRRjZFxMcp4,2327
47
+ afterpython/utils.py,sha256=Uh4pTGeavH5pf8GCeMYQGqs3iPpZzjjAJ_R7t2mhEyY,7045
48
+ afterpython/version.py,sha256=hihRV1S-gc1m46OaXD32ikkEkqzs-Gtq7AcAqOQV-wY,1603
49
+ afterpython-0.1.0.dev9.dist-info/WHEEL,sha256=3id4o64OvRm9dUknh3mMJNcfoTRK08ua5cU6DFyVy-4,79
50
+ afterpython-0.1.0.dev9.dist-info/entry_points.txt,sha256=roa0PDgBueM1JPbRG0G2OSxzaN394OUL_oS9iEwVLBc,80
51
+ afterpython-0.1.0.dev9.dist-info/METADATA,sha256=-67mS-Do6Uw1T_KvopXaXvAJafgaAgbX_oaAzDUJqWo,5906
52
+ afterpython-0.1.0.dev9.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: uv 0.9.11
2
+ Generator: uv 0.9.13
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,48 +0,0 @@
1
- default_install_hook_types:
2
- - pre-commit
3
- - commit-msg
4
- - pre-push
5
- exclude: ^afterpython/_website/
6
- repos:
7
- - repo: https://github.com/pre-commit/pre-commit-hooks
8
- rev: v6.0.0
9
- hooks:
10
- - id: trailing-whitespace
11
- stages:
12
- - pre-commit
13
- - id: end-of-file-fixer
14
- stages:
15
- - pre-commit
16
- - id: check-yaml
17
- stages:
18
- - pre-commit
19
- - id: check-toml
20
- stages:
21
- - pre-commit
22
- - id: check-added-large-files
23
- stages:
24
- - pre-commit
25
- - repo: https://github.com/astral-sh/ruff-pre-commit
26
- rev: v0.14.5
27
- hooks:
28
- - id: ruff-check
29
- stages:
30
- - pre-commit
31
- args:
32
- - --config
33
- - ./afterpython/ruff.toml
34
- - id: ruff-format
35
- stages:
36
- - pre-commit
37
- args:
38
- - --config
39
- - ./afterpython/ruff.toml
40
- - repo: https://github.com/commitizen-tools/commitizen
41
- rev: v4.10.0
42
- hooks:
43
- - id: commitizen
44
- stages:
45
- - commit-msg
46
- - id: commitizen-branch
47
- stages:
48
- - pre-push
afterpython/cz.toml DELETED
@@ -1,27 +0,0 @@
1
- [tool.commitizen]
2
- name = "cz_conventional_commits"
3
- # name = "cz_customize"
4
- tag_format = "v$version"
5
- version_scheme = "pep440"
6
- version_provider = "uv"
7
- update_changelog_on_bump = false
8
- major_version_zero = true
9
-
10
- # FIXME: commitizen can't even add a few custom types like "chore" and "wip", skip it for now
11
- # [[tool.commitizen.customize.questions]]
12
- # type = "list"
13
- # name = "change_type"
14
- # choices = [
15
- # {value = "fix", name = "fix: A bug fix. Correlates with PATCH in SemVer"},
16
- # {value = "feat", name = "feat: A new feature. Correlates with MINOR in SemVer"},
17
- # {value = "docs", name = "docs: Documentation only changes"},
18
- # {value = "style", name = "style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)"},
19
- # {value = "refactor", name = "refactor: A code change that neither fixes a bug nor adds a feature"},
20
- # {value = "perf", name = "perf: A code change that improves performance"},
21
- # {value = "test", name = "test: Adding missing or correcting existing tests"},
22
- # {value = "build", name = "build: Changes that affect the build system or external dependencies (example scopes: pip, docker, npm)"},
23
- # {value = "ci", name = "ci: Changes to CI configuration files and scripts (example scopes: GitLabCI)"},
24
- # {value = "chore", name = "chore: Other changes that don't modify src or test files"},
25
- # {value = "wip", name = "wip: Work in progress"}
26
- # ]
27
- # message = "Select the type of change you are committing"
@@ -1,47 +0,0 @@
1
- afterpython/.pre-commit-config.yaml,sha256=7mpSRHaFcG2M6SOY-5Sbs9WxN8UISnZ2g0NwCGsLNCA,915
2
- afterpython/__init__.py,sha256=aNochs72gU2NR1cBzIkk3NxSsdJ7ceHluI5gdYwaFpI,289
3
- afterpython/_io/toml.py,sha256=nrx0CFPONgmkz5WDCSMyr4caic6nzu0uCd33qOmhhF0,3408
4
- afterpython/_io/yaml.py,sha256=raksve_gaIFJim8lQrq-kQHkRjTloed7CT2FY0oUJSg,654
5
- afterpython/_paths.py,sha256=1NrPQ4erjA_rIvDggx7QRY4_01zyU-yht9s95Q-4YgM,1584
6
- afterpython/_typing.py,sha256=kmxBRbhft85C8Ycm5BFBP258Jozrw9tsl7KHOVPcF_o,146
7
- afterpython/builders/__init__.py,sha256=MOv3spIh-ABwyUtvQAHhPZ2horWb0D93WNmOPNAzKYo,215
8
- afterpython/builders/metadata.py,sha256=fj7rlawZCh43aJrBBfcmOTlYew1aW-om3QTpVulKbOk,1273
9
- afterpython/builders/molab.py,sha256=Qji8piWJB1tbzhgtld0pQWIsUA7d7RsGCfnoLVKd5EA,3714
10
- afterpython/cli/__init__.py,sha256=1vLZylRMnGaV7cJ-kHO96dChp33_P4fBIJ_Vi-yyZg4,85
11
- afterpython/cli/commands/build.py,sha256=GkO06D8ktaH3OZWcZhuh463n4vFE1A_OE-iwRuagQdM,8051
12
- afterpython/cli/commands/bump.py,sha256=Wg-q3UQIkIRGT3umZCUBPpwIQTAHwQZVs1yHSZhmzKE,3088
13
- afterpython/cli/commands/check.py,sha256=cLP4Vle3ENQHCXBv1okDlWK-L1XK-fv80m66xW3LQkg,1097
14
- afterpython/cli/commands/clean.py,sha256=dCEkkWOTn93758wGTrWJG9V6c-lv2Z59CYfoP3i3rJE,2531
15
- afterpython/cli/commands/commit.py,sha256=yRLOBs6JetZSGkFy9_uLzgR8yAX9djeUF291gabtuUo,880
16
- afterpython/cli/commands/commitizen.py,sha256=naI8j4pfXIMsiOLmPMeZTGh831I3665_1_Sbn7yoKyE,811
17
- afterpython/cli/commands/dev.py,sha256=yI1g0v7HlVaVH6HwcHyukLYMyUbZjAd0BiCYk9QGdGw,6752
18
- afterpython/cli/commands/format.py,sha256=cXvuc-6XwULM1VJjS2B2bJBvnV1TVHFl1CeSs0SYQ24,738
19
- afterpython/cli/commands/init.py,sha256=Sc0B-Gv1bpYHzD8hYoVTXY2QsOV36kWcKH5vgHBmp1g,2987
20
- afterpython/cli/commands/install.py,sha256=wgH9DEuN7hsA6BslNJASqOBn4VHJrYHBvowXDHi4smE,573
21
- afterpython/cli/commands/pre_commit.py,sha256=DdmbkcZgJ7QArAY1y5vODYZmHUXWEIuXRyp69AS-pn0,1981
22
- afterpython/cli/commands/preview.py,sha256=EbuB-dFcgonmqumTb2aHlLpXRiXkGE4DI3ddJdHwcaM,619
23
- afterpython/cli/commands/release.py,sha256=6SDEnPtuCL0_XUqWUlvRSKxAv011QqOD0kc5pKu7378,2479
24
- afterpython/cli/commands/start.py,sha256=PnO1ECXnYtJxTOoDgG2ZoiVnkJVYNhPT63rabronjZ0,3992
25
- afterpython/cli/commands/sync.py,sha256=epgD8VvrkYB1GSKMu4UFQb3-uGjyiLzw8CjtjaGB6zs,4669
26
- afterpython/cli/commands/update.py,sha256=f6dzoJIiEod7j44dgnaFe-v7INVdUbopVoWPxv7-Mpo,5491
27
- afterpython/cli/main.py,sha256=GMcP7bmOA1glKGPsCuOXcd-9hv2k3BGkk_ofdo8oatw,2660
28
- afterpython/const.py,sha256=KsALiC1kERK9BQQdYRXSHdYosxVExxgDN7iGYMAJrZE,158
29
- afterpython/cz.toml,sha256=JlenGROat8jvxvqRH6KluDs6f7w0JAy8Skd3ak7sGLY,1506
30
- afterpython/main.py,sha256=w0z6mTib3u4p2HxMrk-tIJlZtur7uRaqsbE0ewlYlSs,490
31
- afterpython/pcu.py,sha256=RWgPcdAFyNBVhWbQPuL1seji9uyT8Pqz-zE6jCf_Qb8,6091
32
- afterpython/templates/deploy-workflow-template.yml,sha256=O3uGNg-m-nK5ZUhIPpRMqLje1uAFm4OWk7JoTbEq8H4,2365
33
- afterpython/templates/release-workflow-template.yml,sha256=DpuFLo3_43rqwBjDf3XrWbYJNRdlhy7-wJFL_TxdRNE,1606
34
- afterpython/templates/ruff-template.toml,sha256=_yTtZ0YPsJiCxy66ZDfYaStTJ9aXXW-JXy-KW6l2bBE,1010
35
- afterpython/tools/_afterpython.py,sha256=W88GhtQADB09DV4A24GOYBeYrHsnVVzllLdWFiKgS1A,1904
36
- afterpython/tools/_git.py,sha256=pOcbP_hb6db3qRlbB4Hlp7MkShkTmUefnIBU2kqoq4I,3211
37
- afterpython/tools/commitizen.py,sha256=9aGXsO4tTyDs3s8qS_fiskdSabHqc9XjHwePThybJU0,1469
38
- afterpython/tools/github_actions.py,sha256=M3uGLJKOCml1fQBc8W2lkZWsR5p-0UVUolFWvqf5mDo,2866
39
- afterpython/tools/myst.py,sha256=w24zqWRUOLaZIC0twpGM4BF__wldmrgIvbns0FFdunA,6601
40
- afterpython/tools/pre_commit.py,sha256=stXUQfR0A6nPMCSuuKO-Icjc5F2z9VsZu2mKkIW1vWI,2193
41
- afterpython/tools/pyproject.py,sha256=YwJJAB3lIqYK9wt8UtL4dfCli9UN7uzi3e-vtycB0HE,2325
42
- afterpython/utils.py,sha256=WzP34cA0_Mh3F_focTtk-4sSqrIZUpv7PpkPJHpUUzc,6934
43
- afterpython/version.py,sha256=hihRV1S-gc1m46OaXD32ikkEkqzs-Gtq7AcAqOQV-wY,1603
44
- afterpython-0.1.0.dev7.dist-info/WHEEL,sha256=YUH1mBqsx8Dh2cQG2rlcuRYUhJddG9iClegy4IgnHik,79
45
- afterpython-0.1.0.dev7.dist-info/entry_points.txt,sha256=roa0PDgBueM1JPbRG0G2OSxzaN394OUL_oS9iEwVLBc,80
46
- afterpython-0.1.0.dev7.dist-info/METADATA,sha256=eIAURxz9BQvYkgnlFQm9wXmiApHcOIx5JK555WhO1LY,5296
47
- afterpython-0.1.0.dev7.dist-info/RECORD,,