starbash 0.2.7__tar.gz → 0.3.1__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.
- {starbash-0.2.7 → starbash-0.3.1}/PKG-INFO +52 -8
- {starbash-0.2.7 → starbash-0.3.1}/README.md +47 -7
- {starbash-0.2.7 → starbash-0.3.1}/pyproject.toml +11 -1
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/aliases.py +1 -1
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/analytics.py +5 -2
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/app.py +23 -26
- starbash-0.3.1/src/starbash/assets/favicon.ico +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/commands/process.py +3 -1
- starbash-0.3.1/src/starbash/commands/publish.py +356 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/database.py +39 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/defaults/starbash.toml +69 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/doit.py +61 -1
- starbash-0.3.1/src/starbash/fits.py +36 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/main.py +6 -1
- starbash-0.3.1/src/starbash/parameters.py +166 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/paths.py +19 -1
- starbash-0.3.1/src/starbash/processed_target.py +430 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/processing.py +244 -13
- starbash-0.3.1/src/starbash/publish/__init__.py +5 -0
- starbash-0.3.1/src/starbash/publish/credentials.py +206 -0
- starbash-0.3.1/src/starbash/publish/github.py +234 -0
- starbash-0.3.1/src/starbash/publish/github_service.py +452 -0
- starbash-0.3.1/src/starbash/recipes/crop.py +75 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/recipes/osc.py +84 -8
- starbash-0.3.1/src/starbash/report.py +151 -0
- starbash-0.3.1/src/starbash/siril/import_registration.py +173 -0
- starbash-0.3.1/src/starbash/stage_utils.py +119 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/stages.py +10 -11
- starbash-0.3.1/src/starbash/templates/__init__.py +0 -0
- starbash-0.3.1/src/starbash/templates/report/Gemfile +3 -0
- starbash-0.3.1/src/starbash/templates/report/README.md.jinja +21 -0
- starbash-0.3.1/src/starbash/templates/report/__init__.py +0 -0
- starbash-0.3.1/src/starbash/templates/report/_config.yml +8 -0
- starbash-0.3.1/src/starbash/templates/report/default.html +61 -0
- starbash-0.3.1/src/starbash/templates/report/index.md.jinja +11 -0
- starbash-0.3.1/src/starbash/templates/report/target.md.jinja +42 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/templates/target/master.toml +3 -5
- starbash-0.3.1/src/starbash/templates/target/processed/about.toml +14 -0
- starbash-0.3.1/src/starbash/templates/target/processed/main.toml +22 -0
- starbash-0.3.1/src/starbash/templates/target/processed/sessions.toml +1 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/tool/__init__.py +2 -1
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/tool/base.py +18 -1
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/tool/rcastro.py +2 -2
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/tool/siril.py +1 -1
- starbash-0.3.1/src/starbash/tool/starnet.py +78 -0
- starbash-0.2.7/src/starbash/parameters.py +0 -175
- starbash-0.2.7/src/starbash/processed_target.py +0 -273
- starbash-0.2.7/src/starbash/stage_utils.py +0 -45
- starbash-0.2.7/src/starbash/templates/target/processed.toml +0 -52
- {starbash-0.2.7 → starbash-0.3.1}/LICENSE +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/__init__.py +0 -0
- {starbash-0.2.7/src/starbash/defaults → starbash-0.3.1/src/starbash/assets}/__init__.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/check_version.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/commands/__init__.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/commands/info.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/commands/repo.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/commands/select.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/commands/user.py +0 -0
- {starbash-0.2.7/src/starbash/recipes → starbash-0.3.1/src/starbash/defaults}/__init__.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/doit_types.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/dwarf3.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/exception.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/filtering.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/icon.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/linux.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/os.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/processing_like.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/recipes/README.md +0 -0
- {starbash-0.2.7/src/starbash/templates → starbash-0.3.1/src/starbash/recipes}/__init__.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/rich.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/safety.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/score.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/selection.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/sim_siril/__init__.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/sim_siril/connection.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/sim_siril/enums.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/sim_siril/utility.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/templates/repo/master.toml +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/templates/repo/processed.toml +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/templates/userconfig.toml +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/toml.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/tool/context.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/tool/graxpert.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/tool/python.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/ui/main.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/url.py +0 -0
- {starbash-0.2.7 → starbash-0.3.1}/src/starbash/windows.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: starbash
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: A tool for automating/standardizing/sharing astrophotography workflows.
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Author: Kevin Hester
|
|
@@ -11,10 +11,14 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.13
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.14
|
|
13
13
|
Requires-Dist: astropy (>=7.1.1,<8.0.0)
|
|
14
|
+
Requires-Dist: click (>=8.0,<8.5)
|
|
14
15
|
Requires-Dist: doit (>=0.36.0,<0.37.0)
|
|
15
16
|
Requires-Dist: graxpert[cpuonly] (>=3.2.0a2,<4.0.0)
|
|
17
|
+
Requires-Dist: jinja2 (>=3.1,<4.0)
|
|
18
|
+
Requires-Dist: keyring (>=25.6,<26.0)
|
|
16
19
|
Requires-Dist: numpy (==2.2.6)
|
|
17
20
|
Requires-Dist: platformdirs (>=4.5.0,<5.0.0)
|
|
21
|
+
Requires-Dist: pygal (>=3.0,<4.0)
|
|
18
22
|
Requires-Dist: pyqt6 (>=6.10.1,<7.0.0)
|
|
19
23
|
Requires-Dist: restrictedpython (>=8.1,<9.0)
|
|
20
24
|
Requires-Dist: rich (>=14.2.0,<15.0.0)
|
|
@@ -37,15 +41,16 @@ Description-Content-Type: text/markdown
|
|
|
37
41
|
A tool for automating/standardizing/sharing astrophotography workflows.
|
|
38
42
|
|
|
39
43
|
## What is starbash?
|
|
44
|
+
<img src="https://raw.githubusercontent.com/geeksville/starbash/refs/heads/main/doc/icon/generated/web/icon-192.png" alt="Starbash: Astrophotography workflows simplified" width="30%" align="right" style="margin-bottom: 20px;">
|
|
40
45
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
* Automatic - with sensible defaults that you can change as needed. Just a few keystrokes to preprocess an entire repo of raw images.
|
|
44
|
-
* Easy - provides a 'seestar-like' autoprocessing all your sessions (by default). You can optionally do manual postprocessing with all this 'grunt work' preprocessing automated.
|
|
46
|
+
* Automatic - with sensible defaults that you can change as needed. Just a few keystrokes to auto-process an **entire** repo of raw images. It uses sensible customizable defaults - you can optionally tweak parameters and reprocess as needed.
|
|
47
|
+
* Easy - provides a 'seestar-like' autoprocessing all your sessions (by default). You can optionally do manual postprocessing with all this 'grunt work' default processing automated.
|
|
45
48
|
* Fast<sup>1</sup> - even with large image repositories. Automatic master bias and flat generation. Automatic preprocessing/ stacking/background-elimination with reasonable defaults.
|
|
46
|
-
* Multi-session - by default. So your workflows can stack from multiple nights (and still use the correct flats etc...).
|
|
49
|
+
* Multi-session - by default. So your workflows can stack from multiple nights (and still use/auto-generate the correct flats, darks/biases etc...).
|
|
47
50
|
* Shareable - you can share/use recipes for image preprocessing flows. The eventual goal is a transition away from opaque burried scripts. Recipes can come from multiple repos and you or other orgs can host recipes.
|
|
51
|
+
* Automatic (optional) posting/creation of your generated images and workflows to a free ['github pages'](https://docs.github.com/en/pages) website. [Sample](https://geeksville.github.io/starbash-public/targets/sh2-91/).
|
|
48
52
|
* Attribution (by default) - a full set of contributions to final image can be tracked: instrument, raw images, processed-by, recipes-by/version etc...
|
|
53
|
+
* Full session/FITS aware history - select targets by name, date-range, instrument etc...
|
|
49
54
|
|
|
50
55
|
(This project is currently 'alpha' and missing recipes for some workflows, but adding new recipes is easy and we're happy to help. Please file a GitHub issue if your images are not auto-processed and we'll work out a fix.)
|
|
51
56
|
|
|
@@ -55,7 +60,7 @@ A tool for automating/standardizing/sharing astrophotography workflows.
|
|
|
55
60
|
## What is starbash NOT
|
|
56
61
|
|
|
57
62
|
### Not a new image processing tool (like Siril)
|
|
58
|
-
It is important to understand that Starbash is primarily a tool for **repeatable**, **sharable**, **semi-automated** workflows. It is tool agnostic and really just focuses on the relationship between tools, images and sessions. It builds upon the great work of existing tools (currently mainly Siril and
|
|
63
|
+
It is important to understand that Starbash is primarily a tool for **repeatable**, **sharable**, **semi-automated** workflows. It is tool agnostic and really just focuses on the relationship between tools, images and sessions. It builds upon the great work of existing tools (currently mainly [Siril](https://siril.org/), [GraXpert](https://graxpert.com/), [Blurxterminator](https://www.rc-astro.com/software/bxt/) and [Starnet2](https://starnetastro.com/cli-tools/)) so we can grow an ecosystem of recipes.
|
|
59
64
|
|
|
60
65
|
### Not a set of scripts
|
|
61
66
|
|
|
@@ -93,10 +98,19 @@ If you are interested in alpha-testing we ❤️ you. This README should have e
|
|
|
93
98
|
* Repos can be on the local disk or shared via HTTPS/GitHub/etc. This is particularly useful for recipe repos.
|
|
94
99
|
* [Graxpert](https://graxpert.com/) based [recipe stages](https://github.com/geeksville/starbash-recipes/tree/main/graxpert) added (support for Pixinsight-based recipes will probably be coming at some point...).
|
|
95
100
|
|
|
101
|
+
### From the alpha 3 (0.3.0) release (2026/08/31)
|
|
102
|
+
|
|
103
|
+
- Added end-to-end GitHub Pages publishing, including a friendlier GitHub setup flow and automatic token refresh.
|
|
104
|
+
- Introduced the new processing layout with shareable per-target configuration and improved recipe/dependency handling.
|
|
105
|
+
- Added Starnet, BlurXTerminator, and NoiseXTerminator support, with live Siril progress and automatic star recomposition.
|
|
106
|
+
- Improved FITS/session reporting with focal-length and FWHM information, plus more reliable OSC stacking.
|
|
107
|
+
- Added safer cleanup of temporary processing files and clearer warnings when external tools are missing.
|
|
108
|
+
- Publishing is now about twice as fast thanks to concurrent uploads.
|
|
109
|
+
|
|
96
110
|
## Features coming soon
|
|
97
111
|
|
|
98
112
|
* Recipe 'writers guide' documentation. Currently iterating based on usage reports 😄
|
|
99
|
-
* Support for mono-camera workflows (
|
|
113
|
+
* Support for mono-camera workflows (this alpha only includes osc recipes).
|
|
100
114
|
* The target report can be used to auto-generate a human-friendly 'postable/shareable' report about that image.
|
|
101
115
|
* Target reports are shareable so that you can request comments from others and others can rerender with different settings.
|
|
102
116
|
* Namespaces for recipes are disambiguated to be globally unique
|
|
@@ -194,6 +208,23 @@ If you don't want the automated processing you can still ask Starbash to prepare
|
|
|
194
208
|
|
|
195
209
|

|
|
196
210
|
|
|
211
|
+
### Fully extensible/repeatable/sharable workflows
|
|
212
|
+
|
|
213
|
+
Early user guide [here](doc/toml/guide.md).
|
|
214
|
+
|
|
215
|
+
### Publish a shareable website
|
|
216
|
+
|
|
217
|
+
Generate a local GitHub Pages-compatible site or publish processed targets to
|
|
218
|
+
your personal public `starbash-public` repository. The first time you run this command
|
|
219
|
+
it will walk you through creating a (free) account and signing into github:
|
|
220
|
+
|
|
221
|
+
```text
|
|
222
|
+
sb publish github # Publish to github
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
See the [GitHub publishing guide](doc/publish/github.md) for prerequisites,
|
|
226
|
+
preview instructions, authentication, and troubleshooting.
|
|
227
|
+
|
|
197
228
|
## Supported commands
|
|
198
229
|
|
|
199
230
|
### Repository Management
|
|
@@ -242,6 +273,8 @@ Starbash is a tool agnostic workflow manager. But it wouldn't be possible witho
|
|
|
242
273
|
|
|
243
274
|
* [Siril](https://siril.org/)
|
|
244
275
|
* [Graxpert](https://graxpert.com/) - for background and noise elimination
|
|
276
|
+
* [blur exterminator / noise exterminator](https://www.rc-astro.com/stand-alone-rc-astro-tools/)
|
|
277
|
+
* [starnet](https://starnetastro.com/cli-tools/) - for star removal
|
|
245
278
|
* [Python](https://www.python.org/) (you can add Python code to recipes if necessary)
|
|
246
279
|
|
|
247
280
|
## Credits
|
|
@@ -258,6 +291,17 @@ We accept pull-requests and enjoy discussing possible new development directions
|
|
|
258
291
|
|
|
259
292
|
[Click here](https://raw.githubusercontent.com/geeksville/starbash/refs/heads/main/doc/development.md) for the current work in progress developer docs. They will get better before our beta release...
|
|
260
293
|
|
|
294
|
+
## AI slop and development
|
|
295
|
+
|
|
296
|
+
I'm okay with using AI tools to help make code. In fact, I used them a fair amount so far on this project (one of my first experiments with not writing all my code 'by hand'). So far it has been pretty fun.
|
|
297
|
+
|
|
298
|
+
However, in some of my other open-source projects, I've seen the current hell PR management is becoming. So I'd **love** any code contributions y'all want to make (and I promise to be kind) but:
|
|
299
|
+
|
|
300
|
+
* Please only send in PRs **you** are willing to sign off as 'nicely written' (using your experience as an engineer). If your little AI buddy made something a bit ugly, please iterate with it first to make it not ugly.
|
|
301
|
+
* Send in PRs that are fairly 'atomic' (touch just the code they need to touch for one nicely defined feature or bug-fix)
|
|
302
|
+
* Only send in tested code you've run on real hardware (not just the simulator)
|
|
303
|
+
* If you are new at making software: no problem! We can talk in the pull-request and make it better.
|
|
304
|
+
|
|
261
305
|
## License
|
|
262
306
|
|
|
263
307
|
Copyright 2025 Kevin Hester, kevinh@geeksville.com.
|
|
@@ -7,15 +7,16 @@
|
|
|
7
7
|
A tool for automating/standardizing/sharing astrophotography workflows.
|
|
8
8
|
|
|
9
9
|
## What is starbash?
|
|
10
|
+
<img src="https://raw.githubusercontent.com/geeksville/starbash/refs/heads/main/doc/icon/generated/web/icon-192.png" alt="Starbash: Astrophotography workflows simplified" width="30%" align="right" style="margin-bottom: 20px;">
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
* Automatic - with sensible defaults that you can change as needed. Just a few keystrokes to preprocess an entire repo of raw images.
|
|
14
|
-
* Easy - provides a 'seestar-like' autoprocessing all your sessions (by default). You can optionally do manual postprocessing with all this 'grunt work' preprocessing automated.
|
|
12
|
+
* Automatic - with sensible defaults that you can change as needed. Just a few keystrokes to auto-process an **entire** repo of raw images. It uses sensible customizable defaults - you can optionally tweak parameters and reprocess as needed.
|
|
13
|
+
* Easy - provides a 'seestar-like' autoprocessing all your sessions (by default). You can optionally do manual postprocessing with all this 'grunt work' default processing automated.
|
|
15
14
|
* Fast<sup>1</sup> - even with large image repositories. Automatic master bias and flat generation. Automatic preprocessing/ stacking/background-elimination with reasonable defaults.
|
|
16
|
-
* Multi-session - by default. So your workflows can stack from multiple nights (and still use the correct flats etc...).
|
|
15
|
+
* Multi-session - by default. So your workflows can stack from multiple nights (and still use/auto-generate the correct flats, darks/biases etc...).
|
|
17
16
|
* Shareable - you can share/use recipes for image preprocessing flows. The eventual goal is a transition away from opaque burried scripts. Recipes can come from multiple repos and you or other orgs can host recipes.
|
|
17
|
+
* Automatic (optional) posting/creation of your generated images and workflows to a free ['github pages'](https://docs.github.com/en/pages) website. [Sample](https://geeksville.github.io/starbash-public/targets/sh2-91/).
|
|
18
18
|
* Attribution (by default) - a full set of contributions to final image can be tracked: instrument, raw images, processed-by, recipes-by/version etc...
|
|
19
|
+
* Full session/FITS aware history - select targets by name, date-range, instrument etc...
|
|
19
20
|
|
|
20
21
|
(This project is currently 'alpha' and missing recipes for some workflows, but adding new recipes is easy and we're happy to help. Please file a GitHub issue if your images are not auto-processed and we'll work out a fix.)
|
|
21
22
|
|
|
@@ -25,7 +26,7 @@ A tool for automating/standardizing/sharing astrophotography workflows.
|
|
|
25
26
|
## What is starbash NOT
|
|
26
27
|
|
|
27
28
|
### Not a new image processing tool (like Siril)
|
|
28
|
-
It is important to understand that Starbash is primarily a tool for **repeatable**, **sharable**, **semi-automated** workflows. It is tool agnostic and really just focuses on the relationship between tools, images and sessions. It builds upon the great work of existing tools (currently mainly Siril and
|
|
29
|
+
It is important to understand that Starbash is primarily a tool for **repeatable**, **sharable**, **semi-automated** workflows. It is tool agnostic and really just focuses on the relationship between tools, images and sessions. It builds upon the great work of existing tools (currently mainly [Siril](https://siril.org/), [GraXpert](https://graxpert.com/), [Blurxterminator](https://www.rc-astro.com/software/bxt/) and [Starnet2](https://starnetastro.com/cli-tools/)) so we can grow an ecosystem of recipes.
|
|
29
30
|
|
|
30
31
|
### Not a set of scripts
|
|
31
32
|
|
|
@@ -63,10 +64,19 @@ If you are interested in alpha-testing we ❤️ you. This README should have e
|
|
|
63
64
|
* Repos can be on the local disk or shared via HTTPS/GitHub/etc. This is particularly useful for recipe repos.
|
|
64
65
|
* [Graxpert](https://graxpert.com/) based [recipe stages](https://github.com/geeksville/starbash-recipes/tree/main/graxpert) added (support for Pixinsight-based recipes will probably be coming at some point...).
|
|
65
66
|
|
|
67
|
+
### From the alpha 3 (0.3.0) release (2026/08/31)
|
|
68
|
+
|
|
69
|
+
- Added end-to-end GitHub Pages publishing, including a friendlier GitHub setup flow and automatic token refresh.
|
|
70
|
+
- Introduced the new processing layout with shareable per-target configuration and improved recipe/dependency handling.
|
|
71
|
+
- Added Starnet, BlurXTerminator, and NoiseXTerminator support, with live Siril progress and automatic star recomposition.
|
|
72
|
+
- Improved FITS/session reporting with focal-length and FWHM information, plus more reliable OSC stacking.
|
|
73
|
+
- Added safer cleanup of temporary processing files and clearer warnings when external tools are missing.
|
|
74
|
+
- Publishing is now about twice as fast thanks to concurrent uploads.
|
|
75
|
+
|
|
66
76
|
## Features coming soon
|
|
67
77
|
|
|
68
78
|
* Recipe 'writers guide' documentation. Currently iterating based on usage reports 😄
|
|
69
|
-
* Support for mono-camera workflows (
|
|
79
|
+
* Support for mono-camera workflows (this alpha only includes osc recipes).
|
|
70
80
|
* The target report can be used to auto-generate a human-friendly 'postable/shareable' report about that image.
|
|
71
81
|
* Target reports are shareable so that you can request comments from others and others can rerender with different settings.
|
|
72
82
|
* Namespaces for recipes are disambiguated to be globally unique
|
|
@@ -164,6 +174,23 @@ If you don't want the automated processing you can still ask Starbash to prepare
|
|
|
164
174
|
|
|
165
175
|

|
|
166
176
|
|
|
177
|
+
### Fully extensible/repeatable/sharable workflows
|
|
178
|
+
|
|
179
|
+
Early user guide [here](doc/toml/guide.md).
|
|
180
|
+
|
|
181
|
+
### Publish a shareable website
|
|
182
|
+
|
|
183
|
+
Generate a local GitHub Pages-compatible site or publish processed targets to
|
|
184
|
+
your personal public `starbash-public` repository. The first time you run this command
|
|
185
|
+
it will walk you through creating a (free) account and signing into github:
|
|
186
|
+
|
|
187
|
+
```text
|
|
188
|
+
sb publish github # Publish to github
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
See the [GitHub publishing guide](doc/publish/github.md) for prerequisites,
|
|
192
|
+
preview instructions, authentication, and troubleshooting.
|
|
193
|
+
|
|
167
194
|
## Supported commands
|
|
168
195
|
|
|
169
196
|
### Repository Management
|
|
@@ -212,6 +239,8 @@ Starbash is a tool agnostic workflow manager. But it wouldn't be possible witho
|
|
|
212
239
|
|
|
213
240
|
* [Siril](https://siril.org/)
|
|
214
241
|
* [Graxpert](https://graxpert.com/) - for background and noise elimination
|
|
242
|
+
* [blur exterminator / noise exterminator](https://www.rc-astro.com/stand-alone-rc-astro-tools/)
|
|
243
|
+
* [starnet](https://starnetastro.com/cli-tools/) - for star removal
|
|
215
244
|
* [Python](https://www.python.org/) (you can add Python code to recipes if necessary)
|
|
216
245
|
|
|
217
246
|
## Credits
|
|
@@ -228,6 +257,17 @@ We accept pull-requests and enjoy discussing possible new development directions
|
|
|
228
257
|
|
|
229
258
|
[Click here](https://raw.githubusercontent.com/geeksville/starbash/refs/heads/main/doc/development.md) for the current work in progress developer docs. They will get better before our beta release...
|
|
230
259
|
|
|
260
|
+
## AI slop and development
|
|
261
|
+
|
|
262
|
+
I'm okay with using AI tools to help make code. In fact, I used them a fair amount so far on this project (one of my first experiments with not writing all my code 'by hand'). So far it has been pretty fun.
|
|
263
|
+
|
|
264
|
+
However, in some of my other open-source projects, I've seen the current hell PR management is becoming. So I'd **love** any code contributions y'all want to make (and I promise to be kind) but:
|
|
265
|
+
|
|
266
|
+
* Please only send in PRs **you** are willing to sign off as 'nicely written' (using your experience as an engineer). If your little AI buddy made something a bit ugly, please iterate with it first to make it not ugly.
|
|
267
|
+
* Send in PRs that are fairly 'atomic' (touch just the code they need to touch for one nicely defined feature or bug-fix)
|
|
268
|
+
* Only send in tested code you've run on real hardware (not just the simulator)
|
|
269
|
+
* If you are new at making software: no problem! We can talk in the pull-request and make it better.
|
|
270
|
+
|
|
231
271
|
## License
|
|
232
272
|
|
|
233
273
|
Copyright 2025 Kevin Hester, kevinh@geeksville.com.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "starbash"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.3.1"
|
|
4
4
|
description = "A tool for automating/standardizing/sharing astrophotography workflows."
|
|
5
5
|
authors = ["Kevin Hester <kevinh@geeksville.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -21,10 +21,17 @@ restrictedpython = ">=8.1,<9.0"
|
|
|
21
21
|
astropy = ">=7.1.1,<8.0.0"
|
|
22
22
|
platformdirs = ">=4.5.0,<5.0.0"
|
|
23
23
|
typer = "^0.20.0"
|
|
24
|
+
# Typer 0.20.1 still imports Click's deprecated stream helpers. Click 8.5
|
|
25
|
+
# warns about those imports, so keep the compatible pre-8.5 release line until
|
|
26
|
+
# Typer removes that dependency on deprecated APIs.
|
|
27
|
+
click = ">=8.0,<8.5"
|
|
24
28
|
sentry-sdk = "^2.42.1"
|
|
25
29
|
update-checker = "^0.18.0"
|
|
26
30
|
doit = "^0.36.0"
|
|
27
31
|
textual = "^6.8.0"
|
|
32
|
+
jinja2 = ">=3.1,<4.0"
|
|
33
|
+
pygal = ">=3.0,<4.0"
|
|
34
|
+
keyring = ">=25.6,<26.0"
|
|
28
35
|
|
|
29
36
|
# Note: to use graxpert from the local tree rather than pypi use:
|
|
30
37
|
# graxpert = {path = "GraXpert", extras = ["cpuonly"], develop = true}
|
|
@@ -45,6 +52,9 @@ ruff = "^0.14.4"
|
|
|
45
52
|
basedpyright = "^1.33.0"
|
|
46
53
|
textual-dev = "^1.8.0"
|
|
47
54
|
|
|
55
|
+
# Adds the `graph` command to doit (GraphViz output) for `sb process doit graph`.
|
|
56
|
+
doit-graph = "^0.3.0"
|
|
57
|
+
|
|
48
58
|
# We don't currently use this text based sql client
|
|
49
59
|
# harlequin = "^2.4.1"
|
|
50
60
|
|
|
@@ -29,7 +29,7 @@ def normalize_target_name(name: str | None) -> str | None:
|
|
|
29
29
|
"""Converts a target name to an any filesystem-safe format by removing spaces and other noise"""
|
|
30
30
|
if name is None:
|
|
31
31
|
return None
|
|
32
|
-
return name.replace(" ", "").replace("(", "").replace(")", "").lower()
|
|
32
|
+
return name.replace("-", " ").replace(" ", "").replace("(", "").replace(")", "").lower()
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
def pre_normalize(name: str) -> str:
|
|
@@ -75,7 +75,6 @@ def analytics_shutdown() -> None:
|
|
|
75
75
|
|
|
76
76
|
def is_development_environment() -> bool:
|
|
77
77
|
"""Detect if running in a development environment."""
|
|
78
|
-
|
|
79
78
|
# Check for explicit environment variable
|
|
80
79
|
if os.getenv("SENTRY_ENVIRONMENT") == "development":
|
|
81
80
|
return True
|
|
@@ -139,7 +138,11 @@ class NopAnalytics:
|
|
|
139
138
|
|
|
140
139
|
|
|
141
140
|
def analytics_start_span(**kwargs: Any) -> Any:
|
|
142
|
-
"""Start an analytics/tracing span if analytics is enabled, otherwise return a no-op context manager.
|
|
141
|
+
"""Start an analytics/tracing span if analytics is enabled, otherwise return a no-op context manager.
|
|
142
|
+
|
|
143
|
+
arguments (example):
|
|
144
|
+
name="operation-name", op="category"
|
|
145
|
+
"""
|
|
143
146
|
if analytics_allowed:
|
|
144
147
|
import sentry_sdk
|
|
145
148
|
|
|
@@ -10,7 +10,6 @@ from typing import Any
|
|
|
10
10
|
|
|
11
11
|
import rich.console
|
|
12
12
|
import typer
|
|
13
|
-
from astropy.io import fits
|
|
14
13
|
from rich.logging import RichHandler
|
|
15
14
|
from rich.progress import track
|
|
16
15
|
from toml_repo import Repo, RepoManager, get_config_suffix
|
|
@@ -39,6 +38,7 @@ from starbash.database import (
|
|
|
39
38
|
)
|
|
40
39
|
from starbash.dwarf3 import extend_dwarf3_headers
|
|
41
40
|
from starbash.exception import NonSoftwareError, UserHandledError, raise_missing_repo
|
|
41
|
+
from starbash.fits import read_fits_header
|
|
42
42
|
from starbash.linux import linux_init
|
|
43
43
|
from starbash.os import symlink_or_copy
|
|
44
44
|
from starbash.paths import get_user_config_dir, get_user_config_path
|
|
@@ -719,31 +719,24 @@ class Starbash:
|
|
|
719
719
|
|
|
720
720
|
if not found or force:
|
|
721
721
|
# Read and log the primary header (HDU 0)
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
headers
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
headers["path"] = relative_path_str
|
|
741
|
-
if self._extend_image_header(headers, f):
|
|
742
|
-
image_doc_id = self.db.upsert_image(headers, repo.url)
|
|
743
|
-
headers[Database.ID_KEY] = image_doc_id
|
|
744
|
-
|
|
745
|
-
if not found: # allow a session to also be created
|
|
746
|
-
return headers
|
|
722
|
+
headers = read_fits_header(f)
|
|
723
|
+
if not whitelist:
|
|
724
|
+
headers = dict(headers)
|
|
725
|
+
else:
|
|
726
|
+
headers = {key: value for key, value in headers.items() if key in whitelist}
|
|
727
|
+
|
|
728
|
+
# Add any extra metadata if it was missing in the existing headers
|
|
729
|
+
for key, value in extra_metadata.items():
|
|
730
|
+
headers.setdefault(key, value)
|
|
731
|
+
|
|
732
|
+
# Store relative path in database (use POSIX-style forward slashes for consistency)
|
|
733
|
+
headers["path"] = relative_path_str
|
|
734
|
+
if self._extend_image_header(headers, f):
|
|
735
|
+
image_doc_id = self.db.upsert_image(headers, repo.url)
|
|
736
|
+
headers[Database.ID_KEY] = image_doc_id
|
|
737
|
+
|
|
738
|
+
if not found: # allow a session to also be created
|
|
739
|
+
return headers
|
|
747
740
|
|
|
748
741
|
return None
|
|
749
742
|
|
|
@@ -781,6 +774,10 @@ class Starbash:
|
|
|
781
774
|
all_files,
|
|
782
775
|
description=f"Indexing {repo.url}...",
|
|
783
776
|
):
|
|
777
|
+
if ".sbignore" in str(f):
|
|
778
|
+
logging.warning('Skipping "%s": path contains ".sbignore".', f)
|
|
779
|
+
continue
|
|
780
|
+
|
|
784
781
|
try:
|
|
785
782
|
# progress.console.print(f"Indexing {f}...")
|
|
786
783
|
if repo_kind == "master":
|
|
Binary file
|
|
@@ -90,7 +90,7 @@ def siril(
|
|
|
90
90
|
else:
|
|
91
91
|
session_to_dir(candidates[0].candidate, subdir)
|
|
92
92
|
|
|
93
|
-
# FIXME put
|
|
93
|
+
# FIXME put a processed-target metadata file in output_dir (with info about what we picked/why)
|
|
94
94
|
# to allow users to override/reprocess with the same settings.
|
|
95
95
|
# Also FIXME, check for the existence of such a file
|
|
96
96
|
|
|
@@ -264,6 +264,8 @@ def doit(
|
|
|
264
264
|
from starbash import console
|
|
265
265
|
|
|
266
266
|
console.print("[red]This command is currently for developers only...[/red]")
|
|
267
|
+
# Build the full task tree so doit subcommands (graph/list/info) have data to show.
|
|
268
|
+
proc.load_tasks_for_inspection()
|
|
267
269
|
proc.doit.run(ctx.args)
|
|
268
270
|
|
|
269
271
|
|