starbash 0.1.0__py3-none-any.whl → 0.1.3__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.

Potentially problematic release.


This version of starbash might be problematic. Click here for more details.

starbash/selection.py ADDED
@@ -0,0 +1,251 @@
1
+ """Selection state management for filtering sessions and targets."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ import logging
7
+ from pathlib import Path
8
+ from typing import Any, Optional
9
+ from datetime import datetime
10
+
11
+
12
+ class Selection:
13
+ """Manages the current selection state for filtering sessions and targets.
14
+
15
+ This class maintains persistent state about what the user has selected:
16
+ - Target names
17
+ - Date ranges
18
+ - Filters
19
+ - Image types
20
+ - Telescope names
21
+
22
+ The selection state is saved to disk and can be used to build database queries.
23
+ """
24
+
25
+ def __init__(self, state_file: Path):
26
+ """Initialize the Selection with a state file path.
27
+
28
+ Args:
29
+ state_file: Path to the JSON file where selection state is persisted
30
+ """
31
+ self.state_file = state_file
32
+ self.targets: list[str] = []
33
+ self.date_start: Optional[str] = None
34
+ self.date_end: Optional[str] = None
35
+ self.filters: list[str] = []
36
+ self.image_types: list[str] = []
37
+ self.telescopes: list[str] = []
38
+
39
+ # Load existing state if it exists
40
+ self._load()
41
+
42
+ def _load(self) -> None:
43
+ """Load selection state from disk."""
44
+ if self.state_file.exists():
45
+ try:
46
+ with open(self.state_file, "r") as f:
47
+ data = json.load(f)
48
+ self.targets = data.get("targets", [])
49
+ self.date_start = data.get("date_start")
50
+ self.date_end = data.get("date_end")
51
+ self.filters = data.get("filters", [])
52
+ self.image_types = data.get("image_types", [])
53
+ self.telescopes = data.get("telescopes", [])
54
+ logging.debug(f"Loaded selection state from {self.state_file}")
55
+ except Exception as e:
56
+ logging.warning(f"Failed to load selection state: {e}")
57
+
58
+ def _save(self) -> None:
59
+ """Save selection state to disk."""
60
+ try:
61
+ # Ensure parent directory exists
62
+ self.state_file.parent.mkdir(parents=True, exist_ok=True)
63
+
64
+ data = {
65
+ "targets": self.targets,
66
+ "date_start": self.date_start,
67
+ "date_end": self.date_end,
68
+ "filters": self.filters,
69
+ "image_types": self.image_types,
70
+ "telescopes": self.telescopes,
71
+ }
72
+
73
+ with open(self.state_file, "w") as f:
74
+ json.dump(data, f, indent=2)
75
+ logging.debug(f"Saved selection state to {self.state_file}")
76
+ except Exception as e:
77
+ logging.error(f"Failed to save selection state: {e}")
78
+
79
+ def clear(self) -> None:
80
+ """Clear all selection criteria (select everything)."""
81
+ self.targets = []
82
+ self.date_start = None
83
+ self.date_end = None
84
+ self.filters = []
85
+ self.image_types = []
86
+ self.telescopes = []
87
+ self._save()
88
+
89
+ def add_target(self, target: str) -> None:
90
+ """Add a target to the selection.
91
+
92
+ Args:
93
+ target: Target name to add to the selection
94
+ """
95
+ if target not in self.targets:
96
+ self.targets.append(target)
97
+ self._save()
98
+
99
+ def remove_target(self, target: str) -> None:
100
+ """Remove a target from the selection.
101
+
102
+ Args:
103
+ target: Target name to remove from the selection
104
+ """
105
+ if target in self.targets:
106
+ self.targets.remove(target)
107
+ self._save()
108
+
109
+ def add_telescope(self, telescope: str) -> None:
110
+ """Add a telescope to the selection.
111
+
112
+ Args:
113
+ telescope: Telescope name to add to the selection
114
+ """
115
+ if telescope not in self.telescopes:
116
+ self.telescopes.append(telescope)
117
+ self._save()
118
+
119
+ def remove_telescope(self, telescope: str) -> None:
120
+ """Remove a telescope from the selection.
121
+
122
+ Args:
123
+ telescope: Telescope name to remove from the selection
124
+ """
125
+ if telescope in self.telescopes:
126
+ self.telescopes.remove(telescope)
127
+ self._save()
128
+
129
+ def set_date_range(
130
+ self, start: Optional[str] = None, end: Optional[str] = None
131
+ ) -> None:
132
+ """Set the date range for the selection.
133
+
134
+ Args:
135
+ start: ISO format date string for start of range (inclusive)
136
+ end: ISO format date string for end of range (inclusive)
137
+ """
138
+ self.date_start = start
139
+ self.date_end = end
140
+ self._save()
141
+
142
+ def add_filter(self, filter_name: str) -> None:
143
+ """Add a filter to the selection.
144
+
145
+ Args:
146
+ filter_name: Filter name to add to the selection
147
+ """
148
+ if filter_name not in self.filters:
149
+ self.filters.append(filter_name)
150
+ self._save()
151
+
152
+ def remove_filter(self, filter_name: str) -> None:
153
+ """Remove a filter from the selection.
154
+
155
+ Args:
156
+ filter_name: Filter name to remove from the selection
157
+ """
158
+ if filter_name in self.filters:
159
+ self.filters.remove(filter_name)
160
+ self._save()
161
+
162
+ def is_empty(self) -> bool:
163
+ """Check if the selection has any criteria set.
164
+
165
+ Returns:
166
+ True if no selection criteria are active (selecting everything)
167
+ """
168
+ return (
169
+ not self.targets
170
+ and self.date_start is None
171
+ and self.date_end is None
172
+ and not self.filters
173
+ and not self.image_types
174
+ and not self.telescopes
175
+ )
176
+
177
+ def get_query_conditions(self) -> dict[str, Any]:
178
+ """Build query conditions based on the current selection.
179
+
180
+ Returns:
181
+ Dictionary of query conditions that can be used with Database methods.
182
+ Special keys:
183
+ - 'date_start': ISO date string for start of range
184
+ - 'date_end': ISO date string for end of range
185
+ """
186
+ conditions = {}
187
+
188
+ # Note: This returns a simplified conditions dict.
189
+ # The actual query building will be enhanced later to support
190
+ # complex queries with date ranges, multiple targets, etc.
191
+
192
+ if self.targets:
193
+ # For now, just use the first target
194
+ # TODO: Support multiple targets in queries
195
+ conditions["OBJECT"] = self.targets[0] if len(self.targets) == 1 else None
196
+
197
+ if self.filters:
198
+ # For now, just use the first filter
199
+ # TODO: Support multiple filters in queries
200
+ conditions["FILTER"] = self.filters[0] if len(self.filters) == 1 else None
201
+
202
+ if self.telescopes:
203
+ # For now, just use the first telescope
204
+ # TODO: Support multiple telescopes in queries
205
+ conditions["TELESCOP"] = (
206
+ self.telescopes[0] if len(self.telescopes) == 1 else None
207
+ )
208
+
209
+ # Add date range conditions
210
+ if self.date_start:
211
+ conditions["date_start"] = self.date_start
212
+ if self.date_end:
213
+ conditions["date_end"] = self.date_end
214
+
215
+ return conditions
216
+
217
+ def summary(self) -> dict[str, Any]:
218
+ """Get a summary of the current selection state.
219
+
220
+ Returns:
221
+ Dictionary with human-readable summary of selection criteria
222
+ """
223
+ if self.is_empty():
224
+ return {
225
+ "status": "all",
226
+ "message": "No filters active - selecting all sessions",
227
+ }
228
+
229
+ summary = {"status": "filtered", "criteria": []}
230
+
231
+ if self.targets:
232
+ summary["criteria"].append(f"Targets: {', '.join(self.targets)}")
233
+
234
+ if self.telescopes:
235
+ summary["criteria"].append(f"Telescopes: {', '.join(self.telescopes)}")
236
+
237
+ if self.date_start or self.date_end:
238
+ date_range = []
239
+ if self.date_start:
240
+ date_range.append(f"from {self.date_start}")
241
+ if self.date_end:
242
+ date_range.append(f"to {self.date_end}")
243
+ summary["criteria"].append(f"Date: {' '.join(date_range)}")
244
+
245
+ if self.filters:
246
+ summary["criteria"].append(f"Filters: {', '.join(self.filters)}")
247
+
248
+ if self.image_types:
249
+ summary["criteria"].append(f"Image types: {', '.join(self.image_types)}")
250
+
251
+ return summary
File without changes
@@ -0,0 +1,53 @@
1
+ # This is your Starbash user configuration file. It can be used to provide default settings
2
+ # to workflows.
3
+
4
+ # (or wherever is appropriate for the user's platform).
5
+
6
+ [repo]
7
+ kind = "preferences"
8
+
9
+ [analytics]
10
+ # enabled = true # default is true - change to false if you don't want any analytics/crash-reports
11
+ # include_user = false # default is false - change to true if you'd like your email added to crash reports/analytics
12
+
13
+ [user]
14
+ # default author info
15
+ # name = "Your Name"
16
+ # email = "youremail@somedomain.com"
17
+ # website = "https://yourwebsite"
18
+ # license = "FIXME eventually applied as the default license for generated images Creative commons etc..."
19
+
20
+
21
+ # [config]
22
+ # Filters fits fields should we store in our DB cache. By default we store all fits headers.
23
+ #fits-whitelist = [
24
+ # "INSTRUME",
25
+ # "FILTER",
26
+ # "TELESCOP",
27
+ # "IMAGETYP",
28
+ # "DATE-OBS",
29
+ # "DATE-LOC",
30
+ # "DATE",
31
+ # "EXPTIME", # Use use this instead of EXPOSURE because it seems like not all apps use EXPOSURE (Siril)
32
+ # "FWHEEL",
33
+ # "OBJECT",
34
+ # "RA", # we ignore the text version OBJCTRA / OBJCTDEC
35
+ # "DEC",
36
+ # "OBJCTROT",
37
+ # "FOCPOS",
38
+ # "SITELAT",
39
+ # "SITELON",
40
+ # "SITEELEV",
41
+ # "NAXIS1",
42
+ # "NAXIS2",
43
+ # "SWCREATE",
44
+ # "XBINNING",
45
+ # "YBINNING",
46
+ # "GAIN",
47
+ # "CCD-TEMP",
48
+ # "SET-TEMP",
49
+ # "AMBTEMP",
50
+ #]
51
+
52
+ # DO NOT edit below this line, they are managed automatically via
53
+ # the "sb repo add" etc... commands.
starbash/url.py ADDED
@@ -0,0 +1,9 @@
1
+ project = "https://github.com/geeksville/starbash"
2
+ analytics_docs = f"{project}/blob/main/doc/analytics.md"
3
+
4
+
5
+ def new_issue(report_id: str | None = None) -> str:
6
+ if report_id:
7
+ return f"{project}/issues/new?body=Please%20describe%20the%20problem%2C%20but%20include%20this%3A%0ACrash%20ID%20{report_id}"
8
+ else:
9
+ return f"{project}/issues/new?body=Please%20describe%20the%20problem"
@@ -0,0 +1,114 @@
1
+ Metadata-Version: 2.4
2
+ Name: starbash
3
+ Version: 0.1.3
4
+ Summary:
5
+ License-File: LICENSE
6
+ Author: Kevin Hester
7
+ Author-email: kevinh@geeksville.com
8
+ Requires-Python: >=3.12,<3.15
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.13
12
+ Classifier: Programming Language :: Python :: 3.14
13
+ Requires-Dist: astropy (>=7.1.1,<8.0.0)
14
+ Requires-Dist: multidict (>=6.7.0,<7.0.0)
15
+ Requires-Dist: platformdirs (>=4.5.0,<5.0.0)
16
+ Requires-Dist: restrictedpython (>=8.1,<9.0)
17
+ Requires-Dist: rich (>=14.2.0,<15.0.0)
18
+ Requires-Dist: sentry-sdk (>=2.42.1,<3.0.0)
19
+ Requires-Dist: tomlkit (>=0.13.3,<0.14.0)
20
+ Requires-Dist: typer (>=0.20.0,<0.21.0)
21
+ Description-Content-Type: text/markdown
22
+
23
+ # Starbash
24
+
25
+ ![PyPI - Version](https://img.shields.io/pypi/v/starbash)
26
+ ![GitHub branch check runs](https://img.shields.io/github/check-runs/geeksville/starbash/main)
27
+
28
+ ![app icon](https://github.com/geeksville/starbash/blob/main/img/icon.png "Starbash: Astrophotography workflows simplified")
29
+
30
+ A tool for automating/standardizing/sharing astrophotography workflows.
31
+
32
+ # Current status
33
+
34
+ Not quite ready 😊. But making good progress.
35
+
36
+ See the current [TODO](TODO.md) file for work items. I'll be looking for pre-alpha testers/feedback soon.
37
+
38
+ ## Current features
39
+
40
+ * Automatically recognizes and auto-parses the default NINA, Asiair and Seestar raw file repos (adding support for other layouts is easy)
41
+ * Multisession support by default (including automatic selection of correct flats, biases and dark frames)
42
+ * 'Repos' can contain raw files, generated masters, preprocessed files, or recipes.
43
+
44
+ ## Features coming soon
45
+
46
+ * Automatically performs **complete** preprocessing on OSC (broadband, narrowband or dual Duo filter), Mono (LRGB, SHO) data. i.e. give you 'seestar level' auto-preprocessing, so you only need to do the (optional) custom post-processing.
47
+ * Generates a per target report/config file which can be customized if the detected defaults or preprocessing are not what you want
48
+ * 'Recipes' provide repeatable/human-readable/sharable descriptions of all processing steps
49
+ * Repos can be on the local disk or shared via HTTPS/github/etc. This is particularly useful for recipe repos
50
+ * Uses Siril and Graxpert for its pre-processing operations (support for Pixinsight based recipies will probably be coming at some point...)
51
+ * The target report can be used to auto generate a human friendly 'postable/sharable' report about that image
52
+ * Target reports are sharable so that you can request comments by others and others can rerender with different settings
53
+
54
+ ## Installing
55
+
56
+ Currently the easiest way to install this command-line based tool is to install is via [pipx](https://pipx.pypa.io/stable/). If you don't already have pipx and you have python installed, you can auto install it by running "pip install --user pipx." If you don't have python installed see the pipx link for pipx installers for any OS.
57
+
58
+ Once pipx is installed just run:
59
+
60
+ ```
61
+ pipx install starbash
62
+ ```
63
+
64
+ ## Supported commands
65
+
66
+ ### Setup & Configuration
67
+ - `sb setup` - Configure starbash via a brief guided process
68
+ - `sb info` - Show user preferences location and other app info
69
+
70
+ ### Repository Management
71
+ - `sb repo [--verbose]` - List installed repos (use `-v` for details)
72
+ - `sb repo add <filepath|URL>` - Add a repository
73
+ - `sb repo remove <REPONUM>` - Remove the indicated repo from the repo list
74
+ - `sb repo reindex [--force] [REPONUM]` - Reindex the specified repo (or all repos if none specified)
75
+
76
+ ### User Preferences
77
+ - `sb user name "Your Name"` - Set name for attribution in generated images
78
+ - `sb user email "foo@example.com"` - Set email for attribution in generated images
79
+ - `sb user analytics <on|off>` - Turn analytics collection on/off
80
+
81
+ ### Selection & Filtering
82
+ - `sb selection` - Show information about the current selection
83
+ - `sb selection any` - Remove all filters (select everything)
84
+ - `sb selection target <TARGETNAME>` - Limit selection to the named target
85
+ - `sb selection telescope <TELESCOPENAME>` - Limit selection to the named telescope
86
+ - `sb selection date <after|before|between> <DATE> [DATE]` - Limit to sessions in the specified date range
87
+
88
+ ### Viewing Data
89
+ - `sb session` - List sessions (filtered based on the current selection)
90
+ - `sb target` - List targets (filtered based on the current selection)
91
+ - `sb instrument` - List instruments (filtered based on the current selection)
92
+ - `sb filter` - List all filters found in current selection
93
+
94
+ ### Export & Processing
95
+ - `sb export <dirs|BIAS|LIGHT|DARK|FLAT> [DIRLOC]` - Export data
96
+ - `sb process siril` - Generate Siril directory tree and run Siril GUI
97
+ - `sb process auto` - Automatic processing
98
+ - `sb process masters` - Generate master flats, darks, and biases from available raw frames
99
+
100
+ ## Supported tools (now)
101
+
102
+ * Siril
103
+ * Graxpert
104
+ * Python (you can add python code to recipies if necessary)
105
+
106
+ ## Supported tools (future?)
107
+
108
+ * Pixinsight?
109
+ * Autostakkert?
110
+
111
+ ## Developing
112
+
113
+ We try to make this project useful and friendly. If you find problems please file a github issue.
114
+ We accept pull-requests and enjoy discussing possible new development directions via github issues. If you might want to work on this, just describe what your interests are and we can talk about how to get it merged.
@@ -0,0 +1,24 @@
1
+ starbash/__init__.py,sha256=co39eIssQlFxWfO3cDhp52reRy6qEyJX5u5K8OsxiDk,138
2
+ starbash/analytics.py,sha256=0TfiZthKRMqW38Jg1VJDjpykZXBrK33tNKuhQibkCK0,3579
3
+ starbash/app.py,sha256=7GdznZHSxpsQ5ZrW0nPgvSEGAwgijfpbw2rINNU1hcU,16228
4
+ starbash/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ starbash/commands/repo.py,sha256=UyfAD6A0fP8DV1uMRJz_NydDkP0UiHbxtceZ25_g7r8,4641
6
+ starbash/commands/selection.py,sha256=gI6LSvs8CW5t2pW0peCLL5O87WqLkS9LDuaK2gI1NeM,4600
7
+ starbash/commands/user.py,sha256=JpwYa9cYxm2gkekcxrj7CsbJO7fgbGwRxmjvpua0BOY,1598
8
+ starbash/database.py,sha256=59u78srp3G4Ya0HOIP2qOokp2osQPFgUQM_8TbfIjPg,17936
9
+ starbash/defaults/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ starbash/defaults/starbash.toml,sha256=WWM7igZ-GXk4bM7qSFtjHaVh7beqisCkeVBjs7c2G6I,1774
11
+ starbash/main.py,sha256=8D4Xa0WwM3TDW-HkaQUTo79Uh8hAXgOJYyEEkUgC7HQ,5391
12
+ starbash/paths.py,sha256=BKKnSXt3tOh16o7ljDcQLtWKIiepEmud9JFtzRwDHtg,1317
13
+ starbash/repo/__init__.py,sha256=TqspuLjPSNnO38tvCGa0fJvvasgecHl6fE7m0-Lj8ho,148
14
+ starbash/repo/manager.py,sha256=NRMGmDWt8KV8OdsrgPiuQ91EPi8xlSbVtOWGgSePuOk,10944
15
+ starbash/selection.py,sha256=DPzUlls3n-sBqkwTUns2ZNaPi61PGnh7Z_ZQOC1jXYc,8347
16
+ starbash/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ starbash/templates/userconfig.toml,sha256=eaBMgac4RCdvlGV6cKPqRuVyF_ijfkvEF-c3LJ6_euw,1440
18
+ starbash/tool.py,sha256=S1kOTbeHTrA0meqwftgL0SA4VhJdZWWx2h1Wtwu1Izg,8749
19
+ starbash/url.py,sha256=lorxQJ27jSfzsKCb0QvpcvLiPZG55Dkd_c1JPFbni4I,402
20
+ starbash-0.1.3.dist-info/METADATA,sha256=zdFUMvEJQ8Aq28LTkcQDtvY_uu6G7Efy5w2FTH4IH_E,5295
21
+ starbash-0.1.3.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
22
+ starbash-0.1.3.dist-info/entry_points.txt,sha256=REQyWs8e5TJsNK7JVVWowKVoytMmKlUwuFHLTmSX4hc,67
23
+ starbash-0.1.3.dist-info/licenses/LICENSE,sha256=ixuiBLtpoK3iv89l7ylKkg9rs2GzF9ukPH7ynZYzK5s,35148
24
+ starbash-0.1.3.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.0
2
+ Generator: poetry-core 2.2.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,82 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: starbash
3
- Version: 0.1.0
4
- Summary:
5
- Author: Kevin Hester
6
- Author-email: kevinh@geeksville.com
7
- Requires-Python: >=3.12,<3.15
8
- Classifier: Programming Language :: Python :: 3
9
- Classifier: Programming Language :: Python :: 3.12
10
- Requires-Dist: astropy (>=7.1.1,<8.0.0)
11
- Requires-Dist: multidict (>=6.7.0,<7.0.0)
12
- Requires-Dist: platformdirs (>=4.5.0,<5.0.0)
13
- Requires-Dist: restrictedpython (>=8.1,<9.0)
14
- Requires-Dist: rich (>=14.2.0,<15.0.0)
15
- Requires-Dist: tinydb (>=4.8.2,<5.0.0)
16
- Requires-Dist: tomlkit (>=0.13.3,<0.14.0)
17
- Requires-Dist: typer (>=0.20.0,<0.21.0)
18
- Description-Content-Type: text/markdown
19
-
20
- # Starbash
21
- ![app icon](img/icon.png "Starbash: Astrophotography workflows simplified")
22
-
23
- A tool for automating/standardizing/sharing astrophotography workflows.
24
-
25
- # Current status
26
-
27
- Not quite ready 😊. But making good progress.
28
-
29
- See my personal [TODO](TODO.md) file. I'll be looking for pre-alpha testers/feedback soon.
30
-
31
- ## features
32
-
33
- * Automatically recognizes and auto-parses the default NINA, Asiair and Seestar raw file repo layouts (adding support for other layouts is easy)
34
- * Automatically performs preprocessing on OSC (broadband, narrowband or dual Duo filter), Mono (LRGB, SHO) data
35
- * Multisession support by default (including auto selection of correct flats, biases and dark frames)
36
- * Generates a per target report/config file which can be customized if the detected defaults are not what you want
37
- * 'Recipes' provide repeatable/human-readable/sharable descriptions of all processing steps
38
- * 'Repos' can contain raw files, generated masters, preprocessed files, or recipes.
39
- * Repos can be on the local disk or shared via HTTPS/github/etc. This is particularly useful for recipe repos
40
-
41
- ## Supported commands
42
-
43
- * setup - configure for you via a brief guided process
44
- * info - show user preferences location and other app info
45
-
46
- * repo add file/path|URL
47
- * repo remove REPONAME|REPONUM
48
- * repo list
49
- * repo reindex REPONAME|REPONUM|all
50
-
51
- * target list
52
- * target select TARGETNAME
53
-
54
- * reset - remove any filters on targets, sessions, etc...
55
-
56
- * session list
57
- * session date after DATE
58
- * session date before DATE
59
-
60
- * instrument list
61
-
62
- * export dirs|BIAS|LIGHT|DARK|FLAT [DIRLOC]
63
-
64
- * process auto
65
-
66
- ## Supported tools
67
-
68
- * Siril
69
- * Graxpert
70
-
71
- # Future status
72
-
73
- ## Supported tools
74
-
75
- * Pixinsight?
76
- * Autostakkert?
77
-
78
- ## Features
79
-
80
- * The target report can be used to auto generate a human friendly 'postable/sharable' report about that image
81
- * Target reports are sharable so that you can request comments by others and others can rerender with different settings
82
-
@@ -1,15 +0,0 @@
1
- starbash/__init__.py,sha256=co39eIssQlFxWfO3cDhp52reRy6qEyJX5u5K8OsxiDk,138
2
- starbash/app.py,sha256=8f1OSJPlgSMri8kMFrQ6nac5M1gAgPl-FRnuXeOWMAQ,8754
3
- starbash/appdefaults.sb.toml,sha256=YTUwTqg2DcDFs9VDB1gqchNqk-hg_cGlpaa134hLOJU,2606
4
- starbash/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- starbash/commands/repo.py,sha256=Xg9aaaURrv45bJF5w4rsD2X5_FdeM4dp9d9xbGaG4Ds,985
6
- starbash/database.py,sha256=HFJI0CAQIFfKGx3yTS7anREAcvjiNZhObwyAbD5WD48,2254
7
- starbash/main.py,sha256=VNV2y8pz_NMbGXjIDuFIDbbS0Q0B5GMqKTXitFf1tb4,579
8
- starbash/repo/__init__.py,sha256=TqspuLjPSNnO38tvCGa0fJvvasgecHl6fE7m0-Lj8ho,148
9
- starbash/repo/manager.py,sha256=jOhN-Rx60rtueLsHLoVdvcyWTDOqfUGZN6nbbJzRntI,8586
10
- starbash/tool.py,sha256=S1kOTbeHTrA0meqwftgL0SA4VhJdZWWx2h1Wtwu1Izg,8749
11
- starbash-0.1.0.dist-info/LICENSE,sha256=ixuiBLtpoK3iv89l7ylKkg9rs2GzF9ukPH7ynZYzK5s,35148
12
- starbash-0.1.0.dist-info/METADATA,sha256=N1fSGzjmBFEWL5V7uxbwcGbS3X_UExpxja4cZjA3KIE,2564
13
- starbash-0.1.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
14
- starbash-0.1.0.dist-info/entry_points.txt,sha256=REQyWs8e5TJsNK7JVVWowKVoytMmKlUwuFHLTmSX4hc,67
15
- starbash-0.1.0.dist-info/RECORD,,