diff --git a/README.md b/README.md index 9cdfb73..e1ebd62 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ -# Openspending fiscal data types +# Openspending Fiscal Data Types -The source of truth for OS-types is `src/os-types.json`. Please ignore the CSV file and associated CSV parser. \ No newline at end of file +This repository contains: + +- The complete list of OS Types, their properties and relationships +- The complete list of descriptions for these types (English only at the moment) +- The logic for converting a list of fields with their types to a full Fiscal Data Package Model +- Logic for validating data against a specific model +- Test suite for making sure everything's working as intended \ No newline at end of file diff --git a/openspending-types.csv b/openspending-types.csv deleted file mode 100644 index c30550b..0000000 --- a/openspending-types.csv +++ /dev/null @@ -1,119 +0,0 @@ -type,type,type,type,type,parent,labelfor,dimensionType,classificationType,dataType,dataFormat,uniqueIdentifier,constraints -functional-classification,cofog,division,code,full,,,classification,functional,string,,y, -,,,,part,,,classification,functional,string,,y, -,,,label,,,functional-classification:cofog:division:code,classification,functional,string,,, -,,,description,,,,classification,functional,string,,, -,,group,code,full,functional-classification:cofog:division:code,,classification,functional,string,,y, -,,,,part,functional-classification:cofog:division:code,,classification,functional,string,,y, -,,,label,,,functional-classification:cofog:group:code,classification,functional,string,,, -,,,description,,,,classification,functional,string,,, -,,class,code,full,functional-classification:cofog:group:code,,classification,functional,string,,y, -,,,,part,functional-classification:cofog:group:code,,classification,functional,string,,y, -,,,label,,,functional-classification:cofog:class:code,classification,functional,string,,, -,,,description,,,,classification,functional,string,,, -,,code,full,,,,classification,functional,string,,y, -,,,part,,,,classification,functional,string,,y, -,,label,,,,functional-classification:cofog:code,classification,functional,string,,, -,,description,,,,,classification,functional,string,,, -,generic,level1,code,full,,,classification,functional,string,,y, -,,,,part,,,classification,functional,string,,y, -,,,label,,,functional-classification:generic:level1:code,classification,functional,string,,, -,,,description,,,,classification,functional,string,,, -,,level2,code,full,functional-classification:generic:level1:code,,classification,functional,string,,y, -,,,,part,functional-classification:generic:level1:code,,classification,functional,string,,y, -,,,label,,,functional-classification:generic:level2:code,classification,functional,string,,, -,,,description,,,,classification,functional,string,,, -,,level3,code,full,functional-classification:generic:level2:code,,classification,functional,string,,y, -,,,,part,functional-classification:generic:level2:code,,classification,functional,string,,y, -,,,label,,,functional-classification:generic:level3:code,classification,functional,string,,, -,,,description,,,,classification,functional,string,,, -,,level4,code,full,functional-classification:generic:level3:code,,classification,functional,string,,y, -,,,,part,functional-classification:generic:level3:code,,classification,functional,string,,y, -,,,label,,,functional-classification:generic:level4:code,classification,functional,string,,, -,,,description,,,,classification,functional,string,,, -,,code,full,,,,classification,functional,string,,y, -,,,part,,,,classification,functional,string,,y, -,,label,,,,,classification,functional,string,,, -,,description,,,,,classification,functional,string,,, -administrative-classification,generic,level1,code,full,,,classification,administrative,string,,y, -,,,,part,,,classification,administrative,string,,y, -,,,label,,,administrative-classification:generic:level1:code,classification,administrative,string,,, -,,,description,,,,classification,administrative,string,,, -,,level2,code,full,administrative-classification:generic:level1:code,,classification,administrative,string,,y, -,,,,part,administrative-classification:generic:level1:code,,classification,administrative,string,,y, -,,,label,,,administrative-classification:generic:level2:code,classification,administrative,string,,, -,,,description,,,,classification,administrative,string,,, -,,level3,code,full,administrative-classification:generic:level2:code,,classification,administrative,string,,y, -,,,,part,administrative-classification:generic:level2:code,,classification,administrative,string,,y, -,,,label,,,administrative-classification:generic:level3:code,classification,administrative,string,,, -,,,description,,,,classification,administrative,string,,, -,,level4,code,full,administrative-classification:generic:level3:code,,classification,administrative,string,,y, -,,,,part,administrative-classification:generic:level3:code,,classification,administrative,string,,y, -,,,label,,,administrative-classification:generic:level4:code,classification,administrative,string,,, -,,,description,,,,classification,administrative,string,,, -,,code,full,,,,classification,administrative,string,,y, -,,,part,,,,classification,administrative,string,,y, -,,label,,,,administrative-classification:generic:code,classification,administrative,string,,, -,,description,,,,,classification,administrative,string,,, -economic-classification,gfsm,level1,code,,,,classification,economic,string,,y, -,,,label,,,economic-classification:gfsm:level1:code,classification,economic,string,,y, -,,,description,,,,classification,economic,string,,, -,,level2,code,,economic-classification:gfsm:level1:code,,classification,economic,string,,y, -,,,label,,,economic-classification:gfsm:level2:code,classification,economic,string,,y, -,,,description,,,,classification,economic,string,,, -,,level3,code,,economic-classification:gfsm:level2:code,,classification,economic,string,,y, -,,,label,,,economic-classification:gfsm:level3:code,classification,economic,string,,y, -,,,description,,,,classification,economic,string,,, -,,level4,code,,economic-classification:gfsm:level3:code,,classification,economic,string,,y, -,,,label,,,economic-classification:gfsm:level4:code,classification,economic,string,,y, -,,,description,,,,classification,economic,string,,, -,generic,level1,code,full,,,classification,economic,string,,y, -,,,,part,,,classification,economic,string,,y, -,,,label,,,economic-classification:generic:level1:code,classification,economic,string,,, -,,,description,,,,classification,economic,string,,, -,,level2,code,full,economic-classification:generic:level1:code,,classification,economic,string,,y, -,,,,part,economic-classification:generic:level1:code,,classification,economic,string,,y, -,,,label,,,economic-classification:generic:level2:code,classification,economic,string,,, -,,,description,,,,classification,economic,string,,, -,,level3,code,full,economic-classification:generic:level2:code,,classification,economic,string,,y, -,,,,part,economic-classification:generic:level2:code,,classification,economic,string,,y, -,,,label,,,economic-classification:generic:level3:code,classification,economic,string,,, -,,,description,,,,classification,economic,string,,, -,,level4,code,full,economic-classification:generic:level3:code,,classification,economic,string,,y, -,,,,part,economic-classification:generic:level3:code,,classification,economic,string,,y, -,,,label,,,economic-classification:generic:level4:code,classification,economic,string,,, -,,,description,,,,classification,economic,string,,, -,,code,full,,,,classification,economic,string,,y, -,,,part,,,,classification,economic,string,,y, -,,label,,,,,classification,economic,string,,, -,,description,,,,,classification,economic,string,,, -activity,generic,program,code,,,,activity,,string,,y, -,,,label,,,activity:generic:program:code,activity,,string,,, -,,project,code,,activity:generic:program:code,,activity,,string,,y, -,,,label,,,activity:generic:project:code,activity,,string,,, -,,contract,code,,activity:generic:project:code,,activity,,string,,y, -,,,label,,,activity:generic:contract:code,activity,,string,,, -value,,,,,,,,,number,,, -administrator,generic,id,,,,,entity,,string,,y, -,,name,,,,,entity,,string,,, -supplier,generic,id,,,,,entity,,string,,y, -,,name,,,,,entity,,string,,, -procurer,generic,id,,,,,entity,,string,,y, -,,name,,,,,entity,,string,,, -recipient,generic,id,,,,,entity,,string,,y, -,,name,,,,,entity,,string,,, -geo-source,source,code,,,,,location,,string,,y, -,,title,,,,,location,,string,,, -,,codeList,,,,,location,,string,,y, -,target,code,,,,,location,,string,,y, -,,title,,,,,location,,string,,, -,,codeList,,,,,location,,string,,y, -,generic,code,,,,,location,,string,,y, -,,title,,,,,location,,string,,, -,,codeList,,,,,location,,string,,y, -date,fiscal-year,,,,,,datetime,,integer,,y, -,generic,,,,,,datetime,,date,,y, -direction,,,,,,,other,,string,,y, -phase,,,,,,,other,,string,,y, -invoice-id,,,,,,,fact,,string,,y, -budget-line-id,,,,,,,fact,,string,,y, \ No newline at end of file diff --git a/parse-types-csv.py b/parse-types-csv.py deleted file mode 100644 index b467eb4..0000000 --- a/parse-types-csv.py +++ /dev/null @@ -1,45 +0,0 @@ -""" Parse the CSV file. - -Do not use: modify the JSON file directly instead. - -""" - -import csv -import json - -ident = lambda x: x -parsers = { - 'parent': ident, - 'labelfor': ident, - 'dataType': ident, - 'dimensionType': ident, - 'classificationType': ident, - 'uniqueIdentifier': lambda x: x=='y', -} - -if __name__ == "__main__": - infile = iter(csv.reader(open('openspending-types.csv'))) - header = next(infile) - prev_types = [] - types = {} - for row in infile: - idx = 0 - type_name = None - for hdr, val in zip(header,row): - val = val.strip() - if len(val)>0: - if hdr == 'type': - if len(prev_types) == idx: - prev_types.append(val) - elif len(prev_types) < idx: - print(prev_types, idx, row) - assert(False); - else: - prev_types[idx] = val - prev_types = prev_types[:idx+1] - else: - if type_name is None: - type_name = ':'.join(prev_types) - types.setdefault(type_name, {})[hdr] = parsers[hdr](val) - idx += 1 - json.dump(types, open('src/os-types.json','w'), indent=2, sort_keys=True)