flinventory 2.2.3__tar.gz → 2.2.4__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.
- {flinventory-2.2.3 → flinventory-2.2.4}/PKG-INFO +1 -1
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/datacleanup.py +95 -25
- {flinventory-2.2.3 → flinventory-2.2.4}/pyproject.toml +1 -1
- {flinventory-2.2.3 → flinventory-2.2.4}/LICENSE +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/README.md +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/__init__.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/__main__.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/box.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/constant.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/defaulted_data.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/font_location.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/generate_labels.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/inventory_io.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/labelprinter_typst.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/location.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/sign.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/signprinter_latex.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/thing.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/thingtemplate_typst/dummyImage.jpg +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/thingtemplate_typst/label.typ +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/thingtemplate_typst/out/bowdenzugklemmung1.svg +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/thingtemplate_typst/out/things.log +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/flinventory/thingtemplate_typst/thinglist.typ +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/tests/__init__.py +0 -0
- {flinventory-2.2.3 → flinventory-2.2.4}/tests/test_defaulted_data.py +0 -0
|
@@ -10,6 +10,7 @@ import logging
|
|
|
10
10
|
import string
|
|
11
11
|
|
|
12
12
|
import yaml
|
|
13
|
+
from typing import Optional
|
|
13
14
|
|
|
14
15
|
from . import constant, labelprinter_typst
|
|
15
16
|
from . import inventory_io
|
|
@@ -114,7 +115,7 @@ def add_arg_parsers(subparsers):
|
|
|
114
115
|
),
|
|
115
116
|
)
|
|
116
117
|
parser_levelname.add_argument("levelname", help="The new levelname.")
|
|
117
|
-
parser_levelname.set_defaults(func=
|
|
118
|
+
parser_levelname.set_defaults(func=set_levelname_from_args)
|
|
118
119
|
|
|
119
120
|
parser_schemaname = subparsers.add_parser(
|
|
120
121
|
"setSchemaname", description="Set the name for a location schema."
|
|
@@ -131,10 +132,35 @@ def add_arg_parsers(subparsers):
|
|
|
131
132
|
),
|
|
132
133
|
)
|
|
133
134
|
parser_schemaname.add_argument("name", help="The new name.")
|
|
134
|
-
parser_schemaname.set_defaults(func=
|
|
135
|
+
parser_schemaname.set_defaults(func=set_schema_name_from_args)
|
|
135
136
|
|
|
136
137
|
|
|
137
|
-
def
|
|
138
|
+
def get_schema_from_args(
|
|
139
|
+
args,
|
|
140
|
+
) -> tuple[location.Schema, inventory_io.Inventory]:
|
|
141
|
+
"""Wrapper for get_schema based on command-line arguments.
|
|
142
|
+
|
|
143
|
+
Args:
|
|
144
|
+
args.level: see level_spec in get_schema
|
|
145
|
+
args.directory: directory of the inventory data
|
|
146
|
+
Returns:
|
|
147
|
+
a schema and its surrounding inventory.
|
|
148
|
+
Raises:
|
|
149
|
+
ValueError: if get_schema raises. Error is printed.
|
|
150
|
+
"""
|
|
151
|
+
level_spec = args.level
|
|
152
|
+
if not level_spec:
|
|
153
|
+
print("No level specified.")
|
|
154
|
+
return
|
|
155
|
+
inventory = inventory_io.Inventory.from_json_files(directory=args.dataDirectory)
|
|
156
|
+
try:
|
|
157
|
+
return get_schema(inventory, args), inventory
|
|
158
|
+
except ValueError as wrong_spec:
|
|
159
|
+
print(wrong_spec.args[0])
|
|
160
|
+
return
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def get_schema(inventory: inventory_io.Inventory, level_spec: str) -> location.Schema:
|
|
138
164
|
"""Get a schema in the inventory.
|
|
139
165
|
|
|
140
166
|
Args:
|
|
@@ -146,58 +172,102 @@ def get_schema(args) -> tuple[location.Schema, inventory_io.Inventory]:
|
|
|
146
172
|
args.directory: directory of the inventory data
|
|
147
173
|
Returns:
|
|
148
174
|
a schema and its surrounding inventory
|
|
175
|
+
Raises:
|
|
176
|
+
ValueError: if the level_spec was invalid. Exception.args[0] contains error message
|
|
149
177
|
"""
|
|
150
|
-
level_spec = args.level
|
|
151
|
-
if not level_spec:
|
|
152
|
-
print("No level specified.")
|
|
153
|
-
return
|
|
154
|
-
inventory = inventory_io.Inventory.from_json_files(directory=args.dataDirectory)
|
|
155
178
|
separator = level_spec[0]
|
|
156
179
|
if separator in string.digits + string.ascii_letters + " ":
|
|
157
|
-
|
|
180
|
+
raise ValueError(
|
|
158
181
|
"Probably separator missing as first character. Use non-digit, non-letter, non-space"
|
|
159
182
|
)
|
|
160
|
-
return
|
|
161
183
|
schema = inventory.schema
|
|
162
184
|
for schema_name in level_spec.split(separator)[1:]:
|
|
163
185
|
print(
|
|
164
186
|
f"debug: Currently at schema {schema.name if not schema.is_default() else '<default>'}"
|
|
165
187
|
)
|
|
166
188
|
if schema_name:
|
|
167
|
-
print(f"choose subschema {schema_name}")
|
|
189
|
+
print(f"debug: choose subschema {schema_name}")
|
|
168
190
|
schema = schema.get_subschema(schema_name)
|
|
169
191
|
else:
|
|
170
|
-
print("choose sub schema default")
|
|
192
|
+
print("debug: choose sub schema default")
|
|
171
193
|
schema = schema.sub_schema_default
|
|
172
|
-
print(schema)
|
|
173
|
-
return schema
|
|
194
|
+
print("debug", schema)
|
|
195
|
+
return schema
|
|
174
196
|
|
|
175
197
|
|
|
176
|
-
def
|
|
198
|
+
def set_levelname_from_args(args):
|
|
177
199
|
"""Set the levelname of one location schema."""
|
|
178
200
|
new_levelname = args.levelname
|
|
179
|
-
schema, inventory =
|
|
201
|
+
schema, inventory = get_schema_from_args(args)
|
|
202
|
+
set_levelname(inventory, schema, new_levelname)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def set_levelname(
|
|
206
|
+
inventory: inventory_io.Inventory, schema: location.Schema, new_levelname: str
|
|
207
|
+
):
|
|
208
|
+
"""Set the levelname of one location schema.
|
|
209
|
+
|
|
210
|
+
Strip off whitespace.
|
|
211
|
+
|
|
212
|
+
Empty levelname raises ValueError if sub schemas exist.
|
|
213
|
+
Otherwise, it removes the possibility of this schema having subschemas.
|
|
214
|
+
|
|
215
|
+
Save the changes to disk.
|
|
216
|
+
|
|
217
|
+
Args:
|
|
218
|
+
inventory: inventory with schema and things (both needed)
|
|
219
|
+
schema: schema (level) to be changed
|
|
220
|
+
new_levelname: the new levelname
|
|
221
|
+
Raises:
|
|
222
|
+
ValueError: if the new levelname is empty or whitespace-only and sub schemas exist
|
|
223
|
+
"""
|
|
224
|
+
schema_name = "a default schema" if schema.is_default() else schema.name
|
|
225
|
+
new_levelname = new_levelname.strip()
|
|
180
226
|
try:
|
|
181
227
|
print(
|
|
182
|
-
f"Change level name of {
|
|
228
|
+
f"Change level name of {schema_name} from {schema.levelname} to {new_levelname}."
|
|
183
229
|
)
|
|
184
230
|
except location.InvalidLocation:
|
|
185
|
-
print(f"Set level name of {
|
|
231
|
+
print(f"Set level name of {schema_name} from nothing to {new_levelname}.")
|
|
186
232
|
schema.levelname = new_levelname
|
|
187
233
|
inventory.save()
|
|
188
234
|
|
|
189
235
|
|
|
190
|
-
def
|
|
191
|
-
"""Set the
|
|
236
|
+
def set_schema_name_from_args(args):
|
|
237
|
+
"""Set the name of a schema based on comand-line arguments.
|
|
192
238
|
|
|
193
239
|
Fails on default schemas.
|
|
240
|
+
|
|
241
|
+
Raises:
|
|
242
|
+
ValueError: if level_spec is invalid
|
|
243
|
+
ValueError: if new name is empty except for whitespace
|
|
244
|
+
"""
|
|
245
|
+
schema, inventory = get_schema_from_args(args)
|
|
246
|
+
set_schema_name(inventory, schema, args.name)
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
def set_schema_name(
|
|
250
|
+
inventory: inventory_io.Inventory, schema: location.Schema, new_name: str
|
|
251
|
+
):
|
|
252
|
+
"""Set the name of a schema.
|
|
253
|
+
|
|
254
|
+
Fails on default schemas.
|
|
255
|
+
|
|
256
|
+
Args:
|
|
257
|
+
inventory: inventory with schema and things (both needed)
|
|
258
|
+
schema: schema (level) to be changed
|
|
259
|
+
new_name: new name of the schema. Is stripped of surrounding whitespace.
|
|
260
|
+
Raises:
|
|
261
|
+
ValueError: if new name is empty except for whitespace
|
|
194
262
|
"""
|
|
195
|
-
new_name = args.name
|
|
196
|
-
schema, inventory = get_schema(args)
|
|
197
263
|
if schema.is_default():
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
264
|
+
raise ValueError(f"Cannot change name of default schema.")
|
|
265
|
+
if not new_name.strip():
|
|
266
|
+
raise ValueError(
|
|
267
|
+
f"The new name '{new_name}' is empty (or only whitespace). This is invalid."
|
|
268
|
+
)
|
|
269
|
+
new_name = new_name.strip()
|
|
270
|
+
print(f"debug: Change schema name from {schema.name} to {new_name}")
|
|
201
271
|
schema.name = new_name
|
|
202
272
|
inventory.save()
|
|
203
273
|
|
|
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
|
{flinventory-2.2.3 → flinventory-2.2.4}/flinventory/thingtemplate_typst/out/bowdenzugklemmung1.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|