Skip to content

Commit 77e352e

Browse files
committed
Fix format issues, adjust tox config
1 parent a4eb2f8 commit 77e352e

File tree

7 files changed

+303
-629
lines changed

7 files changed

+303
-629
lines changed

linkml_runtime/loaders/rdflib_loader.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ def from_rdf_graph(
165165
for enum_name in enum_names:
166166
e = schemaview.get_enum(enum_name)
167167
if e is None:
168-
raise ValueError(f'no enum found for {slot.range}: {o} (ns={v})')
168+
raise ValueError(f"no enum found for {slot.range}: {o} (ns={v})")
169169
for pv in e.permissible_values.values():
170170
if v == pv.meaning or str(o) == pv.meaning:
171171
v = pv.text
@@ -210,7 +210,7 @@ def repl(v):
210210
if isinstance(v, Pointer):
211211
v2 = obj_map.get(v.obj)
212212
if v2 is None:
213-
msg = f'No mapping for pointer {v}. Triples:'
213+
msg = f"No mapping for pointer {v}. Triples:"
214214
for s, p, o in graph.triples((None, None, v.obj)):
215215
for s2, p2, o2 in graph.triples((None, None, s)):
216216
msg += f"\n{s2} {p2} {o2}."
@@ -246,7 +246,7 @@ def _get_id_dict(self, node: VALID_SUBJECT, schemaview: SchemaView, cn: ClassDef
246246
id_slot = schemaview.get_identifier_slot(cn)
247247
if not isinstance(node, BNode):
248248
if id_slot is None:
249-
raise Exception(f'no slot found for {cn}: bnode={node}')
249+
raise Exception(f"no slot found for {cn}: bnode={node}")
250250
id_val = self._uri_to_id(node, id_slot, schemaview)
251251
# id_val = schemaview.namespaces().curie_for(node)
252252
if id_val is None:

linkml_runtime/utils/yamlutils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def __post_init__(self, *args: list[str], **kwargs):
4646
v = repr(kwargs[k])[:40].replace("\n", "\\n")
4747
messages.append(f"{TypedNode.yaml_loc(k)} Unknown argument: {k} = {v}")
4848
msg = f"Unknown arguments for: {self}\n"
49-
msg += '\n'.join(messages)
49+
msg += "\n".join(messages)
5050
raise ValueError(msg)
5151

5252
def _default(self, obj, filtr: Callable[[dict], dict] = None):

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ dependencies = [
5656
dev = [
5757
"coverage >=6.2",
5858
"requests-cache >=1.2.0",
59+
"tox>=4",
60+
"ruff==0.11.13",
5961
]
6062

6163
[project.scripts]

tests/test_loaders_dumpers/models/table.py

Lines changed: 44 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,14 @@
3232
dataclasses._init_fn = dataclasses_init_fn_with_kwargs
3333

3434
# Namespaces
35-
LINKML = CurieNamespace('linkml', 'https://w3id.org/linkml/')
36-
TABLE = CurieNamespace('table', 'https://w3id.org/linkml/examples/table/')
35+
LINKML = CurieNamespace("linkml", "https://w3id.org/linkml/")
36+
TABLE = CurieNamespace("table", "https://w3id.org/linkml/examples/table/")
3737
DEFAULT_ = TABLE
3838

3939

4040
# Types
4141

42+
4243
# Class references
4344
class RowColumnA(URIorCURIE):
4445
pass
@@ -49,6 +50,7 @@ class Object(YAMLRoot):
4950
"""
5051
An object (bnode) which needs embedding in a single row
5152
"""
53+
5254
_inherited_slots: ClassVar[List[str]] = []
5355

5456
class_class_uri: ClassVar[URIRef] = TABLE.Object
@@ -74,6 +76,7 @@ class Row(YAMLRoot):
7476
"""
7577
A single data point made up of columns.
7678
"""
79+
7780
_inherited_slots: ClassVar[List[str]] = []
7881

7982
class_class_uri: ClassVar[URIRef] = TABLE.Row
@@ -105,6 +108,7 @@ class Table(YAMLRoot):
105108
"""
106109
Container of rows.
107110
"""
111+
108112
_inherited_slots: ClassVar[List[str]] = []
109113

110114
class_class_uri: ClassVar[URIRef] = TABLE.Table
@@ -127,20 +131,42 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
127131
class slots:
128132
pass
129133

130-
slots.rows = Slot(uri=TABLE.rows, name="rows", curie=TABLE.curie('rows'),
131-
model_uri=TABLE.rows, domain=None, range=Optional[Union[Dict[Union[str, RowColumnA], Union[dict, Row]], List[Union[dict, Row]]]])
132-
133-
slots.columnA = Slot(uri=TABLE.columnA, name="columnA", curie=TABLE.curie('columnA'),
134-
model_uri=TABLE.columnA, domain=None, range=URIRef)
135-
136-
slots.objectB = Slot(uri=TABLE.objectB, name="objectB", curie=TABLE.curie('objectB'),
137-
model_uri=TABLE.objectB, domain=None, range=Optional[Union[dict, Object]])
138-
139-
slots.columnC = Slot(uri=TABLE.columnC, name="columnC", curie=TABLE.curie('columnC'),
140-
model_uri=TABLE.columnC, domain=None, range=Optional[str])
141-
142-
slots.name = Slot(uri=TABLE.name, name="name", curie=TABLE.curie('name'),
143-
model_uri=TABLE.name, domain=None, range=Optional[str])
144134

145-
slots.value = Slot(uri=TABLE.value, name="value", curie=TABLE.curie('value'),
146-
model_uri=TABLE.value, domain=None, range=Optional[str])
135+
slots.rows = Slot(
136+
uri=TABLE.rows,
137+
name="rows",
138+
curie=TABLE.curie("rows"),
139+
model_uri=TABLE.rows,
140+
domain=None,
141+
range=Optional[Union[Dict[Union[str, RowColumnA], Union[dict, Row]], List[Union[dict, Row]]]],
142+
)
143+
144+
slots.columnA = Slot(
145+
uri=TABLE.columnA, name="columnA", curie=TABLE.curie("columnA"), model_uri=TABLE.columnA, domain=None, range=URIRef
146+
)
147+
148+
slots.objectB = Slot(
149+
uri=TABLE.objectB,
150+
name="objectB",
151+
curie=TABLE.curie("objectB"),
152+
model_uri=TABLE.objectB,
153+
domain=None,
154+
range=Optional[Union[dict, Object]],
155+
)
156+
157+
slots.columnC = Slot(
158+
uri=TABLE.columnC,
159+
name="columnC",
160+
curie=TABLE.curie("columnC"),
161+
model_uri=TABLE.columnC,
162+
domain=None,
163+
range=Optional[str],
164+
)
165+
166+
slots.name = Slot(
167+
uri=TABLE.name, name="name", curie=TABLE.curie("name"), model_uri=TABLE.name, domain=None, range=Optional[str]
168+
)
169+
170+
slots.value = Slot(
171+
uri=TABLE.value, name="value", curie=TABLE.curie("value"), model_uri=TABLE.value, domain=None, range=Optional[str]
172+
)

tests/test_loaders_dumpers/test_csv_tsv_loader_dumper.py

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -28,105 +28,105 @@
2828
OUTPUT2 = os.path.join(OUTPUT_DIR, "books_flattened_02.tsv")
2929

3030

31-
TABLE_SCHEMA = os.path.join(MODEL_DIR, 'table.yaml')
32-
TABLE_DATA_JSON = os.path.join(INPUT_DIR, 'table-json.tsv')
33-
TABLE_DATA_INLINED = os.path.join(INPUT_DIR, 'table-inlined.tsv')
31+
TABLE_SCHEMA = os.path.join(MODEL_DIR, "table.yaml")
32+
TABLE_DATA_JSON = os.path.join(INPUT_DIR, "table-json.tsv")
33+
TABLE_DATA_INLINED = os.path.join(INPUT_DIR, "table-inlined.tsv")
3434

3535

3636
def _json(obj) -> str:
37-
return json.dumps(obj, indent=' ', sort_keys=True)
37+
return json.dumps(obj, indent=" ", sort_keys=True)
3838

3939

4040
class CsvAndTsvGenTestCase(unittest.TestCase):
41-
4241
def test_object_model(self):
43-
book = Book(id='B1', genres=['fantasy'], creator={})
42+
book = Book(id="B1", genres=["fantasy"], creator={})
4443
logger.debug(as_json_obj(book.genres[0]))
45-
assert str(book.genres[0]) == 'fantasy'
46-
assert book.genres[0].code.text == 'fantasy'
44+
assert str(book.genres[0]) == "fantasy"
45+
assert book.genres[0].code.text == "fantasy"
4746
processed = remove_empty_items(book.genres)
48-
assert processed[0] == 'fantasy'
49-
series = BookSeries(id='S1', creator=Author(name="Q. Writer"), reviews=[Review(rating=5)])
47+
assert processed[0] == "fantasy"
48+
series = BookSeries(id="S1", creator=Author(name="Q. Writer"), reviews=[Review(rating=5)])
5049
series.books.append(book)
5150
schemaview = SchemaView(SCHEMA)
5251
shop = Shop()
5352
shop.all_book_series.append(series)
5453

55-
csvstr = csv_dumper.dumps(shop, index_slot='all_book_series', schemaview=schemaview)
54+
csvstr = csv_dumper.dumps(shop, index_slot="all_book_series", schemaview=schemaview)
5655
assert "," in csvstr
5756
assert "\t" not in csvstr
5857

59-
tsvstr = tsv_dumper.dumps(shop, index_slot='all_book_series', schemaview=schemaview)
58+
tsvstr = tsv_dumper.dumps(shop, index_slot="all_book_series", schemaview=schemaview)
6059
assert "\t" in tsvstr
6160

6261
def test_csvgen_roundtrip(self):
6362
schemaview = SchemaView(SCHEMA)
6463
data = yaml_loader.load(DATA, target_class=Shop)
65-
csv_dumper.dump(data, to_file=OUTPUT, index_slot='all_book_series', schemaview=schemaview)
66-
roundtrip = csv_loader.load(OUTPUT, target_class=Shop, index_slot='all_book_series', schemaview=schemaview)
64+
csv_dumper.dump(data, to_file=OUTPUT, index_slot="all_book_series", schemaview=schemaview)
65+
roundtrip = csv_loader.load(OUTPUT, target_class=Shop, index_slot="all_book_series", schemaview=schemaview)
6766
logger.debug(json_dumper.dumps(roundtrip))
68-
logger.debug(f'COMPARE 1: {roundtrip}')
69-
logger.debug(f'COMPARE 2: {data}')
67+
logger.debug(f"COMPARE 1: {roundtrip}")
68+
logger.debug(f"COMPARE 2: {data}")
7069
assert roundtrip == data
7170

7271
def test_csvgen_roundtrip_to_dict(self):
7372
schemaview = SchemaView(SCHEMA)
7473
data = yaml_loader.load(DATA, target_class=Shop)
75-
csv_dumper.dump(data, to_file=OUTPUT, index_slot='all_book_series', schemaview=schemaview)
76-
roundtrip = csv_loader.load_as_dict(OUTPUT, index_slot='all_book_series', schemaview=schemaview)
74+
csv_dumper.dump(data, to_file=OUTPUT, index_slot="all_book_series", schemaview=schemaview)
75+
roundtrip = csv_loader.load_as_dict(OUTPUT, index_slot="all_book_series", schemaview=schemaview)
7776
assert roundtrip == json_dumper.to_dict(data)
7877

7978
def test_tsvgen_roundtrip(self):
8079
schemaview = SchemaView(SCHEMA)
8180
data = yaml_loader.load(DATA, target_class=Shop)
82-
tsv_dumper.dump(data, to_file=OUTPUT, index_slot='all_book_series', schemaview=schemaview)
83-
roundtrip = tsv_loader.load(OUTPUT, target_class=Shop, index_slot='all_book_series', schemaview=schemaview)
81+
tsv_dumper.dump(data, to_file=OUTPUT, index_slot="all_book_series", schemaview=schemaview)
82+
roundtrip = tsv_loader.load(OUTPUT, target_class=Shop, index_slot="all_book_series", schemaview=schemaview)
8483
assert roundtrip == data
8584

8685
def test_tsvgen_roundtrip_to_dict(self):
8786
schemaview = SchemaView(SCHEMA)
8887
data = yaml_loader.load(DATA, target_class=Shop)
89-
tsv_dumper.dump(data, to_file=OUTPUT, index_slot='all_book_series', schemaview=schemaview)
90-
roundtrip = tsv_loader.load_as_dict(OUTPUT, index_slot='all_book_series', schemaview=schemaview)
88+
tsv_dumper.dump(data, to_file=OUTPUT, index_slot="all_book_series", schemaview=schemaview)
89+
roundtrip = tsv_loader.load_as_dict(OUTPUT, index_slot="all_book_series", schemaview=schemaview)
9190
assert roundtrip == json_dumper.to_dict(data)
9291

9392
def test_csvgen_unroundtrippable(self):
9493
schemaview = SchemaView(SCHEMA)
95-
#schema = YAMLGenerator(SCHEMA).schema
94+
# schema = YAMLGenerator(SCHEMA).schema
9695
data = yaml_loader.load(DATA2, target_class=Shop)
9796
logger.debug(data.all_book_series[0])
9897
logger.debug(data.all_book_series[0].genres[0])
99-
assert str(data.all_book_series[0].genres[0]) == 'fantasy'
98+
assert str(data.all_book_series[0].genres[0]) == "fantasy"
10099
logger.debug(yaml_dumper.dumps(data))
101100
logger.debug(json_dumper.dumps(data))
102101
processed = remove_empty_items(data)
103-
logger.debug(f'PROC {processed["all_book_series"]}')
102+
logger.debug(f"PROC {processed['all_book_series']}")
104103
asj = as_json_object(processed, None)
105-
logger.debug(f'ASJ {asj["all_book_series"]}')
104+
logger.debug(f"ASJ {asj['all_book_series']}")
106105
reconstituted_json = json.loads(json_dumper.dumps(data))
107-
s0 = reconstituted_json['all_book_series'][0]
106+
s0 = reconstituted_json["all_book_series"][0]
108107
logger.debug(s0)
109108
logger.debug(json_dumper.dumps(data))
110-
#logger.debug(csv_dumper.dumps(data, index_slot='all_book_series', schema=schema))
111-
csv_dumper.dump(data, to_file=OUTPUT2, index_slot='all_book_series', schemaview=schemaview)
112-
#assert False
113-
roundtrip = csv_loader.load(OUTPUT2, target_class=Shop, index_slot='all_book_series', schemaview=schemaview)
109+
# logger.debug(csv_dumper.dumps(data, index_slot='all_book_series', schema=schema))
110+
csv_dumper.dump(data, to_file=OUTPUT2, index_slot="all_book_series", schemaview=schemaview)
111+
# assert False
112+
roundtrip = csv_loader.load(OUTPUT2, target_class=Shop, index_slot="all_book_series", schemaview=schemaview)
114113
logger.debug(json_dumper.dumps(roundtrip))
115114
assert roundtrip == data
116115

117116
def test_table_model(self):
118117
schemaview = SchemaView(SCHEMA)
119-
table_json= csv_loader.load(TABLE_DATA_JSON, target_class=Table, index_slot='rows', schemaview=schemaview)
118+
table_json = csv_loader.load(TABLE_DATA_JSON, target_class=Table, index_slot="rows", schemaview=schemaview)
120119
for row in table_json.rows:
121120
assert len(row["columnB"]) == 2
122121

123122
def test_tsvgen_unroundtrippable(self):
124123
schemaview = SchemaView(SCHEMA)
125124
data = yaml_loader.load(DATA2, target_class=Shop)
126-
assert str(data.all_book_series[0].genres[0]) == 'fantasy'
127-
tsv_dumper.dump(data, to_file=OUTPUT2, index_slot='all_book_series', schemaview=schemaview)
128-
roundtrip = tsv_loader.load(OUTPUT2, target_class=Shop, index_slot='all_book_series', schemaview=schemaview)
125+
assert str(data.all_book_series[0].genres[0]) == "fantasy"
126+
tsv_dumper.dump(data, to_file=OUTPUT2, index_slot="all_book_series", schemaview=schemaview)
127+
roundtrip = tsv_loader.load(OUTPUT2, target_class=Shop, index_slot="all_book_series", schemaview=schemaview)
129128
assert roundtrip == data
130129

131-
if __name__ == '__main__':
130+
131+
if __name__ == "__main__":
132132
unittest.main()

tests/test_utils/test_csv_utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ def test_null_configmap(self):
1616
# assert 'Index slot or schema not specified' in caplog.text
1717

1818
def test_get_configmap(self):
19-
fname = env.input_path('kitchen_sink.yaml')
19+
fname = env.input_path("kitchen_sink.yaml")
2020
schema = SchemaView(fname)
2121
get_configmap(schema, "unknown")
2222

2323

24-
if __name__ == '__main__':
24+
if __name__ == "__main__":
2525
unittest.main()

0 commit comments

Comments
 (0)