├── .coveragerc ├── .gitattributes ├── .github └── workflows │ ├── build-docs.yml │ ├── pypi-release.yml │ └── run-tests.yml ├── .gitignore ├── AUTHORS.md ├── CHANGES.rst ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── docs ├── .readthedocs.yml ├── Makefile ├── _static │ ├── agile-open-logo-nocircle-grey_40px.png │ ├── custom.css │ ├── favicon.ico │ └── striplog_logo.png ├── authors.md ├── changelog.md ├── conf.py ├── contributing.md ├── development.md ├── howto.rst ├── index.rst ├── installation.md ├── license.md ├── make.bat ├── post_process_html.py ├── pre_process_ipynb.py └── tutorial │ ├── 01_Basics.ipynb │ ├── 02_Basic_objects.ipynb │ ├── 03_Display_objects.ipynb │ ├── 10_Extract_curves_into_striplogs.ipynb │ ├── 11_Parse_a_description_into_components.ipynb │ ├── 12_Calculate_sand_proportion.ipynb │ ├── 13_Work_with_binary_logs.ipynb │ ├── 14_Merge_overlapping_striplogs.ipynb │ ├── 15_Model_sequences_with_Markov_chains.ipynb │ ├── 16_Block_logs.ipynb │ ├── M-MG-70_14.3_135.9.png │ ├── P-129_280_1935.png │ ├── P-129_out.LAS │ ├── P-129_striplog_from_cuttings.las │ ├── P-129_striplog_from_image.las │ ├── P-63_cuttings.csv │ ├── _Cuttings.xlsx │ ├── lexicon.json │ ├── merging.png │ ├── merging.svg │ ├── og815.csv │ ├── prop.csv │ └── z_Lithology_legend_gapless2.png ├── pyproject.toml ├── run_tests.py ├── setup.cfg ├── setup.py ├── striplog ├── __init__.py ├── abbreviations.json ├── canstrat.py ├── canstrat_codes.py ├── component.py ├── defaults.py ├── description.py ├── hatches.py ├── interval.py ├── legend.py ├── lexicon.py ├── logo.py ├── markov.py ├── position.py ├── rock.py ├── striplog.py ├── striplog_logotype.png ├── templates.py └── utils.py └── tests ├── __init__.py ├── baseline ├── test_bar.png ├── test_decor_plot.png ├── test_histogram.png ├── test_markov.png ├── test_markov_graph_plot.png ├── test_pattern_fills.png ├── test_striplog_colour_plot.png ├── test_striplog_ladder_plot.png ├── test_striplog_logo.png ├── test_striplog_plot.png ├── test_striplog_point_plot.png └── test_striplog_top_plot.png ├── data ├── M-MG-70_14.3_135.9.png ├── canstrat.dat ├── lexicon.json └── petrel.dat ├── test_canstrat.py ├── test_component.py ├── test_decor.py ├── test_interval.py ├── test_legend.py ├── test_lexicon.py ├── test_logo.py ├── test_markov.py ├── test_plots.py ├── test_position.py ├── test_striplog.py └── test_utils.py /.coveragerc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/.coveragerc -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/.gitattributes -------------------------------------------------------------------------------- /.github/workflows/build-docs.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/.github/workflows/build-docs.yml -------------------------------------------------------------------------------- /.github/workflows/pypi-release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/.github/workflows/pypi-release.yml -------------------------------------------------------------------------------- /.github/workflows/run-tests.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/.github/workflows/run-tests.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/.gitignore -------------------------------------------------------------------------------- /AUTHORS.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/AUTHORS.md -------------------------------------------------------------------------------- /CHANGES.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/CHANGES.rst -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/CODE_OF_CONDUCT.md -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/CONTRIBUTING.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/README.md -------------------------------------------------------------------------------- /docs/.readthedocs.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/.readthedocs.yml -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/Makefile -------------------------------------------------------------------------------- /docs/_static/agile-open-logo-nocircle-grey_40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/_static/agile-open-logo-nocircle-grey_40px.png -------------------------------------------------------------------------------- /docs/_static/custom.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/_static/custom.css -------------------------------------------------------------------------------- /docs/_static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/_static/favicon.ico -------------------------------------------------------------------------------- /docs/_static/striplog_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/_static/striplog_logo.png -------------------------------------------------------------------------------- /docs/authors.md: -------------------------------------------------------------------------------- 1 | ```{include} ../AUTHORS.md 2 | ``` -------------------------------------------------------------------------------- /docs/changelog.md: -------------------------------------------------------------------------------- 1 | ```{include} ../CHANGES.rst 2 | ``` -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/conf.py -------------------------------------------------------------------------------- /docs/contributing.md: -------------------------------------------------------------------------------- 1 | ```{include} ../CONTRIBUTING.md 2 | ``` -------------------------------------------------------------------------------- /docs/development.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/development.md -------------------------------------------------------------------------------- /docs/howto.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/howto.rst -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/index.rst -------------------------------------------------------------------------------- /docs/installation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/installation.md -------------------------------------------------------------------------------- /docs/license.md: -------------------------------------------------------------------------------- 1 | # License 2 | 3 | ```{include} ../LICENSE 4 | ``` 5 | -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/make.bat -------------------------------------------------------------------------------- /docs/post_process_html.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/post_process_html.py -------------------------------------------------------------------------------- /docs/pre_process_ipynb.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/pre_process_ipynb.py -------------------------------------------------------------------------------- /docs/tutorial/01_Basics.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/01_Basics.ipynb -------------------------------------------------------------------------------- /docs/tutorial/02_Basic_objects.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/02_Basic_objects.ipynb -------------------------------------------------------------------------------- /docs/tutorial/03_Display_objects.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/03_Display_objects.ipynb -------------------------------------------------------------------------------- /docs/tutorial/10_Extract_curves_into_striplogs.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/10_Extract_curves_into_striplogs.ipynb -------------------------------------------------------------------------------- /docs/tutorial/11_Parse_a_description_into_components.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/11_Parse_a_description_into_components.ipynb -------------------------------------------------------------------------------- /docs/tutorial/12_Calculate_sand_proportion.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/12_Calculate_sand_proportion.ipynb -------------------------------------------------------------------------------- /docs/tutorial/13_Work_with_binary_logs.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/13_Work_with_binary_logs.ipynb -------------------------------------------------------------------------------- /docs/tutorial/14_Merge_overlapping_striplogs.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/14_Merge_overlapping_striplogs.ipynb -------------------------------------------------------------------------------- /docs/tutorial/15_Model_sequences_with_Markov_chains.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/15_Model_sequences_with_Markov_chains.ipynb -------------------------------------------------------------------------------- /docs/tutorial/16_Block_logs.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/16_Block_logs.ipynb -------------------------------------------------------------------------------- /docs/tutorial/M-MG-70_14.3_135.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/M-MG-70_14.3_135.9.png -------------------------------------------------------------------------------- /docs/tutorial/P-129_280_1935.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/P-129_280_1935.png -------------------------------------------------------------------------------- /docs/tutorial/P-129_out.LAS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/P-129_out.LAS -------------------------------------------------------------------------------- /docs/tutorial/P-129_striplog_from_cuttings.las: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/P-129_striplog_from_cuttings.las -------------------------------------------------------------------------------- /docs/tutorial/P-129_striplog_from_image.las: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/P-129_striplog_from_image.las -------------------------------------------------------------------------------- /docs/tutorial/P-63_cuttings.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/P-63_cuttings.csv -------------------------------------------------------------------------------- /docs/tutorial/_Cuttings.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/_Cuttings.xlsx -------------------------------------------------------------------------------- /docs/tutorial/lexicon.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/lexicon.json -------------------------------------------------------------------------------- /docs/tutorial/merging.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/merging.png -------------------------------------------------------------------------------- /docs/tutorial/merging.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/merging.svg -------------------------------------------------------------------------------- /docs/tutorial/og815.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/og815.csv -------------------------------------------------------------------------------- /docs/tutorial/prop.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/prop.csv -------------------------------------------------------------------------------- /docs/tutorial/z_Lithology_legend_gapless2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/docs/tutorial/z_Lithology_legend_gapless2.png -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/pyproject.toml -------------------------------------------------------------------------------- /run_tests.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/run_tests.py -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/setup.cfg -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/setup.py -------------------------------------------------------------------------------- /striplog/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/__init__.py -------------------------------------------------------------------------------- /striplog/abbreviations.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/abbreviations.json -------------------------------------------------------------------------------- /striplog/canstrat.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/canstrat.py -------------------------------------------------------------------------------- /striplog/canstrat_codes.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/canstrat_codes.py -------------------------------------------------------------------------------- /striplog/component.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/component.py -------------------------------------------------------------------------------- /striplog/defaults.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/defaults.py -------------------------------------------------------------------------------- /striplog/description.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/description.py -------------------------------------------------------------------------------- /striplog/hatches.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/hatches.py -------------------------------------------------------------------------------- /striplog/interval.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/interval.py -------------------------------------------------------------------------------- /striplog/legend.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/legend.py -------------------------------------------------------------------------------- /striplog/lexicon.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/lexicon.py -------------------------------------------------------------------------------- /striplog/logo.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/logo.py -------------------------------------------------------------------------------- /striplog/markov.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/markov.py -------------------------------------------------------------------------------- /striplog/position.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/position.py -------------------------------------------------------------------------------- /striplog/rock.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/rock.py -------------------------------------------------------------------------------- /striplog/striplog.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/striplog.py -------------------------------------------------------------------------------- /striplog/striplog_logotype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/striplog_logotype.png -------------------------------------------------------------------------------- /striplog/templates.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/templates.py -------------------------------------------------------------------------------- /striplog/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/striplog/utils.py -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/baseline/test_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/baseline/test_bar.png -------------------------------------------------------------------------------- /tests/baseline/test_decor_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/baseline/test_decor_plot.png -------------------------------------------------------------------------------- /tests/baseline/test_histogram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/baseline/test_histogram.png -------------------------------------------------------------------------------- /tests/baseline/test_markov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/baseline/test_markov.png -------------------------------------------------------------------------------- /tests/baseline/test_markov_graph_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/baseline/test_markov_graph_plot.png -------------------------------------------------------------------------------- /tests/baseline/test_pattern_fills.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/baseline/test_pattern_fills.png -------------------------------------------------------------------------------- /tests/baseline/test_striplog_colour_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/baseline/test_striplog_colour_plot.png -------------------------------------------------------------------------------- /tests/baseline/test_striplog_ladder_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/baseline/test_striplog_ladder_plot.png -------------------------------------------------------------------------------- /tests/baseline/test_striplog_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/baseline/test_striplog_logo.png -------------------------------------------------------------------------------- /tests/baseline/test_striplog_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/baseline/test_striplog_plot.png -------------------------------------------------------------------------------- /tests/baseline/test_striplog_point_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/baseline/test_striplog_point_plot.png -------------------------------------------------------------------------------- /tests/baseline/test_striplog_top_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/baseline/test_striplog_top_plot.png -------------------------------------------------------------------------------- /tests/data/M-MG-70_14.3_135.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/data/M-MG-70_14.3_135.9.png -------------------------------------------------------------------------------- /tests/data/canstrat.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/data/canstrat.dat -------------------------------------------------------------------------------- /tests/data/lexicon.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/data/lexicon.json -------------------------------------------------------------------------------- /tests/data/petrel.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/data/petrel.dat -------------------------------------------------------------------------------- /tests/test_canstrat.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/test_canstrat.py -------------------------------------------------------------------------------- /tests/test_component.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/test_component.py -------------------------------------------------------------------------------- /tests/test_decor.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/test_decor.py -------------------------------------------------------------------------------- /tests/test_interval.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/test_interval.py -------------------------------------------------------------------------------- /tests/test_legend.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/test_legend.py -------------------------------------------------------------------------------- /tests/test_lexicon.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/test_lexicon.py -------------------------------------------------------------------------------- /tests/test_logo.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/test_logo.py -------------------------------------------------------------------------------- /tests/test_markov.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/test_markov.py -------------------------------------------------------------------------------- /tests/test_plots.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/test_plots.py -------------------------------------------------------------------------------- /tests/test_position.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/test_position.py -------------------------------------------------------------------------------- /tests/test_striplog.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/test_striplog.py -------------------------------------------------------------------------------- /tests/test_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agilescientific/striplog/HEAD/tests/test_utils.py --------------------------------------------------------------------------------