From ad158c600cb09cf8fa29cd6e249e846ebb78a665 Mon Sep 17 00:00:00 2001 From: Izaskun Mallona Date: Tue, 6 Aug 2024 14:55:10 +0200 Subject: [PATCH 1/5] Add software backend, document singularity URLs should be ORAS --- project/excel/omni_schema.xlsx | Bin 8478 -> 8490 bytes project/graphql/omni_schema.graphql | 1 + project/jsonld/omni_schema.context.jsonld | 2 +- project/jsonld/omni_schema.jsonld | 25 ++- project/jsonschema/omni_schema.schema.json | 16 +- project/owl/omni_schema.owl.ttl | 170 ++++++++++--------- project/protobuf/omni_schema.proto | 1 + project/shacl/omni_schema.shacl.ttl | 188 +++++++++++---------- project/shex/omni_schema.shex | 1 + project/sqlschema/omni_schema.sql | 1 + src/omni_schema/datamodel/omni_schema.py | 11 +- src/omni_schema/schema/omni_schema.yaml | 12 +- 12 files changed, 247 insertions(+), 181 deletions(-) diff --git a/project/excel/omni_schema.xlsx b/project/excel/omni_schema.xlsx index ef6d260c8bec58195a0c12965d919851f71fad4b..002a3ef8c04c28185d499f764c56593cf8db5c02 100644 GIT binary patch delta 1476 zcmbQ|w91Juz?+#xgn@y9gJE?UTjWH(H5?%NQ2HyjiHFqduT;M_Yvpu})l=|OP&DK` zqU*IschS#)q$}_4PoB1x`CxDIAG^97?YUerKRf&{viGDItaZD+`$*^w5%xs~7$;dR zn7Z;*%jt*b+_g3BAImj`yf5lM@T!Ve%rnbVNG(xPEV(c!Ypcd#_c!T{VGXuXB~uox zl-jYO<>E4X>1Qd5$LmwXvLxEFGSc<(uN-*&`0(dFHJLF=FGa)_UG7@lF{wu6vg<>O zZ?ZMoWy^2IvtC(k(|FnN!7>YV{kL!Le%mLoCM`U*Hu&1>+`~UgPfJ$Mj z&6)KQ=b0`ZTwgCdAJzLaW9BFeurV;qQDF9+nSKy<6q@Kq5jfcJm^KiwSp=7u@jCaS=1^?7O~SK2<%l z>(&Wx9l4Ja+IdzkaohfxmBIDDSMDDRy^c2?9P>p3yy{!Uc<$$1m^$f3N%X_D%rniG z1a-eY_#kXb&`b+osW(TLa)vFL+9)pmbCu50>iG@Fs$}>d*DHTmwT;!Z!9!Sk`v#U@ zxib$evp9M(l=GOj$;9Tf7XJ)oY`69td+h7@_WZd(jkMk!+{cvUk2f#iG)WP0^7!{A zkt?d*W6hKIiWz?_L@v&YH$zEdq~x+e|SSqLw!E?9WWMWCBw!U?`9p7N=@YT7#%TNlV~ z$&^3)xGn2t!q#aw`F!pjocpziQ}%zd?3ACZr@W%BI#%ykA#^6r(!_@Mi8a%oJvZiF z-L3QWRP+g}7yW-XMV5pga+P;3E&UWefBVGLaOwHK{uF)k&;eDM44*}J;$-5S51SvWT__mG_FfkQXC<{hlg zJHL?bs}&3?xvlLfc^`|@w;e@4`_wAr6) z79$HN?QDL_y&cM0!P~{i3leM86_vJTWMB}RypdOGb0ohPMEK^z3EHkeVHdFQDS;4( zaAuCgBO9QwC|KB4$eR(IC{OWC<){D(doqI(<>u|e?NDo+L@SxVR!`n9{uJVd6%r?* zlBH6-P*$6C8iY0ZgNzkC-%mD@HHT=vo718B7XGXsMJFsHyk zL!<9xemQlBek(aCrq|q)4TMA|3-GW`E|BAah&KSmm+^wc4NUYZa&rQ_8JR?w5v343 zaDW*O)o_!^4`GJ$$V)LT6#yG1LG0>RkYX&Jyh=e69Kw>t(s#{)TBfl>$|9Jq2F8}jpA^*C I-pGJN0O6x5od5s; delta 1437 zcmZ4GG|!1Iz?+#xgn@y9gCSw!rHF}qYdAo3nd8~&iHFqdr&PaQ;w;*=E3VC=vE_)0 zz;=y~+q#}PcLwgR_mA4f$70_1@%N97YfY>?-YVO<${Pf=XPVx+r@HcRn`~zji^s2y zu%$-AdhONnYZv|LVdwDLznan}I3TBM<)z@o z7(UJ5)|d3db9A1}sNdBp)wWRPn(=gVp%1@)e6Z1vFVUM=Bo%pELbue#)o$Bm*M}zG zcx$xHp5KgTHCb)rcuDg?TkNFiU%%y*pTE@=ZqB-%yKuMgRuQM7e`Y)DzQng)o1J(6 z@8Jr;ExdnzZT}{W>iwB9bCd)g{8(Ey>DZ%V;S3^wS8x4zd52PwuwqS|qwe3<(u5z&wnTU*iC#Zs%@Vm~ zNmTdgi!Y+C1kJSYjd~+_`AD9pHuHIjpSiK#cg{Q9u1}Ndf2{mr(KXSn4IaYk*FSK5 zc{by~DvO_*A-u=5vz1zkr2b3!%UQc+e_XfVV|tNDS7hXF&QptK99uj=IOBxojtMny z68NIn{pXy#-+cLpaz?_u)9&BD=l-2@&#P)i^j~+;5Z}kQEwmO)iT2gsR@va}8!oSz zHYsJ+f?Oq@qsu(&iDOB+)Z&-NCML=CpVWPaoX2nxnK5>Qa<_)%6 zehQqO?E0>XU-fs}rYU}3FT7*R+_uC`N$21jk*LGE~f9Gq*yh~j>{hs4J=l`~I z%+&9Se@N_D*d_P+=!C5kOXH>G+uv}1u+(yo|F`*pq2;+ab92`E`}Ir1YBp`{FWPN- z<+%BTy<2@MdHZVMY`Y+fF|F)CzQMI5Pu-1Tc@lKttpG$%%665c7M0hRosx z88UgVoS*`V=YhEhRi6ewSRu1KL?JvlFci)d04kK4>?h9yu_aDkib+HWthpbm`4rz& zjtZdbJTY9?CJa`1RbCLH`IWqsjfp4&Lq(2$aYP6 diff --git a/project/graphql/omni_schema.graphql b/project/graphql/omni_schema.graphql index 5e65721..54a02a3 100644 --- a/project/graphql/omni_schema.graphql +++ b/project/graphql/omni_schema.graphql @@ -5,6 +5,7 @@ type Benchmark description: String version: String! benchmarker: String! + softwareBackend: String! storage: String! storageApi: StorageAPIEnum! softwareEnvironments: [SoftwareEnvironment]! diff --git a/project/jsonld/omni_schema.context.jsonld b/project/jsonld/omni_schema.context.jsonld index e4dae7c..e4f5dec 100644 --- a/project/jsonld/omni_schema.context.jsonld +++ b/project/jsonld/omni_schema.context.jsonld @@ -1,7 +1,7 @@ { "comments": { "description": "Auto generated by LinkML jsonld context generator", - "generation_date": "2024-06-18T18:10:53", + "generation_date": "2024-08-06T14:53:16", "source": "omni_schema.yaml" }, "@context": { diff --git a/project/jsonld/omni_schema.jsonld b/project/jsonld/omni_schema.jsonld index 040c162..1e776f1 100644 --- a/project/jsonld/omni_schema.jsonld +++ b/project/jsonld/omni_schema.jsonld @@ -431,6 +431,20 @@ "required": true, "@type": "SlotDefinition" }, + { + "name": "software_backend", + "definition_uri": "https://w3id.org/omnibenchmark/omni-schema/software_backend", + "description": "The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda.", + "from_schema": "https://w3id.org/omnibenchmark/omni-schema", + "slot_uri": "https://w3id.org/omnibenchmark/omni-schema/software_backend", + "owner": "Benchmark", + "domain_of": [ + "Benchmark" + ], + "range": "string", + "required": true, + "@type": "SlotDefinition" + }, { "name": "storage", "definition_uri": "https://w3id.org/omnibenchmark/omni-schema/storage", @@ -448,7 +462,7 @@ { "name": "storage_api", "definition_uri": "https://w3id.org/omnibenchmark/omni-schema/storage_api", - "description": "The type of the storage API (i.e. S3)", + "description": "The type of the storage API, i.e. S3.", "from_schema": "https://w3id.org/omnibenchmark/omni-schema", "slot_uri": "https://w3id.org/omnibenchmark/omni-schema/storage_api", "owner": "Benchmark", @@ -704,7 +718,7 @@ { "name": "apptainer", "definition_uri": "https://w3id.org/omnibenchmark/omni-schema/apptainer", - "description": "Apptainer image URL.", + "description": "Apptainer image static ORAS url, including name:tag.", "from_schema": "https://w3id.org/omnibenchmark/omni-schema", "slot_uri": "https://w3id.org/omnibenchmark/omni-schema/apptainer", "owner": "SoftwareEnvironment", @@ -759,6 +773,7 @@ "description", "version", "benchmarker", + "software_backend", "storage", "storage_api", "software_environments", @@ -882,9 +897,9 @@ ], "metamodel_version": "1.7.0", "source_file": "omni_schema.yaml", - "source_file_date": "2024-06-18T18:10:43", - "source_file_size": 4820, - "generation_date": "2024-06-18T18:10:54", + "source_file_date": "2024-08-06T14:49:47", + "source_file_size": 5054, + "generation_date": "2024-08-06T14:53:16", "@type": "SchemaDefinition", "@context": [ "project/jsonld/omni_schema.context.jsonld", diff --git a/project/jsonschema/omni_schema.schema.json b/project/jsonschema/omni_schema.schema.json index a5070b6..9426147 100644 --- a/project/jsonschema/omni_schema.schema.json +++ b/project/jsonschema/omni_schema.schema.json @@ -24,6 +24,10 @@ "description": "A human-readable name for a thing", "type": "string" }, + "software_backend": { + "description": "The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda.", + "type": "string" + }, "software_environments": { "description": "Dictionary of software environments keyed by their identifiers", "items": { @@ -43,7 +47,7 @@ }, "storage_api": { "$ref": "#/$defs/StorageAPIEnum", - "description": "The type of the storage API (i.e. S3)" + "description": "The type of the storage API, i.e. S3." }, "version": { "description": "The version of the benchmark.", @@ -53,6 +57,7 @@ "required": [ "version", "benchmarker", + "software_backend", "storage", "storage_api", "software_environments", @@ -188,7 +193,7 @@ "description": "Contains snapshots of the software environment required for the modules to run.", "properties": { "apptainer": { - "description": "Apptainer image URL.", + "description": "Apptainer image static ORAS url, including name:tag.", "type": "string" }, "conda": { @@ -299,6 +304,10 @@ "description": "A human-readable name for a thing", "type": "string" }, + "software_backend": { + "description": "The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda.", + "type": "string" + }, "software_environments": { "description": "Dictionary of software environments keyed by their identifiers", "items": { @@ -318,7 +327,7 @@ }, "storage_api": { "$ref": "#/$defs/StorageAPIEnum", - "description": "The type of the storage API (i.e. S3)" + "description": "The type of the storage API, i.e. S3." }, "version": { "description": "The version of the benchmark.", @@ -328,6 +337,7 @@ "required": [ "version", "benchmarker", + "software_backend", "storage", "storage_api", "software_environments", diff --git a/project/owl/omni_schema.owl.ttl b/project/owl/omni_schema.owl.ttl index b9bf996..7a28243 100644 --- a/project/owl/omni_schema.owl.ttl +++ b/project/owl/omni_schema.owl.ttl @@ -11,35 +11,23 @@ omni_schema:Benchmark a owl:Class, linkml:ClassDefinition ; rdfs:label "Benchmark" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom omni_schema:SoftwareEnvironment ; - owl:onProperty omni_schema:software_environments ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:benchmark_yaml_spec ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty omni_schema:version ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:benchmark_yaml_spec ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:version ], - [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:stages ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:storage ], + owl:onProperty omni_schema:software_backend ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:storage_api ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty omni_schema:storage ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:benchmark_yaml_spec ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:StorageAPIEnum ; - owl:onProperty omni_schema:storage_api ], + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:benchmark_yaml_spec ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:benchmarker ], @@ -49,21 +37,42 @@ omni_schema:Benchmark a owl:Class, [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:version ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty omni_schema:benchmark_yaml_spec ], + [ a owl:Restriction ; + owl:allValuesFrom omni_schema:SoftwareEnvironment ; + owl:onProperty omni_schema:software_environments ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:benchmarker ], + owl:onProperty omni_schema:software_backend ], + [ a owl:Restriction ; + owl:allValuesFrom omni_schema:StorageAPIEnum ; + owl:onProperty omni_schema:storage_api ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:version ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:benchmarker ], + owl:onProperty omni_schema:software_backend ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:Stage ; owl:onProperty omni_schema:stages ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:maxCardinality 1 ; owl:onProperty omni_schema:storage ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty omni_schema:version ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:storage_api ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:benchmarker ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty omni_schema:benchmarker ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:storage ], @@ -92,10 +101,10 @@ omni_schema:Parameter a owl:Class, linkml:ClassDefinition ; rdfs:label "Parameter" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty omni_schema:values ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:values ] ; skos:definition "A parameter and its scope." ; skos:inScheme . @@ -104,22 +113,22 @@ omni_schema:Repository a owl:Class, linkml:ClassDefinition ; rdfs:label "Repository" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:url ], + [ a owl:Restriction ; owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:url ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty omni_schema:commit ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:commit ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:url ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty omni_schema:commit ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:url ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 1 ; owl:onProperty omni_schema:url ] ; skos:definition "A reference to code repository containing the module's executable code." ; skos:inScheme . @@ -128,22 +137,22 @@ omni_schema:Stage a owl:Class, linkml:ClassDefinition ; rdfs:label "Stage" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom omni_schema:IOFile ; + owl:onProperty omni_schema:outputs ], + [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:modules ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:outputs ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:Module ; owl:onProperty omni_schema:modules ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:IOFile ; - owl:onProperty omni_schema:outputs ], - [ a owl:Restriction ; - owl:allValuesFrom omni_schema:InputCollection ; + owl:minCardinality 0 ; owl:onProperty omni_schema:inputs ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty omni_schema:outputs ], + [ a owl:Restriction ; + owl:allValuesFrom omni_schema:InputCollection ; owl:onProperty omni_schema:inputs ], omni_schema:IdentifiableEntity ; skos:definition "A benchmark subtask with equivalent and independent modules." ; @@ -209,7 +218,7 @@ omni_schema:apptainer a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "apptainer" ; rdfs:range linkml:String ; - skos:definition "Apptainer image URL." ; + skos:definition "Apptainer image static ORAS url, including name:tag." ; skos:inScheme . omni_schema:benchmark_yaml_spec a owl:ObjectProperty, @@ -287,6 +296,13 @@ omni_schema:repository a owl:ObjectProperty, skos:definition "The code repository hosting the module." ; skos:inScheme . +omni_schema:software_backend a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "software_backend" ; + rdfs:range linkml:String ; + skos:definition "The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda." ; + skos:inScheme . + omni_schema:software_environment a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "software_environment" ; @@ -305,7 +321,7 @@ omni_schema:storage_api a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "storage_api" ; rdfs:range omni_schema:StorageAPIEnum ; - skos:definition "The type of the storage API (i.e. S3)" ; + skos:definition "The type of the storage API, i.e. S3." ; skos:inScheme . omni_schema:url a owl:ObjectProperty, @@ -326,13 +342,13 @@ omni_schema:IOFile a owl:Class, linkml:ClassDefinition ; rdfs:label "IOFile" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:path ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:path ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty omni_schema:path ], omni_schema:IdentifiableEntity ; skos:definition "Represents an input / output file." ; @@ -342,35 +358,35 @@ omni_schema:Module a owl:Class, linkml:ClassDefinition ; rdfs:label "Module" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom omni_schema:SoftwareEnvironment ; - owl:onProperty omni_schema:software_environment ], + owl:minCardinality 0 ; + owl:onProperty omni_schema:exclude ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:Repository ; + owl:maxCardinality 1 ; owl:onProperty omni_schema:repository ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:parameters ], + owl:allValuesFrom omni_schema:SoftwareEnvironment ; + owl:onProperty omni_schema:software_environment ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:Parameter ; owl:onProperty omni_schema:parameters ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:software_environment ], + owl:onProperty omni_schema:repository ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty omni_schema:parameters ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:repository ], + owl:onProperty omni_schema:software_environment ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:software_environment ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:exclude ], + owl:allValuesFrom omni_schema:Repository ; + owl:onProperty omni_schema:repository ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:Module ; owl:onProperty omni_schema:exclude ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:repository ], omni_schema:IdentifiableEntity ; skos:definition "A single benchmark component assigned to a specific stage." ; skos:inScheme . @@ -381,39 +397,39 @@ omni_schema:SoftwareEnvironment a owl:Class, rdfs:subClassOf [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:envmodule ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:conda ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:apptainer ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty omni_schema:easyconfig ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:apptainer ], + owl:maxCardinality 1 ; + owl:onProperty omni_schema:envmodule ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty omni_schema:easyconfig ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty omni_schema:conda ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty omni_schema:envmodule ], + owl:onProperty omni_schema:apptainer ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:apptainer ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:easyconfig ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:conda ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:conda ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty omni_schema:envmodule ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:easyconfig ], omni_schema:IdentifiableEntity ; skos:definition "Contains snapshots of the software environment required for the modules to run." ; skos:inScheme . @@ -426,32 +442,32 @@ omni_schema:IdentifiableEntity a owl:Class, linkml:ClassDefinition ; rdfs:label "IdentifiableEntity" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:description ], + [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:description ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty omni_schema:id ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:description ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty omni_schema:name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty omni_schema:id ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty omni_schema:name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:description ] ; + owl:minCardinality 0 ; + owl:onProperty omni_schema:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:name ] ; skos:definition "A generic grouping for any identifiable entity" ; skos:exactMatch schema1:Thing ; skos:inScheme . diff --git a/project/protobuf/omni_schema.proto b/project/protobuf/omni_schema.proto index abeaaf0..e7b9674 100644 --- a/project/protobuf/omni_schema.proto +++ b/project/protobuf/omni_schema.proto @@ -6,6 +6,7 @@ message Benchmark string description = 0 string version = 0 string benchmarker = 0 + string softwareBackend = 0 string storage = 0 storageAPIEnum storageApi = 0 repeated softwareEnvironment softwareEnvironments = 0 diff --git a/project/shacl/omni_schema.shacl.ttl b/project/shacl/omni_schema.shacl.ttl index 282d49a..92f0b31 100644 --- a/project/shacl/omni_schema.shacl.ttl +++ b/project/shacl/omni_schema.shacl.ttl @@ -13,33 +13,39 @@ schema1:Thing a sh:NodeShape ; sh:minCount 1 ; sh:order 0 ; sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 1 ; - sh:path schema1:name ] ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path schema1:description ] ; sh:targetClass schema1:Thing . omni_schema:Benchmark a sh:NodeShape ; sh:closed true ; sh:description "A multi-stage workflow to evaluate processing stage for a specific task." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "The place hosting all benchmark data." ; - sh:maxCount 1 ; + sh:property [ sh:class omni_schema:SoftwareEnvironment ; + sh:description "Dictionary of software environments keyed by their identifiers" ; sh:minCount 1 ; - sh:order 2 ; - sh:path omni_schema:storage ], + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path omni_schema:software_environments ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 7 ; + sh:order 8 ; sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 2 ; + sh:path omni_schema:software_backend ], [ sh:datatype xsd:string ; sh:description "The version of the benchmark." ; sh:maxCount 1 ; @@ -47,42 +53,42 @@ omni_schema:Benchmark a sh:NodeShape ; sh:order 0 ; sh:path omni_schema:version ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "The place hosting all benchmark data." ; sh:maxCount 1 ; - sh:order 8 ; - sh:path schema1:name ], + sh:minCount 1 ; + sh:order 3 ; + sh:path omni_schema:storage ], [ sh:datatype xsd:string ; sh:description "The name and contact details of the person responsible for this benchmark." ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 1 ; sh:path omni_schema:benchmarker ], - [ sh:class omni_schema:SoftwareEnvironment ; - sh:description "Dictionary of software environments keyed by their identifiers" ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path omni_schema:software_environments ], - [ sh:description "The type of the storage API (i.e. S3)" ; + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 10 ; + sh:path schema1:description ], + [ sh:description "The type of the storage API, i.e. S3." ; sh:in ( "S3" ) ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 3 ; + sh:order 4 ; sh:path omni_schema:storage_api ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 9 ; - sh:path schema1:description ], + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "Benchmark Specification version." ; sh:maxCount 1 ; - sh:order 5 ; + sh:order 6 ; sh:path omni_schema:benchmark_yaml_spec ], [ sh:class omni_schema:Stage ; sh:minCount 1 ; sh:nodeKind sh:IRI ; - sh:order 6 ; + sh:order 7 ; sh:path omni_schema:stages ] ; sh:targetClass omni_schema:Benchmark . @@ -110,17 +116,17 @@ omni_schema:Repository a sh:NodeShape ; sh:description "A reference to code repository containing the module's executable code." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "The commit hash." ; + sh:description "The git compatible url." ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 1 ; - sh:path omni_schema:commit ], + sh:order 0 ; + sh:path omni_schema:url ], [ sh:datatype xsd:string ; - sh:description "The git compatible url." ; + sh:description "The commit hash." ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 0 ; - sh:path omni_schema:url ] ; + sh:order 1 ; + sh:path omni_schema:commit ] ; sh:targetClass omni_schema:Repository . omni_schema:Stage a sh:NodeShape ; @@ -128,33 +134,33 @@ omni_schema:Stage a sh:NodeShape ; sh:description "A benchmark subtask with equivalent and independent modules." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:description ], + sh:order 4 ; + sh:path schema1:name ], + [ sh:class omni_schema:IOFile ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path omni_schema:outputs ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 3 ; sh:path schema1:identifier ], - [ sh:class omni_schema:InputCollection ; - sh:nodeKind sh:BlankNode ; - sh:order 1 ; - sh:path omni_schema:inputs ], - [ sh:class omni_schema:IOFile ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path omni_schema:outputs ], [ sh:class omni_schema:Module ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path omni_schema:modules ], + [ sh:class omni_schema:InputCollection ; + sh:nodeKind sh:BlankNode ; + sh:order 1 ; + sh:path omni_schema:inputs ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ] ; + sh:order 5 ; + sh:path schema1:description ] ; sh:targetClass omni_schema:Stage . omni_schema:IOFile a sh:NodeShape ; @@ -162,47 +168,32 @@ omni_schema:IOFile a sh:NodeShape ; sh:description "Represents an input / output file." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:name ], - [ sh:description "A unique identifier for a thing" ; + sh:description "The output path pattern for the IO file." ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 1 ; - sh:path schema1:identifier ], + sh:order 0 ; + sh:path omni_schema:path ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:order 3 ; sh:path schema1:description ], [ sh:datatype xsd:string ; - sh:description "The output path pattern for the IO file." ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path omni_schema:path ] ; + sh:order 2 ; + sh:path schema1:name ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 1 ; + sh:path schema1:identifier ] ; sh:targetClass omni_schema:IOFile . omni_schema:Module a sh:NodeShape ; sh:closed true ; sh:description "A single benchmark component assigned to a specific stage." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], - [ sh:class omni_schema:Module ; - sh:description "Ignore these module's outputs as input." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path omni_schema:exclude ], - [ sh:class omni_schema:SoftwareEnvironment ; + sh:property [ sh:class omni_schema:SoftwareEnvironment ; sh:description "Reference to a software environment by key." ; sh:maxCount 1 ; sh:minCount 1 ; @@ -216,15 +207,30 @@ omni_schema:Module a sh:NodeShape ; sh:nodeKind sh:BlankNode ; sh:order 1 ; sh:path omni_schema:repository ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:description ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 4 ; sh:path schema1:identifier ], + [ sh:class omni_schema:Module ; + sh:description "Ignore these module's outputs as input." ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path omni_schema:exclude ], [ sh:class omni_schema:Parameter ; sh:nodeKind sh:BlankNode ; sh:order 3 ; - sh:path omni_schema:parameters ] ; + sh:path omni_schema:parameters ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ] ; sh:targetClass omni_schema:Module . omni_schema:SoftwareEnvironment a sh:NodeShape ; @@ -232,39 +238,39 @@ omni_schema:SoftwareEnvironment a sh:NodeShape ; sh:description "Contains snapshots of the software environment required for the modules to run." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], + sh:order 6 ; + sh:path schema1:description ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 4 ; sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "Apptainer image URL." ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path omni_schema:apptainer ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "Environment module name." ; sh:maxCount 1 ; sh:order 1 ; sh:path omni_schema:envmodule ], + [ sh:datatype xsd:string ; + sh:description "Conda environment file." ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path omni_schema:conda ], [ sh:datatype xsd:string ; sh:description "Easybuild configuration file." ; sh:maxCount 1 ; sh:order 0 ; sh:path omni_schema:easyconfig ], [ sh:datatype xsd:string ; - sh:description "Conda environment file." ; + sh:description "Apptainer image static ORAS url, including name:tag." ; sh:maxCount 1 ; - sh:order 2 ; - sh:path omni_schema:conda ] ; + sh:order 3 ; + sh:path omni_schema:apptainer ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ] ; sh:targetClass omni_schema:SoftwareEnvironment . diff --git a/project/shex/omni_schema.shex b/project/shex/omni_schema.shex index bf10683..b12496b 100644 --- a/project/shex/omni_schema.shex +++ b/project/shex/omni_schema.shex @@ -48,6 +48,7 @@ linkml:Sparqlpath xsd:string rdf:type [ schema1:Thing ] ? ; @linkml:String ; @linkml:String ; + @linkml:String ; @linkml:String ; [ ] ; @ + ; diff --git a/project/sqlschema/omni_schema.sql b/project/sqlschema/omni_schema.sql index a734b0d..09e0633 100644 --- a/project/sqlschema/omni_schema.sql +++ b/project/sqlschema/omni_schema.sql @@ -6,6 +6,7 @@ CREATE TABLE "Benchmark" ( description TEXT, version TEXT NOT NULL, benchmarker TEXT NOT NULL, + software_backend TEXT NOT NULL, storage TEXT NOT NULL, storage_api VARCHAR(2) NOT NULL, software_environments TEXT NOT NULL, diff --git a/src/omni_schema/datamodel/omni_schema.py b/src/omni_schema/datamodel/omni_schema.py index d84f8bc..23fd6f5 100644 --- a/src/omni_schema/datamodel/omni_schema.py +++ b/src/omni_schema/datamodel/omni_schema.py @@ -1,5 +1,5 @@ # Auto generated from omni_schema.yaml by pythongen.py version: 0.0.1 -# Generation date: 2024-06-18T18:10:57 +# Generation date: 2024-08-06T14:53:19 # Schema: omni-schema # # id: https://w3id.org/omnibenchmark/omni-schema @@ -111,6 +111,7 @@ class Benchmark(IdentifiableEntity): id: Union[str, BenchmarkId] = None version: str = None benchmarker: str = None + software_backend: str = None storage: str = None storage_api: Union[str, "StorageAPIEnum"] = None software_environments: Union[Dict[Union[str, SoftwareEnvironmentId], Union[dict, "SoftwareEnvironment"]], List[Union[dict, "SoftwareEnvironment"]]] = empty_dict() @@ -133,6 +134,11 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.benchmarker, str): self.benchmarker = str(self.benchmarker) + if self._is_empty(self.software_backend): + self.MissingRequiredField("software_backend") + if not isinstance(self.software_backend, str): + self.software_backend = str(self.software_backend) + if self._is_empty(self.storage): self.MissingRequiredField("storage") if not isinstance(self.storage, str): @@ -405,6 +411,9 @@ class slots: slots.benchmarker = Slot(uri=OMNI_SCHEMA.benchmarker, name="benchmarker", curie=OMNI_SCHEMA.curie('benchmarker'), model_uri=OMNI_SCHEMA.benchmarker, domain=None, range=str) +slots.software_backend = Slot(uri=OMNI_SCHEMA.software_backend, name="software_backend", curie=OMNI_SCHEMA.curie('software_backend'), + model_uri=OMNI_SCHEMA.software_backend, domain=None, range=str) + slots.storage = Slot(uri=OMNI_SCHEMA.storage, name="storage", curie=OMNI_SCHEMA.curie('storage'), model_uri=OMNI_SCHEMA.storage, domain=None, range=str) diff --git a/src/omni_schema/schema/omni_schema.yaml b/src/omni_schema/schema/omni_schema.yaml index 80f9181..1e36a19 100644 --- a/src/omni_schema/schema/omni_schema.yaml +++ b/src/omni_schema/schema/omni_schema.yaml @@ -44,6 +44,7 @@ classes: slots: - version - benchmarker + - software_backend - storage - storage_api - software_environments @@ -131,6 +132,11 @@ slots: description: The name and contact details of the person responsible for this benchmark. required: true + software_backend: + range: string + description: The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda. + required: true + storage: range: string description: The place hosting all benchmark data. @@ -138,9 +144,9 @@ slots: storage_api: range: StorageAPIEnum - description: The type of the storage API (i.e. S3) + description: The type of the storage API, i.e. S3. required: true - + stages: range: Stage multivalued: true @@ -230,7 +236,7 @@ slots: apptainer: range: string - description: Apptainer image URL. + description: Apptainer image static ORAS url, including name:tag. benchmark_yaml_spec: range: string From dec831221b101e581867a60162b3847f8fb91a49 Mon Sep 17 00:00:00 2001 From: Daniel Incicau Date: Tue, 27 Aug 2024 15:22:58 +0200 Subject: [PATCH 2/5] Make software_backend as enum --- examples/Benchmark_001.yaml | 1 + poetry.lock | 1156 +++++++++++----------- src/data/examples/Benchmark_001.yaml | 1 + src/data/examples/data.py | 1 + src/omni_schema/datamodel/omni_schema.py | 478 --------- src/omni_schema/schema/omni_schema.yaml | 10 +- 6 files changed, 614 insertions(+), 1033 deletions(-) delete mode 100644 src/omni_schema/datamodel/omni_schema.py diff --git a/examples/Benchmark_001.yaml b/examples/Benchmark_001.yaml index cc39599..73e1fc4 100644 --- a/examples/Benchmark_001.yaml +++ b/examples/Benchmark_001.yaml @@ -6,6 +6,7 @@ benchmarker: "John Doe at Robinsons lab, john.doe@uzh.ch" storage: https://storage.github.com/ storage_api: S3 benchmark_yaml_spec: 0.01 +software_backend: envmodules software_environments: R: description: "R 4.3.3 with gfbf-2023 toolchain" diff --git a/poetry.lock b/poetry.lock index 0353c7b..3ca6da8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,14 +1,14 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "annotated-types" -version = "0.6.0" +version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" files = [ - {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, - {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] @@ -42,22 +42,22 @@ test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock [[package]] name = "attrs" -version = "23.2.0" +version = "24.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, - {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, ] [package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] -tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "beautifulsoup4" @@ -82,13 +82,13 @@ lxml = ["lxml"] [[package]] name = "bioregistry" -version = "0.10.152" +version = "0.11.15" description = "Integrated registry of biological databases and nomenclatures" optional = false python-versions = ">=3.8" files = [ - {file = "bioregistry-0.10.152-py3-none-any.whl", hash = "sha256:2c5af46e1c7a9f3805cefc0d566afb778fbf711d40f26ec3a57940ea43aca100"}, - {file = "bioregistry-0.10.152.tar.gz", hash = "sha256:688d21b3b9af03447a45f46b27cd693639ec6b5f769a5d558a32eccb94213eef"}, + {file = "bioregistry-0.11.15-py3-none-any.whl", hash = "sha256:b58fdc57eba71a98f937cd9bfd3df01ade5c893ff8c2b35dedd08f4ba580bf07"}, + {file = "bioregistry-0.11.15.tar.gz", hash = "sha256:e6832424b583c46105eaf2dce454fdd3ee61d37c2c75200332d131d9a70e0e97"}, ] [package.dependencies] @@ -103,7 +103,7 @@ tqdm = "*" [package.extras] align = ["beautifulsoup4", "class-resolver", "defusedxml", "fairsharing-client (>=0.1.0)", "pandas", "pyyaml", "tabulate"] charts = ["jinja2", "matplotlib", "matplotlib-venn", "pandas", "seaborn"] -docs = ["autodoc-pydantic", "sphinx", "sphinx-automodapi", "sphinx-click", "sphinx-rtd-theme"] +docs = ["autodoc-pydantic", "sphinx (<7.3)", "sphinx-automodapi", "sphinx-click", "sphinx-rtd-theme"] export = ["ndex2", "pyyaml", "rdflib", "rdflib-jsonld"] gha = ["more-itertools"] health = ["click-default-group", "jinja2", "pandas", "pyyaml", "tabulate"] @@ -112,24 +112,24 @@ web = ["bootstrap-flask (<=2.0.0)", "curies[fastapi]", "fastapi", "flask (<2.2.4 [[package]] name = "cachetools" -version = "5.3.2" +version = "5.5.0" description = "Extensible memoizing collections and decorators" optional = false python-versions = ">=3.7" files = [ - {file = "cachetools-5.3.2-py3-none-any.whl", hash = "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1"}, - {file = "cachetools-5.3.2.tar.gz", hash = "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2"}, + {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, + {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, ] [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, + {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, ] [[package]] @@ -282,13 +282,13 @@ files = [ [[package]] name = "curies" -version = "0.7.7" +version = "0.7.10" description = "Idiomatic conversion between URIs and compact URIs (CURIEs)." optional = false python-versions = ">=3.8" files = [ - {file = "curies-0.7.7-py3-none-any.whl", hash = "sha256:609de3e8cdf39f410e8f4d9f06eb7df379465860f4fb441bf0e79672430f8e2a"}, - {file = "curies-0.7.7.tar.gz", hash = "sha256:a8d674029f906fb9c3564eafa0862ce96725932bd801fa751e076265b111cb34"}, + {file = "curies-0.7.10-py3-none-any.whl", hash = "sha256:ad80f420dd76b6f3e921a245370ff6ab7473c48c29c17254970c03cd2e58af5f"}, + {file = "curies-0.7.10.tar.gz", hash = "sha256:98a7ceb94710fab3a02727a7f85ba0719dd22be5fc8b5f2ad1d7d4cfc47d64ce"}, ] [package.dependencies] @@ -354,13 +354,13 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.2.0" +version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, - {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] @@ -410,19 +410,20 @@ beautifulsoup4 = "*" [[package]] name = "google-api-core" -version = "2.17.1" +version = "2.19.1" description = "Google API client core library" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-core-2.17.1.tar.gz", hash = "sha256:9df18a1f87ee0df0bc4eea2770ebc4228392d8cc4066655b320e2cfccb15db95"}, - {file = "google_api_core-2.17.1-py3-none-any.whl", hash = "sha256:610c5b90092c360736baccf17bd3efbcb30dd380e7a6dc28a71059edb8bd0d8e"}, + {file = "google-api-core-2.19.1.tar.gz", hash = "sha256:f4695f1e3650b316a795108a76a1c416e6afb036199d1c1f1f110916df479ffd"}, + {file = "google_api_core-2.19.1-py3-none-any.whl", hash = "sha256:f12a9b8309b5e21d92483bbd47ce2c445861ec7d269ef6784ecc0ea8c1fa6125"}, ] [package.dependencies] google-auth = ">=2.14.1,<3.0.dev0" googleapis-common-protos = ">=1.56.2,<2.0.dev0" -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" +proto-plus = ">=1.22.3,<2.0.0dev" +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0.dev0" requests = ">=2.18.0,<3.0.0.dev0" [package.extras] @@ -432,31 +433,31 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-api-python-client" -version = "2.119.0" +version = "2.142.0" description = "Google API Client Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-python-client-2.119.0.tar.gz", hash = "sha256:ff9ef7539eaf7e088a481b25d1af4704210b07863e1d51b5ee498b910a3a46a3"}, - {file = "google_api_python_client-2.119.0-py2.py3-none-any.whl", hash = "sha256:84e43bdb58dd8d2301669513863996378ffe9a3bf6d23b5ccd4f1e021323dbeb"}, + {file = "google_api_python_client-2.142.0-py2.py3-none-any.whl", hash = "sha256:266799082bb8301f423ec204dffbffb470b502abbf29efd1f83e644d36eb5a8f"}, + {file = "google_api_python_client-2.142.0.tar.gz", hash = "sha256:a1101ac9e24356557ca22f07ff48b7f61fa5d4b4e7feeef3bda16e5dcb86350e"}, ] [package.dependencies] google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0.dev0" -google-auth = ">=1.19.0,<3.0.0.dev0" -google-auth-httplib2 = ">=0.1.0" -httplib2 = ">=0.15.0,<1.dev0" +google-auth = ">=1.32.0,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0.dev0" +google-auth-httplib2 = ">=0.2.0,<1.0.0" +httplib2 = ">=0.19.0,<1.dev0" uritemplate = ">=3.0.1,<5" [[package]] name = "google-auth" -version = "2.28.1" +version = "2.34.0" description = "Google Authentication Library" optional = false python-versions = ">=3.7" files = [ - {file = "google-auth-2.28.1.tar.gz", hash = "sha256:34fc3046c257cedcf1622fc4b31fc2be7923d9b4d44973d481125ecc50d83885"}, - {file = "google_auth-2.28.1-py2.py3-none-any.whl", hash = "sha256:25141e2d7a14bfcba945f5e9827f98092716e99482562f15306e5b026e21aa72"}, + {file = "google_auth-2.34.0-py2.py3-none-any.whl", hash = "sha256:72fd4733b80b6d777dcde515628a9eb4a577339437012874ea286bca7261ee65"}, + {file = "google_auth-2.34.0.tar.gz", hash = "sha256:8eb87396435c19b20d32abd2f984e31c191a15284af72eb922f10e5bde9c04cc"}, ] [package.dependencies] @@ -466,7 +467,7 @@ rsa = ">=3.1.4,<5" [package.extras] aiohttp = ["aiohttp (>=3.6.2,<4.0.0.dev0)", "requests (>=2.20.0,<3.0.0.dev0)"] -enterprise-cert = ["cryptography (==36.0.2)", "pyopenssl (==22.0.0)"] +enterprise-cert = ["cryptography", "pyopenssl"] pyopenssl = ["cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] reauth = ["pyu2f (>=0.1.5)"] requests = ["requests (>=2.20.0,<3.0.0.dev0)"] @@ -488,13 +489,13 @@ httplib2 = ">=0.19.0" [[package]] name = "google-auth-oauthlib" -version = "1.2.0" +version = "1.2.1" description = "Google Authentication Library" optional = false python-versions = ">=3.6" files = [ - {file = "google-auth-oauthlib-1.2.0.tar.gz", hash = "sha256:292d2d3783349f2b0734a0a0207b1e1e322ac193c2c09d8f7c613fb7cc501ea8"}, - {file = "google_auth_oauthlib-1.2.0-py2.py3-none-any.whl", hash = "sha256:297c1ce4cb13a99b5834c74a1fe03252e1e499716718b190f56bcb9c4abc4faf"}, + {file = "google_auth_oauthlib-1.2.1-py2.py3-none-any.whl", hash = "sha256:2d58a27262d55aa1b87678c3ba7142a080098cbc2024f903c62355deb235d91f"}, + {file = "google_auth_oauthlib-1.2.1.tar.gz", hash = "sha256:afd0cad092a2eaa53cd8e8298557d6de1034c6cb4a740500b5357b648af97263"}, ] [package.dependencies] @@ -506,36 +507,36 @@ tool = ["click (>=6.0.0)"] [[package]] name = "googleapis-common-protos" -version = "1.62.0" +version = "1.64.0" description = "Common protobufs used in Google APIs" optional = false python-versions = ">=3.7" files = [ - {file = "googleapis-common-protos-1.62.0.tar.gz", hash = "sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277"}, - {file = "googleapis_common_protos-1.62.0-py2.py3-none-any.whl", hash = "sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07"}, + {file = "googleapis_common_protos-1.64.0-py2.py3-none-any.whl", hash = "sha256:d1bfc569f70ed2e96ccf06ead265c2cf42b5abfc817cda392e3835f3b67b5c59"}, + {file = "googleapis_common_protos-1.64.0.tar.gz", hash = "sha256:7d77ca6b7c0c38eb6b1bab3b4c9973acf57ce4f2a6d3a4136acba10bcbfb3025"}, ] [package.dependencies] -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" +protobuf = ">=3.20.2,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0.dev0" [package.extras] grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "graphviz" -version = "0.20.1" +version = "0.20.3" description = "Simple Python interface for Graphviz" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "graphviz-0.20.1-py3-none-any.whl", hash = "sha256:587c58a223b51611c0cf461132da386edd896a029524ca61a1462b880bf97977"}, - {file = "graphviz-0.20.1.zip", hash = "sha256:8c58f14adaa3b947daf26c19bc1e98c4e0702cdc31cf99153e6f06904d492bf8"}, + {file = "graphviz-0.20.3-py3-none-any.whl", hash = "sha256:81f848f2904515d8cd359cc611faba817598d2feaac4027b266aa3eda7b3dde5"}, + {file = "graphviz-0.20.3.zip", hash = "sha256:09d6bc81e6a9fa392e7ba52135a9d49f1ed62526f96499325930e87ca1b5925d"}, ] [package.extras] dev = ["flake8", "pep8-naming", "tox (>=3)", "twine", "wheel"] -docs = ["sphinx (>=5)", "sphinx-autodoc-typehints", "sphinx-rtd-theme"] -test = ["coverage", "mock (>=4)", "pytest (>=7)", "pytest-cov", "pytest-mock (>=3)"] +docs = ["sphinx (>=5,<7)", "sphinx-autodoc-typehints", "sphinx-rtd-theme"] +test = ["coverage", "pytest (>=7,<8.1)", "pytest-cov", "pytest-mock (>=3)"] [[package]] name = "greenlet" @@ -610,29 +611,28 @@ test = ["objgraph", "psutil"] [[package]] name = "gspread" -version = "6.0.2" +version = "6.1.2" description = "Google Spreadsheets Python API" optional = false python-versions = ">=3.8" files = [ - {file = "gspread-6.0.2-py3-none-any.whl", hash = "sha256:0238ba43f3bd45e7fa96fd206e9ceb73b03c2896eb143d7f4373c6d0cfe6fddf"}, - {file = "gspread-6.0.2.tar.gz", hash = "sha256:0982beeb07fa3ec4482a3aaa96ca13a1e6b427a0aca4058beab4cdc33c0cbb64"}, + {file = "gspread-6.1.2-py3-none-any.whl", hash = "sha256:345996fbb74051ee574e3d330a375ac625774f289459f73cb1f8b6fb3cf4cac5"}, + {file = "gspread-6.1.2.tar.gz", hash = "sha256:b147688b8c7a18c9835d5f998997ec17c97c0470babcab17f65ac2b3a32402b7"}, ] [package.dependencies] google-auth = ">=1.12.0" google-auth-oauthlib = ">=0.4.1" -StrEnum = "0.4.15" [[package]] name = "gspread-formatting" -version = "1.1.2" +version = "1.2.0" description = "Complete Google Sheets formatting support for gspread worksheets" optional = false python-versions = "*" files = [ - {file = "gspread-formatting-1.1.2.tar.gz", hash = "sha256:4d954d8c283880c4189f5684652b114c3889ffa4b442f339b80e2371782cb4c0"}, - {file = "gspread_formatting-1.1.2-py2.py3-none-any.whl", hash = "sha256:e5d14477f18ec2f08db0a00d22470d1c621d53b0633412c4873d86712c9a7bca"}, + {file = "gspread-formatting-1.2.0.tar.gz", hash = "sha256:ba88eab6940e8f37580fc3073e89848ab7a6eaab4ed91f43b731579280c14086"}, + {file = "gspread_formatting-1.2.0-py2.py3-none-any.whl", hash = "sha256:9400a2369021ae6f6b31ed12eeddea35e5cfe1fd6c795487ed228eaf10fafad5"}, ] [package.dependencies] @@ -665,33 +665,33 @@ pyparsing = {version = ">=2.4.2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0 [[package]] name = "idna" -version = "3.6" +version = "3.8" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"}, + {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"}, ] [[package]] name = "importlib-metadata" -version = "7.0.1" +version = "8.4.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, - {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, + {file = "importlib_metadata-8.4.0-py3-none-any.whl", hash = "sha256:66f342cc6ac9818fc6ff340576acd24d65ba0b3efabb2b4ac08b598965a4a2f1"}, + {file = "importlib_metadata-8.4.0.tar.gz", hash = "sha256:9a547d3bc3608b025f93d403fdd1aae741c24fbb8314df4b155675742ce303c5"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "iniconfig" @@ -734,13 +734,13 @@ arrow = ">=0.15.0" [[package]] name = "jinja2" -version = "3.1.3" +version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, - {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [package.dependencies] @@ -833,24 +833,24 @@ ply = "*" [[package]] name = "jsonpointer" -version = "2.4" +version = "3.0.0" description = "Identify specific nodes in a JSON document (RFC 6901)" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +python-versions = ">=3.7" files = [ - {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"}, - {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"}, + {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, + {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, ] [[package]] name = "jsonschema" -version = "4.21.1" +version = "4.23.0" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, - {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, + {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, + {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, ] [package.dependencies] @@ -869,7 +869,7 @@ webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format\" [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] [[package]] name = "jsonschema-specifications" @@ -887,13 +887,13 @@ referencing = ">=0.31.0" [[package]] name = "linkml" -version = "1.7.4" +version = "1.8.3" description = "Linked Open Data Modeling Language" optional = false -python-versions = ">=3.8.1,<4.0.0" +python-versions = "<4.0.0,>=3.8.1" files = [ - {file = "linkml-1.7.4-py3-none-any.whl", hash = "sha256:087bdeaf0be62163c7af888ca6e5f23eb93bc2e0757054a8fc83a8b7463de8f1"}, - {file = "linkml-1.7.4.tar.gz", hash = "sha256:65236dac7e5a4a41600261adf8be1d4073baba9664460f334bc958f8bb538f94"}, + {file = "linkml-1.8.3-py3-none-any.whl", hash = "sha256:ced1af3055312d15335cfe8846847c0491519c9af28cce5ebd8e4e26e4361754"}, + {file = "linkml-1.8.3.tar.gz", hash = "sha256:6bf65f3d6c4ce9e88af0fda71b954ae4c6f5e885f8b4d74c1090380d565e76ba"}, ] [package.dependencies] @@ -906,11 +906,11 @@ jinja2 = ">=3.1.0" jsonasobj2 = ">=1.0.3,<2.0.0" jsonschema = {version = ">=4.0.0", extras = ["format"]} linkml-dataops = "*" -linkml-runtime = ">=1.7.0" +linkml-runtime = ">=1.8.1,<2.0.0" openpyxl = "*" parse = "*" prefixcommons = ">=0.1.7" -prefixmaps = ">=0.1.3" +prefixmaps = ">=0.2.2" pydantic = ">=1.0.0,<3.0.0" pyjsg = ">=0.11.6" pyshex = ">=0.7.20" @@ -922,6 +922,11 @@ requests = ">=2.22" sqlalchemy = ">=1.4.31" watchdog = ">=0.9.0" +[package.extras] +black = ["black (>=24.0.0)"] +shacl = ["pyshacl (>=0.25.0,<0.26.0)"] +tests = ["black (>=24.0.0)", "pyshacl (>=0.25.0,<0.26.0)"] + [[package]] name = "linkml-dataops" version = "0.1.0" @@ -942,13 +947,13 @@ linkml-runtime = ">=1.1.6" [[package]] name = "linkml-runtime" -version = "1.7.2" +version = "1.8.2" description = "Runtime environment for LinkML, the Linked open data modeling language" optional = false -python-versions = ">=3.8,<4.0" +python-versions = "<4.0,>=3.8" files = [ - {file = "linkml_runtime-1.7.2-py3-none-any.whl", hash = "sha256:45087530e6c89ec426be0e07a2b936f1b8f72f95caa9e8be347aeb934bf96e57"}, - {file = "linkml_runtime-1.7.2.tar.gz", hash = "sha256:216f5b6511ae1b11a5ba1a69f19fb729c06bc5bdbf7232ffd3149b2e03e1604c"}, + {file = "linkml_runtime-1.8.2-py3-none-any.whl", hash = "sha256:a66d7b5b82cb57b2d6c603c75ca22db4bae0409e0fb2b9e7835f921a23716096"}, + {file = "linkml_runtime-1.8.2.tar.gz", hash = "sha256:f5067aeeb96c8d3ca1761b55b82d927af88d810459d533fb1f7876a90224b130"}, ] [package.dependencies] @@ -968,13 +973,13 @@ requests = "*" [[package]] name = "markdown" -version = "3.5.2" +version = "3.7" description = "Python implementation of John Gruber's Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, - {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, + {file = "Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803"}, + {file = "markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2"}, ] [package.dependencies] @@ -1066,34 +1071,51 @@ files = [ [[package]] name = "mkdocs" -version = "1.5.3" +version = "1.6.0" description = "Project documentation with Markdown." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "mkdocs-1.5.3-py3-none-any.whl", hash = "sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1"}, - {file = "mkdocs-1.5.3.tar.gz", hash = "sha256:eb7c99214dcb945313ba30426c2451b735992c73c2e10838f76d09e39ff4d0e2"}, + {file = "mkdocs-1.6.0-py3-none-any.whl", hash = "sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7"}, + {file = "mkdocs-1.6.0.tar.gz", hash = "sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512"}, ] [package.dependencies] click = ">=7.0" colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} ghp-import = ">=1.0" -importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""} +importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} jinja2 = ">=2.11.1" -markdown = ">=3.2.1" +markdown = ">=3.3.6" markupsafe = ">=2.0.1" mergedeep = ">=1.3.4" +mkdocs-get-deps = ">=0.2.0" packaging = ">=20.5" pathspec = ">=0.11.1" -platformdirs = ">=2.2.0" pyyaml = ">=5.1" pyyaml-env-tag = ">=0.1" watchdog = ">=2.0" [package.extras] i18n = ["babel (>=2.9.0)"] -min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pathspec (==0.11.1)", "platformdirs (==2.2.0)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.4)", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, + {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""} +mergedeep = ">=1.3.4" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" [[package]] name = "mkdocs-material" @@ -1203,13 +1225,13 @@ termcolor = "*" [[package]] name = "openpyxl" -version = "3.1.2" +version = "3.1.5" description = "A Python library to read/write Excel 2010 xlsx/xlsm files" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "openpyxl-3.1.2-py2.py3-none-any.whl", hash = "sha256:f91456ead12ab3c6c2e9491cf33ba6d08357d802192379bb482f1033ade496f5"}, - {file = "openpyxl-3.1.2.tar.gz", hash = "sha256:a6f5977418eff3b2d5500d54d9db50c8277a368436f4e4f8ddb1be3422870184"}, + {file = "openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2"}, + {file = "openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050"}, ] [package.dependencies] @@ -1217,24 +1239,24 @@ et-xmlfile = "*" [[package]] name = "packaging" -version = "23.2" +version = "24.1" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] name = "parse" -version = "1.20.1" +version = "1.20.2" description = "parse() is the opposite of format()" optional = false python-versions = "*" files = [ - {file = "parse-1.20.1-py2.py3-none-any.whl", hash = "sha256:76ddd5214255ae711db4c512be636151fbabaa948c6f30115aecc440422ca82c"}, - {file = "parse-1.20.1.tar.gz", hash = "sha256:09002ca350ad42e76629995f71f7b518670bcf93548bdde3684fd55d2be51975"}, + {file = "parse-1.20.2-py2.py3-none-any.whl", hash = "sha256:967095588cb802add9177d0c0b6133b5ba33b1ea9007ca800e526f42a85af558"}, + {file = "parse-1.20.2.tar.gz", hash = "sha256:b41d604d16503c79d81af5165155c0b20f6c8d6c559efa66b4b695c3e5a0a0ce"}, ] [[package]] @@ -1250,28 +1272,29 @@ files = [ [[package]] name = "platformdirs" -version = "4.2.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +version = "4.2.2" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, ] [package.extras] docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -1308,169 +1331,199 @@ requests = ">=2.28.1,<3.0.0" [[package]] name = "prefixmaps" -version = "0.2.2" +version = "0.2.5" description = "A python library for retrieving semantic prefix maps" optional = false -python-versions = ">=3.8,<4.0" +python-versions = "<4.0,>=3.8" files = [ - {file = "prefixmaps-0.2.2-py3-none-any.whl", hash = "sha256:4ac2bf3ddb9b27c40c978cf937e9bedb160050d24e8c679b94c9c885e1d73c72"}, - {file = "prefixmaps-0.2.2.tar.gz", hash = "sha256:a36b1554154ef465271bde82dc91cd671e2d31dc1f50c2fd08ccb0d7d5791c33"}, + {file = "prefixmaps-0.2.5-py3-none-any.whl", hash = "sha256:68caa04b3a6a8e058aa1c55affe32c62e44b564d031d63f768e267b796a1f3ee"}, + {file = "prefixmaps-0.2.5.tar.gz", hash = "sha256:aaccd2425ade2ea97a502c58be49fe8f3536e3d5e919712ae0358a39fc800799"}, ] [package.dependencies] curies = ">=0.5.3" pyyaml = ">=5.3.1" +[[package]] +name = "proto-plus" +version = "1.24.0" +description = "Beautiful, Pythonic protocol buffers." +optional = false +python-versions = ">=3.7" +files = [ + {file = "proto-plus-1.24.0.tar.gz", hash = "sha256:30b72a5ecafe4406b0d339db35b56c4059064e69227b8c3bda7462397f966445"}, + {file = "proto_plus-1.24.0-py3-none-any.whl", hash = "sha256:402576830425e5f6ce4c2a6702400ac79897dab0b4343821aa5188b0fab81a12"}, +] + +[package.dependencies] +protobuf = ">=3.19.0,<6.0.0dev" + +[package.extras] +testing = ["google-api-core (>=1.31.5)"] + [[package]] name = "protobuf" -version = "4.25.3" +version = "5.27.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, - {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, - {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, - {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, - {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, - {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, - {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, - {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, - {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, + {file = "protobuf-5.27.3-cp310-abi3-win32.whl", hash = "sha256:dcb307cd4ef8fec0cf52cb9105a03d06fbb5275ce6d84a6ae33bc6cf84e0a07b"}, + {file = "protobuf-5.27.3-cp310-abi3-win_amd64.whl", hash = "sha256:16ddf3f8c6c41e1e803da7abea17b1793a97ef079a912e42351eabb19b2cffe7"}, + {file = "protobuf-5.27.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:68248c60d53f6168f565a8c76dc58ba4fa2ade31c2d1ebdae6d80f969cdc2d4f"}, + {file = "protobuf-5.27.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:b8a994fb3d1c11156e7d1e427186662b64694a62b55936b2b9348f0a7c6625ce"}, + {file = "protobuf-5.27.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:a55c48f2a2092d8e213bd143474df33a6ae751b781dd1d1f4d953c128a415b25"}, + {file = "protobuf-5.27.3-cp38-cp38-win32.whl", hash = "sha256:043853dcb55cc262bf2e116215ad43fa0859caab79bb0b2d31b708f128ece035"}, + {file = "protobuf-5.27.3-cp38-cp38-win_amd64.whl", hash = "sha256:c2a105c24f08b1e53d6c7ffe69cb09d0031512f0b72f812dd4005b8112dbe91e"}, + {file = "protobuf-5.27.3-cp39-cp39-win32.whl", hash = "sha256:c84eee2c71ed83704f1afbf1a85c3171eab0fd1ade3b399b3fad0884cbcca8bf"}, + {file = "protobuf-5.27.3-cp39-cp39-win_amd64.whl", hash = "sha256:af7c0b7cfbbb649ad26132e53faa348580f844d9ca46fd3ec7ca48a1ea5db8a1"}, + {file = "protobuf-5.27.3-py3-none-any.whl", hash = "sha256:8572c6533e544ebf6899c360e91d6bcbbee2549251643d32c52cf8a5de295ba5"}, + {file = "protobuf-5.27.3.tar.gz", hash = "sha256:82460903e640f2b7e34ee81a947fdaad89de796d324bcbc38ff5430bcdead82c"}, ] [[package]] name = "pyasn1" -version = "0.5.1" +version = "0.6.0" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.8" files = [ - {file = "pyasn1-0.5.1-py2.py3-none-any.whl", hash = "sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58"}, - {file = "pyasn1-0.5.1.tar.gz", hash = "sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c"}, + {file = "pyasn1-0.6.0-py2.py3-none-any.whl", hash = "sha256:cca4bb0f2df5504f02f6f8a775b6e416ff9b0b3b16f7ee80b5a3153d9b804473"}, + {file = "pyasn1-0.6.0.tar.gz", hash = "sha256:3a35ab2c4b5ef98e17dfdec8ab074046fbda76e281c5a706ccd82328cfc8f64c"}, ] [[package]] name = "pyasn1-modules" -version = "0.3.0" +version = "0.4.0" description = "A collection of ASN.1-based protocols modules" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.8" files = [ - {file = "pyasn1_modules-0.3.0-py2.py3-none-any.whl", hash = "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d"}, - {file = "pyasn1_modules-0.3.0.tar.gz", hash = "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c"}, + {file = "pyasn1_modules-0.4.0-py3-none-any.whl", hash = "sha256:be04f15b66c206eed667e0bb5ab27e2b1855ea54a842e5037738099e8ca4ae0b"}, + {file = "pyasn1_modules-0.4.0.tar.gz", hash = "sha256:831dbcea1b177b28c9baddf4c6d1013c24c3accd14a1873fffaa6a2e905f17b6"}, ] [package.dependencies] -pyasn1 = ">=0.4.6,<0.6.0" +pyasn1 = ">=0.4.6,<0.7.0" [[package]] name = "pydantic" -version = "2.6.1" +version = "2.8.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"}, - {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"}, + {file = "pydantic-2.8.2-py3-none-any.whl", hash = "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8"}, + {file = "pydantic-2.8.2.tar.gz", hash = "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.16.2" -typing-extensions = ">=4.6.1" +pydantic-core = "2.20.1" +typing-extensions = [ + {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, + {version = ">=4.6.1", markers = "python_version < \"3.13\""}, +] [package.extras] email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.16.2" -description = "" +version = "2.20.1" +description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"}, - {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"}, - {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"}, - {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"}, - {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"}, - {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"}, - {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"}, - {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"}, - {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"}, - {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"}, - {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"}, - {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"}, - {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"}, - {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"}, - {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"}, - {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"}, - {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"}, - {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"}, - {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"}, - {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"}, - {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"}, - {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"}, - {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"}, - {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"}, - {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"}, - {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"}, - {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"}, - {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"}, - {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"}, - {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"}, - {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"}, - {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"}, - {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"}, - {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"}, - {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"}, - {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"}, - {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"}, - {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"}, - {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"}, - {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"}, - {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"}, - {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"}, - {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"}, - {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"}, - {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"}, - {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"}, - {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"}, - {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"}, - {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"}, - {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"}, - {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"}, - {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"}, - {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"}, - {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"}, - {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"}, - {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"}, - {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"}, - {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"}, - {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"}, - {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"}, - {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"}, - {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"}, - {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"}, + {file = "pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3"}, + {file = "pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840"}, + {file = "pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250"}, + {file = "pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c"}, + {file = "pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312"}, + {file = "pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b"}, + {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27"}, + {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b"}, + {file = "pydantic_core-2.20.1-cp311-none-win32.whl", hash = "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a"}, + {file = "pydantic_core-2.20.1-cp311-none-win_amd64.whl", hash = "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2"}, + {file = "pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231"}, + {file = "pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24"}, + {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1"}, + {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd"}, + {file = "pydantic_core-2.20.1-cp312-none-win32.whl", hash = "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688"}, + {file = "pydantic_core-2.20.1-cp312-none-win_amd64.whl", hash = "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d"}, + {file = "pydantic_core-2.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686"}, + {file = "pydantic_core-2.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83"}, + {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203"}, + {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0"}, + {file = "pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e"}, + {file = "pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20"}, + {file = "pydantic_core-2.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91"}, + {file = "pydantic_core-2.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd"}, + {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa"}, + {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987"}, + {file = "pydantic_core-2.20.1-cp38-none-win32.whl", hash = "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a"}, + {file = "pydantic_core-2.20.1-cp38-none-win_amd64.whl", hash = "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434"}, + {file = "pydantic_core-2.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c"}, + {file = "pydantic_core-2.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1"}, + {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09"}, + {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab"}, + {file = "pydantic_core-2.20.1-cp39-none-win32.whl", hash = "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2"}, + {file = "pydantic_core-2.20.1-cp39-none-win_amd64.whl", hash = "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7"}, + {file = "pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4"}, ] [package.dependencies] @@ -1478,17 +1531,16 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pygments" -version = "2.17.2" +version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, - {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, ] [package.extras] -plugins = ["importlib-metadata"] windows-terminal = ["colorama (>=0.4.6)"] [[package]] @@ -1508,17 +1560,17 @@ jsonasobj = ">=1.2.1" [[package]] name = "pymdown-extensions" -version = "10.7" +version = "10.9" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "pymdown_extensions-10.7-py3-none-any.whl", hash = "sha256:6ca215bc57bc12bf32b414887a68b810637d039124ed9b2e5bd3325cbb2c050c"}, - {file = "pymdown_extensions-10.7.tar.gz", hash = "sha256:c0d64d5cf62566f59e6b2b690a4095c931107c250a8c8e1351c1de5f6b036deb"}, + {file = "pymdown_extensions-10.9-py3-none-any.whl", hash = "sha256:d323f7e90d83c86113ee78f3fe62fc9dee5f56b54d912660703ea1816fed5626"}, + {file = "pymdown_extensions-10.9.tar.gz", hash = "sha256:6ff740bcd99ec4172a938970d42b96128bdc9d4b9bcad72494f29921dc69b753"}, ] [package.dependencies] -markdown = ">=3.5" +markdown = ">=3.6" pyyaml = "*" [package.extras] @@ -1526,13 +1578,13 @@ extra = ["pygments (>=2.12)"] [[package]] name = "pyparsing" -version = "3.1.1" +version = "3.1.4" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, - {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, + {file = "pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c"}, + {file = "pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032"}, ] [package.extras] @@ -1581,13 +1633,13 @@ shexjsg = ">=0.8.1" [[package]] name = "pystow" -version = "0.5.3" +version = "0.5.4" description = "Easily pick a place to store data for your python package." optional = false python-versions = ">=3.7" files = [ - {file = "pystow-0.5.3-py3-none-any.whl", hash = "sha256:53106b299ae22fe5f3ae72f6410696ec9864523eb14f4e7192823bacffbe5722"}, - {file = "pystow-0.5.3.tar.gz", hash = "sha256:3747343be0b154aa15bc02b496f61d7c6f31179c1c210ab1d48b842c7a3aa064"}, + {file = "pystow-0.5.4-py3-none-any.whl", hash = "sha256:c377cc9fff11127007e60eb5c4dc18f2ffd986c0d0cec27134cdcd4c805bc7d8"}, + {file = "pystow-0.5.4.tar.gz", hash = "sha256:2692180cb405bd77259bee6c7f4db545d10e81939980064730609f21750567ff"}, ] [package.dependencies] @@ -1605,13 +1657,13 @@ xml = ["lxml"] [[package]] name = "pytest" -version = "8.0.1" +version = "8.3.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.0.1-py3-none-any.whl", hash = "sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca"}, - {file = "pytest-8.0.1.tar.gz", hash = "sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae"}, + {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, + {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, ] [package.dependencies] @@ -1619,11 +1671,11 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.3.0,<2.0" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} +pluggy = ">=1.5,<2" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-logging" @@ -1640,13 +1692,13 @@ pytest = ">=2.8.1" [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -1659,6 +1711,7 @@ description = "A pure Python implementation of the trie data structure." optional = false python-versions = "*" files = [ + {file = "PyTrie-0.4.0-py3-none-any.whl", hash = "sha256:f687c224ee8c66cda8e8628a903011b692635ffbb08d4b39c5f92b18eb78c950"}, {file = "PyTrie-0.4.0.tar.gz", hash = "sha256:8f4488f402d3465993fb6b6efa09866849ed8cda7903b50647b7d0342b805379"}, ] @@ -1667,62 +1720,64 @@ sortedcontainers = "*" [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.2" description = "YAML parser and emitter for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] @@ -1791,13 +1846,13 @@ rdflib-jsonld = "0.6.1" [[package]] name = "referencing" -version = "0.33.0" +version = "0.35.1" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"}, - {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"}, + {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, + {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, ] [package.dependencies] @@ -1806,13 +1861,13 @@ rpds-py = ">=0.7.0" [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -1827,13 +1882,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-oauthlib" -version = "1.3.1" +version = "2.0.0" description = "OAuthlib authentication support for Requests." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.4" files = [ - {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"}, - {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"}, + {file = "requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9"}, + {file = "requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36"}, ] [package.dependencies] @@ -1870,110 +1925,114 @@ files = [ [[package]] name = "rpds-py" -version = "0.18.0" +version = "0.20.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, - {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, - {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, - {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, - {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"}, - {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"}, - {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"}, - {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"}, - {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"}, - {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"}, - {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"}, - {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"}, - {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"}, - {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"}, - {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"}, - {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"}, - {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"}, - {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"}, - {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"}, - {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, - {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, + {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, + {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, + {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, + {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, + {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, + {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, + {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, + {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, + {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, + {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, + {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, + {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, + {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, + {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, + {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, + {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, + {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, + {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, + {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, + {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, + {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, + {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, + {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, + {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, + {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, ] [[package]] @@ -2087,19 +2146,19 @@ ontodev-cogs = ">=0.3.3,<0.4.0" [[package]] name = "setuptools" -version = "69.1.1" +version = "73.0.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.1.1-py3-none-any.whl", hash = "sha256:02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56"}, - {file = "setuptools-69.1.1.tar.gz", hash = "sha256:5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"}, + {file = "setuptools-73.0.1-py3-none-any.whl", hash = "sha256:b208925fcb9f7af924ed2dc04708ea89791e24bde0d3020b27df0e116088b34e"}, + {file = "setuptools-73.0.1.tar.gz", hash = "sha256:d59a3e788ab7e012ab2c4baed1b376da6366883ee20d7a5fc426816e3d7b1193"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.11.*)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] [[package]] name = "shexjsg" @@ -2139,13 +2198,13 @@ files = [ [[package]] name = "soupsieve" -version = "2.5" +version = "2.6" description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.8" files = [ - {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, - {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, + {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, + {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, ] [[package]] @@ -2186,64 +2245,64 @@ pandas = ["pandas (>=1.3.5)"] [[package]] name = "sqlalchemy" -version = "2.0.27" +version = "2.0.32" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d04e579e911562f1055d26dab1868d3e0bb905db3bccf664ee8ad109f035618a"}, - {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa67d821c1fd268a5a87922ef4940442513b4e6c377553506b9db3b83beebbd8"}, - {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c7a596d0be71b7baa037f4ac10d5e057d276f65a9a611c46970f012752ebf2d"}, - {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:954d9735ee9c3fa74874c830d089a815b7b48df6f6b6e357a74130e478dbd951"}, - {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5cd20f58c29bbf2680039ff9f569fa6d21453fbd2fa84dbdb4092f006424c2e6"}, - {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:03f448ffb731b48323bda68bcc93152f751436ad6037f18a42b7e16af9e91c07"}, - {file = "SQLAlchemy-2.0.27-cp310-cp310-win32.whl", hash = "sha256:d997c5938a08b5e172c30583ba6b8aad657ed9901fc24caf3a7152eeccb2f1b4"}, - {file = "SQLAlchemy-2.0.27-cp310-cp310-win_amd64.whl", hash = "sha256:eb15ef40b833f5b2f19eeae65d65e191f039e71790dd565c2af2a3783f72262f"}, - {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c5bad7c60a392850d2f0fee8f355953abaec878c483dd7c3836e0089f046bf6"}, - {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3012ab65ea42de1be81fff5fb28d6db893ef978950afc8130ba707179b4284a"}, - {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbcd77c4d94b23e0753c5ed8deba8c69f331d4fd83f68bfc9db58bc8983f49cd"}, - {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d177b7e82f6dd5e1aebd24d9c3297c70ce09cd1d5d37b43e53f39514379c029c"}, - {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:680b9a36029b30cf063698755d277885d4a0eab70a2c7c6e71aab601323cba45"}, - {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1306102f6d9e625cebaca3d4c9c8f10588735ef877f0360b5cdb4fdfd3fd7131"}, - {file = "SQLAlchemy-2.0.27-cp311-cp311-win32.whl", hash = "sha256:5b78aa9f4f68212248aaf8943d84c0ff0f74efc65a661c2fc68b82d498311fd5"}, - {file = "SQLAlchemy-2.0.27-cp311-cp311-win_amd64.whl", hash = "sha256:15e19a84b84528f52a68143439d0c7a3a69befcd4f50b8ef9b7b69d2628ae7c4"}, - {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0de1263aac858f288a80b2071990f02082c51d88335a1db0d589237a3435fe71"}, - {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce850db091bf7d2a1f2fdb615220b968aeff3849007b1204bf6e3e50a57b3d32"}, - {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dfc936870507da96aebb43e664ae3a71a7b96278382bcfe84d277b88e379b18"}, - {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4fbe6a766301f2e8a4519f4500fe74ef0a8509a59e07a4085458f26228cd7cc"}, - {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4535c49d961fe9a77392e3a630a626af5baa967172d42732b7a43496c8b28876"}, - {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0fb3bffc0ced37e5aa4ac2416f56d6d858f46d4da70c09bb731a246e70bff4d5"}, - {file = "SQLAlchemy-2.0.27-cp312-cp312-win32.whl", hash = "sha256:7f470327d06400a0aa7926b375b8e8c3c31d335e0884f509fe272b3c700a7254"}, - {file = "SQLAlchemy-2.0.27-cp312-cp312-win_amd64.whl", hash = "sha256:f9374e270e2553653d710ece397df67db9d19c60d2647bcd35bfc616f1622dcd"}, - {file = "SQLAlchemy-2.0.27-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e97cf143d74a7a5a0f143aa34039b4fecf11343eed66538610debc438685db4a"}, - {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7b5a3e2120982b8b6bd1d5d99e3025339f7fb8b8267551c679afb39e9c7c7f1"}, - {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e36aa62b765cf9f43a003233a8c2d7ffdeb55bc62eaa0a0380475b228663a38f"}, - {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5ada0438f5b74c3952d916c199367c29ee4d6858edff18eab783b3978d0db16d"}, - {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b1d9d1bfd96eef3c3faedb73f486c89e44e64e40e5bfec304ee163de01cf996f"}, - {file = "SQLAlchemy-2.0.27-cp37-cp37m-win32.whl", hash = "sha256:ca891af9f3289d24a490a5fde664ea04fe2f4984cd97e26de7442a4251bd4b7c"}, - {file = "SQLAlchemy-2.0.27-cp37-cp37m-win_amd64.whl", hash = "sha256:fd8aafda7cdff03b905d4426b714601c0978725a19efc39f5f207b86d188ba01"}, - {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec1f5a328464daf7a1e4e385e4f5652dd9b1d12405075ccba1df842f7774b4fc"}, - {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ad862295ad3f644e3c2c0d8b10a988e1600d3123ecb48702d2c0f26771f1c396"}, - {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48217be1de7d29a5600b5c513f3f7664b21d32e596d69582be0a94e36b8309cb"}, - {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e56afce6431450442f3ab5973156289bd5ec33dd618941283847c9fd5ff06bf"}, - {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:611068511b5531304137bcd7fe8117c985d1b828eb86043bd944cebb7fae3910"}, - {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b86abba762ecfeea359112b2bb4490802b340850bbee1948f785141a5e020de8"}, - {file = "SQLAlchemy-2.0.27-cp38-cp38-win32.whl", hash = "sha256:30d81cc1192dc693d49d5671cd40cdec596b885b0ce3b72f323888ab1c3863d5"}, - {file = "SQLAlchemy-2.0.27-cp38-cp38-win_amd64.whl", hash = "sha256:120af1e49d614d2525ac247f6123841589b029c318b9afbfc9e2b70e22e1827d"}, - {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d07ee7793f2aeb9b80ec8ceb96bc8cc08a2aec8a1b152da1955d64e4825fcbac"}, - {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb0845e934647232b6ff5150df37ceffd0b67b754b9fdbb095233deebcddbd4a"}, - {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fc19ae2e07a067663dd24fca55f8ed06a288384f0e6e3910420bf4b1270cc51"}, - {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b90053be91973a6fb6020a6e44382c97739736a5a9d74e08cc29b196639eb979"}, - {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2f5c9dfb0b9ab5e3a8a00249534bdd838d943ec4cfb9abe176a6c33408430230"}, - {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33e8bde8fff203de50399b9039c4e14e42d4d227759155c21f8da4a47fc8053c"}, - {file = "SQLAlchemy-2.0.27-cp39-cp39-win32.whl", hash = "sha256:d873c21b356bfaf1589b89090a4011e6532582b3a8ea568a00e0c3aab09399dd"}, - {file = "SQLAlchemy-2.0.27-cp39-cp39-win_amd64.whl", hash = "sha256:ff2f1b7c963961d41403b650842dc2039175b906ab2093635d8319bef0b7d620"}, - {file = "SQLAlchemy-2.0.27-py3-none-any.whl", hash = "sha256:1ab4e0448018d01b142c916cc7119ca573803a4745cfe341b8f95657812700ac"}, - {file = "SQLAlchemy-2.0.27.tar.gz", hash = "sha256:86a6ed69a71fe6b88bf9331594fa390a2adda4a49b5c06f98e47bf0d392534f8"}, -] - -[package.dependencies] -greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} + {file = "SQLAlchemy-2.0.32-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0c9045ecc2e4db59bfc97b20516dfdf8e41d910ac6fb667ebd3a79ea54084619"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1467940318e4a860afd546ef61fefb98a14d935cd6817ed07a228c7f7c62f389"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5954463675cb15db8d4b521f3566a017c8789222b8316b1e6934c811018ee08b"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:167e7497035c303ae50651b351c28dc22a40bb98fbdb8468cdc971821b1ae533"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b27dfb676ac02529fb6e343b3a482303f16e6bc3a4d868b73935b8792edb52d0"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bf2360a5e0f7bd75fa80431bf8ebcfb920c9f885e7956c7efde89031695cafb8"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-win32.whl", hash = "sha256:306fe44e754a91cd9d600a6b070c1f2fadbb4a1a257b8781ccf33c7067fd3e4d"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-win_amd64.whl", hash = "sha256:99db65e6f3ab42e06c318f15c98f59a436f1c78179e6a6f40f529c8cc7100b22"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:21b053be28a8a414f2ddd401f1be8361e41032d2ef5884b2f31d31cb723e559f"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b178e875a7a25b5938b53b006598ee7645172fccafe1c291a706e93f48499ff5"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723a40ee2cc7ea653645bd4cf024326dea2076673fc9d3d33f20f6c81db83e1d"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:295ff8689544f7ee7e819529633d058bd458c1fd7f7e3eebd0f9268ebc56c2a0"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49496b68cd190a147118af585173ee624114dfb2e0297558c460ad7495f9dfe2"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:acd9b73c5c15f0ec5ce18128b1fe9157ddd0044abc373e6ecd5ba376a7e5d961"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-win32.whl", hash = "sha256:9365a3da32dabd3e69e06b972b1ffb0c89668994c7e8e75ce21d3e5e69ddef28"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-win_amd64.whl", hash = "sha256:8bd63d051f4f313b102a2af1cbc8b80f061bf78f3d5bd0843ff70b5859e27924"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6bab3db192a0c35e3c9d1560eb8332463e29e5507dbd822e29a0a3c48c0a8d92"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:19d98f4f58b13900d8dec4ed09dd09ef292208ee44cc9c2fe01c1f0a2fe440e9"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cd33c61513cb1b7371fd40cf221256456d26a56284e7d19d1f0b9f1eb7dd7e8"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d6ba0497c1d066dd004e0f02a92426ca2df20fac08728d03f67f6960271feec"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2b6be53e4fde0065524f1a0a7929b10e9280987b320716c1509478b712a7688c"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:916a798f62f410c0b80b63683c8061f5ebe237b0f4ad778739304253353bc1cb"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-win32.whl", hash = "sha256:31983018b74908ebc6c996a16ad3690301a23befb643093fcfe85efd292e384d"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-win_amd64.whl", hash = "sha256:4363ed245a6231f2e2957cccdda3c776265a75851f4753c60f3004b90e69bfeb"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8afd5b26570bf41c35c0121801479958b4446751a3971fb9a480c1afd85558e"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c750987fc876813f27b60d619b987b057eb4896b81117f73bb8d9918c14f1cad"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ada0102afff4890f651ed91120c1120065663506b760da4e7823913ebd3258be"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:78c03d0f8a5ab4f3034c0e8482cfcc415a3ec6193491cfa1c643ed707d476f16"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:3bd1cae7519283ff525e64645ebd7a3e0283f3c038f461ecc1c7b040a0c932a1"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-win32.whl", hash = "sha256:01438ebcdc566d58c93af0171c74ec28efe6a29184b773e378a385e6215389da"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-win_amd64.whl", hash = "sha256:4979dc80fbbc9d2ef569e71e0896990bc94df2b9fdbd878290bd129b65ab579c"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c742be912f57586ac43af38b3848f7688863a403dfb220193a882ea60e1ec3a"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:62e23d0ac103bcf1c5555b6c88c114089587bc64d048fef5bbdb58dfd26f96da"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:251f0d1108aab8ea7b9aadbd07fb47fb8e3a5838dde34aa95a3349876b5a1f1d"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ef18a84e5116340e38eca3e7f9eeaaef62738891422e7c2a0b80feab165905f"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3eb6a97a1d39976f360b10ff208c73afb6a4de86dd2a6212ddf65c4a6a2347d5"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0c1c9b673d21477cec17ab10bc4decb1322843ba35b481585facd88203754fc5"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-win32.whl", hash = "sha256:c41a2b9ca80ee555decc605bd3c4520cc6fef9abde8fd66b1cf65126a6922d65"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-win_amd64.whl", hash = "sha256:8a37e4d265033c897892279e8adf505c8b6b4075f2b40d77afb31f7185cd6ecd"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:52fec964fba2ef46476312a03ec8c425956b05c20220a1a03703537824b5e8e1"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:328429aecaba2aee3d71e11f2477c14eec5990fb6d0e884107935f7fb6001632"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85a01b5599e790e76ac3fe3aa2f26e1feba56270023d6afd5550ed63c68552b3"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aaf04784797dcdf4c0aa952c8d234fa01974c4729db55c45732520ce12dd95b4"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4488120becf9b71b3ac718f4138269a6be99a42fe023ec457896ba4f80749525"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:14e09e083a5796d513918a66f3d6aedbc131e39e80875afe81d98a03312889e6"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-win32.whl", hash = "sha256:0d322cc9c9b2154ba7e82f7bf25ecc7c36fbe2d82e2933b3642fc095a52cfc78"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-win_amd64.whl", hash = "sha256:7dd8583df2f98dea28b5cd53a1beac963f4f9d087888d75f22fcc93a07cf8d84"}, + {file = "SQLAlchemy-2.0.32-py3-none-any.whl", hash = "sha256:e567a8793a692451f706b363ccf3c45e056b67d90ead58c3bc9471af5d212202"}, + {file = "SQLAlchemy-2.0.32.tar.gz", hash = "sha256:c1b88cc8b02b6a5f0efb0345a03672d4c897dc7d92585176f88c67346f565ea8"}, +] + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "python_version < \"3.13\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} typing-extensions = ">=4.6.0" [package.extras] @@ -2271,22 +2330,6 @@ postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"] pymysql = ["pymysql"] sqlcipher = ["sqlcipher3_binary"] -[[package]] -name = "strenum" -version = "0.4.15" -description = "An Enum that inherits from str." -optional = false -python-versions = "*" -files = [ - {file = "StrEnum-0.4.15-py3-none-any.whl", hash = "sha256:a30cda4af7cc6b5bf52c8055bc4bf4b2b6b14a93b574626da33df53cf7740659"}, - {file = "StrEnum-0.4.15.tar.gz", hash = "sha256:878fb5ab705442070e4dd1929bb5e2249511c0bcf2b0eeacf3bcd80875c82eff"}, -] - -[package.extras] -docs = ["myst-parser[linkify]", "sphinx", "sphinx-rtd-theme"] -release = ["twine"] -test = ["pylint", "pytest", "pytest-black", "pytest-cov", "pytest-pylint"] - [[package]] name = "tabulate" version = "0.9.0" @@ -2328,13 +2371,13 @@ files = [ [[package]] name = "tqdm" -version = "4.66.2" +version = "4.66.5" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, - {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, + {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, + {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, ] [package.dependencies] @@ -2348,24 +2391,24 @@ telegram = ["requests"] [[package]] name = "types-python-dateutil" -version = "2.8.19.20240106" +version = "2.9.0.20240821" description = "Typing stubs for python-dateutil" optional = false python-versions = ">=3.8" files = [ - {file = "types-python-dateutil-2.8.19.20240106.tar.gz", hash = "sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f"}, - {file = "types_python_dateutil-2.8.19.20240106-py3-none-any.whl", hash = "sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2"}, + {file = "types-python-dateutil-2.9.0.20240821.tar.gz", hash = "sha256:9649d1dcb6fef1046fb18bebe9ea2aa0028b160918518c34589a46045f6ebd98"}, + {file = "types_python_dateutil-2.9.0.20240821-py3-none-any.whl", hash = "sha256:f5889fcb4e63ed4aaa379b44f93c32593d50b9a94c9a60a0c854d8cc3511cd57"}, ] [[package]] name = "typing-extensions" -version = "4.9.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, - {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] @@ -2395,13 +2438,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.1" +version = "2.2.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, ] [package.extras] @@ -2412,40 +2455,41 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "watchdog" -version = "4.0.0" +version = "5.0.0" description = "Filesystem events monitoring" optional = false -python-versions = ">=3.8" -files = [ - {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:39cb34b1f1afbf23e9562501673e7146777efe95da24fab5707b88f7fb11649b"}, - {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c522392acc5e962bcac3b22b9592493ffd06d1fc5d755954e6be9f4990de932b"}, - {file = "watchdog-4.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6c47bdd680009b11c9ac382163e05ca43baf4127954c5f6d0250e7d772d2b80c"}, - {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8350d4055505412a426b6ad8c521bc7d367d1637a762c70fdd93a3a0d595990b"}, - {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c17d98799f32e3f55f181f19dd2021d762eb38fdd381b4a748b9f5a36738e935"}, - {file = "watchdog-4.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4986db5e8880b0e6b7cd52ba36255d4793bf5cdc95bd6264806c233173b1ec0b"}, - {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:11e12fafb13372e18ca1bbf12d50f593e7280646687463dd47730fd4f4d5d257"}, - {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5369136a6474678e02426bd984466343924d1df8e2fd94a9b443cb7e3aa20d19"}, - {file = "watchdog-4.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76ad8484379695f3fe46228962017a7e1337e9acadafed67eb20aabb175df98b"}, - {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:45cc09cc4c3b43fb10b59ef4d07318d9a3ecdbff03abd2e36e77b6dd9f9a5c85"}, - {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eed82cdf79cd7f0232e2fdc1ad05b06a5e102a43e331f7d041e5f0e0a34a51c4"}, - {file = "watchdog-4.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba30a896166f0fee83183cec913298151b73164160d965af2e93a20bbd2ab605"}, - {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d18d7f18a47de6863cd480734613502904611730f8def45fc52a5d97503e5101"}, - {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2895bf0518361a9728773083908801a376743bcc37dfa252b801af8fd281b1ca"}, - {file = "watchdog-4.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87e9df830022488e235dd601478c15ad73a0389628588ba0b028cb74eb72fed8"}, - {file = "watchdog-4.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6e949a8a94186bced05b6508faa61b7adacc911115664ccb1923b9ad1f1ccf7b"}, - {file = "watchdog-4.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6a4db54edea37d1058b08947c789a2354ee02972ed5d1e0dca9b0b820f4c7f92"}, - {file = "watchdog-4.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d31481ccf4694a8416b681544c23bd271f5a123162ab603c7d7d2dd7dd901a07"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8fec441f5adcf81dd240a5fe78e3d83767999771630b5ddfc5867827a34fa3d3"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:6a9c71a0b02985b4b0b6d14b875a6c86ddea2fdbebd0c9a720a806a8bbffc69f"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:557ba04c816d23ce98a06e70af6abaa0485f6d94994ec78a42b05d1c03dcbd50"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d0f9bd1fd919134d459d8abf954f63886745f4660ef66480b9d753a7c9d40927"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f9b2fdca47dc855516b2d66eef3c39f2672cbf7e7a42e7e67ad2cbfcd6ba107d"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:73c7a935e62033bd5e8f0da33a4dcb763da2361921a69a5a95aaf6c93aa03a87"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6a80d5cae8c265842c7419c560b9961561556c4361b297b4c431903f8c33b269"}, - {file = "watchdog-4.0.0-py3-none-win32.whl", hash = "sha256:8f9a542c979df62098ae9c58b19e03ad3df1c9d8c6895d96c0d51da17b243b1c"}, - {file = "watchdog-4.0.0-py3-none-win_amd64.whl", hash = "sha256:f970663fa4f7e80401a7b0cbeec00fa801bf0287d93d48368fc3e6fa32716245"}, - {file = "watchdog-4.0.0-py3-none-win_ia64.whl", hash = "sha256:9a03e16e55465177d416699331b0f3564138f1807ecc5f2de9d55d8f188d08c7"}, - {file = "watchdog-4.0.0.tar.gz", hash = "sha256:e3e7065cbdabe6183ab82199d7a4f6b3ba0a438c5a512a68559846ccb76a78ec"}, +python-versions = ">=3.9" +files = [ + {file = "watchdog-5.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bf3216ec994eabb2212df9861f19056ca0d4cd3516d56cb95801933876519bfe"}, + {file = "watchdog-5.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cb59ad83a1700304fc1ac7bc53ae9e5cbe9d60a52ed9bba8e2e2d782a201bb2b"}, + {file = "watchdog-5.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1228cb097e855d1798b550be8f0e9f0cfbac4384f9a3e91f66d250d03e11294e"}, + {file = "watchdog-5.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3c177085c3d210d1c73cb4569442bdaef706ebebc423bd7aed9e90fc12b2e553"}, + {file = "watchdog-5.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01ab36cddc836a0f202c66267daaef92ba5c17c7d6436deff0587bb61234c5c9"}, + {file = "watchdog-5.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0834c21efa3e767849b09e667274604c7cdfe30b49eb95d794565c53f4db3c1e"}, + {file = "watchdog-5.0.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1e26f570dd7f5178656affb24d6f0e22ce66c8daf88d4061a27bfb9ac866b40d"}, + {file = "watchdog-5.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d146331e6b206baa9f6dd40f72b5783ad2302c240df68e7fce196d30588ccf7b"}, + {file = "watchdog-5.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6c96b1706430839872a3e33b9370ee3f7a0079f6b828129d88498ad1f96a0f45"}, + {file = "watchdog-5.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:663b096368ed7831ac42259919fdb9e0a1f0a8994d972675dfbcca0225e74de1"}, + {file = "watchdog-5.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:685931412978d00a91a193d9018fc9e394e565e8e7a0c275512a80e59c6e85f8"}, + {file = "watchdog-5.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:109daafc5b0f2a98d1fa9475ff9737eb3559d57b18129a36495e20c71de0b44f"}, + {file = "watchdog-5.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c2b4d90962639ae7cee371ea3a8da506831945d4418eee090c53bc38e6648dc6"}, + {file = "watchdog-5.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6e58eafe9cc5ceebe1562cdb89bacdcd0ef470896e8b0139fe677a5abec243da"}, + {file = "watchdog-5.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b8d747bf6d8fe5ce89cb1a36c3724d1599bd4cde3f90fcba518e6260c7058a52"}, + {file = "watchdog-5.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:bc16d448a74a929b896ed9578c25756b2125400b19b3258be8d9a681c7ae8e71"}, + {file = "watchdog-5.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:7e6b0e9b8a9dc3865d65888b5f5222da4ba9c4e09eab13cff5e305e7b7e7248f"}, + {file = "watchdog-5.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4fe6780915000743074236b21b6c37419aea71112af62237881bc265589fe463"}, + {file = "watchdog-5.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:0710e9502727f688a7e06d48078545c54485b3d6eb53b171810879d8223c362a"}, + {file = "watchdog-5.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:d76efab5248aafbf8a2c2a63cd7b9545e6b346ad1397af8b862a3bb3140787d8"}, + {file = "watchdog-5.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:ff4e957c45c446de34c513eadce01d0b65da7eee47c01dce472dd136124552c9"}, + {file = "watchdog-5.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:16c1aa3377bb1f82c5e24277fcbf4e2cac3c4ce46aaaf7212d53caa9076eb7b7"}, + {file = "watchdog-5.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:22fcad6168fc43cf0e709bd854be5b8edbb0b260f0a6f28f1ea9baa53c6907f7"}, + {file = "watchdog-5.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:0120b2fa65732797ffa65fa8ee5540c288aa861d91447df298626d6385a24658"}, + {file = "watchdog-5.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2aa59fab7ff75281778c649557275ca3085eccbdf825a0e2a5ca3810e977afe5"}, + {file = "watchdog-5.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:78db0fe0336958fc0e1269545c980b6f33d04d184ba191b2800a8b71d3e971a9"}, + {file = "watchdog-5.0.0-py3-none-win32.whl", hash = "sha256:d1acef802916083f2ad7988efc7decf07e46e266916c0a09d8fb9d387288ea12"}, + {file = "watchdog-5.0.0-py3-none-win_amd64.whl", hash = "sha256:3c2d50fdb86aa6df3973313272f5a17eb26eab29ff5a0bf54b6d34597b4dc4e4"}, + {file = "watchdog-5.0.0-py3-none-win_ia64.whl", hash = "sha256:1d17ec7e022c34fa7ddc72aa41bf28c9d1207ffb193df18ba4f6fde453725b3c"}, + {file = "watchdog-5.0.0.tar.gz", hash = "sha256:990aedb9e2f336b45a70aed9c014450e7c4a70fd99c5f5b1834d57e1453a177e"}, ] [package.extras] @@ -2453,18 +2497,18 @@ watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "webcolors" -version = "1.13" +version = "24.8.0" description = "A library for working with the color formats defined by HTML and CSS." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"}, - {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"}, + {file = "webcolors-24.8.0-py3-none-any.whl", hash = "sha256:fc4c3b59358ada164552084a8ebee637c221e4059267d0f8325b3b560f6c7f0a"}, + {file = "webcolors-24.8.0.tar.gz", hash = "sha256:08b07af286a01bcd30d583a7acadf629583d1f79bfef27dd2c2c5c263817277d"}, ] [package.extras] docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"] -tests = ["pytest", "pytest-cov"] +tests = ["coverage[toml]"] [[package]] name = "wrapt" @@ -2547,18 +2591,22 @@ files = [ [[package]] name = "zipp" -version = "3.17.0" +version = "3.20.1" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, - {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, + {file = "zipp-3.20.1-py3-none-any.whl", hash = "sha256:9960cd8967c8f85a56f920d5d507274e74f9ff813a0ab8889a5b5be2daf44064"}, + {file = "zipp-3.20.1.tar.gz", hash = "sha256:c22b14cc4763c5a5b04134207736c107db42e9d3ef2d9779d465f5f1bcba572b"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] [extras] docs = [] diff --git a/src/data/examples/Benchmark_001.yaml b/src/data/examples/Benchmark_001.yaml index cc39599..73e1fc4 100644 --- a/src/data/examples/Benchmark_001.yaml +++ b/src/data/examples/Benchmark_001.yaml @@ -6,6 +6,7 @@ benchmarker: "John Doe at Robinsons lab, john.doe@uzh.ch" storage: https://storage.github.com/ storage_api: S3 benchmark_yaml_spec: 0.01 +software_backend: envmodules software_environments: R: description: "R 4.3.3 with gfbf-2023 toolchain" diff --git a/src/data/examples/data.py b/src/data/examples/data.py index bab85e8..383a441 100644 --- a/src/data/examples/data.py +++ b/src/data/examples/data.py @@ -7,6 +7,7 @@ benchmarker='John Doe at Robinsons lab, john.doe@uzh.ch', storage='https://storage.github.com/', storage_api=StorageAPIEnum.S3, + software_backend=SoftwareBackendEnum.envmodules, software_environments=[ SoftwareEnvironment( id=SoftwareEnvironmentId('R'), diff --git a/src/omni_schema/datamodel/omni_schema.py b/src/omni_schema/datamodel/omni_schema.py deleted file mode 100644 index 23fd6f5..0000000 --- a/src/omni_schema/datamodel/omni_schema.py +++ /dev/null @@ -1,478 +0,0 @@ -# Auto generated from omni_schema.yaml by pythongen.py version: 0.0.1 -# Generation date: 2024-08-06T14:53:19 -# Schema: omni-schema -# -# id: https://w3id.org/omnibenchmark/omni-schema -# description: Data model for omnibenchmark. -# license: Apache Software License 2.0 - -import dataclasses -import re -from jsonasobj2 import JsonObj, as_dict -from typing import Optional, List, Union, Dict, ClassVar, Any -from dataclasses import dataclass -from linkml_runtime.linkml_model.meta import EnumDefinition, PermissibleValue, PvFormulaOptions - -from linkml_runtime.utils.slot import Slot -from linkml_runtime.utils.metamodelcore import empty_list, empty_dict, bnode -from linkml_runtime.utils.yamlutils import YAMLRoot, extended_str, extended_float, extended_int -from linkml_runtime.utils.dataclass_extensions_376 import dataclasses_init_fn_with_kwargs -from linkml_runtime.utils.formatutils import camelcase, underscore, sfx -from linkml_runtime.utils.enumerations import EnumDefinitionImpl -from rdflib import Namespace, URIRef -from linkml_runtime.utils.curienamespace import CurieNamespace -from linkml_runtime.linkml_model.types import String, Uriorcurie -from linkml_runtime.utils.metamodelcore import URIorCURIE - -metamodel_version = "1.7.0" -version = None - -# Overwrite dataclasses _init_fn to add **kwargs in __init__ -dataclasses._init_fn = dataclasses_init_fn_with_kwargs - -# Namespaces -EXAMPLE = CurieNamespace('example', 'https://example.org/') -LINKML = CurieNamespace('linkml', 'https://w3id.org/linkml/') -OMNI_SCHEMA = CurieNamespace('omni_schema', 'https://w3id.org/omnibenchmark/omni-schema/') -SCHEMA = CurieNamespace('schema', 'http://schema.org/') -DEFAULT_ = OMNI_SCHEMA - - -# Types - -# Class references -class IdentifiableEntityId(URIorCURIE): - pass - - -class BenchmarkId(IdentifiableEntityId): - pass - - -class StageId(IdentifiableEntityId): - pass - - -class ModuleId(IdentifiableEntityId): - pass - - -class IOFileId(IdentifiableEntityId): - pass - - -class SoftwareEnvironmentId(IdentifiableEntityId): - pass - - -@dataclass -class IdentifiableEntity(YAMLRoot): - """ - A generic grouping for any identifiable entity - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = SCHEMA["Thing"] - class_class_curie: ClassVar[str] = "schema:Thing" - class_name: ClassVar[str] = "IdentifiableEntity" - class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.IdentifiableEntity - - id: Union[str, IdentifiableEntityId] = None - name: Optional[str] = None - description: Optional[str] = None - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, IdentifiableEntityId): - self.id = IdentifiableEntityId(self.id) - - if self.name is not None and not isinstance(self.name, str): - self.name = str(self.name) - - if self.description is not None and not isinstance(self.description, str): - self.description = str(self.description) - - super().__post_init__(**kwargs) - - -@dataclass -class Benchmark(IdentifiableEntity): - """ - A multi-stage workflow to evaluate processing stage for a specific task. - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["Benchmark"] - class_class_curie: ClassVar[str] = "omni_schema:Benchmark" - class_name: ClassVar[str] = "Benchmark" - class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.Benchmark - - id: Union[str, BenchmarkId] = None - version: str = None - benchmarker: str = None - software_backend: str = None - storage: str = None - storage_api: Union[str, "StorageAPIEnum"] = None - software_environments: Union[Dict[Union[str, SoftwareEnvironmentId], Union[dict, "SoftwareEnvironment"]], List[Union[dict, "SoftwareEnvironment"]]] = empty_dict() - stages: Union[Dict[Union[str, StageId], Union[dict, "Stage"]], List[Union[dict, "Stage"]]] = empty_dict() - benchmark_yaml_spec: Optional[str] = None - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, BenchmarkId): - self.id = BenchmarkId(self.id) - - if self._is_empty(self.version): - self.MissingRequiredField("version") - if not isinstance(self.version, str): - self.version = str(self.version) - - if self._is_empty(self.benchmarker): - self.MissingRequiredField("benchmarker") - if not isinstance(self.benchmarker, str): - self.benchmarker = str(self.benchmarker) - - if self._is_empty(self.software_backend): - self.MissingRequiredField("software_backend") - if not isinstance(self.software_backend, str): - self.software_backend = str(self.software_backend) - - if self._is_empty(self.storage): - self.MissingRequiredField("storage") - if not isinstance(self.storage, str): - self.storage = str(self.storage) - - if self._is_empty(self.storage_api): - self.MissingRequiredField("storage_api") - if not isinstance(self.storage_api, StorageAPIEnum): - self.storage_api = StorageAPIEnum(self.storage_api) - - if self._is_empty(self.software_environments): - self.MissingRequiredField("software_environments") - self._normalize_inlined_as_list(slot_name="software_environments", slot_type=SoftwareEnvironment, key_name="id", keyed=True) - - if self._is_empty(self.stages): - self.MissingRequiredField("stages") - self._normalize_inlined_as_list(slot_name="stages", slot_type=Stage, key_name="id", keyed=True) - - if self.benchmark_yaml_spec is not None and not isinstance(self.benchmark_yaml_spec, str): - self.benchmark_yaml_spec = str(self.benchmark_yaml_spec) - - super().__post_init__(**kwargs) - - -@dataclass -class Stage(IdentifiableEntity): - """ - A benchmark subtask with equivalent and independent modules. - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["Stage"] - class_class_curie: ClassVar[str] = "omni_schema:Stage" - class_name: ClassVar[str] = "Stage" - class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.Stage - - id: Union[str, StageId] = None - modules: Union[Dict[Union[str, ModuleId], Union[dict, "Module"]], List[Union[dict, "Module"]]] = empty_dict() - inputs: Optional[Union[Union[dict, "InputCollection"], List[Union[dict, "InputCollection"]]]] = empty_list() - outputs: Optional[Union[Dict[Union[str, IOFileId], Union[dict, "IOFile"]], List[Union[dict, "IOFile"]]]] = empty_dict() - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, StageId): - self.id = StageId(self.id) - - if self._is_empty(self.modules): - self.MissingRequiredField("modules") - self._normalize_inlined_as_list(slot_name="modules", slot_type=Module, key_name="id", keyed=True) - - if not isinstance(self.inputs, list): - self.inputs = [self.inputs] if self.inputs is not None else [] - self.inputs = [v if isinstance(v, InputCollection) else InputCollection(**as_dict(v)) for v in self.inputs] - - self._normalize_inlined_as_list(slot_name="outputs", slot_type=IOFile, key_name="id", keyed=True) - - super().__post_init__(**kwargs) - - -@dataclass -class Module(IdentifiableEntity): - """ - A single benchmark component assigned to a specific stage. - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["Module"] - class_class_curie: ClassVar[str] = "omni_schema:Module" - class_name: ClassVar[str] = "Module" - class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.Module - - id: Union[str, ModuleId] = None - software_environment: Union[str, SoftwareEnvironmentId] = None - repository: Union[dict, "Repository"] = None - exclude: Optional[Union[Union[str, ModuleId], List[Union[str, ModuleId]]]] = empty_list() - parameters: Optional[Union[Union[dict, "Parameter"], List[Union[dict, "Parameter"]]]] = empty_list() - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, ModuleId): - self.id = ModuleId(self.id) - - if self._is_empty(self.software_environment): - self.MissingRequiredField("software_environment") - if not isinstance(self.software_environment, SoftwareEnvironmentId): - self.software_environment = SoftwareEnvironmentId(self.software_environment) - - if self._is_empty(self.repository): - self.MissingRequiredField("repository") - if not isinstance(self.repository, Repository): - self.repository = Repository(**as_dict(self.repository)) - - if not isinstance(self.exclude, list): - self.exclude = [self.exclude] if self.exclude is not None else [] - self.exclude = [v if isinstance(v, ModuleId) else ModuleId(v) for v in self.exclude] - - if not isinstance(self.parameters, list): - self.parameters = [self.parameters] if self.parameters is not None else [] - self.parameters = [v if isinstance(v, Parameter) else Parameter(**as_dict(v)) for v in self.parameters] - - super().__post_init__(**kwargs) - - -@dataclass -class IOFile(IdentifiableEntity): - """ - Represents an input / output file. - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["IOFile"] - class_class_curie: ClassVar[str] = "omni_schema:IOFile" - class_name: ClassVar[str] = "IOFile" - class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.IOFile - - id: Union[str, IOFileId] = None - path: Optional[str] = None - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, IOFileId): - self.id = IOFileId(self.id) - - if self.path is not None and not isinstance(self.path, str): - self.path = str(self.path) - - super().__post_init__(**kwargs) - - -@dataclass -class InputCollection(YAMLRoot): - """ - A holder for valid input combinations. - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["InputCollection"] - class_class_curie: ClassVar[str] = "omni_schema:InputCollection" - class_name: ClassVar[str] = "InputCollection" - class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.InputCollection - - entries: Optional[Union[Union[str, IOFileId], List[Union[str, IOFileId]]]] = empty_list() - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if not isinstance(self.entries, list): - self.entries = [self.entries] if self.entries is not None else [] - self.entries = [v if isinstance(v, IOFileId) else IOFileId(v) for v in self.entries] - - super().__post_init__(**kwargs) - - -@dataclass -class Repository(YAMLRoot): - """ - A reference to code repository containing the module's executable code. - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["Repository"] - class_class_curie: ClassVar[str] = "omni_schema:Repository" - class_name: ClassVar[str] = "Repository" - class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.Repository - - url: str = None - commit: str = None - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.url): - self.MissingRequiredField("url") - if not isinstance(self.url, str): - self.url = str(self.url) - - if self._is_empty(self.commit): - self.MissingRequiredField("commit") - if not isinstance(self.commit, str): - self.commit = str(self.commit) - - super().__post_init__(**kwargs) - - -@dataclass -class Parameter(YAMLRoot): - """ - A parameter and its scope. - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["Parameter"] - class_class_curie: ClassVar[str] = "omni_schema:Parameter" - class_name: ClassVar[str] = "Parameter" - class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.Parameter - - values: Optional[Union[str, List[str]]] = empty_list() - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if not isinstance(self.values, list): - self.values = [self.values] if self.values is not None else [] - self.values = [v if isinstance(v, str) else str(v) for v in self.values] - - super().__post_init__(**kwargs) - - -@dataclass -class SoftwareEnvironment(IdentifiableEntity): - """ - Contains snapshots of the software environment required for the modules to run. - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["SoftwareEnvironment"] - class_class_curie: ClassVar[str] = "omni_schema:SoftwareEnvironment" - class_name: ClassVar[str] = "SoftwareEnvironment" - class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.SoftwareEnvironment - - id: Union[str, SoftwareEnvironmentId] = None - easyconfig: Optional[str] = None - envmodule: Optional[str] = None - conda: Optional[str] = None - apptainer: Optional[str] = None - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, SoftwareEnvironmentId): - self.id = SoftwareEnvironmentId(self.id) - - if self.easyconfig is not None and not isinstance(self.easyconfig, str): - self.easyconfig = str(self.easyconfig) - - if self.envmodule is not None and not isinstance(self.envmodule, str): - self.envmodule = str(self.envmodule) - - if self.conda is not None and not isinstance(self.conda, str): - self.conda = str(self.conda) - - if self.apptainer is not None and not isinstance(self.apptainer, str): - self.apptainer = str(self.apptainer) - - super().__post_init__(**kwargs) - - -# Enumerations -class StorageAPIEnum(EnumDefinitionImpl): - - S3 = PermissibleValue(text="S3") - - _defn = EnumDefinition( - name="StorageAPIEnum", - ) - -# Slots -class slots: - pass - -slots.id = Slot(uri=SCHEMA.identifier, name="id", curie=SCHEMA.curie('identifier'), - model_uri=OMNI_SCHEMA.id, domain=None, range=URIRef) - -slots.name = Slot(uri=SCHEMA.name, name="name", curie=SCHEMA.curie('name'), - model_uri=OMNI_SCHEMA.name, domain=None, range=Optional[str]) - -slots.description = Slot(uri=SCHEMA.description, name="description", curie=SCHEMA.curie('description'), - model_uri=OMNI_SCHEMA.description, domain=None, range=Optional[str]) - -slots.version = Slot(uri=OMNI_SCHEMA.version, name="version", curie=OMNI_SCHEMA.curie('version'), - model_uri=OMNI_SCHEMA.version, domain=None, range=str) - -slots.benchmarker = Slot(uri=OMNI_SCHEMA.benchmarker, name="benchmarker", curie=OMNI_SCHEMA.curie('benchmarker'), - model_uri=OMNI_SCHEMA.benchmarker, domain=None, range=str) - -slots.software_backend = Slot(uri=OMNI_SCHEMA.software_backend, name="software_backend", curie=OMNI_SCHEMA.curie('software_backend'), - model_uri=OMNI_SCHEMA.software_backend, domain=None, range=str) - -slots.storage = Slot(uri=OMNI_SCHEMA.storage, name="storage", curie=OMNI_SCHEMA.curie('storage'), - model_uri=OMNI_SCHEMA.storage, domain=None, range=str) - -slots.storage_api = Slot(uri=OMNI_SCHEMA.storage_api, name="storage_api", curie=OMNI_SCHEMA.curie('storage_api'), - model_uri=OMNI_SCHEMA.storage_api, domain=None, range=Union[str, "StorageAPIEnum"]) - -slots.stages = Slot(uri=OMNI_SCHEMA.stages, name="stages", curie=OMNI_SCHEMA.curie('stages'), - model_uri=OMNI_SCHEMA.stages, domain=None, range=Union[Dict[Union[str, StageId], Union[dict, Stage]], List[Union[dict, Stage]]]) - -slots.modules = Slot(uri=OMNI_SCHEMA.modules, name="modules", curie=OMNI_SCHEMA.curie('modules'), - model_uri=OMNI_SCHEMA.modules, domain=None, range=Union[Dict[Union[str, ModuleId], Union[dict, Module]], List[Union[dict, Module]]]) - -slots.inputs = Slot(uri=OMNI_SCHEMA.inputs, name="inputs", curie=OMNI_SCHEMA.curie('inputs'), - model_uri=OMNI_SCHEMA.inputs, domain=None, range=Optional[Union[Union[dict, InputCollection], List[Union[dict, InputCollection]]]]) - -slots.outputs = Slot(uri=OMNI_SCHEMA.outputs, name="outputs", curie=OMNI_SCHEMA.curie('outputs'), - model_uri=OMNI_SCHEMA.outputs, domain=None, range=Optional[Union[Dict[Union[str, IOFileId], Union[dict, IOFile]], List[Union[dict, IOFile]]]]) - -slots.exclude = Slot(uri=OMNI_SCHEMA.exclude, name="exclude", curie=OMNI_SCHEMA.curie('exclude'), - model_uri=OMNI_SCHEMA.exclude, domain=None, range=Optional[Union[Union[str, ModuleId], List[Union[str, ModuleId]]]]) - -slots.repository = Slot(uri=OMNI_SCHEMA.repository, name="repository", curie=OMNI_SCHEMA.curie('repository'), - model_uri=OMNI_SCHEMA.repository, domain=None, range=Union[dict, Repository]) - -slots.parameters = Slot(uri=OMNI_SCHEMA.parameters, name="parameters", curie=OMNI_SCHEMA.curie('parameters'), - model_uri=OMNI_SCHEMA.parameters, domain=None, range=Optional[Union[Union[dict, Parameter], List[Union[dict, Parameter]]]]) - -slots.software_environments = Slot(uri=OMNI_SCHEMA.software_environments, name="software_environments", curie=OMNI_SCHEMA.curie('software_environments'), - model_uri=OMNI_SCHEMA.software_environments, domain=None, range=Union[Dict[Union[str, SoftwareEnvironmentId], Union[dict, SoftwareEnvironment]], List[Union[dict, SoftwareEnvironment]]]) - -slots.software_environment = Slot(uri=OMNI_SCHEMA.software_environment, name="software_environment", curie=OMNI_SCHEMA.curie('software_environment'), - model_uri=OMNI_SCHEMA.software_environment, domain=None, range=Union[str, SoftwareEnvironmentId]) - -slots.path = Slot(uri=OMNI_SCHEMA.path, name="path", curie=OMNI_SCHEMA.curie('path'), - model_uri=OMNI_SCHEMA.path, domain=None, range=Optional[str]) - -slots.url = Slot(uri=OMNI_SCHEMA.url, name="url", curie=OMNI_SCHEMA.curie('url'), - model_uri=OMNI_SCHEMA.url, domain=None, range=str) - -slots.commit = Slot(uri=OMNI_SCHEMA.commit, name="commit", curie=OMNI_SCHEMA.curie('commit'), - model_uri=OMNI_SCHEMA.commit, domain=None, range=str) - -slots.values = Slot(uri=OMNI_SCHEMA.values, name="values", curie=OMNI_SCHEMA.curie('values'), - model_uri=OMNI_SCHEMA.values, domain=None, range=Optional[Union[str, List[str]]]) - -slots.entries = Slot(uri=OMNI_SCHEMA.entries, name="entries", curie=OMNI_SCHEMA.curie('entries'), - model_uri=OMNI_SCHEMA.entries, domain=None, range=Optional[Union[Union[str, IOFileId], List[Union[str, IOFileId]]]]) - -slots.easyconfig = Slot(uri=OMNI_SCHEMA.easyconfig, name="easyconfig", curie=OMNI_SCHEMA.curie('easyconfig'), - model_uri=OMNI_SCHEMA.easyconfig, domain=None, range=Optional[str]) - -slots.envmodule = Slot(uri=OMNI_SCHEMA.envmodule, name="envmodule", curie=OMNI_SCHEMA.curie('envmodule'), - model_uri=OMNI_SCHEMA.envmodule, domain=None, range=Optional[str]) - -slots.conda = Slot(uri=OMNI_SCHEMA.conda, name="conda", curie=OMNI_SCHEMA.curie('conda'), - model_uri=OMNI_SCHEMA.conda, domain=None, range=Optional[str]) - -slots.apptainer = Slot(uri=OMNI_SCHEMA.apptainer, name="apptainer", curie=OMNI_SCHEMA.curie('apptainer'), - model_uri=OMNI_SCHEMA.apptainer, domain=None, range=Optional[str]) - -slots.benchmark_yaml_spec = Slot(uri=OMNI_SCHEMA.benchmark_yaml_spec, name="benchmark_yaml_spec", curie=OMNI_SCHEMA.curie('benchmark_yaml_spec'), - model_uri=OMNI_SCHEMA.benchmark_yaml_spec, domain=None, range=Optional[str]) \ No newline at end of file diff --git a/src/omni_schema/schema/omni_schema.yaml b/src/omni_schema/schema/omni_schema.yaml index 1e36a19..5a3d10c 100644 --- a/src/omni_schema/schema/omni_schema.yaml +++ b/src/omni_schema/schema/omni_schema.yaml @@ -24,6 +24,14 @@ enums: permissible_values: S3: text: S3 + SoftwareBackendEnum: + permissible_values: + apptainer: + text: apptainer + envmodules: + text: envmodules + conda: + text: conda classes: IdentifiableEntity: @@ -133,7 +141,7 @@ slots: required: true software_backend: - range: string + range: SoftwareBackendEnum description: The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda. required: true From 4d0ea3ecb995cec0bab6cd6949e3be163977c528 Mon Sep 17 00:00:00 2001 From: Daniel Incicau Date: Tue, 27 Aug 2024 15:31:19 +0200 Subject: [PATCH 3/5] Regenerate all schemas --- project/excel/omni_schema.xlsx | Bin 8490 -> 8542 bytes project/graphql/omni_schema.graphql | 3 +- project/jsonld/omni_schema.context.jsonld | 105 ++++- project/jsonld/omni_schema.jsonld | 42 +- project/jsonschema/omni_schema.schema.json | 143 ++++-- project/owl/omni_schema.owl.ttl | 201 +++++---- project/prefixmap/omni_schema.yaml | 2 +- project/protobuf/omni_schema.proto | 5 +- project/shacl/omni_schema.shacl.ttl | 264 ++++++----- project/shex/omni_schema.shex | 6 +- project/sqlschema/omni_schema.sql | 155 +++++-- pyproject.toml | 4 +- src/omni_schema/datamodel/omni_schema.py | 489 +++++++++++++++++++++ 13 files changed, 1124 insertions(+), 295 deletions(-) create mode 100644 src/omni_schema/datamodel/omni_schema.py diff --git a/project/excel/omni_schema.xlsx b/project/excel/omni_schema.xlsx index 002a3ef8c04c28185d499f764c56593cf8db5c02..c443d46152709c91e4f3afa6862901acecc37113 100644 GIT binary patch delta 1683 zcmZ4GbkC_iz?+#xgn@y9gW+7YbfnvHUyrFk-dP|P0OFMV6u{OUV0TmsLlRPDNjy)CC}v;OZ6J}nwN@7byRKPjyH*>{Pf z`eCV_z#J&R;3i=--{TfrzV@iq;yMMTYo#t01g^iYcD?^!_l2sTdV4wZ^H zj(I-%ETr|+|6=3R*``5DBV2B&+!I`}h&5DAl9%nd=h7{`o3~uO8$2!PtXuSsVX7}@5-_yKB1U-z2)4!fpav&BE4?7h)gm!oA)r+UG|UmC})lNqF55Hy8mlr zbZF_+kK4}gW0*g=>`!>V%BA|G-}~-p1S4F(Od48*TQQ09`%R+ww%#-?DE40 zpP$}5y7P=%=h>bMXE$t2?29^jXxFUw2dXtsIa;baRjm(kbNhQrV|VWH+3|B;^nTNs zcvxy>uT?3iCdN$wR53zgyG1a#|TbvHy=*Wc4cH>aGAW9S8DS$fe?tiu24RN zF<*E!gyAb%#RM{J@+t9WU_&=coPx+SNbx}!6Q$E3hQiCH$*i)5oS<|K&gqlwWknee zPY#t;kOzsOWddLs1_2F>cPCGgRZ;+{f#(NS1_lY30wCScD917Rpn&M)*Rq0OSN)fj zW@_XD2^kuJioXDFMkWzvL~*(8@Ik)0rM)VyKV{q6-rI^lji}uD^^~bDMSdYw;!ta6yH>i3ZPRwF`RNt z7_9KBJj5w4<)v*(L>U+=a`cN!Dsxhcv3YE}`|GX)zz`7wx`Z1!gcv_gc2JOlI6^_1 z@z&%@1vxNpmVz|Xa;eGvQZhQ|p(I%>eb*f5v}x?%atUr+1LF?q$qS@KCyOWwuqnub F!~xukmAU`` delta 1634 zcmccTw92VIz?+#xgn@y9gJE?UTclgmL7pZcZzB*30C7rwazIgjL9u>fL4jUHZjNuC zFZUq>0hj+?FYo4seo!z}xU%@c$!ZUCvk58AWvzc|f)DoJwz+4}vrF_;#1Z9k)3zha z>jY1_Gi>8_JM4UUrKG#6RAz*n!@0_C;hX74R5rLsA7@Sw^)Ws-`;Y9Ktya%v_Lx4> ze7Smi>x?-i)3XdUeoW8)+}C=2kNmd$pNXvdC;wtab?~9|S8T5)UQ?^TQvKSjmD4p= zPr*+?(U9|quGb#jMLz?QuDrWHdD>d$gT2Xr?CNr~=W@mT?C`(H-jiam*6sH0BcV4$ z*cTmOoMg3N>dI3sryrhk*VeRuEY}qBzNr7et14bG&n!Ex#GhdS$gu<7LAK%PiFO-@d*3ZJ)rJwD8p0;A^jQ5C14VEm=J~ z#{QSS)9bA_XVy!cXS#TBeZBB}RDaKmnWHSg#=tN~oq<6Z7*U&lGwQPOfugWLr_h&| ziGhKeb@E36$;tj4to5xSxASfr@cb1$EFYkHx61K>M1)@K=0y${6YeH2xZ$JYB4*mz zcYVKns(NPEtrOllavvwO^Q>Irw*50JgX@2<+&>n29dA51=8Fb+)whcA+|Ri%b<&NJ z=!a{WXPPew>VAFjLD-a_nHIiMZ;meI3|lg_QC$4zDxIa(^Bay;$?!j}SN^bS8>?x9 zhp_hc4J^NMXC7E)ar9&;=P_-QiOpv%{u#>HZtXet*w^vx`E!99X}vqRk15F?Z(hJ@ zk|N^d@$XF{S5&*lnkVlSGyY68F*twz_y>O9zdHH4wmyOX11&`#|FG*Tx^cqmvi7z9 zf)y{HIY0853Pa3YX5MEkcu<(|PKsU#P6MR!V3epkHW*zw_u%>J$8u-ZyMKQ8;P>CNcXi*pHGVy_aBgDmAvx0n zhi-JuJ6N4}igS*2`#YH_v%+f^Exl>_+V}mm!nHPq&pz~oMDbm&_^Io6JP%wChNa%hvK*dMuwMsB{E{fG3ydNmMj29$qU;-*41H2iTM3@mpDm(~*c@otPCX*HAAx3-4OEWDM02^H^ zF9 . @prefix omni_schema: . @prefix owl: . +@prefix rdf: . @prefix rdfs: . @prefix schema1: . @prefix skos: . @@ -11,71 +12,71 @@ omni_schema:Benchmark a owl:Class, linkml:ClassDefinition ; rdfs:label "Benchmark" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty omni_schema:stages ], - [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty omni_schema:storage ], + [ a owl:Restriction ; + owl:minCardinality 1 ; owl:onProperty omni_schema:software_backend ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:storage_api ], + owl:minCardinality 0 ; + owl:onProperty omni_schema:benchmark_yaml_spec ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:storage ], + owl:onProperty omni_schema:benchmarker ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:benchmark_yaml_spec ], + owl:onProperty omni_schema:storage_api ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:benchmark_yaml_spec ], + owl:minCardinality 1 ; + owl:onProperty omni_schema:storage_api ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:benchmarker ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty omni_schema:software_environments ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:version ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom omni_schema:SoftwareBackendEnum ; + owl:onProperty omni_schema:software_backend ], + [ a owl:Restriction ; + owl:allValuesFrom omni_schema:Stage ; + owl:onProperty omni_schema:stages ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:benchmark_yaml_spec ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:SoftwareEnvironment ; - owl:onProperty omni_schema:software_environments ], + owl:maxCardinality 1 ; + owl:onProperty omni_schema:benchmark_yaml_spec ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:software_backend ], - [ a owl:Restriction ; - owl:allValuesFrom omni_schema:StorageAPIEnum ; - owl:onProperty omni_schema:storage_api ], + owl:onProperty omni_schema:storage ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:version ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:software_backend ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:Stage ; - owl:onProperty omni_schema:stages ], + owl:minCardinality 1 ; + owl:onProperty omni_schema:version ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:storage ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:version ], + owl:onProperty omni_schema:software_environments ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom omni_schema:StorageAPIEnum ; owl:onProperty omni_schema:storage_api ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:benchmarker ], + owl:maxCardinality 1 ; + owl:onProperty omni_schema:version ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:benchmarker ], + owl:onProperty omni_schema:stages ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:storage ], + owl:onProperty omni_schema:benchmarker ], + [ a owl:Restriction ; + owl:allValuesFrom omni_schema:SoftwareEnvironment ; + owl:onProperty omni_schema:software_environments ], omni_schema:IdentifiableEntity ; skos:definition "A multi-stage workflow to evaluate processing stage for a specific task." ; skos:inScheme . @@ -89,10 +90,10 @@ omni_schema:InputCollection a owl:Class, linkml:ClassDefinition ; rdfs:label "InputCollection" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom omni_schema:IOFile ; owl:onProperty omni_schema:entries ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:IOFile ; + owl:minCardinality 0 ; owl:onProperty omni_schema:entries ] ; skos:definition "A holder for valid input combinations." ; skos:inScheme . @@ -101,10 +102,10 @@ omni_schema:Parameter a owl:Class, linkml:ClassDefinition ; rdfs:label "Parameter" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:values ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty omni_schema:values ] ; skos:definition "A parameter and its scope." ; skos:inScheme . @@ -113,47 +114,62 @@ omni_schema:Repository a owl:Class, linkml:ClassDefinition ; rdfs:label "Repository" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 1 ; owl:onProperty omni_schema:url ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:url ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty omni_schema:commit ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty omni_schema:commit ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:commit ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:url ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:url ] ; skos:definition "A reference to code repository containing the module's executable code." ; skos:inScheme . + a owl:Class, + omni_schema:SoftwareBackendEnum ; + rdfs:label "apptainer" ; + rdfs:subClassOf omni_schema:SoftwareBackendEnum . + + a owl:Class, + omni_schema:SoftwareBackendEnum ; + rdfs:label "conda" ; + rdfs:subClassOf omni_schema:SoftwareBackendEnum . + + a owl:Class, + omni_schema:SoftwareBackendEnum ; + rdfs:label "envmodules" ; + rdfs:subClassOf omni_schema:SoftwareBackendEnum . + omni_schema:Stage a owl:Class, linkml:ClassDefinition ; rdfs:label "Stage" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom omni_schema:IOFile ; + owl:minCardinality 0 ; owl:onProperty omni_schema:outputs ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty omni_schema:modules ], + owl:allValuesFrom omni_schema:InputCollection ; + owl:onProperty omni_schema:inputs ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:Module ; + owl:minCardinality 1 ; owl:onProperty omni_schema:modules ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty omni_schema:inputs ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom omni_schema:IOFile ; owl:onProperty omni_schema:outputs ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:InputCollection ; - owl:onProperty omni_schema:inputs ], + owl:allValuesFrom omni_schema:Module ; + owl:onProperty omni_schema:modules ], omni_schema:IdentifiableEntity ; skos:definition "A benchmark subtask with equivalent and independent modules." ; skos:inScheme . @@ -299,7 +315,7 @@ omni_schema:repository a owl:ObjectProperty, omni_schema:software_backend a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "software_backend" ; - rdfs:range linkml:String ; + rdfs:range omni_schema:SoftwareBackendEnum ; skos:definition "The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda." ; skos:inScheme . @@ -342,14 +358,14 @@ omni_schema:IOFile a owl:Class, linkml:ClassDefinition ; rdfs:label "IOFile" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:path ], - [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:path ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty omni_schema:path ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:path ], omni_schema:IdentifiableEntity ; skos:definition "Represents an input / output file." ; skos:inScheme . @@ -358,35 +374,35 @@ omni_schema:Module a owl:Class, linkml:ClassDefinition ; rdfs:label "Module" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:exclude ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:repository ], + owl:allValuesFrom omni_schema:Parameter ; + owl:onProperty omni_schema:parameters ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:SoftwareEnvironment ; owl:onProperty omni_schema:software_environment ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:Parameter ; - owl:onProperty omni_schema:parameters ], + owl:minCardinality 1 ; + owl:onProperty omni_schema:software_environment ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:repository ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:repository ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty omni_schema:parameters ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty omni_schema:software_environment ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:software_environment ], + owl:allValuesFrom omni_schema:Module ; + owl:onProperty omni_schema:exclude ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:Repository ; owl:onProperty omni_schema:repository ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:Module ; + owl:minCardinality 0 ; owl:onProperty omni_schema:exclude ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:software_environment ], omni_schema:IdentifiableEntity ; skos:definition "A single benchmark component assigned to a specific stage." ; skos:inScheme . @@ -396,40 +412,40 @@ omni_schema:SoftwareEnvironment a owl:Class, rdfs:label "SoftwareEnvironment" ; rdfs:subClassOf [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:envmodule ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:conda ], + owl:onProperty omni_schema:easyconfig ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:apptainer ], + owl:minCardinality 0 ; + owl:onProperty omni_schema:envmodule ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty omni_schema:easyconfig ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:envmodule ], + owl:minCardinality 0 ; + owl:onProperty omni_schema:conda ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:easyconfig ], + owl:onProperty omni_schema:envmodule ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:conda ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:apptainer ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty omni_schema:apptainer ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:apptainer ], + owl:onProperty omni_schema:easyconfig ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:conda ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:envmodule ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:easyconfig ], + owl:maxCardinality 1 ; + owl:onProperty omni_schema:apptainer ], omni_schema:IdentifiableEntity ; skos:definition "Contains snapshots of the software environment required for the modules to run." ; skos:inScheme . @@ -444,34 +460,41 @@ omni_schema:IdentifiableEntity a owl:Class, rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:description ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty omni_schema:description ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:id ], + owl:onProperty omni_schema:name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:description ], + owl:onProperty omni_schema:name ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty omni_schema:name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty omni_schema:id ], + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:description ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:name ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:description ], + owl:onProperty omni_schema:id ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:name ] ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty omni_schema:id ] ; skos:definition "A generic grouping for any identifiable entity" ; skos:exactMatch schema1:Thing ; skos:inScheme . +omni_schema:SoftwareBackendEnum a owl:Class, + linkml:EnumDefinition ; + owl:unionOf ( ) ; + linkml:permissible_values , + , + . + a owl:Ontology ; rdfs:label "omni-schema" ; dcterms:license "Apache Software License 2.0" ; diff --git a/project/prefixmap/omni_schema.yaml b/project/prefixmap/omni_schema.yaml index de1b952..47e03f1 100644 --- a/project/prefixmap/omni_schema.yaml +++ b/project/prefixmap/omni_schema.yaml @@ -6,4 +6,4 @@ "IdentifiableEntity": { "@id": "schema:Thing" } -} +} \ No newline at end of file diff --git a/project/protobuf/omni_schema.proto b/project/protobuf/omni_schema.proto index e7b9674..a407077 100644 --- a/project/protobuf/omni_schema.proto +++ b/project/protobuf/omni_schema.proto @@ -1,3 +1,6 @@ + syntax="proto3"; + package +// metamodel_version: 1.7.0 // A multi-stage workflow to evaluate processing stage for a specific task. message Benchmark { @@ -6,7 +9,7 @@ message Benchmark string description = 0 string version = 0 string benchmarker = 0 - string softwareBackend = 0 + softwareBackendEnum softwareBackend = 0 string storage = 0 storageAPIEnum storageApi = 0 repeated softwareEnvironment softwareEnvironments = 0 diff --git a/project/shacl/omni_schema.shacl.ttl b/project/shacl/omni_schema.shacl.ttl index 92f0b31..dae08e4 100644 --- a/project/shacl/omni_schema.shacl.ttl +++ b/project/shacl/omni_schema.shacl.ttl @@ -1,95 +1,84 @@ @prefix omni_schema: . @prefix rdf: . +@prefix rdfs: . @prefix schema1: . @prefix sh: . @prefix xsd: . -schema1:Thing a sh:NodeShape ; - sh:closed false ; - sh:description "A generic grouping for any identifiable entity" ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 0 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:description ] ; - sh:targetClass schema1:Thing . - omni_schema:Benchmark a sh:NodeShape ; + rdfs:subClassOf schema1:Thing ; sh:closed true ; sh:description "A multi-stage workflow to evaluate processing stage for a specific task." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class omni_schema:SoftwareEnvironment ; - sh:description "Dictionary of software environments keyed by their identifiers" ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path omni_schema:software_environments ], - [ sh:description "A unique identifier for a thing" ; + sh:property [ sh:datatype xsd:string ; + sh:description "Benchmark Specification version." ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 8 ; - sh:path schema1:identifier ], + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path omni_schema:benchmark_yaml_spec ], [ sh:datatype xsd:string ; - sh:description "The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda." ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 9 ; + sh:path schema1:name ], + [ sh:description "The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda." ; + sh:in ( "apptainer" "envmodules" "conda" ) ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 2 ; sh:path omni_schema:software_backend ], [ sh:datatype xsd:string ; - sh:description "The version of the benchmark." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 0 ; - sh:path omni_schema:version ], - [ sh:datatype xsd:string ; - sh:description "The place hosting all benchmark data." ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 3 ; - sh:path omni_schema:storage ], + sh:nodeKind sh:Literal ; + sh:order 10 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "The name and contact details of the person responsible for this benchmark." ; sh:maxCount 1 ; sh:minCount 1 ; + sh:nodeKind sh:Literal ; sh:order 1 ; sh:path omni_schema:benchmarker ], + [ sh:datatype xsd:anyURI ; + sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 8 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:description "The place hosting all benchmark data." ; sh:maxCount 1 ; - sh:order 10 ; - sh:path schema1:description ], + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path omni_schema:storage ], [ sh:description "The type of the storage API, i.e. S3." ; sh:in ( "S3" ) ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 4 ; sh:path omni_schema:storage_api ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "Benchmark Specification version." ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path omni_schema:benchmark_yaml_spec ], [ sh:class omni_schema:Stage ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 7 ; - sh:path omni_schema:stages ] ; + sh:path omni_schema:stages ], + [ sh:class omni_schema:SoftwareEnvironment ; + sh:description "Dictionary of software environments keyed by their identifiers" ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path omni_schema:software_environments ], + [ sh:datatype xsd:string ; + sh:description "The version of the benchmark." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path omni_schema:version ] ; sh:targetClass omni_schema:Benchmark . omni_schema:InputCollection a sh:NodeShape ; @@ -107,6 +96,7 @@ omni_schema:Parameter a sh:NodeShape ; sh:description "A parameter and its scope." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:order 0 ; sh:path omni_schema:values ] ; sh:targetClass omni_schema:Parameter . @@ -119,32 +109,34 @@ omni_schema:Repository a sh:NodeShape ; sh:description "The git compatible url." ; sh:maxCount 1 ; sh:minCount 1 ; + sh:nodeKind sh:Literal ; sh:order 0 ; sh:path omni_schema:url ], [ sh:datatype xsd:string ; sh:description "The commit hash." ; sh:maxCount 1 ; sh:minCount 1 ; + sh:nodeKind sh:Literal ; sh:order 1 ; sh:path omni_schema:commit ] ; sh:targetClass omni_schema:Repository . omni_schema:Stage a sh:NodeShape ; + rdfs:subClassOf schema1:Thing ; sh:closed true ; sh:description "A benchmark subtask with equivalent and independent modules." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ], - [ sh:class omni_schema:IOFile ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path omni_schema:outputs ], - [ sh:description "A unique identifier for a thing" ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path schema1:description ], + [ sh:datatype xsd:anyURI ; + sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; + sh:nodeKind sh:Literal ; sh:order 3 ; sh:path schema1:identifier ], [ sh:class omni_schema:Module ; @@ -152,125 +144,175 @@ omni_schema:Stage a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path omni_schema:modules ], - [ sh:class omni_schema:InputCollection ; - sh:nodeKind sh:BlankNode ; - sh:order 1 ; - sh:path omni_schema:inputs ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:description ] ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path schema1:name ], + [ sh:class omni_schema:IOFile ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path omni_schema:outputs ], + [ sh:class omni_schema:InputCollection ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path omni_schema:inputs ] ; sh:targetClass omni_schema:Stage . omni_schema:IOFile a sh:NodeShape ; + rdfs:subClassOf schema1:Thing ; sh:closed true ; sh:description "Represents an input / output file." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "The output path pattern for the IO file." ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path omni_schema:path ], + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; sh:order 3 ; sh:path schema1:description ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "The output path pattern for the IO file." ; sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:name ], - [ sh:description "A unique identifier for a thing" ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path omni_schema:path ], + [ sh:datatype xsd:anyURI ; + sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; + sh:nodeKind sh:Literal ; sh:order 1 ; sh:path schema1:identifier ] ; sh:targetClass omni_schema:IOFile . omni_schema:Module a sh:NodeShape ; + rdfs:subClassOf schema1:Thing ; sh:closed true ; sh:description "A single benchmark component assigned to a specific stage." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class omni_schema:SoftwareEnvironment ; - sh:description "Reference to a software environment by key." ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path omni_schema:software_environment ], + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path schema1:description ], [ sh:class omni_schema:Repository ; sh:description "The code repository hosting the module." ; sh:maxCount 1 ; sh:minCount 1 ; - sh:nodeKind sh:BlankNode ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; sh:path omni_schema:repository ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], - [ sh:description "A unique identifier for a thing" ; + [ sh:class omni_schema:SoftwareEnvironment ; + sh:description "Reference to a software environment by key." ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path omni_schema:software_environment ], + [ sh:class omni_schema:Parameter ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path omni_schema:parameters ], [ sh:class omni_schema:Module ; sh:description "Ignore these module's outputs as input." ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path omni_schema:exclude ], - [ sh:class omni_schema:Parameter ; - sh:nodeKind sh:BlankNode ; - sh:order 3 ; - sh:path omni_schema:parameters ], + [ sh:datatype xsd:anyURI ; + sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; sh:order 5 ; sh:path schema1:name ] ; sh:targetClass omni_schema:Module . omni_schema:SoftwareEnvironment a sh:NodeShape ; + rdfs:subClassOf schema1:Thing ; sh:closed true ; sh:description "Contains snapshots of the software environment required for the modules to run." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; sh:order 6 ; sh:path schema1:description ], - [ sh:description "A unique identifier for a thing" ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "Apptainer image static ORAS url, including name:tag." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path omni_schema:apptainer ], + [ sh:datatype xsd:anyURI ; + sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; + sh:nodeKind sh:Literal ; sh:order 4 ; sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "Environment module name." ; + sh:description "Easybuild configuration file." ; sh:maxCount 1 ; - sh:order 1 ; - sh:path omni_schema:envmodule ], + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path omni_schema:easyconfig ], [ sh:datatype xsd:string ; sh:description "Conda environment file." ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; sh:order 2 ; sh:path omni_schema:conda ], [ sh:datatype xsd:string ; - sh:description "Easybuild configuration file." ; + sh:description "Environment module name." ; sh:maxCount 1 ; - sh:order 0 ; - sh:path omni_schema:easyconfig ], - [ sh:datatype xsd:string ; - sh:description "Apptainer image static ORAS url, including name:tag." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path omni_schema:envmodule ] ; + sh:targetClass omni_schema:SoftwareEnvironment . + +schema1:Thing a sh:NodeShape ; + sh:closed false ; + sh:description "A generic grouping for any identifiable entity" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 3 ; - sh:path omni_schema:apptainer ], + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ] ; - sh:targetClass omni_schema:SoftwareEnvironment . + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path schema1:name ], + [ sh:datatype xsd:anyURI ; + sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path schema1:identifier ] ; + sh:targetClass schema1:Thing . diff --git a/project/shex/omni_schema.shex b/project/shex/omni_schema.shex index b12496b..04c90af 100644 --- a/project/shex/omni_schema.shex +++ b/project/shex/omni_schema.shex @@ -1,3 +1,4 @@ +# metamodel_version: 1.7.0 BASE PREFIX rdf: PREFIX xsd: @@ -48,7 +49,9 @@ linkml:Sparqlpath xsd:string rdf:type [ schema1:Thing ] ? ; @linkml:String ; @linkml:String ; - @linkml:String ; + [ + + ] ; @linkml:String ; [ ] ; @ + ; @@ -135,4 +138,3 @@ linkml:Sparqlpath xsd:string ) } - diff --git a/project/sqlschema/omni_schema.sql b/project/sqlschema/omni_schema.sql index 09e0633..a80a5d3 100644 --- a/project/sqlschema/omni_schema.sql +++ b/project/sqlschema/omni_schema.sql @@ -1,76 +1,165 @@ +-- # Class: "IdentifiableEntity" Description: "A generic grouping for any identifiable entity" +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: description Description: A human-readable description for a thing +-- # Class: "Benchmark" Description: "A multi-stage workflow to evaluate processing stage for a specific task." +-- * Slot: version Description: The version of the benchmark. +-- * Slot: benchmarker Description: The name and contact details of the person responsible for this benchmark. +-- * Slot: software_backend Description: The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda. +-- * Slot: storage Description: The place hosting all benchmark data. +-- * Slot: storage_api Description: The type of the storage API, i.e. S3. +-- * Slot: benchmark_yaml_spec Description: Benchmark Specification version. +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: description Description: A human-readable description for a thing +-- # Class: "Stage" Description: "A benchmark subtask with equivalent and independent modules." +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: Benchmark_id Description: Autocreated FK slot +-- # Class: "Module" Description: "A single benchmark component assigned to a specific stage." +-- * Slot: software_environment Description: Reference to a software environment by key. +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: Stage_id Description: Autocreated FK slot +-- * Slot: repository_id Description: The code repository hosting the module. +-- # Class: "IOFile" Description: "Represents an input / output file." +-- * Slot: path Description: The output path pattern for the IO file. +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: Stage_id Description: Autocreated FK slot +-- # Class: "InputCollection" Description: "A holder for valid input combinations." +-- * Slot: id Description: +-- * Slot: Stage_id Description: Autocreated FK slot +-- # Class: "Repository" Description: "A reference to code repository containing the module's executable code." +-- * Slot: id Description: +-- * Slot: url Description: The git compatible url. +-- * Slot: commit Description: The commit hash. +-- # Class: "Parameter" Description: "A parameter and its scope." +-- * Slot: id Description: +-- # Class: "SoftwareEnvironment" Description: "Contains snapshots of the software environment required for the modules to run." +-- * Slot: easyconfig Description: Easybuild configuration file. +-- * Slot: envmodule Description: Environment module name. +-- * Slot: conda Description: Conda environment file. +-- * Slot: apptainer Description: Apptainer image static ORAS url, including name:tag. +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: Benchmark_id Description: Autocreated FK slot +-- # Class: "Module_exclude" Description: "" +-- * Slot: Module_id Description: Autocreated FK slot +-- * Slot: exclude_id Description: Ignore these module's outputs as input. +-- # Class: "Module_parameters" Description: "" +-- * Slot: Module_id Description: Autocreated FK slot +-- * Slot: parameters_id Description: +-- # Class: "InputCollection_entries" Description: "" +-- * Slot: InputCollection_id Description: Autocreated FK slot +-- * Slot: entries_id Description: +-- # Class: "Parameter_values" Description: "" +-- * Slot: Parameter_id Description: Autocreated FK slot +-- * Slot: values Description: - -CREATE TABLE "Benchmark" ( +CREATE TABLE "IdentifiableEntity" ( id TEXT NOT NULL, name TEXT, description TEXT, + PRIMARY KEY (id) +); +CREATE TABLE "Benchmark" ( version TEXT NOT NULL, benchmarker TEXT NOT NULL, - software_backend TEXT NOT NULL, + software_backend VARCHAR(10) NOT NULL, storage TEXT NOT NULL, storage_api VARCHAR(2) NOT NULL, - software_environments TEXT NOT NULL, benchmark_yaml_spec TEXT, - PRIMARY KEY (id) -); - -CREATE TABLE "IOFile" ( id TEXT NOT NULL, name TEXT, description TEXT, - path TEXT, PRIMARY KEY (id) ); - CREATE TABLE "Repository" ( + id INTEGER NOT NULL, url TEXT NOT NULL, "commit" TEXT NOT NULL, - PRIMARY KEY (url, "commit") + PRIMARY KEY (id) ); - -CREATE TABLE "SoftwareEnvironment" ( +CREATE TABLE "Parameter" ( + id INTEGER NOT NULL, + PRIMARY KEY (id) +); +CREATE TABLE "Stage" ( id TEXT NOT NULL, name TEXT, description TEXT, + "Benchmark_id" TEXT, + PRIMARY KEY (id), + FOREIGN KEY("Benchmark_id") REFERENCES "Benchmark" (id) +); +CREATE TABLE "SoftwareEnvironment" ( easyconfig TEXT, envmodule TEXT, conda TEXT, apptainer TEXT, - PRIMARY KEY (id) + id TEXT NOT NULL, + name TEXT, + description TEXT, + "Benchmark_id" TEXT, + PRIMARY KEY (id), + FOREIGN KEY("Benchmark_id") REFERENCES "Benchmark" (id) +); +CREATE TABLE "Parameter_values" ( + "Parameter_id" INTEGER, + "values" TEXT, + PRIMARY KEY ("Parameter_id", "values"), + FOREIGN KEY("Parameter_id") REFERENCES "Parameter" (id) ); - CREATE TABLE "Module" ( + software_environment TEXT NOT NULL, id TEXT NOT NULL, name TEXT, description TEXT, - software_environment TEXT NOT NULL, - repository TEXT NOT NULL, - exclude TEXT, + "Stage_id" TEXT, + repository_id INTEGER NOT NULL, PRIMARY KEY (id), - FOREIGN KEY(software_environment) REFERENCES "SoftwareEnvironment" (id) + FOREIGN KEY(software_environment) REFERENCES "SoftwareEnvironment" (id), + FOREIGN KEY("Stage_id") REFERENCES "Stage" (id), + FOREIGN KEY(repository_id) REFERENCES "Repository" (id) ); - -CREATE TABLE "Stage" ( +CREATE TABLE "IOFile" ( + path TEXT, id TEXT NOT NULL, name TEXT, description TEXT, - modules TEXT NOT NULL, - outputs TEXT, - "Benchmark_id" TEXT, + "Stage_id" TEXT, PRIMARY KEY (id), - FOREIGN KEY("Benchmark_id") REFERENCES "Benchmark" (id) + FOREIGN KEY("Stage_id") REFERENCES "Stage" (id) ); - CREATE TABLE "InputCollection" ( - entries TEXT, + id INTEGER NOT NULL, "Stage_id" TEXT, - PRIMARY KEY (entries, "Stage_id"), + PRIMARY KEY (id), FOREIGN KEY("Stage_id") REFERENCES "Stage" (id) ); - -CREATE TABLE "Parameter" ( - "values" TEXT, +CREATE TABLE "Module_exclude" ( + "Module_id" TEXT, + exclude_id TEXT, + PRIMARY KEY ("Module_id", exclude_id), + FOREIGN KEY("Module_id") REFERENCES "Module" (id), + FOREIGN KEY(exclude_id) REFERENCES "Module" (id) +); +CREATE TABLE "Module_parameters" ( "Module_id" TEXT, - PRIMARY KEY ("values", "Module_id"), - FOREIGN KEY("Module_id") REFERENCES "Module" (id) + parameters_id INTEGER, + PRIMARY KEY ("Module_id", parameters_id), + FOREIGN KEY("Module_id") REFERENCES "Module" (id), + FOREIGN KEY(parameters_id) REFERENCES "Parameter" (id) ); +CREATE TABLE "InputCollection_entries" ( + "InputCollection_id" INTEGER, + entries_id TEXT, + PRIMARY KEY ("InputCollection_id", entries_id), + FOREIGN KEY("InputCollection_id") REFERENCES "InputCollection" (id), + FOREIGN KEY(entries_id) REFERENCES "IOFile" (id) +); \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index e673eb9..5dfde88 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,8 @@ [tool.poetry] name = "omni_schema" version = "0.0.1" -description = "Data model foromnibenchmark." -authors = ["Almut Luetge "] +description = "Data model for omnibenchmark." +authors = ["Almut Luetge ", "Daniel Incicau "] license = "Apache Software License 2.0" readme = "README.md" include = ["README.md", "src/omni_schema/schema", "project"] diff --git a/src/omni_schema/datamodel/omni_schema.py b/src/omni_schema/datamodel/omni_schema.py new file mode 100644 index 0000000..7e9affe --- /dev/null +++ b/src/omni_schema/datamodel/omni_schema.py @@ -0,0 +1,489 @@ +# Auto generated from omni_schema.yaml by pythongen.py version: 0.0.1 +# Generation date: 2024-08-27T15:30:28 +# Schema: omni-schema +# +# id: https://w3id.org/omnibenchmark/omni-schema +# description: Data model for omnibenchmark. +# license: Apache Software License 2.0 + +import dataclasses +import re +from jsonasobj2 import JsonObj, as_dict +from typing import Optional, List, Union, Dict, ClassVar, Any +from dataclasses import dataclass +from datetime import date, datetime, time +from linkml_runtime.linkml_model.meta import EnumDefinition, PermissibleValue, PvFormulaOptions + +from linkml_runtime.utils.slot import Slot +from linkml_runtime.utils.metamodelcore import empty_list, empty_dict, bnode +from linkml_runtime.utils.yamlutils import YAMLRoot, extended_str, extended_float, extended_int +from linkml_runtime.utils.dataclass_extensions_376 import dataclasses_init_fn_with_kwargs +from linkml_runtime.utils.formatutils import camelcase, underscore, sfx +from linkml_runtime.utils.enumerations import EnumDefinitionImpl +from rdflib import Namespace, URIRef +from linkml_runtime.utils.curienamespace import CurieNamespace +from linkml_runtime.linkml_model.types import String, Uriorcurie +from linkml_runtime.utils.metamodelcore import URIorCURIE + +metamodel_version = "1.7.0" +version = None + +# Overwrite dataclasses _init_fn to add **kwargs in __init__ +dataclasses._init_fn = dataclasses_init_fn_with_kwargs + +# Namespaces +EXAMPLE = CurieNamespace('example', 'https://example.org/') +LINKML = CurieNamespace('linkml', 'https://w3id.org/linkml/') +OMNI_SCHEMA = CurieNamespace('omni_schema', 'https://w3id.org/omnibenchmark/omni-schema/') +SCHEMA = CurieNamespace('schema', 'http://schema.org/') +DEFAULT_ = OMNI_SCHEMA + + +# Types + +# Class references +class IdentifiableEntityId(URIorCURIE): + pass + + +class BenchmarkId(IdentifiableEntityId): + pass + + +class StageId(IdentifiableEntityId): + pass + + +class ModuleId(IdentifiableEntityId): + pass + + +class IOFileId(IdentifiableEntityId): + pass + + +class SoftwareEnvironmentId(IdentifiableEntityId): + pass + + +@dataclass(repr=False) +class IdentifiableEntity(YAMLRoot): + """ + A generic grouping for any identifiable entity + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = SCHEMA["Thing"] + class_class_curie: ClassVar[str] = "schema:Thing" + class_name: ClassVar[str] = "IdentifiableEntity" + class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.IdentifiableEntity + + id: Union[str, IdentifiableEntityId] = None + name: Optional[str] = None + description: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, IdentifiableEntityId): + self.id = IdentifiableEntityId(self.id) + + if self.name is not None and not isinstance(self.name, str): + self.name = str(self.name) + + if self.description is not None and not isinstance(self.description, str): + self.description = str(self.description) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Benchmark(IdentifiableEntity): + """ + A multi-stage workflow to evaluate processing stage for a specific task. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["Benchmark"] + class_class_curie: ClassVar[str] = "omni_schema:Benchmark" + class_name: ClassVar[str] = "Benchmark" + class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.Benchmark + + id: Union[str, BenchmarkId] = None + version: str = None + benchmarker: str = None + software_backend: Union[str, "SoftwareBackendEnum"] = None + storage: str = None + storage_api: Union[str, "StorageAPIEnum"] = None + software_environments: Union[Dict[Union[str, SoftwareEnvironmentId], Union[dict, "SoftwareEnvironment"]], List[Union[dict, "SoftwareEnvironment"]]] = empty_dict() + stages: Union[Dict[Union[str, StageId], Union[dict, "Stage"]], List[Union[dict, "Stage"]]] = empty_dict() + benchmark_yaml_spec: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, BenchmarkId): + self.id = BenchmarkId(self.id) + + if self._is_empty(self.version): + self.MissingRequiredField("version") + if not isinstance(self.version, str): + self.version = str(self.version) + + if self._is_empty(self.benchmarker): + self.MissingRequiredField("benchmarker") + if not isinstance(self.benchmarker, str): + self.benchmarker = str(self.benchmarker) + + if self._is_empty(self.software_backend): + self.MissingRequiredField("software_backend") + if not isinstance(self.software_backend, SoftwareBackendEnum): + self.software_backend = SoftwareBackendEnum(self.software_backend) + + if self._is_empty(self.storage): + self.MissingRequiredField("storage") + if not isinstance(self.storage, str): + self.storage = str(self.storage) + + if self._is_empty(self.storage_api): + self.MissingRequiredField("storage_api") + if not isinstance(self.storage_api, StorageAPIEnum): + self.storage_api = StorageAPIEnum(self.storage_api) + + if self._is_empty(self.software_environments): + self.MissingRequiredField("software_environments") + self._normalize_inlined_as_list(slot_name="software_environments", slot_type=SoftwareEnvironment, key_name="id", keyed=True) + + if self._is_empty(self.stages): + self.MissingRequiredField("stages") + self._normalize_inlined_as_list(slot_name="stages", slot_type=Stage, key_name="id", keyed=True) + + if self.benchmark_yaml_spec is not None and not isinstance(self.benchmark_yaml_spec, str): + self.benchmark_yaml_spec = str(self.benchmark_yaml_spec) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Stage(IdentifiableEntity): + """ + A benchmark subtask with equivalent and independent modules. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["Stage"] + class_class_curie: ClassVar[str] = "omni_schema:Stage" + class_name: ClassVar[str] = "Stage" + class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.Stage + + id: Union[str, StageId] = None + modules: Union[Dict[Union[str, ModuleId], Union[dict, "Module"]], List[Union[dict, "Module"]]] = empty_dict() + inputs: Optional[Union[Union[dict, "InputCollection"], List[Union[dict, "InputCollection"]]]] = empty_list() + outputs: Optional[Union[Dict[Union[str, IOFileId], Union[dict, "IOFile"]], List[Union[dict, "IOFile"]]]] = empty_dict() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, StageId): + self.id = StageId(self.id) + + if self._is_empty(self.modules): + self.MissingRequiredField("modules") + self._normalize_inlined_as_list(slot_name="modules", slot_type=Module, key_name="id", keyed=True) + + if not isinstance(self.inputs, list): + self.inputs = [self.inputs] if self.inputs is not None else [] + self.inputs = [v if isinstance(v, InputCollection) else InputCollection(**as_dict(v)) for v in self.inputs] + + self._normalize_inlined_as_list(slot_name="outputs", slot_type=IOFile, key_name="id", keyed=True) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Module(IdentifiableEntity): + """ + A single benchmark component assigned to a specific stage. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["Module"] + class_class_curie: ClassVar[str] = "omni_schema:Module" + class_name: ClassVar[str] = "Module" + class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.Module + + id: Union[str, ModuleId] = None + software_environment: Union[str, SoftwareEnvironmentId] = None + repository: Union[dict, "Repository"] = None + exclude: Optional[Union[Union[str, ModuleId], List[Union[str, ModuleId]]]] = empty_list() + parameters: Optional[Union[Union[dict, "Parameter"], List[Union[dict, "Parameter"]]]] = empty_list() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, ModuleId): + self.id = ModuleId(self.id) + + if self._is_empty(self.software_environment): + self.MissingRequiredField("software_environment") + if not isinstance(self.software_environment, SoftwareEnvironmentId): + self.software_environment = SoftwareEnvironmentId(self.software_environment) + + if self._is_empty(self.repository): + self.MissingRequiredField("repository") + if not isinstance(self.repository, Repository): + self.repository = Repository(**as_dict(self.repository)) + + if not isinstance(self.exclude, list): + self.exclude = [self.exclude] if self.exclude is not None else [] + self.exclude = [v if isinstance(v, ModuleId) else ModuleId(v) for v in self.exclude] + + if not isinstance(self.parameters, list): + self.parameters = [self.parameters] if self.parameters is not None else [] + self.parameters = [v if isinstance(v, Parameter) else Parameter(**as_dict(v)) for v in self.parameters] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class IOFile(IdentifiableEntity): + """ + Represents an input / output file. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["IOFile"] + class_class_curie: ClassVar[str] = "omni_schema:IOFile" + class_name: ClassVar[str] = "IOFile" + class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.IOFile + + id: Union[str, IOFileId] = None + path: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, IOFileId): + self.id = IOFileId(self.id) + + if self.path is not None and not isinstance(self.path, str): + self.path = str(self.path) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class InputCollection(YAMLRoot): + """ + A holder for valid input combinations. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["InputCollection"] + class_class_curie: ClassVar[str] = "omni_schema:InputCollection" + class_name: ClassVar[str] = "InputCollection" + class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.InputCollection + + entries: Optional[Union[Union[str, IOFileId], List[Union[str, IOFileId]]]] = empty_list() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if not isinstance(self.entries, list): + self.entries = [self.entries] if self.entries is not None else [] + self.entries = [v if isinstance(v, IOFileId) else IOFileId(v) for v in self.entries] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Repository(YAMLRoot): + """ + A reference to code repository containing the module's executable code. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["Repository"] + class_class_curie: ClassVar[str] = "omni_schema:Repository" + class_name: ClassVar[str] = "Repository" + class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.Repository + + url: str = None + commit: str = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.url): + self.MissingRequiredField("url") + if not isinstance(self.url, str): + self.url = str(self.url) + + if self._is_empty(self.commit): + self.MissingRequiredField("commit") + if not isinstance(self.commit, str): + self.commit = str(self.commit) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Parameter(YAMLRoot): + """ + A parameter and its scope. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["Parameter"] + class_class_curie: ClassVar[str] = "omni_schema:Parameter" + class_name: ClassVar[str] = "Parameter" + class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.Parameter + + values: Optional[Union[str, List[str]]] = empty_list() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if not isinstance(self.values, list): + self.values = [self.values] if self.values is not None else [] + self.values = [v if isinstance(v, str) else str(v) for v in self.values] + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class SoftwareEnvironment(IdentifiableEntity): + """ + Contains snapshots of the software environment required for the modules to run. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = OMNI_SCHEMA["SoftwareEnvironment"] + class_class_curie: ClassVar[str] = "omni_schema:SoftwareEnvironment" + class_name: ClassVar[str] = "SoftwareEnvironment" + class_model_uri: ClassVar[URIRef] = OMNI_SCHEMA.SoftwareEnvironment + + id: Union[str, SoftwareEnvironmentId] = None + easyconfig: Optional[str] = None + envmodule: Optional[str] = None + conda: Optional[str] = None + apptainer: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, SoftwareEnvironmentId): + self.id = SoftwareEnvironmentId(self.id) + + if self.easyconfig is not None and not isinstance(self.easyconfig, str): + self.easyconfig = str(self.easyconfig) + + if self.envmodule is not None and not isinstance(self.envmodule, str): + self.envmodule = str(self.envmodule) + + if self.conda is not None and not isinstance(self.conda, str): + self.conda = str(self.conda) + + if self.apptainer is not None and not isinstance(self.apptainer, str): + self.apptainer = str(self.apptainer) + + super().__post_init__(**kwargs) + + +# Enumerations +class StorageAPIEnum(EnumDefinitionImpl): + + S3 = PermissibleValue(text="S3") + + _defn = EnumDefinition( + name="StorageAPIEnum", + ) + +class SoftwareBackendEnum(EnumDefinitionImpl): + + apptainer = PermissibleValue(text="apptainer") + envmodules = PermissibleValue(text="envmodules") + conda = PermissibleValue(text="conda") + + _defn = EnumDefinition( + name="SoftwareBackendEnum", + ) + +# Slots +class slots: + pass + +slots.id = Slot(uri=SCHEMA.identifier, name="id", curie=SCHEMA.curie('identifier'), + model_uri=OMNI_SCHEMA.id, domain=None, range=URIRef) + +slots.name = Slot(uri=SCHEMA.name, name="name", curie=SCHEMA.curie('name'), + model_uri=OMNI_SCHEMA.name, domain=None, range=Optional[str]) + +slots.description = Slot(uri=SCHEMA.description, name="description", curie=SCHEMA.curie('description'), + model_uri=OMNI_SCHEMA.description, domain=None, range=Optional[str]) + +slots.version = Slot(uri=OMNI_SCHEMA.version, name="version", curie=OMNI_SCHEMA.curie('version'), + model_uri=OMNI_SCHEMA.version, domain=None, range=str) + +slots.benchmarker = Slot(uri=OMNI_SCHEMA.benchmarker, name="benchmarker", curie=OMNI_SCHEMA.curie('benchmarker'), + model_uri=OMNI_SCHEMA.benchmarker, domain=None, range=str) + +slots.software_backend = Slot(uri=OMNI_SCHEMA.software_backend, name="software_backend", curie=OMNI_SCHEMA.curie('software_backend'), + model_uri=OMNI_SCHEMA.software_backend, domain=None, range=Union[str, "SoftwareBackendEnum"]) + +slots.storage = Slot(uri=OMNI_SCHEMA.storage, name="storage", curie=OMNI_SCHEMA.curie('storage'), + model_uri=OMNI_SCHEMA.storage, domain=None, range=str) + +slots.storage_api = Slot(uri=OMNI_SCHEMA.storage_api, name="storage_api", curie=OMNI_SCHEMA.curie('storage_api'), + model_uri=OMNI_SCHEMA.storage_api, domain=None, range=Union[str, "StorageAPIEnum"]) + +slots.stages = Slot(uri=OMNI_SCHEMA.stages, name="stages", curie=OMNI_SCHEMA.curie('stages'), + model_uri=OMNI_SCHEMA.stages, domain=None, range=Union[Dict[Union[str, StageId], Union[dict, Stage]], List[Union[dict, Stage]]]) + +slots.modules = Slot(uri=OMNI_SCHEMA.modules, name="modules", curie=OMNI_SCHEMA.curie('modules'), + model_uri=OMNI_SCHEMA.modules, domain=None, range=Union[Dict[Union[str, ModuleId], Union[dict, Module]], List[Union[dict, Module]]]) + +slots.inputs = Slot(uri=OMNI_SCHEMA.inputs, name="inputs", curie=OMNI_SCHEMA.curie('inputs'), + model_uri=OMNI_SCHEMA.inputs, domain=None, range=Optional[Union[Union[dict, InputCollection], List[Union[dict, InputCollection]]]]) + +slots.outputs = Slot(uri=OMNI_SCHEMA.outputs, name="outputs", curie=OMNI_SCHEMA.curie('outputs'), + model_uri=OMNI_SCHEMA.outputs, domain=None, range=Optional[Union[Dict[Union[str, IOFileId], Union[dict, IOFile]], List[Union[dict, IOFile]]]]) + +slots.exclude = Slot(uri=OMNI_SCHEMA.exclude, name="exclude", curie=OMNI_SCHEMA.curie('exclude'), + model_uri=OMNI_SCHEMA.exclude, domain=None, range=Optional[Union[Union[str, ModuleId], List[Union[str, ModuleId]]]]) + +slots.repository = Slot(uri=OMNI_SCHEMA.repository, name="repository", curie=OMNI_SCHEMA.curie('repository'), + model_uri=OMNI_SCHEMA.repository, domain=None, range=Union[dict, Repository]) + +slots.parameters = Slot(uri=OMNI_SCHEMA.parameters, name="parameters", curie=OMNI_SCHEMA.curie('parameters'), + model_uri=OMNI_SCHEMA.parameters, domain=None, range=Optional[Union[Union[dict, Parameter], List[Union[dict, Parameter]]]]) + +slots.software_environments = Slot(uri=OMNI_SCHEMA.software_environments, name="software_environments", curie=OMNI_SCHEMA.curie('software_environments'), + model_uri=OMNI_SCHEMA.software_environments, domain=None, range=Union[Dict[Union[str, SoftwareEnvironmentId], Union[dict, SoftwareEnvironment]], List[Union[dict, SoftwareEnvironment]]]) + +slots.software_environment = Slot(uri=OMNI_SCHEMA.software_environment, name="software_environment", curie=OMNI_SCHEMA.curie('software_environment'), + model_uri=OMNI_SCHEMA.software_environment, domain=None, range=Union[str, SoftwareEnvironmentId]) + +slots.path = Slot(uri=OMNI_SCHEMA.path, name="path", curie=OMNI_SCHEMA.curie('path'), + model_uri=OMNI_SCHEMA.path, domain=None, range=Optional[str]) + +slots.url = Slot(uri=OMNI_SCHEMA.url, name="url", curie=OMNI_SCHEMA.curie('url'), + model_uri=OMNI_SCHEMA.url, domain=None, range=str) + +slots.commit = Slot(uri=OMNI_SCHEMA.commit, name="commit", curie=OMNI_SCHEMA.curie('commit'), + model_uri=OMNI_SCHEMA.commit, domain=None, range=str) + +slots.values = Slot(uri=OMNI_SCHEMA.values, name="values", curie=OMNI_SCHEMA.curie('values'), + model_uri=OMNI_SCHEMA.values, domain=None, range=Optional[Union[str, List[str]]]) + +slots.entries = Slot(uri=OMNI_SCHEMA.entries, name="entries", curie=OMNI_SCHEMA.curie('entries'), + model_uri=OMNI_SCHEMA.entries, domain=None, range=Optional[Union[Union[str, IOFileId], List[Union[str, IOFileId]]]]) + +slots.easyconfig = Slot(uri=OMNI_SCHEMA.easyconfig, name="easyconfig", curie=OMNI_SCHEMA.curie('easyconfig'), + model_uri=OMNI_SCHEMA.easyconfig, domain=None, range=Optional[str]) + +slots.envmodule = Slot(uri=OMNI_SCHEMA.envmodule, name="envmodule", curie=OMNI_SCHEMA.curie('envmodule'), + model_uri=OMNI_SCHEMA.envmodule, domain=None, range=Optional[str]) + +slots.conda = Slot(uri=OMNI_SCHEMA.conda, name="conda", curie=OMNI_SCHEMA.curie('conda'), + model_uri=OMNI_SCHEMA.conda, domain=None, range=Optional[str]) + +slots.apptainer = Slot(uri=OMNI_SCHEMA.apptainer, name="apptainer", curie=OMNI_SCHEMA.curie('apptainer'), + model_uri=OMNI_SCHEMA.apptainer, domain=None, range=Optional[str]) + +slots.benchmark_yaml_spec = Slot(uri=OMNI_SCHEMA.benchmark_yaml_spec, name="benchmark_yaml_spec", curie=OMNI_SCHEMA.curie('benchmark_yaml_spec'), + model_uri=OMNI_SCHEMA.benchmark_yaml_spec, domain=None, range=Optional[str]) \ No newline at end of file From 0a6795e0020b04a9d4f8424be681408b7478de2a Mon Sep 17 00:00:00 2001 From: Daniel Incicau Date: Tue, 27 Aug 2024 15:41:11 +0200 Subject: [PATCH 4/5] Add docker SoftwareBackendEnum --- project/excel/omni_schema.xlsx | Bin 8542 -> 8547 bytes project/jsonld/omni_schema.context.jsonld | 2 +- project/jsonld/omni_schema.jsonld | 9 +- project/jsonschema/omni_schema.schema.json | 3 +- project/owl/omni_schema.owl.ttl | 170 ++++++++++--------- project/shacl/omni_schema.shacl.ttl | 188 ++++++++++----------- project/shex/omni_schema.shex | 3 +- src/omni_schema/datamodel/omni_schema.py | 3 +- src/omni_schema/schema/omni_schema.yaml | 2 + 9 files changed, 197 insertions(+), 183 deletions(-) diff --git a/project/excel/omni_schema.xlsx b/project/excel/omni_schema.xlsx index c443d46152709c91e4f3afa6862901acecc37113..616ad77b4bd33acba4d02cdf75265415ad07ea7e 100644 GIT binary patch delta 1417 zcmccT^w^0fz?+#xgn@y9gF&KpBF{k%iCXE%TX!SOCSFyqzf%4Bi?e}ite%3Of}$bk z5#6FaYoji^bO!FO_mAGj$70_1@%N97Yp=Xe-Q{rpU?ta`fEeCwZx^}j_vAYh$K+x& z;i{o@XC6o1e9y_q%!0sQ{TI$LH9P1=zOrzd z_p~5&W>asy*_o40eDxb6SL}PgdEcC!g^OkG&6A6N_Vn_y?lsm+T&}XIvR!)9G)wQ( z@`Y<3MsKt`|4(Z|WUsKwe4E@!-k+lG-OZO53hh|rb<|2XZ+oStw&Loqzn}cNST7ot zJ}dS!|6|t$SwFt!zY<3Fy>#Tvm^sP=CDwz{M}B{{9a1 zn_M<`@1D0u#ri8Mgimg9y!A_{VR8J_jdeoP&*aTfvD04|^iM=KVrQgsXqW2}-$$~I zT2Vo%lP)F{%nR|lZQ&jLX5J=|Y_nU3Y+d)Q({j}hPuMW?$l(h9dYc!%Cv_*JtPGZ} zVEOm1MIotZL+}f(HPTe~aH6n$jI(VZm3@8px9@I1lk zI|JpXy^e6@JZfoDrY zO1Q5$&i;1MX5G#}meW&DZBOXtd$(r#X^&4yvQvHvo(i(O>$uxaO7%v%Z^lyT8|4x| zs$e{F|KI2Ek@-P+^*g_dZl|jyB2E|c`01xa zU&t$b!{T_@;7H z0Hr;dK}mG;cj0!he1m8;6VR5)f5o4JEPEz#8Z5k7iXTiLk~jpVeOISFPPn48LV}?y<4T^#s=m<0R~U` z3#&rX4m~Y+zBqKs{6c=mm*rdCS6J?6>t52M#5#EcNB6|JQ{41VeGvQ|nP8I8FD9$H z;uM#jPU4oA=i4kJPZ-vha+~rvTbdY8H(&MO>&J(car<7xC_OdV6egux;^Jzz?Xv4b zi*G{vM4x7U3uip5hJf( zbJX5iRquS8)GZ?a(_^BK^pdsuj26E_C10x-o_ur6^U-G^t*8DM8>h}T4O$xEa!ci& z;EF}8p=y%6Y|lNHZt2~;F*XW|J!<-q(xrR|OZX_Ske~ zC9e%reL0hWq2&+F64q;uf3!zAYs?qLl5o}iUn8SKOQ(L^c77kj{K;j1!uwS&CH=17 zclT?I;(hhhEq{*Qa<{w|R@3*WKm51ljJ{)+A3pf}^ybl>XWTl^_FOo-VPj%n)X_t` zX1za9t$E7PQr)R)eTbXe-%}d9bC1uCpYx*ko6f|;QY(9<(l!?LrDihBJ#jfK;tJaz z&%SK|g|lSNTzcZauJ+FJ#UKCtFRcIbCBIKzq;9+WgLfjiTWneyx9&Oo;EU5WmbYfd z{1QrXuZS8YUzPKY+~RQ1;obF)8i7N{tlqqPV~(287=pjd$Y5k(5MTzSr_I~B${Cr? zRc|)n*$Jj!^Y(!0O8$H>{Ysz`Os5JJfa&YPYru4?Xf+d1-()6<=OFE`B~F8dcS!Mr z>66kKAbPT~tPMO{PcD}=2Z?QvwdX}i*^~dsS}K4<5N=~&kN_48FwoH0$Tj()oap2% zIYE#KwQ@2{@;qRX4RV6=Ag$X?5`RYky|n_ERZz9wn*2ac9i)p>UWO@yAFRtp9&C<3 zP~@fnScG4YRVTokkx7IZRw7A9X68sdvH_YYieYAm5LnX*h%vW;#vBs{i|{Fc4OUc; zVJw+!ryv8eH%39G{-ZbpLwr$cPO-ioh(xz3H@i1|0njE!76t}>n6H6!1LG~AXDV{^ z%kzt}lk)Sk^(u06&^3$jy;r>nRQ!vTfk6sI^Ku{;s5!o9@^=MAkW-`-Wf*r%Hdj<* JQ;-Fz1OP=eH%0&e diff --git a/project/jsonld/omni_schema.context.jsonld b/project/jsonld/omni_schema.context.jsonld index 05ab8d6..bbc9371 100644 --- a/project/jsonld/omni_schema.context.jsonld +++ b/project/jsonld/omni_schema.context.jsonld @@ -1,7 +1,7 @@ { "comments": { "description": "Auto generated by LinkML jsonld context generator", - "generation_date": "2024-08-27T15:30:28", + "generation_date": "2024-08-27T15:40:47", "source": "omni_schema.yaml" }, "@context": { diff --git a/project/jsonld/omni_schema.jsonld b/project/jsonld/omni_schema.jsonld index 998c905..eaffe80 100644 --- a/project/jsonld/omni_schema.jsonld +++ b/project/jsonld/omni_schema.jsonld @@ -364,6 +364,9 @@ }, { "text": "conda" + }, + { + "text": "docker" } ] } @@ -913,9 +916,9 @@ ], "metamodel_version": "1.7.0", "source_file": "omni_schema.yaml", - "source_file_date": "2024-08-27T15:15:07", - "source_file_size": 5231, - "generation_date": "2024-08-27T15:30:28", + "source_file_date": "2024-08-27T15:40:43", + "source_file_size": 5266, + "generation_date": "2024-08-27T15:40:47", "@type": "SchemaDefinition", "@context": [ "project/jsonld/omni_schema.context.jsonld", diff --git a/project/jsonschema/omni_schema.schema.json b/project/jsonschema/omni_schema.schema.json index 5035a0a..f9a140d 100644 --- a/project/jsonschema/omni_schema.schema.json +++ b/project/jsonschema/omni_schema.schema.json @@ -229,7 +229,8 @@ "enum": [ "apptainer", "envmodules", - "conda" + "conda", + "docker" ], "title": "SoftwareBackendEnum", "type": "string" diff --git a/project/owl/omni_schema.owl.ttl b/project/owl/omni_schema.owl.ttl index 391716d..1e3f03c 100644 --- a/project/owl/omni_schema.owl.ttl +++ b/project/owl/omni_schema.owl.ttl @@ -14,69 +14,69 @@ omni_schema:Benchmark a owl:Class, rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:storage ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty omni_schema:software_backend ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:benchmark_yaml_spec ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty omni_schema:benchmarker ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:storage_api ], + owl:onProperty omni_schema:benchmarker ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:storage_api ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty omni_schema:benchmarker ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:version ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:SoftwareBackendEnum ; - owl:onProperty omni_schema:software_backend ], - [ a owl:Restriction ; - owl:allValuesFrom omni_schema:Stage ; - owl:onProperty omni_schema:stages ], + owl:maxCardinality 1 ; + owl:onProperty omni_schema:benchmark_yaml_spec ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:benchmark_yaml_spec ], + owl:onProperty omni_schema:storage ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty omni_schema:benchmark_yaml_spec ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:storage ], + [ a owl:Restriction ; + owl:allValuesFrom omni_schema:StorageAPIEnum ; + owl:onProperty omni_schema:storage_api ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:software_backend ], + owl:onProperty omni_schema:storage_api ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:maxCardinality 1 ; owl:onProperty omni_schema:version ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:storage ], + owl:allValuesFrom omni_schema:Stage ; + owl:onProperty omni_schema:stages ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:software_environments ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:StorageAPIEnum ; + owl:minCardinality 1 ; owl:onProperty omni_schema:storage_api ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:benchmarker ], + [ a owl:Restriction ; + owl:minCardinality 1 ; owl:onProperty omni_schema:version ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:stages ], + owl:onProperty omni_schema:software_backend ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:benchmarker ], + owl:onProperty omni_schema:benchmark_yaml_spec ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty omni_schema:stages ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:SoftwareEnvironment ; owl:onProperty omni_schema:software_environments ], + [ a owl:Restriction ; + owl:allValuesFrom omni_schema:SoftwareBackendEnum ; + owl:onProperty omni_schema:software_backend ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:software_backend ], omni_schema:IdentifiableEntity ; skos:definition "A multi-stage workflow to evaluate processing stage for a specific task." ; skos:inScheme . @@ -102,10 +102,10 @@ omni_schema:Parameter a owl:Class, linkml:ClassDefinition ; rdfs:label "Parameter" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty omni_schema:values ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:values ] ; skos:definition "A parameter and its scope." ; skos:inScheme . @@ -114,22 +114,22 @@ omni_schema:Repository a owl:Class, linkml:ClassDefinition ; rdfs:label "Repository" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:url ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:commit ], + owl:minCardinality 1 ; + owl:onProperty omni_schema:url ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:commit ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:commit ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:url ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:commit ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty omni_schema:url ] ; skos:definition "A reference to code repository containing the module's executable code." ; skos:inScheme . @@ -144,6 +144,11 @@ omni_schema:Repository a owl:Class, rdfs:label "conda" ; rdfs:subClassOf omni_schema:SoftwareBackendEnum . + a owl:Class, + omni_schema:SoftwareBackendEnum ; + rdfs:label "docker" ; + rdfs:subClassOf omni_schema:SoftwareBackendEnum . + a owl:Class, omni_schema:SoftwareBackendEnum ; rdfs:label "envmodules" ; @@ -154,22 +159,22 @@ omni_schema:Stage a owl:Class, rdfs:label "Stage" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty omni_schema:outputs ], - [ a owl:Restriction ; - owl:allValuesFrom omni_schema:InputCollection ; owl:onProperty omni_schema:inputs ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:modules ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty omni_schema:inputs ], - [ a owl:Restriction ; - owl:allValuesFrom omni_schema:IOFile ; owl:onProperty omni_schema:outputs ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:Module ; owl:onProperty omni_schema:modules ], + [ a owl:Restriction ; + owl:allValuesFrom omni_schema:InputCollection ; + owl:onProperty omni_schema:inputs ], + [ a owl:Restriction ; + owl:allValuesFrom omni_schema:IOFile ; + owl:onProperty omni_schema:outputs ], omni_schema:IdentifiableEntity ; skos:definition "A benchmark subtask with equivalent and independent modules." ; skos:inScheme . @@ -358,13 +363,13 @@ omni_schema:IOFile a owl:Class, linkml:ClassDefinition ; rdfs:label "IOFile" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:path ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty omni_schema:path ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty omni_schema:path ], omni_schema:IdentifiableEntity ; skos:definition "Represents an input / output file." ; @@ -374,6 +379,18 @@ omni_schema:Module a owl:Class, linkml:ClassDefinition ; rdfs:label "Module" ; rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty omni_schema:parameters ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:software_environment ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty omni_schema:exclude ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:repository ], + [ a owl:Restriction ; owl:allValuesFrom omni_schema:Parameter ; owl:onProperty omni_schema:parameters ], [ a owl:Restriction ; @@ -385,24 +402,12 @@ omni_schema:Module a owl:Class, [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:repository ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:repository ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:parameters ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:Module ; owl:onProperty omni_schema:exclude ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:Repository ; owl:onProperty omni_schema:repository ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:exclude ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:software_environment ], omni_schema:IdentifiableEntity ; skos:definition "A single benchmark component assigned to a specific stage." ; skos:inScheme . @@ -412,40 +417,40 @@ omni_schema:SoftwareEnvironment a owl:Class, rdfs:label "SoftwareEnvironment" ; rdfs:subClassOf [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:easyconfig ], + owl:onProperty omni_schema:apptainer ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:envmodule ], + owl:maxCardinality 1 ; + owl:onProperty omni_schema:easyconfig ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty omni_schema:easyconfig ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:conda ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:envmodule ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty omni_schema:conda ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty omni_schema:apptainer ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty omni_schema:apptainer ], + owl:onProperty omni_schema:envmodule ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:easyconfig ], + owl:onProperty omni_schema:apptainer ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:conda ], + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:envmodule ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:easyconfig ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty omni_schema:envmodule ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:apptainer ], + owl:onProperty omni_schema:conda ], omni_schema:IdentifiableEntity ; skos:definition "Contains snapshots of the software environment required for the modules to run." ; skos:inScheme . @@ -458,41 +463,42 @@ omni_schema:IdentifiableEntity a owl:Class, linkml:ClassDefinition ; rdfs:label "IdentifiableEntity" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:id ], + [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty omni_schema:id ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty omni_schema:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:description ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:id ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty omni_schema:name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:description ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty omni_schema:id ] ; + owl:onProperty omni_schema:name ] ; skos:definition "A generic grouping for any identifiable entity" ; skos:exactMatch schema1:Thing ; skos:inScheme . omni_schema:SoftwareBackendEnum a owl:Class, linkml:EnumDefinition ; - owl:unionOf ( ) ; + owl:unionOf ( ) ; linkml:permissible_values , , + , . a owl:Ontology ; diff --git a/project/shacl/omni_schema.shacl.ttl b/project/shacl/omni_schema.shacl.ttl index dae08e4..8520656 100644 --- a/project/shacl/omni_schema.shacl.ttl +++ b/project/shacl/omni_schema.shacl.ttl @@ -11,29 +11,11 @@ omni_schema:Benchmark a sh:NodeShape ; sh:description "A multi-stage workflow to evaluate processing stage for a specific task." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "Benchmark Specification version." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path omni_schema:benchmark_yaml_spec ], - [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 9 ; sh:path schema1:name ], - [ sh:description "The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda." ; - sh:in ( "apptainer" "envmodules" "conda" ) ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 2 ; - sh:path omni_schema:software_backend ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "The name and contact details of the person responsible for this benchmark." ; sh:maxCount 1 ; @@ -48,6 +30,18 @@ omni_schema:Benchmark a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 8 ; sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 10 ; + sh:path schema1:description ], + [ sh:description "The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda." ; + sh:in ( "apptainer" "envmodules" "conda" "docker" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 2 ; + sh:path omni_schema:software_backend ], [ sh:datatype xsd:string ; sh:description "The place hosting all benchmark data." ; sh:maxCount 1 ; @@ -55,17 +49,19 @@ omni_schema:Benchmark a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 3 ; sh:path omni_schema:storage ], + [ sh:datatype xsd:string ; + sh:description "The version of the benchmark." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path omni_schema:version ], [ sh:description "The type of the storage API, i.e. S3." ; sh:in ( "S3" ) ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 4 ; sh:path omni_schema:storage_api ], - [ sh:class omni_schema:Stage ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 7 ; - sh:path omni_schema:stages ], [ sh:class omni_schema:SoftwareEnvironment ; sh:description "Dictionary of software environments keyed by their identifiers" ; sh:minCount 1 ; @@ -73,12 +69,16 @@ omni_schema:Benchmark a sh:NodeShape ; sh:order 5 ; sh:path omni_schema:software_environments ], [ sh:datatype xsd:string ; - sh:description "The version of the benchmark." ; + sh:description "Benchmark Specification version." ; sh:maxCount 1 ; - sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path omni_schema:version ] ; + sh:order 6 ; + sh:path omni_schema:benchmark_yaml_spec ], + [ sh:class omni_schema:Stage ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 7 ; + sh:path omni_schema:stages ] ; sh:targetClass omni_schema:Benchmark . omni_schema:InputCollection a sh:NodeShape ; @@ -127,11 +127,21 @@ omni_schema:Stage a sh:NodeShape ; sh:description "A benchmark subtask with equivalent and independent modules." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 5 ; sh:path schema1:description ], + [ sh:class omni_schema:InputCollection ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path omni_schema:inputs ], [ sh:datatype xsd:anyURI ; sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; @@ -144,20 +154,10 @@ omni_schema:Stage a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path omni_schema:modules ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path schema1:name ], [ sh:class omni_schema:IOFile ; sh:nodeKind sh:IRI ; sh:order 2 ; - sh:path omni_schema:outputs ], - [ sh:class omni_schema:InputCollection ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path omni_schema:inputs ] ; + sh:path omni_schema:outputs ] ; sh:targetClass omni_schema:Stage . omni_schema:IOFile a sh:NodeShape ; @@ -166,17 +166,17 @@ omni_schema:IOFile a sh:NodeShape ; sh:description "Represents an input / output file." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 3 ; sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "The output path pattern for the IO file." ; sh:maxCount 1 ; @@ -198,18 +198,29 @@ omni_schema:Module a sh:NodeShape ; sh:description "A single benchmark component assigned to a specific stage." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 6 ; sh:path schema1:description ], - [ sh:class omni_schema:Repository ; - sh:description "The code repository hosting the module." ; + [ sh:datatype xsd:anyURI ; + sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path omni_schema:repository ], + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path schema1:identifier ], + [ sh:class omni_schema:Module ; + sh:description "Ignore these module's outputs as input." ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path omni_schema:exclude ], [ sh:class omni_schema:SoftwareEnvironment ; sh:description "Reference to a software environment by key." ; sh:maxCount 1 ; @@ -217,28 +228,17 @@ omni_schema:Module a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path omni_schema:software_environment ], + [ sh:class omni_schema:Repository ; + sh:description "The code repository hosting the module." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path omni_schema:repository ], [ sh:class omni_schema:Parameter ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; - sh:path omni_schema:parameters ], - [ sh:class omni_schema:Module ; - sh:description "Ignore these module's outputs as input." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path omni_schema:exclude ], - [ sh:datatype xsd:anyURI ; - sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path schema1:name ] ; + sh:path omni_schema:parameters ] ; sh:targetClass omni_schema:Module . omni_schema:SoftwareEnvironment a sh:NodeShape ; @@ -247,6 +247,24 @@ omni_schema:SoftwareEnvironment a sh:NodeShape ; sh:description "Contains snapshots of the software environment required for the modules to run." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; + sh:description "Apptainer image static ORAS url, including name:tag." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path omni_schema:apptainer ], + [ sh:datatype xsd:string ; + sh:description "Environment module name." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path omni_schema:envmodule ], + [ sh:datatype xsd:string ; + sh:description "Conda environment file." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path omni_schema:conda ], + [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; @@ -258,12 +276,6 @@ omni_schema:SoftwareEnvironment a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 5 ; sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "Apptainer image static ORAS url, including name:tag." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path omni_schema:apptainer ], [ sh:datatype xsd:anyURI ; sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; @@ -276,19 +288,7 @@ omni_schema:SoftwareEnvironment a sh:NodeShape ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path omni_schema:easyconfig ], - [ sh:datatype xsd:string ; - sh:description "Conda environment file." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path omni_schema:conda ], - [ sh:datatype xsd:string ; - sh:description "Environment module name." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path omni_schema:envmodule ] ; + sh:path omni_schema:easyconfig ] ; sh:targetClass omni_schema:SoftwareEnvironment . schema1:Thing a sh:NodeShape ; @@ -296,12 +296,6 @@ schema1:Thing a sh:NodeShape ; sh:description "A generic grouping for any identifiable entity" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; @@ -313,6 +307,12 @@ schema1:Thing a sh:NodeShape ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path schema1:identifier ] ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path schema1:description ] ; sh:targetClass schema1:Thing . diff --git a/project/shex/omni_schema.shex b/project/shex/omni_schema.shex index 04c90af..61ec528 100644 --- a/project/shex/omni_schema.shex +++ b/project/shex/omni_schema.shex @@ -51,7 +51,8 @@ linkml:Sparqlpath xsd:string @linkml:String ; [ - ] ; + + ] ; @linkml:String ; [ ] ; @ + ; diff --git a/src/omni_schema/datamodel/omni_schema.py b/src/omni_schema/datamodel/omni_schema.py index 7e9affe..50b19ad 100644 --- a/src/omni_schema/datamodel/omni_schema.py +++ b/src/omni_schema/datamodel/omni_schema.py @@ -1,5 +1,5 @@ # Auto generated from omni_schema.yaml by pythongen.py version: 0.0.1 -# Generation date: 2024-08-27T15:30:28 +# Generation date: 2024-08-27T15:40:48 # Schema: omni-schema # # id: https://w3id.org/omnibenchmark/omni-schema @@ -398,6 +398,7 @@ class SoftwareBackendEnum(EnumDefinitionImpl): apptainer = PermissibleValue(text="apptainer") envmodules = PermissibleValue(text="envmodules") conda = PermissibleValue(text="conda") + docker = PermissibleValue(text="docker") _defn = EnumDefinition( name="SoftwareBackendEnum", diff --git a/src/omni_schema/schema/omni_schema.yaml b/src/omni_schema/schema/omni_schema.yaml index 5a3d10c..aa25386 100644 --- a/src/omni_schema/schema/omni_schema.yaml +++ b/src/omni_schema/schema/omni_schema.yaml @@ -32,6 +32,8 @@ enums: text: envmodules conda: text: conda + docker: + text: docker classes: IdentifiableEntity: From 284ec473dc300d478e57869238ffd687f153b394 Mon Sep 17 00:00:00 2001 From: Daniel Incicau Date: Tue, 27 Aug 2024 15:44:05 +0200 Subject: [PATCH 5/5] Add host SoftwareBackendEnum --- project/excel/omni_schema.xlsx | Bin 8547 -> 8549 bytes project/jsonld/omni_schema.context.jsonld | 2 +- project/jsonld/omni_schema.jsonld | 9 +- project/jsonschema/omni_schema.schema.json | 3 +- project/owl/omni_schema.owl.ttl | 176 ++++++++-------- project/shacl/omni_schema.shacl.ttl | 234 ++++++++++----------- project/shex/omni_schema.shex | 3 +- src/omni_schema/datamodel/omni_schema.py | 3 +- src/omni_schema/schema/omni_schema.yaml | 2 + 9 files changed, 223 insertions(+), 209 deletions(-) diff --git a/project/excel/omni_schema.xlsx b/project/excel/omni_schema.xlsx index 616ad77b4bd33acba4d02cdf75265415ad07ea7e..513bfacad665ee1ef60d609336c72aa585eba390 100644 GIT binary patch delta 1336 zcmaFt^wfzvz?+#xgn@y9gCTYz_aTnhTItA-d0V_DUe&6v>si0zb!(>jgb6cP9*J4r z6T7%1FzL#>`;(`wWj@%O{Ku{?N88k@aqe>U`<9>9XzH+CzNK(s?Ih;S!VHZ3DJdtE z5|ekl-ZN2VejUHxquqCer&QMQwnb>26mm;^m6lu-q%~*iyTjWjJ17Qtx9PBJY+};W znQZ>>e4FOXlZr29zN-Ii_j+|_x3uVoUq3$B=+4iQj)+>aWThzA7nPl#&sI#d=F8>1 z-}N=~TX^FYB|m|hk}Y26PI{N_zn3>@*_qR+v+gf@dUo52Bb!9R%kvk%cK`31VYRgU zm;ABK3sye7zTb2{lFxyjo*6SoS%8g!VU9WjgD@~WDsndeWz=Tl0|m%|s*VpPObiT{ zStl0?Nly0X5U6*YoAR2qF*(8a(pGIQ5#4LHY+YxMIHd$Geo^)Jci_3DvFYpct2Z81 zmb>R-lsjSDK9&bB!c*7GKc>2Qwo2!D?-f(*9ofV3u6ayN63m=j;l7}2TFA^48<}~k zQ!kmFyCk-Ixz5p9z1s@>C$3-Zb@8;SM9#908g>l)Rl!BvDv__Q)U(Mo?zdL#m?864 zWEazG(_0-0w!Qm%)V5o@t^T-V;m7=QfgWkCJ9rQI8uqp;su@fuHdy%NJCCt}TErxe zx_7S3mhoUw4jZN%J4n8&6*Rh!C+A6a@4QEZ?6kFBu7Osm()l3u) z^f2@OT)?5{8hATkiM!gttrhi;-biYs%vRHJWYIYJeadOOQ(QT5Uas36WVb}hpM5+_ z+I2(B${Ox%FCLt$-r1v~f6Xzn#vxK`xphXkyc_4YNa3iLY~N(r_SHqqecHY1%q8m+ z)-SIAP4vDH%a{L4V%O?P_kV3!yK2{|irdTM8_s)L|6A=Yl)2IQ{=2Gm6W&iYimLy& z=aMvwJjy+rcV6Vti4!w>E z_nJx$Jhby1}k% zueoM!%<5mN6T4u6!uM)nE=80T$85v_Y>+|daQLlJ=K~x2Q0f>4j zPz9n=gbG2_HQ}`&sztPhi7|FEqr?j!=as}6pxES#3c{05N&N*1oRH202^h)R!n5w= za#?er(0W-1UX;W;`H!q6P<$enFb^<&gF!=M2iN3>a-x&74tK~|jr zZ$>5&W@r%uG%+(r;*kx|L{SVAqlLhlPJm6h1vKTXFj#<30c5O#f-Gb8WIF{JAe&J_ zcygWsSL6?I28Q^e)SO~{JrId*Rc>}~`U0R;j4TWc{K$@HdY~UKJr{JfcXvld)w`kAWsLL*$fxGMdqqp&~nD>4B{bS?WD=$=cIh;RO z$#o|nhIiZBMK1e2`Od^Kx!6p&YAD^A$5XBsarUwCn}gXluWTI^kMKq$<(g#AXjvKG zb22isAn;fJg>y{J4!V)AES%;&EvQeO+0(_ zy}Yb@jr9_jt8A)lm)J{(^W}v?I~I8z zwbISoUa6_AxcckwC%-P%i$Bj!^Fq9CTX;vmnYT$K+w9gMTi1Q-v|RPW6E@5|a=3!u=7sM`-3cix zgX^U$SpL0hQAjG<5d4B`&GiiBrmrghjAZV=lURFfa@(=}*6xZkMIV`QbSDY%JNYCi zJWp^s`Cf8ag3kt(iGONLrS@C$p85WK@6Xp}^_=-jZG0~NxxhMo@(-gvu87sQJ}{e^ zf0%XoW^{+~Q7v!I*&R-sB4@Qb7if0fYE!Z`;#_yMUO4@{gW_$IL{23K&wpM!UoBp9 z;MvlU67DOGv%g)mS+_Hg<@D53+Y`F^-mRH_+T&A_?3AB^r-Cf+I_|cUQoWJxo3T{- zM!Cd~sx4Nh#Y1N3w|wR+P1Ut89$+I6bp_VW0K^PblKR=W#j zZmhlku4>(c_mhpH>i;czyI3Y$+sysr@zsB2eB2+uEco#A)0;;zX^W4fxxGlcal^n} zcf*Et&#XVhbrmr@cky`dn3{5Beb1)bWqW=e<;>fX{!!+dNA4Aa?y1E(-pnst=50H) z$n1fC(Uw*#%>b)Ok4!8xmY+k1VGd&=}aIs z*+kZs1D1y;SIU|Lg*M7M@S>#K$^T?6f#Mc&vP^AUlLh5OC+Els0tF0tgn5A39t;{9 zRd_&BhQ@joxj6yej7%cT&|(6Z1-6?c{*C~a4l97!Kmw)(NH;Xz=LH-118g9dyev~L zKUiP^KPxYaDU$<$lJ^9_k}dLr3LqC|=14rU0U9fcVQi!jSm7yokUQ@Hb)FUm3kWC( z%7b)XV*ThA1k~lu#lXOe>>$R<$qouKKuxgCl`9;}D`T5z{d@sWHUiBtW(=S#A1}PNHYbJkG&;(j0ttiX5ce16T8k?#t GNC5z$uoAWa diff --git a/project/jsonld/omni_schema.context.jsonld b/project/jsonld/omni_schema.context.jsonld index bbc9371..7e60324 100644 --- a/project/jsonld/omni_schema.context.jsonld +++ b/project/jsonld/omni_schema.context.jsonld @@ -1,7 +1,7 @@ { "comments": { "description": "Auto generated by LinkML jsonld context generator", - "generation_date": "2024-08-27T15:40:47", + "generation_date": "2024-08-27T15:42:59", "source": "omni_schema.yaml" }, "@context": { diff --git a/project/jsonld/omni_schema.jsonld b/project/jsonld/omni_schema.jsonld index eaffe80..2095b80 100644 --- a/project/jsonld/omni_schema.jsonld +++ b/project/jsonld/omni_schema.jsonld @@ -367,6 +367,9 @@ }, { "text": "docker" + }, + { + "text": "host" } ] } @@ -916,9 +919,9 @@ ], "metamodel_version": "1.7.0", "source_file": "omni_schema.yaml", - "source_file_date": "2024-08-27T15:40:43", - "source_file_size": 5266, - "generation_date": "2024-08-27T15:40:47", + "source_file_date": "2024-08-27T15:42:51", + "source_file_size": 5297, + "generation_date": "2024-08-27T15:42:59", "@type": "SchemaDefinition", "@context": [ "project/jsonld/omni_schema.context.jsonld", diff --git a/project/jsonschema/omni_schema.schema.json b/project/jsonschema/omni_schema.schema.json index f9a140d..8bf1e41 100644 --- a/project/jsonschema/omni_schema.schema.json +++ b/project/jsonschema/omni_schema.schema.json @@ -230,7 +230,8 @@ "apptainer", "envmodules", "conda", - "docker" + "docker", + "host" ], "title": "SoftwareBackendEnum", "type": "string" diff --git a/project/owl/omni_schema.owl.ttl b/project/owl/omni_schema.owl.ttl index 1e3f03c..a5d8f05 100644 --- a/project/owl/omni_schema.owl.ttl +++ b/project/owl/omni_schema.owl.ttl @@ -12,71 +12,71 @@ omni_schema:Benchmark a owl:Class, linkml:ClassDefinition ; rdfs:label "Benchmark" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:storage ], + owl:allValuesFrom omni_schema:StorageAPIEnum ; + owl:onProperty omni_schema:storage_api ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:benchmarker ], + owl:onProperty omni_schema:version ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:benchmarker ], + owl:onProperty omni_schema:stages ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:version ], + owl:minCardinality 1 ; + owl:onProperty omni_schema:software_backend ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:storage_api ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:benchmark_yaml_spec ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:storage ], + owl:onProperty omni_schema:benchmarker ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:benchmark_yaml_spec ], + owl:minCardinality 1 ; + owl:onProperty omni_schema:version ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:storage ], + owl:onProperty omni_schema:benchmarker ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:StorageAPIEnum ; - owl:onProperty omni_schema:storage_api ], + owl:allValuesFrom omni_schema:SoftwareBackendEnum ; + owl:onProperty omni_schema:software_backend ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:storage_api ], + owl:allValuesFrom omni_schema:SoftwareEnvironment ; + owl:onProperty omni_schema:software_environments ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:version ], + owl:onProperty omni_schema:benchmarker ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:Stage ; owl:onProperty omni_schema:stages ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty omni_schema:software_environments ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:storage_api ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:benchmarker ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty omni_schema:version ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty omni_schema:software_backend ], + owl:maxCardinality 1 ; + owl:onProperty omni_schema:storage ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:benchmark_yaml_spec ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty omni_schema:stages ], + owl:minCardinality 0 ; + owl:onProperty omni_schema:benchmark_yaml_spec ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:SoftwareEnvironment ; + owl:minCardinality 1 ; owl:onProperty omni_schema:software_environments ], - [ a owl:Restriction ; - owl:allValuesFrom omni_schema:SoftwareBackendEnum ; - owl:onProperty omni_schema:software_backend ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:software_backend ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:version ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:storage ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty omni_schema:storage ], omni_schema:IdentifiableEntity ; skos:definition "A multi-stage workflow to evaluate processing stage for a specific task." ; skos:inScheme . @@ -90,10 +90,10 @@ omni_schema:InputCollection a owl:Class, linkml:ClassDefinition ; rdfs:label "InputCollection" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom omni_schema:IOFile ; + owl:minCardinality 0 ; owl:onProperty omni_schema:entries ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom omni_schema:IOFile ; owl:onProperty omni_schema:entries ] ; skos:definition "A holder for valid input combinations." ; skos:inScheme . @@ -114,22 +114,22 @@ omni_schema:Repository a owl:Class, linkml:ClassDefinition ; rdfs:label "Repository" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:url ], - [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:url ], + owl:onProperty omni_schema:commit ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty omni_schema:url ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:commit ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty omni_schema:commit ], + owl:onProperty omni_schema:url ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty omni_schema:commit ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:url ] ; skos:definition "A reference to code repository containing the module's executable code." ; skos:inScheme . @@ -154,18 +154,20 @@ omni_schema:Repository a owl:Class, rdfs:label "envmodules" ; rdfs:subClassOf omni_schema:SoftwareBackendEnum . + a owl:Class, + omni_schema:SoftwareBackendEnum ; + rdfs:label "host" ; + rdfs:subClassOf omni_schema:SoftwareBackendEnum . + omni_schema:Stage a owl:Class, linkml:ClassDefinition ; rdfs:label "Stage" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty omni_schema:inputs ], + owl:onProperty omni_schema:outputs ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:modules ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:outputs ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:Module ; owl:onProperty omni_schema:modules ], @@ -175,6 +177,9 @@ omni_schema:Stage a owl:Class, [ a owl:Restriction ; owl:allValuesFrom omni_schema:IOFile ; owl:onProperty omni_schema:outputs ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty omni_schema:inputs ], omni_schema:IdentifiableEntity ; skos:definition "A benchmark subtask with equivalent and independent modules." ; skos:inScheme . @@ -366,10 +371,10 @@ omni_schema:IOFile a owl:Class, owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:path ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty omni_schema:path ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty omni_schema:path ], omni_schema:IdentifiableEntity ; skos:definition "Represents an input / output file." ; @@ -379,17 +384,11 @@ omni_schema:Module a owl:Class, linkml:ClassDefinition ; rdfs:label "Module" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:parameters ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:software_environment ], + owl:minCardinality 1 ; + owl:onProperty omni_schema:repository ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty omni_schema:exclude ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:repository ], + owl:onProperty omni_schema:parameters ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:Parameter ; owl:onProperty omni_schema:parameters ], @@ -400,14 +399,20 @@ omni_schema:Module a owl:Class, owl:minCardinality 1 ; owl:onProperty omni_schema:software_environment ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:repository ], + [ a owl:Restriction ; + owl:allValuesFrom omni_schema:Repository ; owl:onProperty omni_schema:repository ], [ a owl:Restriction ; owl:allValuesFrom omni_schema:Module ; owl:onProperty omni_schema:exclude ], [ a owl:Restriction ; - owl:allValuesFrom omni_schema:Repository ; - owl:onProperty omni_schema:repository ], + owl:minCardinality 0 ; + owl:onProperty omni_schema:exclude ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:software_environment ], omni_schema:IdentifiableEntity ; skos:definition "A single benchmark component assigned to a specific stage." ; skos:inScheme . @@ -416,41 +421,41 @@ omni_schema:SoftwareEnvironment a owl:Class, linkml:ClassDefinition ; rdfs:label "SoftwareEnvironment" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:apptainer ], - [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:easyconfig ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty omni_schema:easyconfig ], + owl:onProperty omni_schema:envmodule ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:conda ], + owl:onProperty omni_schema:apptainer ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty omni_schema:conda ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty omni_schema:apptainer ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty omni_schema:envmodule ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:apptainer ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:envmodule ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:conda ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty omni_schema:easyconfig ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty omni_schema:conda ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:envmodule ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:conda ], + owl:onProperty omni_schema:apptainer ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:easyconfig ], omni_schema:IdentifiableEntity ; skos:definition "Contains snapshots of the software environment required for the modules to run." ; skos:inScheme . @@ -463,43 +468,44 @@ omni_schema:IdentifiableEntity a owl:Class, linkml:ClassDefinition ; rdfs:label "IdentifiableEntity" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty omni_schema:id ], + owl:allValuesFrom linkml:String ; + owl:onProperty omni_schema:name ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty omni_schema:description ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty omni_schema:id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty omni_schema:name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; owl:onProperty omni_schema:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty omni_schema:name ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty omni_schema:id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty omni_schema:id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty omni_schema:name ], + owl:onProperty omni_schema:description ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty omni_schema:description ], + owl:onProperty omni_schema:name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty omni_schema:name ] ; + owl:onProperty omni_schema:id ] ; skos:definition "A generic grouping for any identifiable entity" ; skos:exactMatch schema1:Thing ; skos:inScheme . omni_schema:SoftwareBackendEnum a owl:Class, linkml:EnumDefinition ; - owl:unionOf ( ) ; + owl:unionOf ( ) ; linkml:permissible_values , , , - . + , + . a owl:Ontology ; rdfs:label "omni-schema" ; diff --git a/project/shacl/omni_schema.shacl.ttl b/project/shacl/omni_schema.shacl.ttl index 8520656..db5aaa8 100644 --- a/project/shacl/omni_schema.shacl.ttl +++ b/project/shacl/omni_schema.shacl.ttl @@ -11,6 +11,36 @@ omni_schema:Benchmark a sh:NodeShape ; sh:description "A multi-stage workflow to evaluate processing stage for a specific task." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; + sh:description "Benchmark Specification version." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path omni_schema:benchmark_yaml_spec ], + [ sh:class omni_schema:SoftwareEnvironment ; + sh:description "Dictionary of software environments keyed by their identifiers" ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path omni_schema:software_environments ], + [ sh:description "The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda." ; + sh:in ( "apptainer" "envmodules" "conda" "docker" "host" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 2 ; + sh:path omni_schema:software_backend ], + [ sh:description "The type of the storage API, i.e. S3." ; + sh:in ( "S3" ) ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path omni_schema:storage_api ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 10 ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; @@ -23,6 +53,11 @@ omni_schema:Benchmark a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 1 ; sh:path omni_schema:benchmarker ], + [ sh:class omni_schema:Stage ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 7 ; + sh:path omni_schema:stages ], [ sh:datatype xsd:anyURI ; sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; @@ -30,25 +65,6 @@ omni_schema:Benchmark a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 8 ; sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path schema1:description ], - [ sh:description "The software backend used to run the benchmark, e.g. whether apptainer, envmodules, or conda." ; - sh:in ( "apptainer" "envmodules" "conda" "docker" ) ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 2 ; - sh:path omni_schema:software_backend ], - [ sh:datatype xsd:string ; - sh:description "The place hosting all benchmark data." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path omni_schema:storage ], [ sh:datatype xsd:string ; sh:description "The version of the benchmark." ; sh:maxCount 1 ; @@ -56,29 +72,13 @@ omni_schema:Benchmark a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 0 ; sh:path omni_schema:version ], - [ sh:description "The type of the storage API, i.e. S3." ; - sh:in ( "S3" ) ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path omni_schema:storage_api ], - [ sh:class omni_schema:SoftwareEnvironment ; - sh:description "Dictionary of software environments keyed by their identifiers" ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path omni_schema:software_environments ], [ sh:datatype xsd:string ; - sh:description "Benchmark Specification version." ; + sh:description "The place hosting all benchmark data." ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path omni_schema:benchmark_yaml_spec ], - [ sh:class omni_schema:Stage ; sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 7 ; - sh:path omni_schema:stages ] ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path omni_schema:storage ] ; sh:targetClass omni_schema:Benchmark . omni_schema:InputCollection a sh:NodeShape ; @@ -106,19 +106,19 @@ omni_schema:Repository a sh:NodeShape ; sh:description "A reference to code repository containing the module's executable code." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "The git compatible url." ; + sh:description "The commit hash." ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path omni_schema:url ], + sh:order 1 ; + sh:path omni_schema:commit ], [ sh:datatype xsd:string ; - sh:description "The commit hash." ; + sh:description "The git compatible url." ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path omni_schema:commit ] ; + sh:order 0 ; + sh:path omni_schema:url ] ; sh:targetClass omni_schema:Repository . omni_schema:Stage a sh:NodeShape ; @@ -126,22 +126,26 @@ omni_schema:Stage a sh:NodeShape ; sh:closed true ; sh:description "A benchmark subtask with equivalent and independent modules." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path schema1:name ], + sh:property [ sh:class omni_schema:InputCollection ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path omni_schema:inputs ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 5 ; sh:path schema1:description ], - [ sh:class omni_schema:InputCollection ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path omni_schema:inputs ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path schema1:name ], + [ sh:class omni_schema:IOFile ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path omni_schema:outputs ], [ sh:datatype xsd:anyURI ; sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; @@ -153,11 +157,7 @@ omni_schema:Stage a sh:NodeShape ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; - sh:path omni_schema:modules ], - [ sh:class omni_schema:IOFile ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path omni_schema:outputs ] ; + sh:path omni_schema:modules ] ; sh:targetClass omni_schema:Stage . omni_schema:IOFile a sh:NodeShape ; @@ -165,12 +165,13 @@ omni_schema:IOFile a sh:NodeShape ; sh:closed true ; sh:description "Represents an input / output file." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:property [ sh:datatype xsd:anyURI ; + sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; + sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path schema1:description ], + sh:order 1 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; @@ -178,18 +179,17 @@ omni_schema:IOFile a sh:NodeShape ; sh:order 2 ; sh:path schema1:name ], [ sh:datatype xsd:string ; - sh:description "The output path pattern for the IO file." ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path omni_schema:path ], - [ sh:datatype xsd:anyURI ; - sh:description "A unique identifier for a thing" ; + sh:order 3 ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "The output path pattern for the IO file." ; sh:maxCount 1 ; - sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path schema1:identifier ] ; + sh:order 0 ; + sh:path omni_schema:path ] ; sh:targetClass omni_schema:IOFile . omni_schema:Module a sh:NodeShape ; @@ -197,18 +197,10 @@ omni_schema:Module a sh:NodeShape ; sh:closed true ; sh:description "A single benchmark component assigned to a specific stage." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path schema1:description ], + sh:property [ sh:class omni_schema:Parameter ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path omni_schema:parameters ], [ sh:datatype xsd:anyURI ; sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; @@ -221,13 +213,6 @@ omni_schema:Module a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path omni_schema:exclude ], - [ sh:class omni_schema:SoftwareEnvironment ; - sh:description "Reference to a software environment by key." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path omni_schema:software_environment ], [ sh:class omni_schema:Repository ; sh:description "The code repository hosting the module." ; sh:maxCount 1 ; @@ -235,10 +220,25 @@ omni_schema:Module a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; sh:path omni_schema:repository ], - [ sh:class omni_schema:Parameter ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path omni_schema:parameters ] ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path schema1:description ], + [ sh:class omni_schema:SoftwareEnvironment ; + sh:description "Reference to a software environment by key." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path omni_schema:software_environment ] ; sh:targetClass omni_schema:Module . omni_schema:SoftwareEnvironment a sh:NodeShape ; @@ -247,23 +247,24 @@ omni_schema:SoftwareEnvironment a sh:NodeShape ; sh:description "Contains snapshots of the software environment required for the modules to run." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "Apptainer image static ORAS url, including name:tag." ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path omni_schema:apptainer ], + sh:order 5 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "Environment module name." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; sh:path omni_schema:envmodule ], - [ sh:datatype xsd:string ; - sh:description "Conda environment file." ; + [ sh:datatype xsd:anyURI ; + sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; + sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path omni_schema:conda ], + sh:order 4 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; @@ -271,18 +272,17 @@ omni_schema:SoftwareEnvironment a sh:NodeShape ; sh:order 6 ; sh:path schema1:description ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "Conda environment file." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path schema1:name ], - [ sh:datatype xsd:anyURI ; - sh:description "A unique identifier for a thing" ; + sh:order 2 ; + sh:path omni_schema:conda ], + [ sh:datatype xsd:string ; + sh:description "Apptainer image static ORAS url, including name:tag." ; sh:maxCount 1 ; - sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path schema1:identifier ], + sh:order 3 ; + sh:path omni_schema:apptainer ], [ sh:datatype xsd:string ; sh:description "Easybuild configuration file." ; sh:maxCount 1 ; @@ -301,18 +301,18 @@ schema1:Thing a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 1 ; sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path schema1:description ], [ sh:datatype xsd:anyURI ; sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path schema1:description ] ; + sh:path schema1:identifier ] ; sh:targetClass schema1:Thing . diff --git a/project/shex/omni_schema.shex b/project/shex/omni_schema.shex index 61ec528..2d7ca7a 100644 --- a/project/shex/omni_schema.shex +++ b/project/shex/omni_schema.shex @@ -52,7 +52,8 @@ linkml:Sparqlpath xsd:string [ - ] ; + + ] ; @linkml:String ; [ ] ; @ + ; diff --git a/src/omni_schema/datamodel/omni_schema.py b/src/omni_schema/datamodel/omni_schema.py index 50b19ad..140a017 100644 --- a/src/omni_schema/datamodel/omni_schema.py +++ b/src/omni_schema/datamodel/omni_schema.py @@ -1,5 +1,5 @@ # Auto generated from omni_schema.yaml by pythongen.py version: 0.0.1 -# Generation date: 2024-08-27T15:40:48 +# Generation date: 2024-08-27T15:42:59 # Schema: omni-schema # # id: https://w3id.org/omnibenchmark/omni-schema @@ -399,6 +399,7 @@ class SoftwareBackendEnum(EnumDefinitionImpl): envmodules = PermissibleValue(text="envmodules") conda = PermissibleValue(text="conda") docker = PermissibleValue(text="docker") + host = PermissibleValue(text="host") _defn = EnumDefinition( name="SoftwareBackendEnum", diff --git a/src/omni_schema/schema/omni_schema.yaml b/src/omni_schema/schema/omni_schema.yaml index aa25386..7fe7837 100644 --- a/src/omni_schema/schema/omni_schema.yaml +++ b/src/omni_schema/schema/omni_schema.yaml @@ -34,6 +34,8 @@ enums: text: conda docker: text: docker + host: + text: host classes: IdentifiableEntity: