env-able 1.2.2__tar.gz → 1.2.3__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.
- {env_able-1.2.2 → env_able-1.2.3}/CHANGELOG.md +49 -0
- {env_able-1.2.2 → env_able-1.2.3}/PKG-INFO +16 -1
- {env_able-1.2.2 → env_able-1.2.3}/README.md +15 -0
- {env_able-1.2.2 → env_able-1.2.3}/pyproject.toml +1 -1
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/__init__.py +1 -1
- {env_able-1.2.2 → env_able-1.2.3}/.gitignore +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/LICENSE +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/_gdal_env.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/_gdal_utils.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/_pipeline.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/_result.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/__init__.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/client.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/compliance.html +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/databricks.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/debug.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/desktop.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/edits.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/index.html +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/landing.html +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/project.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/server.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/splash.html +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/templates/Summary A4 Landscape.pagx +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/templates/Summary A4 Portrait.pagx +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/templates/Title Bar A4 Landscape.pagx +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/atlas/templates/Title Bar A4 Portrait.pagx +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/layout.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/morph.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/pull.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/stream.py +0 -0
- {env_able-1.2.2 → env_able-1.2.3}/src/env_able/vector.py +0 -0
|
@@ -1,5 +1,54 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.2.3] - 2026-08-18
|
|
4
|
+
|
|
5
|
+
Skill-side only — no library code changed. The pair carries one version number, so publishing
|
|
6
|
+
this stamps a library release whose content is identical to 1.2.2 except for this note.
|
|
7
|
+
`dev/publish-patch.bat` will stamp a version above; fold this in and delete the heading.
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- **GDAL on a managed Windows machine told you to do something impossible.** PyPI ships no
|
|
11
|
+
Windows wheel for GDAL, so pip compiles from source and needs a C++ compiler that a corporate
|
|
12
|
+
image usually lacks. Preflight then printed `conda install -c conda-forge gdal` — unfollowable
|
|
13
|
+
advice, on precisely the machine that reaches it, because there was no conda either.
|
|
14
|
+
|
|
15
|
+
It now inspects the machine before speaking: whether conda exists, whether some *other* Python
|
|
16
|
+
on the box can already import `osgeo`, and whether there is a compiler at all (asking `vswhere`
|
|
17
|
+
and PATH for `cl`, which is a different question from the C++ *runtime* it already checked).
|
|
18
|
+
Then it prints the one next step that applies — `conda install` where conda exists, or
|
|
19
|
+
**Miniforge** where it does not, with the no-admin silent-install flags.
|
|
20
|
+
|
|
21
|
+
- **The venv could not see a GDAL installed after it was built, and nothing said so.** The venv is
|
|
22
|
+
created with `--system-site-packages`, so it inherits from whichever Python created it: build it
|
|
23
|
+
from a Python without GDAL and it stays without GDAL however much conda you install afterwards.
|
|
24
|
+
Preflight now detects that a Python with `osgeo` exists elsewhere and prints the exact rebuild
|
|
25
|
+
command, and **`--recreate-venv`** deletes and rebuilds from the interpreter you re-run with.
|
|
26
|
+
The re-exec strips the flag so a child run can never delete the venv it is executing inside.
|
|
27
|
+
This cost a real detour to discover on a colleague's first install.
|
|
28
|
+
- **First run on a machine with nothing installed could not get past setup.** Reported from a
|
|
29
|
+
fresh PC: every document said "ask Claude to set it up", and Claude could not. Claude Code's
|
|
30
|
+
auto mode declined to execute `preflight.py` — a script it had just unpacked out of a skill
|
|
31
|
+
file — and then declined to write a wildcard `Bash(python *)` allow rule into `settings.json`
|
|
32
|
+
to get around itself. **Both refusals are correct**, and the second one especially: a skill
|
|
33
|
+
asking for broader execution rights looks exactly like a malicious skill doing the same, and
|
|
34
|
+
the classifier cannot tell this user's own code from a stranger's.
|
|
35
|
+
|
|
36
|
+
So the failure was ours, in the documentation. `INSTALL.md`, the handoff `README.md` and
|
|
37
|
+
`docs/atlas.md` now **lead with the command the user runs** — double-click
|
|
38
|
+
`scripts/setup_atlas.bat`, or one `preflight.py` line — and present "ask Claude" as the
|
|
39
|
+
convenience it is, with a plain warning that it may be refused and that the answer is never to
|
|
40
|
+
have Claude widen its own permissions. All three carry the `!`-prefixed form, which runs in the
|
|
41
|
+
user's own session so the output still lands in the conversation.
|
|
42
|
+
|
|
43
|
+
`SKILL.md` gained the matching instruction for Claude: if you are not permitted to run it, hand
|
|
44
|
+
the command over in one line and stop — do not edit `settings.json`, do not ask for a wildcard
|
|
45
|
+
allow rule, do not retry hoping it passes. On a fresh machine being blocked is the normal
|
|
46
|
+
outcome, and retrying spends the user's first five minutes with the product on nothing.
|
|
47
|
+
|
|
48
|
+
Also documented: a `.skill` is a zip, so unpacking it into `%USERPROFILE%\.claude\skills\atlas\`
|
|
49
|
+
installs it just as well as **Settings → Capabilities → Save Skill**. That is what Claude did
|
|
50
|
+
unprompted on the fresh machine, and it worked — worth writing down rather than rediscovering.
|
|
51
|
+
|
|
3
52
|
## [1.2.2] - 2026-08-17
|
|
4
53
|
|
|
5
54
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: env-able
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.3
|
|
4
4
|
Summary: AI-ready GIS toolkit for energy and subsurface workflows.
|
|
5
5
|
License: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -390,6 +390,21 @@ print(f"{rows:,} rows written")
|
|
|
390
390
|
## Changelog
|
|
391
391
|
### Unreleased
|
|
392
392
|
|
|
393
|
+
**Fixed**
|
|
394
|
+
- **GDAL setup on managed Windows.** PyPI has no Windows GDAL wheel, so pip builds from source and
|
|
395
|
+
fails without a compiler — and preflight then suggested conda, on a machine with no conda.
|
|
396
|
+
It now checks what the machine actually has and names the one route that works, including
|
|
397
|
+
**Miniforge** (no admin needed). New **`--recreate-venv`**, because the venv only sees packages
|
|
398
|
+
from the Python that created it, so a GDAL installed afterwards needs the venv rebuilt.
|
|
399
|
+
- **First-run setup on a clean machine.** Every document said "ask Claude to install it", and on a
|
|
400
|
+
fresh PC Claude cannot: auto mode declines to run a script just unpacked from a skill file, and
|
|
401
|
+
declines to grant itself permission to. Both refusals are right. The docs now lead with the
|
|
402
|
+
command the user runs — `scripts/setup_atlas.bat`, or one `preflight.py` line, with the
|
|
403
|
+
`!`-prefixed variant for the Claude prompt — and `SKILL.md` tells Claude to hand the command
|
|
404
|
+
over rather than retry or touch `settings.json`. No library code changed.
|
|
405
|
+
|
|
406
|
+
### v1.2.2 — 2026-08-17
|
|
407
|
+
|
|
393
408
|
**Fixed**
|
|
394
409
|
- **The README documented three operations out of seven.** `Union`, `Dissolve`, `SpatialJoin`
|
|
395
410
|
and `Near` had no entry at all — for several releases, on the page PyPI renders as the front
|
|
@@ -364,6 +364,21 @@ print(f"{rows:,} rows written")
|
|
|
364
364
|
## Changelog
|
|
365
365
|
### Unreleased
|
|
366
366
|
|
|
367
|
+
**Fixed**
|
|
368
|
+
- **GDAL setup on managed Windows.** PyPI has no Windows GDAL wheel, so pip builds from source and
|
|
369
|
+
fails without a compiler — and preflight then suggested conda, on a machine with no conda.
|
|
370
|
+
It now checks what the machine actually has and names the one route that works, including
|
|
371
|
+
**Miniforge** (no admin needed). New **`--recreate-venv`**, because the venv only sees packages
|
|
372
|
+
from the Python that created it, so a GDAL installed afterwards needs the venv rebuilt.
|
|
373
|
+
- **First-run setup on a clean machine.** Every document said "ask Claude to install it", and on a
|
|
374
|
+
fresh PC Claude cannot: auto mode declines to run a script just unpacked from a skill file, and
|
|
375
|
+
declines to grant itself permission to. Both refusals are right. The docs now lead with the
|
|
376
|
+
command the user runs — `scripts/setup_atlas.bat`, or one `preflight.py` line, with the
|
|
377
|
+
`!`-prefixed variant for the Claude prompt — and `SKILL.md` tells Claude to hand the command
|
|
378
|
+
over rather than retry or touch `settings.json`. No library code changed.
|
|
379
|
+
|
|
380
|
+
### v1.2.2 — 2026-08-17
|
|
381
|
+
|
|
367
382
|
**Fixed**
|
|
368
383
|
- **The README documented three operations out of seven.** `Union`, `Dissolve`, `SpatialJoin`
|
|
369
384
|
and `Near` had no entry at all — for several releases, on the page PyPI renders as the front
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|