%global _empty_manifest_terminate_build 0 Name: python-dictionaryutils Version: 3.4.5 Release: 1 Summary: Python wrapper and metaschema for datadictionary. License: Apache-2.0 URL: https://github.com/uc-cdis/dictionaryutils Source0: https://mirrors.nju.edu.cn/pypi/web/packages/0d/f3/b613db7a4b680ba9718b2e6776a0fbc5b9b8f2c4ff321127b0dbadfb179e/dictionaryutils-3.4.5.tar.gz BuildArch: noarch Requires: python3-PyYAML Requires: python3-jsonschema Requires: python3-cdislogging Requires: python3-requests %description # dictionaryutils python wrapper and metaschema for datadictionary. It can be used to: - load a local dictionary to a python object. - dump schemas to a file that can be uploaded to s3 as an artifact. - load schema file from an url to a python object that can be used by services ## Test for dictionary validity with Docker Say you have a dictionary you are building locally and you want to see if it will pass the tests. You can add a simple alias to your `.bash_profile` to enable a quick test command: ``` testdict() { docker run --rm -v $(pwd):/dictionary quay.io/cdis/dictionaryutils:master; } ``` Then from the directory containing the `gdcdictionary` directory run `testdict`. ## Generate simulated data with Docker If you wish to generate fake simulated data you can also do that with dictionaryutils and the data-simulator. ``` simdata() { docker run --rm -v $(pwd):/dictionary -v $(pwd)/simdata:/simdata quay.io/cdis/dictionaryutils:master /bin/sh -c "cd /dictionary && python setup.py install --force; python /src/datasimulator/bin/data-simulator simulate --path /simdata/ $*; export SUCCESS=$?; rm -rf build dictionaryutils dist gdcdictionary.egg-info; chmod -R a+rwX /simdata; exit $SUCCESS"; } simdataurl() { docker run --rm -v $(pwd):/dictionary -v $(pwd)/simdata:/simdata quay.io/cdis/dictionaryutils:master /bin/sh -c "python /src/datasimulator/bin/data-simulator simulate --path /simdata/ $*; chmod -R a+rwX /simdata"; } ``` Then from the directory containing the `gdcdictionary` directory run `simdata` and a folder will be created called `simdata` with the results of the simulator run. You can also pass in additional arguments to the data-simulator script such as `simdata --max_samples 10`. The `--max_samples` argument will define a default number of nodes to simulate, but you can override it using the `--node_num_instances_file` argument. For example, if you create the following `instances.json`: ``` { "case": 100, "demographic": 100 } ``` Then run the following: ``` docker run --rm -v $(pwd):/dictionary -v $(pwd)/simdata:/simdata quay.io/cdis/dictionaryutils:master /bin/sh -c "cd /dictionary && python setup.py install --force; python /src/datasimulator/bin/data-simulator simulate --path /simdata/ --program workshop --project project1 --max_samples 10 --node_num_instances_file instances.json; export SUCCESS=$?; rm -rf build dictionaryutils dist gdcdictionary.egg-info; chmod -R a+rwX /simdata; exit $SUCCESS"; ``` Then you'll get 100 each of `case` and `demographic` nodes and 10 each of everything else. Note that the above example also defines `program` and `project` names. You can also run the simulator for an arbitrary json url by using `simdataurl --url https://datacommons.example.com/schema.json`. ## Use dictionaryutils to load a dictionary ``` from dictionaryutils import DataDictionary dict_fetch_from_remote = DataDictionary(url=URL_FOR_THE_JSON) dict_loaded_locally = DataDictionary(root_dir=PATH_TO_SCHEMA_DIR) ``` ## Use dictionaryutils to dump a dictionary ``` import json from dictionaryutils import dump_schemas_from_dir with open('dump.json', 'w') as f: json.dump(dump_schemas_from_dir('../datadictionary/gdcdictionary/schemas/'), f) ``` %package -n python3-dictionaryutils Summary: Python wrapper and metaschema for datadictionary. Provides: python-dictionaryutils BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-dictionaryutils # dictionaryutils python wrapper and metaschema for datadictionary. It can be used to: - load a local dictionary to a python object. - dump schemas to a file that can be uploaded to s3 as an artifact. - load schema file from an url to a python object that can be used by services ## Test for dictionary validity with Docker Say you have a dictionary you are building locally and you want to see if it will pass the tests. You can add a simple alias to your `.bash_profile` to enable a quick test command: ``` testdict() { docker run --rm -v $(pwd):/dictionary quay.io/cdis/dictionaryutils:master; } ``` Then from the directory containing the `gdcdictionary` directory run `testdict`. ## Generate simulated data with Docker If you wish to generate fake simulated data you can also do that with dictionaryutils and the data-simulator. ``` simdata() { docker run --rm -v $(pwd):/dictionary -v $(pwd)/simdata:/simdata quay.io/cdis/dictionaryutils:master /bin/sh -c "cd /dictionary && python setup.py install --force; python /src/datasimulator/bin/data-simulator simulate --path /simdata/ $*; export SUCCESS=$?; rm -rf build dictionaryutils dist gdcdictionary.egg-info; chmod -R a+rwX /simdata; exit $SUCCESS"; } simdataurl() { docker run --rm -v $(pwd):/dictionary -v $(pwd)/simdata:/simdata quay.io/cdis/dictionaryutils:master /bin/sh -c "python /src/datasimulator/bin/data-simulator simulate --path /simdata/ $*; chmod -R a+rwX /simdata"; } ``` Then from the directory containing the `gdcdictionary` directory run `simdata` and a folder will be created called `simdata` with the results of the simulator run. You can also pass in additional arguments to the data-simulator script such as `simdata --max_samples 10`. The `--max_samples` argument will define a default number of nodes to simulate, but you can override it using the `--node_num_instances_file` argument. For example, if you create the following `instances.json`: ``` { "case": 100, "demographic": 100 } ``` Then run the following: ``` docker run --rm -v $(pwd):/dictionary -v $(pwd)/simdata:/simdata quay.io/cdis/dictionaryutils:master /bin/sh -c "cd /dictionary && python setup.py install --force; python /src/datasimulator/bin/data-simulator simulate --path /simdata/ --program workshop --project project1 --max_samples 10 --node_num_instances_file instances.json; export SUCCESS=$?; rm -rf build dictionaryutils dist gdcdictionary.egg-info; chmod -R a+rwX /simdata; exit $SUCCESS"; ``` Then you'll get 100 each of `case` and `demographic` nodes and 10 each of everything else. Note that the above example also defines `program` and `project` names. You can also run the simulator for an arbitrary json url by using `simdataurl --url https://datacommons.example.com/schema.json`. ## Use dictionaryutils to load a dictionary ``` from dictionaryutils import DataDictionary dict_fetch_from_remote = DataDictionary(url=URL_FOR_THE_JSON) dict_loaded_locally = DataDictionary(root_dir=PATH_TO_SCHEMA_DIR) ``` ## Use dictionaryutils to dump a dictionary ``` import json from dictionaryutils import dump_schemas_from_dir with open('dump.json', 'w') as f: json.dump(dump_schemas_from_dir('../datadictionary/gdcdictionary/schemas/'), f) ``` %package help Summary: Development documents and examples for dictionaryutils Provides: python3-dictionaryutils-doc %description help # dictionaryutils python wrapper and metaschema for datadictionary. It can be used to: - load a local dictionary to a python object. - dump schemas to a file that can be uploaded to s3 as an artifact. - load schema file from an url to a python object that can be used by services ## Test for dictionary validity with Docker Say you have a dictionary you are building locally and you want to see if it will pass the tests. You can add a simple alias to your `.bash_profile` to enable a quick test command: ``` testdict() { docker run --rm -v $(pwd):/dictionary quay.io/cdis/dictionaryutils:master; } ``` Then from the directory containing the `gdcdictionary` directory run `testdict`. ## Generate simulated data with Docker If you wish to generate fake simulated data you can also do that with dictionaryutils and the data-simulator. ``` simdata() { docker run --rm -v $(pwd):/dictionary -v $(pwd)/simdata:/simdata quay.io/cdis/dictionaryutils:master /bin/sh -c "cd /dictionary && python setup.py install --force; python /src/datasimulator/bin/data-simulator simulate --path /simdata/ $*; export SUCCESS=$?; rm -rf build dictionaryutils dist gdcdictionary.egg-info; chmod -R a+rwX /simdata; exit $SUCCESS"; } simdataurl() { docker run --rm -v $(pwd):/dictionary -v $(pwd)/simdata:/simdata quay.io/cdis/dictionaryutils:master /bin/sh -c "python /src/datasimulator/bin/data-simulator simulate --path /simdata/ $*; chmod -R a+rwX /simdata"; } ``` Then from the directory containing the `gdcdictionary` directory run `simdata` and a folder will be created called `simdata` with the results of the simulator run. You can also pass in additional arguments to the data-simulator script such as `simdata --max_samples 10`. The `--max_samples` argument will define a default number of nodes to simulate, but you can override it using the `--node_num_instances_file` argument. For example, if you create the following `instances.json`: ``` { "case": 100, "demographic": 100 } ``` Then run the following: ``` docker run --rm -v $(pwd):/dictionary -v $(pwd)/simdata:/simdata quay.io/cdis/dictionaryutils:master /bin/sh -c "cd /dictionary && python setup.py install --force; python /src/datasimulator/bin/data-simulator simulate --path /simdata/ --program workshop --project project1 --max_samples 10 --node_num_instances_file instances.json; export SUCCESS=$?; rm -rf build dictionaryutils dist gdcdictionary.egg-info; chmod -R a+rwX /simdata; exit $SUCCESS"; ``` Then you'll get 100 each of `case` and `demographic` nodes and 10 each of everything else. Note that the above example also defines `program` and `project` names. You can also run the simulator for an arbitrary json url by using `simdataurl --url https://datacommons.example.com/schema.json`. ## Use dictionaryutils to load a dictionary ``` from dictionaryutils import DataDictionary dict_fetch_from_remote = DataDictionary(url=URL_FOR_THE_JSON) dict_loaded_locally = DataDictionary(root_dir=PATH_TO_SCHEMA_DIR) ``` ## Use dictionaryutils to dump a dictionary ``` import json from dictionaryutils import dump_schemas_from_dir with open('dump.json', 'w') as f: json.dump(dump_schemas_from_dir('../datadictionary/gdcdictionary/schemas/'), f) ``` %prep %autosetup -n dictionaryutils-3.4.5 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-dictionaryutils -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Wed Apr 12 2023 Python_Bot - 3.4.5-1 - Package Spec generated