Skip to content

Commit 5153d7b

Browse files
Fixed save method for namespaced class fields
This commit ensures that namespaced class names (e.g., those coming from `cwltool` extensions) are correctly saved by the `save` method of the `Saveable` class. Before this commit, the prefix was lost during this process.
1 parent a397e42 commit 5153d7b

File tree

2 files changed

+6
-30
lines changed

2 files changed

+6
-30
lines changed

Diff for: schema_salad/metaschema.py

-28
Original file line numberDiff line numberDiff line change
@@ -1163,8 +1163,6 @@ class RecordField(Documented):
11631163
"""
11641164

11651165
name: str
1166-
class_uri = "https://w3id.org/cwl/salad#RecordField"
1167-
11681166
def __init__(
11691167
self,
11701168
name: Any,
@@ -1431,8 +1429,6 @@ def save(
14311429

14321430

14331431
class RecordSchema(Saveable):
1434-
class_uri = "https://w3id.org/cwl/salad#RecordSchema"
1435-
14361432
def __init__(
14371433
self,
14381434
type_: Any,
@@ -1638,8 +1634,6 @@ class EnumSchema(Saveable):
16381634
"""
16391635

16401636
name: str
1641-
class_uri = "https://w3id.org/cwl/salad#EnumSchema"
1642-
16431637
def __init__(
16441638
self,
16451639
symbols: Any,
@@ -1906,8 +1900,6 @@ def save(
19061900

19071901

19081902
class ArraySchema(Saveable):
1909-
class_uri = "https://w3id.org/cwl/salad#ArraySchema"
1910-
19111903
def __init__(
19121904
self,
19131905
items: Any,
@@ -2107,8 +2099,6 @@ def save(
21072099

21082100

21092101
class MapSchema(Saveable):
2110-
class_uri = "https://w3id.org/cwl/salad#MapSchema"
2111-
21122102
def __init__(
21132103
self,
21142104
type_: Any,
@@ -2308,8 +2298,6 @@ def save(
23082298

23092299

23102300
class UnionSchema(Saveable):
2311-
class_uri = "https://w3id.org/cwl/salad#UnionSchema"
2312-
23132301
def __init__(
23142302
self,
23152303
names: Any,
@@ -2515,8 +2503,6 @@ class JsonldPredicate(Saveable):
25152503
25162504
"""
25172505

2518-
class_uri = "https://w3id.org/cwl/salad#JsonldPredicate"
2519-
25202506
def __init__(
25212507
self,
25222508
_id: Optional[Any] = None,
@@ -3255,8 +3241,6 @@ def save(
32553241

32563242

32573243
class SpecializeDef(Saveable):
3258-
class_uri = "https://w3id.org/cwl/salad#SpecializeDef"
3259-
32603244
def __init__(
32613245
self,
32623246
specializeFrom: Any,
@@ -3482,8 +3466,6 @@ class SaladRecordField(RecordField):
34823466
"""
34833467

34843468
name: str
3485-
class_uri = "https://w3id.org/cwl/salad#SaladRecordField"
3486-
34873469
def __init__(
34883470
self,
34893471
name: Any,
@@ -3866,8 +3848,6 @@ def save(
38663848

38673849
class SaladRecordSchema(NamedType, RecordSchema, SchemaDefinedType):
38683850
name: str
3869-
class_uri = "https://w3id.org/cwl/salad#SaladRecordSchema"
3870-
38713851
def __init__(
38723852
self,
38733853
name: Any,
@@ -4730,8 +4710,6 @@ class SaladEnumSchema(NamedType, EnumSchema, SchemaDefinedType):
47304710
"""
47314711

47324712
name: str
4733-
class_uri = "https://w3id.org/cwl/salad#SaladEnumSchema"
4734-
47354713
def __init__(
47364714
self,
47374715
symbols: Any,
@@ -5474,8 +5452,6 @@ class SaladMapSchema(NamedType, MapSchema, SchemaDefinedType):
54745452
"""
54755453

54765454
name: str
5477-
class_uri = "https://w3id.org/cwl/salad#SaladMapSchema"
5478-
54795455
def __init__(
54805456
self,
54815457
name: Any,
@@ -6162,8 +6138,6 @@ class SaladUnionSchema(NamedType, UnionSchema, DocType):
61626138
"""
61636139

61646140
name: str
6165-
class_uri = "https://w3id.org/cwl/salad#SaladUnionSchema"
6166-
61676141
def __init__(
61686142
self,
61696143
name: Any,
@@ -6791,8 +6765,6 @@ class Documentation(NamedType, DocType):
67916765
"""
67926766

67936767
name: str
6794-
class_uri = "https://w3id.org/cwl/salad#Documentation"
6795-
67966768
def __init__(
67976769
self,
67986770
name: Any,

Diff for: schema_salad/python_codegen.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,9 @@ def begin_class(
167167
idfield_safe_name = self.safe_name(idfield) if idfield != "" else None
168168
if idfield_safe_name is not None:
169169
self.out.write(f" {idfield_safe_name}: str\n")
170-
self.out.write(f' class_uri = "{class_uri}"\n\n')
170+
171+
if "class" in field_names:
172+
self.out.write(f' class_uri = "{class_uri}"\n\n')
171173

172174
required_field_names = [f for f in field_names if f not in optional_fields]
173175
optional_field_names = [f for f in field_names if f in optional_fields]
@@ -666,7 +668,9 @@ def declare_field(
666668
u = save_relative_uri(self.{safename}, {baseurl}, {scoped_id}, {ref_scope}, relative_uris)
667669
r["{fieldname}"] = u
668670
""".format(
669-
safename=self.safe_name(name),
671+
safename=(
672+
"class_uri" if shortname(name) == "class" else self.safe_name(name)
673+
),
670674
fieldname=shortname(name).strip(),
671675
baseurl=baseurl,
672676
scoped_id=fieldtype.scoped_id,

0 commit comments

Comments
 (0)