From 742c114a3744c125905abdb3bcbf26b882934f68 Mon Sep 17 00:00:00 2001 From: Gordon Blackadder Date: Fri, 13 Sep 2024 14:45:15 -0400 Subject: [PATCH] rename surveys, timeseries and timeseries_db --- excel_sheets/Document_metadata.xlsx | Bin 38854 -> 38854 bytes ..._metadata.xlsx => Indicator_metadata.xlsx} | Bin 51139 -> 51139 bytes excel_sheets/Indicators_db_metadata.xlsx | Bin 0 -> 15572 bytes ..._metadata.xlsx => Microdata_metadata.xlsx} | Bin 53804 -> 53806 bytes excel_sheets/Resource_metadata.xlsx | Bin 8437 -> 8437 bytes excel_sheets/Script_metadata.xlsx | Bin 40329 -> 40333 bytes excel_sheets/Table_metadata.xlsx | Bin 38933 -> 38933 bytes excel_sheets/Timeseries_db_metadata.xlsx | Bin 15569 -> 0 bytes excel_sheets/Video_metadata.xlsx | Bin 16592 -> 16589 bytes pydantic_schemas/document_schema.py | 2 +- .../generators/generate_pydantic_schemas.py | 41 ++++++++++++------ pydantic_schemas/geospatial_schema.py | 2 +- pydantic_schemas/image_schema.py | 2 +- ...meseries_schema.py => indicator_schema.py} | 2 +- ...s_db_schema.py => indicators_db_schema.py} | 2 +- pydantic_schemas/metadata_manager.py | 38 ++++++++-------- pydantic_schemas/microdata_schema.py | 2 +- pydantic_schemas/resource_schema.py | 2 +- pydantic_schemas/script_schema.py | 2 +- pydantic_schemas/table_schema.py | 2 +- .../tests/test_metadata_manager.py | 24 +++++----- .../tests/test_pydantic_to_excel.py | 4 +- pydantic_schemas/tests/test_quick_start.py | 18 ++++---- pydantic_schemas/utils/quick_start.py | 18 ++------ pydantic_schemas/video_schema.py | 2 +- 25 files changed, 84 insertions(+), 79 deletions(-) rename excel_sheets/{Timeseries_metadata.xlsx => Indicator_metadata.xlsx} (88%) create mode 100644 excel_sheets/Indicators_db_metadata.xlsx rename excel_sheets/{Survey_metadata.xlsx => Microdata_metadata.xlsx} (88%) delete mode 100644 excel_sheets/Timeseries_db_metadata.xlsx rename pydantic_schemas/{timeseries_schema.py => indicator_schema.py} (99%) rename pydantic_schemas/{timeseries_db_schema.py => indicators_db_schema.py} (99%) diff --git a/excel_sheets/Document_metadata.xlsx b/excel_sheets/Document_metadata.xlsx index 02e041742d2234867b0bbac217aeb0eefc472ed0..4a357c7c71052c2819867ecaa6e03c8a0d7c2d09 100644 GIT binary patch delta 528 zcmX@Mp6S?nCf)#VW)=|!1_lm>>=NCHyazadROI6v!T5<+wdyA`HEEn~%~YQ-VFt@1 zG1Yrv7q@V{Qq+^Y{|z%C5-V-&kX~53k`QH>pk=%b({JpCWTqH zRY_i)# z8bx`|=_D3>yx*od^Q7W6wN z|4GbHi4l2P_|2d3t&*=m$%h?h{7y!H-EnJ;@lo%($aj5c17x!v$6OvT z!(hf^7BPON}B6T-Im>Vqexp*anF~9yagpu1F&J2>8e7x@&SjmR|os3{c z&O{CfqkK{_m@)b8WNUaFOjej;4%Qbn#STo*p5hFqA3|yMsStiHl->-be?n>dX%P9= aX%=982d0^U>7UcAz_i(PS1?^S-2(t~`riKl delta 528 zcmX@Mp6S?nCf)#VW)=|!1_lm>ycX4oyazadROFkf-)tsc)vBLmbYzi^xPbbE2{Tw8 ziK*TTyJ!-abmiUK%+uF+52haf@&C`wuqB*_est(xWbX+{j{34LbFx9=+_#-g3?6Cy ze#?^-ZYkdR^}>Yr{Ep@YXP4hoEI5{TP%(40=V6UAhjY&Kd1a@i{^&ZZvVm=bW4o@Z zMz_#8oy3xt_uDjQp0vAaTz|DR_F|~8c}~co-=8nP-cl2{y|X0SAo!A0qEgnUz+UlI z=ldQzG)_H!GoR_!Q3J;diVv);Rr9a@J^aitc+SV!bJiAZyHlXHYUzV=`Nglp|3|*q zvv&K}smHFiepCq%`uAt{FE$kKN6w6yqb$J2z%WOhfkBvoVe?-`JvL@wfNa*|n9BoZ zoD;dg3uY`-+F=Q1#KhD=r0!-2bAv@b7q5gc=GUKwFmk)YnL$#MkM}(TE7{P$lM&3w znaBZQlut?qGbZ1iYz>ct$qG}u0Nz%(;3{d1ZXm^Pd43a0C(djJ6TYUHN? diff --git a/excel_sheets/Timeseries_metadata.xlsx b/excel_sheets/Indicator_metadata.xlsx similarity index 88% rename from excel_sheets/Timeseries_metadata.xlsx rename to excel_sheets/Indicator_metadata.xlsx index c955f658e6ed95d44d5406b2b4dce61eb901163b..3131f10e5e141523f14acc2f0732990c1958ec7b 100644 GIT binary patch delta 1880 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 diff --git a/excel_sheets/Indicators_db_metadata.xlsx b/excel_sheets/Indicators_db_metadata.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..91d092f0ab61facfd4fce8867a12356c1d8436e1 GIT binary patch literal 15572 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 StTZ&Nz)Kq-@o@FM-~Jcy;=zOf literal 0 HcmV?d00001 diff --git a/excel_sheets/Survey_metadata.xlsx b/excel_sheets/Microdata_metadata.xlsx similarity index 88% rename from excel_sheets/Survey_metadata.xlsx rename to excel_sheets/Microdata_metadata.xlsx index 0d0eae172b74b020d2d2de7f587678c9607cf945..422ac6618d7515c150fa391ff3b54e753944dbf9 100644 GIT binary patch delta 2496 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 diff --git a/excel_sheets/Resource_metadata.xlsx b/excel_sheets/Resource_metadata.xlsx index 835494a37fe0c53a45e1d25c52dc311ddae1dada..65bd3f3c7d0462f7aa26629c586e76e05770a27b 100644 GIT binary patch delta 423 zcmezB_|=g&z?+#xgn@y9gCV;_cOvfr4j>h&UL_Gb@v2sR9Yd4GY1Sj0Dk^G?J6t=r zyPEh;k=XkC`;yex4h4@T_V>%*?z+&JE&oyTSHnb|WmjM9vMZFmmg6sC;c%(CL~H8I z7sWfiUer8wen<0yFS~CknuM0J@_9iYZ%b^~Ozks9d)BK*j++*>6)8=w(}M zZn?PBUiw*z;_(#mta^#IqKtIC{E)-1A0Pg_rzY{Y%c|=qmKe->-O*Ju<+AHTgEFRl zqDKqAg)^Sj@_$gmu_JBylcjt2-o9geGvusm;9Zf@-7D8uR-c^xEVthoKkHui#H(8MTT(r`cf~o(ad1i!%Gj>) zaa-2ecA>>(|L1MVxhrtT;@JDg$F~J(>rdhSAvNc?gYL1T30BgrpR&soJ~1h*VwRHp z>~cfoU5vq`OU7>wdY4YAZkhDC+Q1{ody)Z{vAy)o$dy;ue3`#+HcJ#^S;mE+7A5@$ zr-ayq|L4q@G*c$YI=H^}{_|SX!py}?c5(CWFMGQAn%kr>#q6xLEnFHWThsQOnBTUp zZFW-ayuYyydp(3%=Gv^gsam;SPR`tajb>%#^pBy(rq7<#ouzr|YFWwO7yG$-FTY*) zxBa71M%It7`DevZ{2ng02l>E^_hL@W zAjV`9sb^pTS?O3tut2TMBd|b{tT#kpgPb)yFeiVOGY6~EmA3=adGgL+dW*aTn0_yB T2BtL>tiW`tf-9I_tKb0u@g}Tk diff --git a/excel_sheets/Script_metadata.xlsx b/excel_sheets/Script_metadata.xlsx index cff1cbdb1b7e753bebea7a9016b8bfc56bd439ee..a08a0c7126571af2544745c1a4b2e27768d107cd 100644 GIT binary patch delta 853 zcmeC&&D6V_i8sKTnMH(wfq{b|yF_;)?}2(C71{QRf9pG-;Aut%20yx>NfRHObV}Ttwg(BwrJidJE-Y(egpIR z`Y+3GDSp_rhq--8j}q%*gYTOSt+jgRP5q~BGWkHp0XErfB8{Rv=X4SaKHhKBoOx35 z*34JG_q|x%=`C$oQD0XzciQ<}Y0s@v#*xyxB@V8!6CS(%GcYlY5qbUi&3vX=uCo+g zJSdzwchdG(g6 zV2}VtEDUUG+&}riEOoH9S3qqYN?>g=vjxFI2D7D^WRgHah9;os5AbGW5@CQRo5%^Q zrJ4`87#OTF(T$y(2R3L0&>)b{_5cmqTnQF>P|2!;Yz|O5(*De&EiSEkqv7P(xoT`v IXM#)u0JF<0nE(I) delta 837 zcmeC(&D6P@i8sKTnMH(wfq{b|zeRN-?}2(C75TJd4m7)YbF)FL*05L2!ktyR5rLw~(GraKXp(ZI+QI49&Pr zd7KTe7*99TdieF@!^$|j{9PxOIiK3HNyBi$L%SC*mFi`pS?_nfGWosQp=_#}hh5dJ zl;=;D?%R9&UivPftD$;%MH}yhIbF++?B0Iz>teb8N+o-9%g);Oq&J3rczyqiI!Xv_ ze#>ab#taOj&3YWOdBBV_BFA{ajHyZ!?ZFJqq&kSysytzCu*iYRl@LZw>uCtXYGODu zNNVzwDbK)4YNu{y1T&1Mb3hn&Gm^oK$xCKhbHbx#@{5^fV2z5iq#5r_ww283Tg^Fv?(HTca$;`J2`Q#8r#H~AVC0oJ0ZLP diff --git a/excel_sheets/Table_metadata.xlsx b/excel_sheets/Table_metadata.xlsx index 6b2a61c3dfa7a48796860ec91a0838152dce93b1..d0e32ec84e2862fc29ea24910184ec32e9d37f65 100644 GIT binary patch delta 527 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 Oz`p@N;xL_GpZ)`44Vdr% diff --git a/excel_sheets/Video_metadata.xlsx b/excel_sheets/Video_metadata.xlsx index 741d2257a895e5618789d48aad0424a4d36248d8..ebfc6a5f1148f6e8590c0f756ad8e00720feacb8 100644 GIT binary patch delta 587 zcmcc6$auDqkvG7bnMH(wfq{b|uS9nu?}2(C6*)=6T;nxR@H8U>gCLMj$xjX_$}cF^ zPtGq&)vL(OSvv8c-(druw)oUndrL1fB?VsNzU-%>BF(l*FO94rMf_> z-u}zH1t&gRZ#Z%*pcRUW&2DpQkp}9x&W!Fd-N{QF)YvNRK*j(7frHi- delta 611 zcmX@x$atZVkvG7bnMH(wfq{des6}-m?}2(C6?rlyEae?g@H8U>gCLMj$xjX_$}cF^ zPtGq&)vL(OnL5$e|F8j1+y7Hjs$XwOb#{r>SMXC%G~_&@>$OLB(a(USEAQ@Kp0-xH z>2%-6-#<34y`shORC%9^yuqY{TVCY8o)nOH_M3|%gUVKS?O;2BJdW*lQJ#m5-zj+1 zf7LAKP<^hw!6V3fk^$Fd1L>QAE3dBMiQhPvC5mxd#>K!UCH)6ygxqHT%bhW4=9|eg zSFU^gY2BffK} z�la`4yub8#6GRHfwXV>wy_t%|e(#jLAG!&%gp-tzsF$0--jKzyemb-VlKfJ8MpO z7*9T9XC@Eg&5W6&EWpOVFh`w%K^Pd~FwnsGV6vjUk^)GLjN`<(5IqKl-_IEtBwz}F z^tMJtj>%RWQj=@#dBAq|*h@36p1i_d#s;KqyZh^|13+bBObiU%NZJ}0nXDKX;)_yq ziuLtCWPmp#lL!MmF-&rhW_&$a#z78jrY(@?Jvq`r6YSjCZB8xHz{GK#8Qr-ClNUOu KvDMgtECK+W7Sc%o diff --git a/pydantic_schemas/document_schema.py b/pydantic_schemas/document_schema.py index 514d337..4a4dad3 100644 --- a/pydantic_schemas/document_schema.py +++ b/pydantic_schemas/document_schema.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: document-schema.json -# timestamp: 2024-09-05T20:33:52+00:00 +# timestamp: 2024-09-13T18:34:42+00:00 from __future__ import annotations diff --git a/pydantic_schemas/generators/generate_pydantic_schemas.py b/pydantic_schemas/generators/generate_pydantic_schemas.py index cd58c5b..6344806 100644 --- a/pydantic_schemas/generators/generate_pydantic_schemas.py +++ b/pydantic_schemas/generators/generate_pydantic_schemas.py @@ -5,27 +5,40 @@ OUTPUT_DIR = os.path.join("pydantic_schemas") PYTHON_VERSION = "3.11" BASE_CLASS = ".utils.schema_base_model.SchemaBaseModel" -INPUTS = [ - "document-schema.json", - "geospatial-schema.json", - "image-schema.json", - "microdata-schema.json", - "resource-schema.json", - "script-schema.json", - "table-schema.json", - "timeseries-db-schema.json", - "timeseries-schema.json", - "video-schema.json", -] +# INPUTS = [ +# "document-schema.json", +# "geospatial-schema.json", +# "image-schema.json", +# "microdata-schema.json", +# "resource-schema.json", +# "script-schema.json", +# "table-schema.json", +# "timeseries-db-schema.json", +# "timeseries-schema.json", +# "video-schema.json", +# ] + +INPUTS_TO_OUTPUTS = { + "document-schema.json": "document_schema.py", + "geospatial-schema.json": "geospatial_schema.py", + "image-schema.json": "image_schema.py", + "microdata-schema.json": "microdata_schema.py", + "resource-schema.json": "resource_schema.py", + "script-schema.json": "script_schema.py", + "table-schema.json": "table_schema.py", + "timeseries-db-schema.json": "indicators_db_schema.py", + "timeseries-schema.json": "indicator_schema.py", + "video-schema.json": "video_schema.py", +} if not os.path.exists(OUTPUT_DIR): os.makedirs(OUTPUT_DIR) -for input_file in INPUTS: +for input_file, output_file in INPUTS_TO_OUTPUTS.items(): print(f"Generating pydantic schema for {input_file}") input_path = os.path.join(SCHEMA_DIR, input_file) - output_file = os.path.splitext(input_file)[0] + ".py" + # output_file = os.path.splitext(input_file)[0] + ".py" output_path = os.path.join(OUTPUT_DIR, output_file).replace("-", "_") run( [ diff --git a/pydantic_schemas/geospatial_schema.py b/pydantic_schemas/geospatial_schema.py index 714f2bc..4aef392 100644 --- a/pydantic_schemas/geospatial_schema.py +++ b/pydantic_schemas/geospatial_schema.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: geospatial-schema.json -# timestamp: 2024-09-05T20:33:54+00:00 +# timestamp: 2024-09-13T18:34:45+00:00 from __future__ import annotations diff --git a/pydantic_schemas/image_schema.py b/pydantic_schemas/image_schema.py index 53db665..84362e4 100644 --- a/pydantic_schemas/image_schema.py +++ b/pydantic_schemas/image_schema.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: image-schema.json -# timestamp: 2024-09-05T20:33:56+00:00 +# timestamp: 2024-09-13T18:34:48+00:00 from __future__ import annotations diff --git a/pydantic_schemas/timeseries_schema.py b/pydantic_schemas/indicator_schema.py similarity index 99% rename from pydantic_schemas/timeseries_schema.py rename to pydantic_schemas/indicator_schema.py index bb7e452..247d78f 100644 --- a/pydantic_schemas/timeseries_schema.py +++ b/pydantic_schemas/indicator_schema.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: timeseries-schema.json -# timestamp: 2024-09-05T20:34:07+00:00 +# timestamp: 2024-09-13T18:35:02+00:00 from __future__ import annotations diff --git a/pydantic_schemas/timeseries_db_schema.py b/pydantic_schemas/indicators_db_schema.py similarity index 99% rename from pydantic_schemas/timeseries_db_schema.py rename to pydantic_schemas/indicators_db_schema.py index 9d2ad49..a77eac9 100644 --- a/pydantic_schemas/timeseries_db_schema.py +++ b/pydantic_schemas/indicators_db_schema.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: timeseries-db-schema.json -# timestamp: 2024-09-05T20:34:05+00:00 +# timestamp: 2024-09-13T18:35:00+00:00 from __future__ import annotations diff --git a/pydantic_schemas/metadata_manager.py b/pydantic_schemas/metadata_manager.py index 0cfe462..70f9c69 100644 --- a/pydantic_schemas/metadata_manager.py +++ b/pydantic_schemas/metadata_manager.py @@ -7,12 +7,12 @@ from . import ( # image_schema, document_schema, geospatial_schema, + indicator_schema, + indicators_db_schema, microdata_schema, resource_schema, script_schema, table_schema, - timeseries_db_schema, - timeseries_schema, video_schema, ) from .utils.excel_to_pydantic import excel_doc_to_pydantic, excel_single_sheet_to_pydantic @@ -24,7 +24,7 @@ class MetadataManager: """ Interface with Excel for creating, saving and updating metadata for various types: - documents, scripts, survey, table, timeseries, timeseries_db, video + document, indicator, indicators_db, microdata, resource, script, table, video Retrieve pydantic model definitions for each metadata type """ @@ -35,10 +35,10 @@ class MetadataManager: # "image":image_schema.ImageDataTypeSchema, "resource": resource_schema.Model, "script": script_schema.ResearchProjectSchemaDraft, - "survey": microdata_schema.MicrodataSchema, + "microdata": microdata_schema.MicrodataSchema, "table": table_schema.Model, - "timeseries": timeseries_schema.TimeseriesSchema, - "timeseries_db": timeseries_db_schema.TimeseriesDatabaseSchema, + "indicator": indicator_schema.TimeseriesSchema, + "indicators_db": indicators_db_schema.TimeseriesDatabaseSchema, "video": video_schema.Model, } @@ -48,10 +48,10 @@ class MetadataManager: # "image":, "resource": write_to_single_sheet, "script": write_across_many_sheets, - "survey": write_across_many_sheets, + "microdata": write_across_many_sheets, "table": write_across_many_sheets, - "timeseries": write_across_many_sheets, - "timeseries_db": write_to_single_sheet, # one sheet + "indicator": write_across_many_sheets, + "indicators_db": write_to_single_sheet, # one sheet "video": write_to_single_sheet, # one sheet } @@ -61,10 +61,10 @@ class MetadataManager: # "image":, "resource": excel_single_sheet_to_pydantic, "script": excel_doc_to_pydantic, - "survey": excel_doc_to_pydantic, + "microdata": excel_doc_to_pydantic, "table": excel_doc_to_pydantic, - "timeseries": excel_doc_to_pydantic, - "timeseries_db": excel_single_sheet_to_pydantic, # one sheet + "indicator": excel_doc_to_pydantic, + "indicators_db": excel_single_sheet_to_pydantic, # one sheet "video": excel_single_sheet_to_pydantic, # one sheet } @@ -80,8 +80,12 @@ def metadata_type_names(self) -> List[str]: def standardize_metadata_name(self, metadata_name: str) -> str: metadata_name = metadata_name.lower() metadata_name = metadata_name.replace("-", "_").replace(" ", "_") - if metadata_name == "microdata" or metadata_name == "survey_microdata": - metadata_name = "survey" + if metadata_name == "survey" or metadata_name == "survey_microdata": + metadata_name = "microdata" + elif metadata_name == "timeseries": + metadata_name = "indicator" + elif metadata_name == "timeseries_db": + metadata_name = "indicators_db" self._raise_if_unsupported_metadata_name(metadata_name=metadata_name) return metadata_name @@ -106,7 +110,7 @@ def write_metadata_outline_to_excel( Args: metadata_name_or_class (str or type[BaseModel]): the name of a supported metadata type, currently: - document, script, series, survey, table, timeseries, timeseries_DB, video + document, indicator, indicators_db, microdata, resource, script, table, video Currently not supported: geospatial, image If passed as a BaseModel type, for instance this is what you would do with a template, then the writer @@ -156,7 +160,7 @@ def save_metadata_to_excel( Args: metadata_name_or_class (str or type[BaseModel]): the name of a supported metadata type, currently: - document, script, series, survey, table, timeseries, timeseries_DB, video + document, indicator, indicators_db, microdata, resource, script, table, video Currently not supported: geospatial, image If passed as a BaseModel type, for instance this is what you would do with a template, then the writer defaults to a single page. @@ -230,7 +234,7 @@ def _get_metadata_name_from_excel_file(filename: str) -> str: def read_metadata_from_excel(self, filename: str, metadata_class: Optional[Type[BaseModel]] = None) -> BaseModel: """ Read in metadata from an appropriately formatted Excel file as a pydantic object. - If using standard metadata types (documents, resource, script, survey, table, timeseries, timeseries_db, video) then there is no need to pass in the metadata_class. But if using a template, then the class must be provided. + If using standard metadata types (document, indicator, indicators_db, microdata, resource, script, table, video) then there is no need to pass in the metadata_class. But if using a template, then the class must be provided. Args: filename (str): The path to the Excel file. diff --git a/pydantic_schemas/microdata_schema.py b/pydantic_schemas/microdata_schema.py index 0829736..89469e9 100644 --- a/pydantic_schemas/microdata_schema.py +++ b/pydantic_schemas/microdata_schema.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: microdata-schema.json -# timestamp: 2024-09-05T20:33:58+00:00 +# timestamp: 2024-09-13T18:34:51+00:00 from __future__ import annotations diff --git a/pydantic_schemas/resource_schema.py b/pydantic_schemas/resource_schema.py index 64fd55e..0201c74 100644 --- a/pydantic_schemas/resource_schema.py +++ b/pydantic_schemas/resource_schema.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: resource-schema.json -# timestamp: 2024-09-05T20:34:00+00:00 +# timestamp: 2024-09-13T18:34:53+00:00 from __future__ import annotations diff --git a/pydantic_schemas/script_schema.py b/pydantic_schemas/script_schema.py index 73db35c..c226999 100644 --- a/pydantic_schemas/script_schema.py +++ b/pydantic_schemas/script_schema.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: script-schema.json -# timestamp: 2024-09-05T20:34:02+00:00 +# timestamp: 2024-09-13T18:34:55+00:00 from __future__ import annotations diff --git a/pydantic_schemas/table_schema.py b/pydantic_schemas/table_schema.py index 58d3859..55a5729 100644 --- a/pydantic_schemas/table_schema.py +++ b/pydantic_schemas/table_schema.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: table-schema.json -# timestamp: 2024-09-05T20:34:03+00:00 +# timestamp: 2024-09-13T18:34:58+00:00 from __future__ import annotations diff --git a/pydantic_schemas/tests/test_metadata_manager.py b/pydantic_schemas/tests/test_metadata_manager.py index 5df4fef..426ab84 100644 --- a/pydantic_schemas/tests/test_metadata_manager.py +++ b/pydantic_schemas/tests/test_metadata_manager.py @@ -4,7 +4,7 @@ @pytest.mark.parametrize( - "metadata_name", ["document", "script", "survey", "table", "timeseries_db", "timeseries", "video"] + "metadata_name", ["document", "script", "microdata", "table", "indicators_db", "indicator", "video"] ) def test_metadata_by_name(tmpdir, metadata_name): mm = MetadataManager() @@ -30,7 +30,7 @@ def test_metadata_by_name(tmpdir, metadata_name): @pytest.mark.parametrize( - "metadata_name", ["document", "script", "survey", "table", "timeseries_db", "timeseries", "video"] + "metadata_name", ["document", "script", "microdata", "table", "timeseries_db", "indicator", "video"] ) def test_metadata_by_class(tmpdir, metadata_name): mm = MetadataManager() @@ -59,23 +59,25 @@ def test_standardize_metadata_name(): "survey microdata", "microdata", "table", + "indicators-db", "timeseries-db", - "timeseries-db", - "TimeSeries", + "INdicator", + "timeseries", "VIdeo", ] expecteds = [ "document", "script", - "survey", - "survey", - "survey", - "survey", + "microdata", + "microdata", + "microdata", + "microdata", "table", - "timeseries_db", - "timeseries_db", - "timeseries", + "indicators_db", + "indicators_db", + "indicator", + "indicator", "video", ] diff --git a/pydantic_schemas/tests/test_pydantic_to_excel.py b/pydantic_schemas/tests/test_pydantic_to_excel.py index 6090fd1..e5884bc 100644 --- a/pydantic_schemas/tests/test_pydantic_to_excel.py +++ b/pydantic_schemas/tests/test_pydantic_to_excel.py @@ -7,14 +7,14 @@ from pydantic import BaseModel, Field from pydantic_schemas.document_schema import ScriptSchemaDraft +from pydantic_schemas.indicator_schema import TimeseriesSchema +from pydantic_schemas.indicators_db_schema import TimeseriesDatabaseSchema # from pydantic_schemas.definitions.geospatial_schema import GeospatialSchema # from pydantic_schemas.definitions.image_schema import ImageDataTypeSchema from pydantic_schemas.microdata_schema import MicrodataSchema from pydantic_schemas.script_schema import ResearchProjectSchemaDraft from pydantic_schemas.table_schema import Model as TableModel -from pydantic_schemas.timeseries_db_schema import TimeseriesDatabaseSchema -from pydantic_schemas.timeseries_schema import TimeseriesSchema from pydantic_schemas.utils.excel_to_pydantic import ( excel_doc_to_pydantic, excel_sheet_to_pydantic, diff --git a/pydantic_schemas/tests/test_quick_start.py b/pydantic_schemas/tests/test_quick_start.py index 3e506e1..9d53dc2 100644 --- a/pydantic_schemas/tests/test_quick_start.py +++ b/pydantic_schemas/tests/test_quick_start.py @@ -4,12 +4,8 @@ import pytest from pydantic import AnyUrl, BaseModel, Field, confloat -from pydantic_schemas.utils.quick_start import ( - DEFAULT_URL, - METADATA_TYPES_FILE_MAP, - create_empty_schema_from_path, - make_skeleton, -) +from pydantic_schemas.metadata_manager import MetadataManager +from pydantic_schemas.utils.quick_start import DEFAULT_URL, make_skeleton # create_empty_schema_from_path, def test_simple_strings(): @@ -239,7 +235,9 @@ class BadFieldNames(BaseModel): assert actual == expected, actual -@pytest.mark.parametrize("k, v", [(k, v) for k, v in METADATA_TYPES_FILE_MAP.items()]) -def test_actual_schemas(k, v): - base = "pydantic_schemas.{}" - create_empty_schema_from_path(base.format(k), v, debug=True) +@pytest.mark.parametrize("n", [n for n in MetadataManager().metadata_type_names]) +def test_actual_schemas(n): + if n == "geospatial": + return + klass = MetadataManager().metadata_class_from_name(n) + make_skeleton(klass) diff --git a/pydantic_schemas/utils/quick_start.py b/pydantic_schemas/utils/quick_start.py index de09833..13d11bd 100644 --- a/pydantic_schemas/utils/quick_start.py +++ b/pydantic_schemas/utils/quick_start.py @@ -8,18 +8,6 @@ from .utils import standardize_keys_in_dict -METADATA_TYPES_FILE_MAP = { - "document_schema": "ScriptSchemaDraft", - # "geospatial_schema": "GeospatialSchema", - # "image_schema": "ImageDataTypeSchema", - "microdata_schema": "MicrodataSchema", - "script_schema": "ResearchProjectSchemaDraft", - "table_schema": "Model", - "timeseries_db_schema": "TimeseriesDatabaseSchema", - "timeseries_schema": "TimeseriesSchema", - "video_schema": "Model", -} - DEFAULT_URL = "http://www.example.com" @@ -242,6 +230,6 @@ def make_skeleton(cl: Type[BaseModel], debug=False, indentation=""): return cl(**param_values) -def create_empty_schema_from_path(module_name, class_name, debug=False): - MyClass = getattr(importlib.import_module(module_name), class_name) - return make_skeleton(MyClass, debug=debug) +# def create_empty_schema_from_path(module_name, class_name, debug=False): +# MyClass = getattr(importlib.import_module(module_name), class_name) +# return make_skeleton(MyClass, debug=debug) diff --git a/pydantic_schemas/video_schema.py b/pydantic_schemas/video_schema.py index 64b2904..0d6485b 100644 --- a/pydantic_schemas/video_schema.py +++ b/pydantic_schemas/video_schema.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: video-schema.json -# timestamp: 2024-09-05T20:34:08+00:00 +# timestamp: 2024-09-13T18:35:04+00:00 from __future__ import annotations