pascal-cli 0.1.0__py3-none-win_amd64.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.
Binary file
@@ -0,0 +1,213 @@
1
+ Metadata-Version: 2.4
2
+ Name: pascal-cli
3
+ Version: 0.1.0
4
+ Classifier: Development Status :: 3 - Alpha
5
+ Classifier: Environment :: Console
6
+ Classifier: Intended Audience :: Developers
7
+ Classifier: License :: OSI Approved :: MIT License
8
+ Classifier: Programming Language :: Rust
9
+ Classifier: Topic :: Software Development :: Build Tools
10
+ License-File: LICENSE
11
+ Summary: Fast Python monorepo manager powered by Rust and UV
12
+ Keywords: monorepo,python,cli,uv,workspace
13
+ Requires-Python: >=3.8
14
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
15
+ Project-URL: Homepage, https://github.com/sandeep-selvaraj/pascal
16
+ Project-URL: Issues, https://github.com/sandeep-selvaraj/pascal/issues
17
+ Project-URL: Repository, https://github.com/sandeep-selvaraj/pascal
18
+
19
+ # pascal
20
+
21
+ [![PyPI version](https://img.shields.io/pypi/v/pascal-cli.svg)](https://pypi.org/project/pascal-cli/)
22
+ [![CI](https://github.com/sandeep-selvaraj/pascal/actions/workflows/ci.yml/badge.svg)](https://github.com/sandeep-selvaraj/pascal/actions/workflows/ci.yml)
23
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
24
+
25
+ **Fast Python monorepo manager powered by Rust and UV.**
26
+
27
+ Pascal handles workspace scaffolding, dependency wiring, and UV workspace sync — so you can focus on code, not configuration.
28
+
29
+ **[Documentation](https://sandeep-selvaraj.github.io/pascal)** · [Installation](https://sandeep-selvaraj.github.io/pascal/installation/) · [Quickstart](https://sandeep-selvaraj.github.io/pascal/quickstart/) · [Commands](https://sandeep-selvaraj.github.io/pascal/commands/)
30
+
31
+ > Heavily inspired by [Polylith](https://polylith.gitbook.io/polylith) — *packages* map to Polylith's components, *apps* to its bases, brought to the Python/UV ecosystem with a minimal footprint.
32
+
33
+ ---
34
+
35
+ ## Installation
36
+
37
+ ```bash
38
+ uv tool install pascal-cli # recommended
39
+ pipx install pascal-cli
40
+ pip install pascal-cli
41
+ ```
42
+
43
+ ```bash
44
+ pascal --version
45
+ ```
46
+
47
+ ---
48
+
49
+ ## Quickstart
50
+
51
+ ```bash
52
+ # Bootstrap a workspace
53
+ mkdir shop && cd shop
54
+ pascal init shop
55
+
56
+ # Add a library and an app
57
+ pascal create package cart
58
+ pascal create app storefront
59
+
60
+ # Wire them together
61
+ pascal add cart --to storefront
62
+ uv sync
63
+
64
+ # Validate and inspect
65
+ pascal check
66
+ pascal info
67
+ pascal test
68
+ ```
69
+
70
+ ---
71
+
72
+ ## Workspace layout
73
+
74
+ After the quickstart above, your workspace looks like this:
75
+
76
+ ```
77
+ shop/
78
+ pascal.toml # workspace manifest
79
+ pyproject.toml # UV workspace root — managed by pascal
80
+ uv.lock # lockfile — commit to git
81
+ packages/
82
+ cart/
83
+ pyproject.toml
84
+ src/cart/__init__.py
85
+ tests/test_cart.py
86
+ apps/
87
+ storefront/
88
+ pyproject.toml # depends on cart
89
+ src/storefront/__init__.py
90
+ src/storefront/main.py
91
+ tests/test_storefront.py
92
+ ```
93
+
94
+ **`pascal.toml`**
95
+
96
+ ```toml
97
+ [workspace]
98
+ name = "shop"
99
+ python = "3.12"
100
+ description = "My Python monorepo"
101
+
102
+ # Optional — pascal auto-discovers from packages/ and apps/ if omitted
103
+ packages = ["packages/cart"]
104
+ apps = ["apps/storefront"]
105
+ ```
106
+
107
+ **`apps/storefront/pyproject.toml`** (after `pascal add cart --to storefront`)
108
+
109
+ ```toml
110
+ [project]
111
+ name = "storefront"
112
+ version = "0.1.0"
113
+ requires-python = ">=3.12"
114
+ dependencies = ["cart"]
115
+
116
+ [project.scripts]
117
+ storefront = "storefront.main:main"
118
+
119
+ [tool.uv.sources]
120
+ cart = { workspace = true }
121
+
122
+ [build-system]
123
+ requires = ["hatchling"]
124
+ build-backend = "hatchling.build"
125
+ ```
126
+
127
+ ---
128
+
129
+ ## Command reference
130
+
131
+ | Command | Description |
132
+ |---|---|
133
+ | `pascal init [name]` | Bootstrap a new workspace |
134
+ | `pascal create package <name>` | Scaffold a reusable library |
135
+ | `pascal create app <name>` | Scaffold a deployable app |
136
+ | `pascal add <pkg> --to <app>` | Add a workspace package as a dependency |
137
+ | `pascal info` | Print workspace overview |
138
+ | `pascal deps [--graph]` | Show the dependency tree |
139
+ | `pascal check` | Validate workspace health |
140
+ | `pascal diff [--since <ref>]` | Show changed packages since a git ref |
141
+ | `pascal test [--changed] [name]` | Run tests via UV |
142
+ | `pascal build <app>` | Build an app wheel |
143
+ | `pascal run <app> [-- args]` | Run an app entry-point |
144
+ | `pascal sync` | Regenerate UV workspace config |
145
+
146
+ ---
147
+
148
+ ## Development
149
+
150
+ ### Prerequisites
151
+
152
+ | Tool | Purpose |
153
+ |---|---|
154
+ | [Rust ≥ 1.75](https://rustup.rs) | Compile the binary |
155
+ | [pre-commit](https://pre-commit.com) | Git hook runner (`uv tool install pre-commit`) |
156
+ | [maturin](https://maturin.rs) *(optional)* | Test PyPI packaging locally |
157
+
158
+ ### Build
159
+
160
+ ```bash
161
+ git clone https://github.com/sandeep-selvaraj/pascal
162
+ cd pascal
163
+ cargo build
164
+ ```
165
+
166
+ ### Test
167
+
168
+ ```bash
169
+ cargo test # unit + integration
170
+ cargo test --lib # unit tests only
171
+ cargo test --test integration # integration tests only
172
+ ```
173
+
174
+ Integration tests in `tests/integration.rs` spawn the real binary against `tempfile` directories — no mocking.
175
+
176
+ ### Lint and format
177
+
178
+ ```bash
179
+ cargo fmt
180
+ cargo clippy -- -D warnings
181
+ ```
182
+
183
+ ### Pre-commit hooks
184
+
185
+ Install once after cloning:
186
+
187
+ ```bash
188
+ pre-commit install
189
+ ```
190
+
191
+ Every `git commit` will then run `cargo fmt` and `cargo clippy` automatically.
192
+
193
+ ### Test PyPI packaging
194
+
195
+ ```bash
196
+ pip install maturin
197
+ maturin build
198
+ pip install target/wheels/*.whl
199
+ pascal --version
200
+ ```
201
+
202
+ ### Serve docs locally
203
+
204
+ ```bash
205
+ pip install zensical
206
+ zensical serve
207
+ ```
208
+ ---
209
+
210
+ ## License
211
+
212
+ MIT — see [LICENSE](LICENSE).
213
+
@@ -0,0 +1,6 @@
1
+ pascal_cli-0.1.0.data/scripts/pascal.exe,sha256=8d9Mz1dxpUOSiEDf3Wup1bE9z3yDmUBYAewiNcSJusw,2918912
2
+ pascal_cli-0.1.0.dist-info/METADATA,sha256=nxAVfUZDvD4dH_8qrlQvY4umKkS0JcB04DmSrWzGuoc,5436
3
+ pascal_cli-0.1.0.dist-info/WHEEL,sha256=YKH46JP5eEDGO8MlcZbFM08lLdscocTbxlL8lXLWXQg,94
4
+ pascal_cli-0.1.0.dist-info/licenses/LICENSE,sha256=G11V4_r1c1s-1LcnD2ScTECISz_3pYdO0HvOQhSg9Ok,1094
5
+ pascal_cli-0.1.0.dist-info/sboms/pascal.cyclonedx.json,sha256=qC8tkrpFX5x7rXO7530Rks2K0DfY3zJiuX7_rdxvYGQ,101095
6
+ pascal_cli-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: maturin (1.12.4)
3
+ Root-Is-Purelib: false
4
+ Tag: py3-none-win_amd64
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Sandeep Selvaraj
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.