pymetadata 0.3.1__tar.gz → 0.5.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pymetadata might be problematic. Click here for more details.

Files changed (152) hide show
  1. pymetadata-0.5.9/.bumpversion.toml +19 -0
  2. pymetadata-0.5.9/.github/workflows/main.yml +83 -0
  3. pymetadata-0.5.9/.github/workflows/mypy.yml +21 -0
  4. pymetadata-0.5.9/.github/workflows/ruff.yml +8 -0
  5. pymetadata-0.5.9/.gitignore +29 -0
  6. pymetadata-0.5.9/.pre-commit-config.yaml +35 -0
  7. pymetadata-0.5.9/.python-version +1 -0
  8. pymetadata-0.5.9/.ruff.toml +50 -0
  9. pymetadata-0.5.9/.zenodo.json +22 -0
  10. pymetadata-0.5.9/LICENSE +7 -0
  11. pymetadata-0.5.9/PKG-INFO +99 -0
  12. pymetadata-0.5.9/README.md +59 -0
  13. pymetadata-0.5.9/RELEASE.md +45 -0
  14. pymetadata-0.5.9/docs/composite_annotations.md +36 -0
  15. pymetadata-0.5.9/docs/images/favicon/about.txt +6 -0
  16. pymetadata-0.5.9/docs/images/favicon/android-chrome-192x192.png +0 -0
  17. pymetadata-0.5.9/docs/images/favicon/android-chrome-512x512.png +0 -0
  18. pymetadata-0.5.9/docs/images/favicon/apple-touch-icon.png +0 -0
  19. pymetadata-0.5.9/docs/images/favicon/favicon-16x16.png +0 -0
  20. pymetadata-0.5.9/docs/images/favicon/favicon-32x32.png +0 -0
  21. pymetadata-0.5.9/docs/images/favicon/favicon.ico +0 -0
  22. pymetadata-0.5.9/docs/images/favicon/favicon_io.zip +0 -0
  23. pymetadata-0.5.9/docs/images/favicon/pymetadata-100x100-300dpi.png +0 -0
  24. pymetadata-0.5.9/docs/images/favicon/site.webmanifest +1 -0
  25. pymetadata-0.5.9/pyproject.toml +70 -0
  26. pymetadata-0.5.9/release-notes/0.0.10.md +6 -0
  27. pymetadata-0.5.9/release-notes/0.0.11.md +3 -0
  28. pymetadata-0.5.9/release-notes/0.0.12.md +3 -0
  29. pymetadata-0.5.9/release-notes/0.0.13.md +3 -0
  30. pymetadata-0.5.9/release-notes/0.0.14.md +8 -0
  31. pymetadata-0.5.9/release-notes/0.0.15.md +3 -0
  32. pymetadata-0.5.9/release-notes/0.0.16.md +3 -0
  33. pymetadata-0.5.9/release-notes/0.0.17.md +3 -0
  34. pymetadata-0.5.9/release-notes/0.0.18.md +12 -0
  35. pymetadata-0.5.9/release-notes/0.0.19.md +12 -0
  36. pymetadata-0.5.9/release-notes/0.0.2.md +4 -0
  37. pymetadata-0.5.9/release-notes/0.0.20.md +11 -0
  38. pymetadata-0.5.9/release-notes/0.0.21.md +12 -0
  39. pymetadata-0.5.9/release-notes/0.0.22.md +11 -0
  40. pymetadata-0.5.9/release-notes/0.0.3.md +4 -0
  41. pymetadata-0.5.9/release-notes/0.0.4.md +4 -0
  42. pymetadata-0.5.9/release-notes/0.0.5.md +4 -0
  43. pymetadata-0.5.9/release-notes/0.0.6.md +4 -0
  44. pymetadata-0.5.9/release-notes/0.0.7.md +4 -0
  45. pymetadata-0.5.9/release-notes/0.0.8.md +3 -0
  46. pymetadata-0.5.9/release-notes/0.0.9.md +3 -0
  47. pymetadata-0.5.9/release-notes/0.1.0.md +13 -0
  48. pymetadata-0.5.9/release-notes/0.2.1.md +13 -0
  49. pymetadata-0.5.9/release-notes/0.2.10.md +10 -0
  50. pymetadata-0.5.9/release-notes/0.2.2.md +11 -0
  51. pymetadata-0.5.9/release-notes/0.2.3.md +11 -0
  52. pymetadata-0.5.9/release-notes/0.2.4.md +13 -0
  53. pymetadata-0.5.9/release-notes/0.2.5.md +11 -0
  54. pymetadata-0.5.9/release-notes/0.2.6.md +12 -0
  55. pymetadata-0.5.9/release-notes/0.2.7.md +13 -0
  56. pymetadata-0.5.9/release-notes/0.2.8.md +19 -0
  57. pymetadata-0.5.9/release-notes/0.2.9.md +19 -0
  58. pymetadata-0.5.9/release-notes/0.3.0.md +13 -0
  59. pymetadata-0.5.9/release-notes/0.3.1.md +11 -0
  60. pymetadata-0.5.9/release-notes/0.3.10.md +10 -0
  61. pymetadata-0.5.9/release-notes/0.3.11.md +10 -0
  62. pymetadata-0.5.9/release-notes/0.3.2.md +11 -0
  63. pymetadata-0.5.9/release-notes/0.3.3.md +10 -0
  64. pymetadata-0.5.9/release-notes/0.3.4.md +29 -0
  65. pymetadata-0.5.9/release-notes/0.3.5.md +11 -0
  66. pymetadata-0.5.9/release-notes/0.3.6.md +11 -0
  67. pymetadata-0.5.9/release-notes/0.3.7.md +10 -0
  68. pymetadata-0.5.9/release-notes/0.3.8.md +10 -0
  69. pymetadata-0.5.9/release-notes/0.3.9.md +10 -0
  70. pymetadata-0.5.9/release-notes/0.4.0.md +12 -0
  71. pymetadata-0.5.9/release-notes/0.4.1.md +12 -0
  72. pymetadata-0.5.9/release-notes/0.4.2.md +27 -0
  73. pymetadata-0.5.9/release-notes/0.4.3.md +9 -0
  74. pymetadata-0.5.9/release-notes/0.4.4.md +11 -0
  75. pymetadata-0.5.9/release-notes/0.5.0.md +12 -0
  76. pymetadata-0.5.9/release-notes/0.5.1.md +10 -0
  77. pymetadata-0.5.9/release-notes/0.5.2.md +11 -0
  78. pymetadata-0.5.9/release-notes/0.5.3.md +11 -0
  79. pymetadata-0.5.9/release-notes/0.5.4.md +11 -0
  80. pymetadata-0.5.9/release-notes/0.5.5.md +13 -0
  81. pymetadata-0.5.9/release-notes/0.5.6.md +10 -0
  82. pymetadata-0.5.9/release-notes/0.5.7.md +10 -0
  83. pymetadata-0.5.9/release-notes/0.5.8.md +11 -0
  84. pymetadata-0.5.9/release-notes/0.5.9.md +10 -0
  85. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/__init__.py +3 -2
  86. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/cache.py +2 -0
  87. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/chebi.py +31 -33
  88. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/console.py +1 -0
  89. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/core/annotation.py +194 -112
  90. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/core/creator.py +1 -0
  91. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/core/synonym.py +1 -0
  92. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/core/xref.py +1 -0
  93. pymetadata-0.5.9/src/pymetadata/examples/cache_path_example.py +14 -0
  94. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/examples/omex_example.py +1 -1
  95. pymetadata-0.5.9/src/pymetadata/examples/results/test_from_files.omex +0 -0
  96. pymetadata-0.5.9/src/pymetadata/examples/results/test_from_omex.omex +0 -0
  97. pymetadata-0.5.9/src/pymetadata/examples/results/testomex/README.md +3 -0
  98. pymetadata-0.5.9/src/pymetadata/examples/results/testomex/manifest.xml +9 -0
  99. pymetadata-0.5.9/src/pymetadata/examples/results/testomex/models/omex_comp.xml +174 -0
  100. pymetadata-0.5.9/src/pymetadata/examples/results/testomex/models/omex_comp_flat.xml +215 -0
  101. pymetadata-0.5.9/src/pymetadata/examples/results/testomex/models/omex_minimal.xml +99 -0
  102. pymetadata-0.5.9/src/pymetadata/examples/test.omex +0 -0
  103. pymetadata-0.5.9/src/pymetadata/identifiers/registry.py +173 -0
  104. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/log.py +1 -0
  105. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/metadata/__init__.py +2 -0
  106. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/metadata/eco.py +1973 -1042
  107. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/metadata/kisao.py +122 -35
  108. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/metadata/sbo.py +155 -388
  109. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/omex.py +10 -9
  110. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/omex_v2.py +1 -0
  111. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/ontologies/ols.py +23 -15
  112. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/ontologies/ontology.py +23 -19
  113. pymetadata-0.5.9/src/pymetadata/resources/ontologies/README.md +4 -0
  114. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/resources/templates/ontology_enum.pytemplate +0 -2
  115. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/unichem.py +23 -20
  116. pymetadata-0.5.9/tests/core/test_annotation.py +186 -0
  117. pymetadata-0.5.9/tests/core/test_creator.py +24 -0
  118. pymetadata-0.5.9/tests/data/omex/BIOMD0000000001.omex +0 -0
  119. pymetadata-0.5.9/tests/data/omex/CombineArchiveShowCase.omex +0 -0
  120. pymetadata-0.5.9/tests/data/omex/CombineArchiveShowCase_manifest.xml +25 -0
  121. pymetadata-0.5.9/tests/data/omex/CompModels.omex +0 -0
  122. pymetadata-0.5.9/tests/data/omex/CompModels_manifest.xml +9 -0
  123. pymetadata-0.5.9/tests/data/omex/iCGB21FR.omex +0 -0
  124. pymetadata-0.5.9/tests/test_chebi.py +27 -0
  125. pymetadata-0.5.9/tests/test_ols.py +18 -0
  126. pymetadata-0.5.9/tests/test_omex.py +215 -0
  127. pymetadata-0.5.9/tests/test_ontology.py +50 -0
  128. pymetadata-0.5.9/tests/test_registry.py +11 -0
  129. pymetadata-0.5.9/tests/test_sbo_kisao.py +31 -0
  130. pymetadata-0.5.9/tests/test_unichem.py +56 -0
  131. pymetadata-0.5.9/tox.ini +67 -0
  132. pymetadata-0.3.1/LICENSE +0 -165
  133. pymetadata-0.3.1/MANIFEST.in +0 -7
  134. pymetadata-0.3.1/PKG-INFO +0 -150
  135. pymetadata-0.3.1/README.rst +0 -120
  136. pymetadata-0.3.1/setup.cfg +0 -117
  137. pymetadata-0.3.1/setup.py +0 -7
  138. pymetadata-0.3.1/src/pymetadata/identifiers/registry.py +0 -377
  139. pymetadata-0.3.1/src/pymetadata/resources/chebi_webservice_wsdl.xml +0 -509
  140. pymetadata-0.3.1/src/pymetadata/resources/identifiers_registry.json +0 -40264
  141. pymetadata-0.3.1/src/pymetadata.egg-info/PKG-INFO +0 -150
  142. pymetadata-0.3.1/src/pymetadata.egg-info/SOURCES.txt +0 -40
  143. pymetadata-0.3.1/src/pymetadata.egg-info/dependency_links.txt +0 -1
  144. pymetadata-0.3.1/src/pymetadata.egg-info/requires.txt +0 -22
  145. pymetadata-0.3.1/src/pymetadata.egg-info/top_level.txt +0 -1
  146. pymetadata-0.3.1/src/pymetadata.egg-info/zip-safe +0 -1
  147. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/core/__init__.py +0 -0
  148. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/examples/__init__.py +0 -0
  149. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/identifiers/__init__.py +0 -0
  150. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/identifiers/miriam.py +0 -0
  151. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/ontologies/__init__.py +0 -0
  152. {pymetadata-0.3.1 → pymetadata-0.5.9}/src/pymetadata/py.typed +0 -0
@@ -0,0 +1,19 @@
1
+ [tool.bumpversion]
2
+ current_version = "0.5.9"
3
+ commit = true
4
+ parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
5
+ serialize = ["{major}.{minor}.{patch}"]
6
+ search = "{current_version}"
7
+ replace = "{new_version}"
8
+ regex = false
9
+ ignore_missing_version = false
10
+ tag = true
11
+ sign_tags = false
12
+ tag_name = "{new_version}"
13
+ tag_message = "Bump version: {current_version} → {new_version}"
14
+ allow_dirty = false
15
+ message = "Bump version: {current_version} → {new_version}"
16
+ commit_args = ""
17
+
18
+ [[tool.bumpversion.files]]
19
+ filename = "./src/pymetadata/__init__.py"
@@ -0,0 +1,83 @@
1
+ name: CI-CD
2
+
3
+ on: [push]
4
+ jobs:
5
+ test:
6
+ runs-on: ${{ matrix.os }}
7
+ strategy:
8
+ fail-fast: false
9
+ matrix:
10
+ os: [ubuntu-latest, windows-latest, macos-latest]
11
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
12
+ exclude:
13
+ - os: windows-latest
14
+ python-version: "3.10"
15
+ - os: windows-latest
16
+ python-version: "3.11"
17
+ - os: windows-latest
18
+ python-version: "3.12"
19
+ - os: windows-latest
20
+ python-version: "3.14"
21
+ - os: macos-latest
22
+ python-version: "3.10"
23
+ - os: macos-latest
24
+ python-version: "3.11"
25
+ - os: macos-latest
26
+ python-version: "3.12"
27
+ - os: macos-latest
28
+ python-version: "3.14"
29
+
30
+ steps:
31
+ - uses: actions/checkout@v4
32
+ - name: Install uv and set the python version
33
+ uses: astral-sh/setup-uv@v5
34
+ with:
35
+ python-version: ${{ matrix.python-version }}
36
+ enable-cache: true
37
+ - name: Test with tox
38
+ run:
39
+ uvx --with tox-uv tox -e py${{ matrix.python-version }}
40
+
41
+ release:
42
+ needs: test
43
+ if: startsWith(github.ref, 'refs/tags')
44
+ runs-on: ${{ matrix.os }}
45
+ strategy:
46
+ matrix:
47
+ os: [ubuntu-latest]
48
+ python-version: ["3.13"]
49
+ environment:
50
+ name: pypi
51
+ url: https://pypi.org/p/<your-pypi-project-name>
52
+ permissions:
53
+ id-token: write
54
+ contents: write
55
+ steps:
56
+ - uses: actions/checkout@v4
57
+ - name: Set up Python ${{ matrix.python-version }}
58
+ uses: actions/setup-python@v5
59
+ with:
60
+ python-version: ${{ matrix.python-version }}
61
+ - name: Get tag
62
+ id: tag
63
+ run: echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
64
+ - name: Install dependencies
65
+ run: |
66
+ python -m pip install --upgrade pip
67
+ python -m pip install hatch twine
68
+
69
+ - name: Build package
70
+ # run: python setup.py sdist bdist_wheel
71
+ run: hatch build
72
+ - name: Check the package
73
+ run: twine check dist/*
74
+ - name: Publish to PyPI
75
+ uses: pypa/gh-action-pypi-publish@release/v1
76
+ with:
77
+ packages-dir: dist
78
+ - name: Create GitHub release
79
+ uses: softprops/action-gh-release@v1
80
+ with:
81
+ body_path: "release-notes/${{ github.ref_name }}.md"
82
+ draft: false
83
+ prerelease: false
@@ -0,0 +1,21 @@
1
+ name: MyPy
2
+ on: [push]
3
+ jobs:
4
+ mypy:
5
+ runs-on: ubuntu-latest
6
+ strategy:
7
+ fail-fast: false
8
+ matrix:
9
+ os: [ ubuntu-latest ]
10
+ python-version: [ "3.13" ]
11
+
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - name: Install uv and set the python version
15
+ uses: astral-sh/setup-uv@v5
16
+ with:
17
+ python-version: ${{ matrix.python-version }}
18
+ enable-cache: true
19
+ - name: Test with tox
20
+ run:
21
+ uvx --with tox-uv tox -e mypy
@@ -0,0 +1,8 @@
1
+ name: Ruff
2
+ on: [push]
3
+ jobs:
4
+ ruff:
5
+ runs-on: ubuntu-latest
6
+ steps:
7
+ - uses: actions/checkout@v4
8
+ - uses: astral-sh/ruff-action@v3
@@ -0,0 +1,29 @@
1
+ uv.lock
2
+ .vscode
3
+ *.pyc
4
+ *~
5
+ .DS_Store
6
+ .eggs/
7
+ dist
8
+ build
9
+ .idea
10
+ cover/
11
+ .tox/
12
+ .venv
13
+ .cache/
14
+ .coverage
15
+ coverage.xml
16
+ .benchmark
17
+ src/pymetadata.egg-info/
18
+ src/pymetadata/resources/cache
19
+
20
+
21
+ wheels
22
+ __pycache__
23
+ .pytest_cache
24
+ .Rhistory
25
+ *.tsv#
26
+ *.xlsx#
27
+
28
+ # OWL ontologies
29
+ *.owl.gz
@@ -0,0 +1,35 @@
1
+ # This is run as a precondition to commits, run manually via `pre-commit run`
2
+
3
+ # When adding new hooks, it may make sense to once run
4
+ # `pre-commit run --all-files` as by default only changed files are checked
5
+
6
+ repos:
7
+ - repo: https://github.com/pre-commit/pre-commit-hooks
8
+ rev: v5.0.0
9
+ hooks:
10
+ - id: check-yaml
11
+ description: Check yaml files for parseable syntax
12
+ - id: check-added-large-files
13
+ description: Prevent large files from being committed
14
+ - id: check-merge-conflict
15
+ description: Check for files that contain merge conflict strings
16
+ - id: check-symlinks
17
+ description: Check for symlinks which do not point to anything
18
+ - id: trailing-whitespace
19
+ description: Trim trailing whitespaces
20
+ - id: end-of-file-fixer
21
+ description: Fix empty lines at ends of files
22
+ - id: detect-private-key
23
+ description: Detects the presence of private keys
24
+
25
+ - repo: https://github.com/astral-sh/ruff-pre-commit
26
+ # Ruff version.
27
+ rev: v0.8.6
28
+ hooks:
29
+ # Run the linter.
30
+ - id: ruff
31
+ types_or: [ python, pyi ]
32
+ args: [ --fix ]
33
+ # Run the formatter.
34
+ - id: ruff-format
35
+ types_or: [ python, pyi ]
@@ -0,0 +1 @@
1
+ 3.13
@@ -0,0 +1,50 @@
1
+ # Same as Black.
2
+ line-length = 88
3
+ indent-width = 4
4
+
5
+ target-version = "py313"
6
+
7
+
8
+ [lint]
9
+ # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default.
10
+ # Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or
11
+ # McCabe complexity (`C901`) by default.
12
+ select = ["E4", "E7", "E9", "F"]
13
+ ignore = []
14
+
15
+ # Allow fix for all enabled rules (when `--fix`) is provided.
16
+ fixable = ["ALL"]
17
+ unfixable = []
18
+
19
+ # Allow unused variables when underscore-prefixed.
20
+ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
21
+
22
+ [format]
23
+ # Like Black, use double quotes for strings.
24
+ quote-style = "double"
25
+
26
+ # Like Black, indent with spaces, rather than tabs.
27
+ indent-style = "space"
28
+
29
+ # Like Black, respect magic trailing commas.
30
+ skip-magic-trailing-comma = false
31
+
32
+ # Like Black, automatically detect the appropriate line ending.
33
+ line-ending = "auto"
34
+
35
+ # Enable auto-formatting of code examples in docstrings. Markdown,
36
+ # reStructuredText code/literal blocks and doctests are all supported.
37
+ #
38
+ # This is currently disabled by default, but it is planned for this
39
+ # to be opt-out in the future.
40
+ docstring-code-format = false
41
+
42
+ # Set the line length limit used when formatting code snippets in
43
+ # docstrings.
44
+ #
45
+ # This only has an effect when the `docstring-code-format` setting is
46
+ # enabled.
47
+ docstring-code-line-length = "dynamic"
48
+
49
+ [lint.pydocstyle]
50
+ convention = "google" # Accepts: "google", "numpy", or "pep257".
@@ -0,0 +1,22 @@
1
+ {
2
+ "upload_type": "software",
3
+ "title": "pymetadata are python utilities for working with metadata",
4
+ "creators": [
5
+ {
6
+ "orcid": "0000-0003-1725-179X",
7
+ "affiliation": "Humboldt-University Berlin, Institute for Theoretical Biology, Berlin",
8
+ "name": "König, Matthias"
9
+ }
10
+ ],
11
+ "description": "<p><code>pymetadata</code> is a collection of python utilities for working with metadata in the context of COMBINE standards with source code available from available from <a href=\"https://github.com/matthiaskoenig/pymetadata\">https://github.com/matthiaskoenig/pymetadata</a></p><p>Features include among others<ul><li>annotation classes and helpers</li></ul></p><p>If you have any questions or issues please <a href=\"https://github.com/matthiaskoenig/pymetadata/issues\">open an issue</a></p><h2>Funding</h2><p>Matthias König (MK) was supported by the Federal Ministry of Education and Research (BMBF, Germany) within the research network Systems Medicine of the Liver (**LiSyM**, grant number 031L0054). MK is supported by the Federal Ministry of Education and Research (BMBF, Germany) within ATLAS by grant number 031L0304B and by the German Research Foundation (DFG) within the Research Unit Program FOR 5151 QuaLiPerF (Quantifying Liver Perfusion-Function Relationship in Complex Resection - A Systems Medicine Approach) by grant number 436883643 and by grant number 465194077 (Priority Programme SPP 2311, Subproject SimLivA).</p>",
12
+ "access_right": "open",
13
+ "license": "MIT",
14
+ "keywords": [
15
+ "modeling",
16
+ "standardization",
17
+ "COMBINE",
18
+ "metadata",
19
+ "archive",
20
+ "annotation"
21
+ ]
22
+ }
@@ -0,0 +1,7 @@
1
+ Copyright (c) 2025 Matthias König
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,99 @@
1
+ Metadata-Version: 2.4
2
+ Name: pymetadata
3
+ Version: 0.5.9
4
+ Summary: pymetadata are python utilities for working with metadata.
5
+ Author-email: Matthias König <konigmatt@googlemail.com>
6
+ Maintainer-email: Matthias König <konigmatt@googlemail.com>
7
+ License-File: LICENSE
8
+ Keywords: COMBINE,annotation,archive,metadata,modeling,standardization
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Intended Audience :: Science/Research
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
18
+ Classifier: Programming Language :: Python :: Implementation :: CPython
19
+ Classifier: Topic :: Scientific/Engineering
20
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
21
+ Requires-Python: >=3.10
22
+ Requires-Dist: depinfo>=2.2.0
23
+ Requires-Dist: fastobo>=0.12.3
24
+ Requires-Dist: jinja2>=3.1.5
25
+ Requires-Dist: lxml>=5.3
26
+ Requires-Dist: pronto>=2.5.8
27
+ Requires-Dist: pydantic>=2.10.4
28
+ Requires-Dist: requests>=2.32.3
29
+ Requires-Dist: rich>=13.9.4
30
+ Requires-Dist: xmltodict>=0.14.2
31
+ Provides-Extra: dev
32
+ Requires-Dist: bump-my-version>=1.2.4; extra == 'dev'
33
+ Requires-Dist: mypy>=1.18.2; extra == 'dev'
34
+ Requires-Dist: pre-commit>=4.0.1; extra == 'dev'
35
+ Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
36
+ Requires-Dist: pytest>=8.4.2; extra == 'dev'
37
+ Requires-Dist: ruff>=0.14.0; extra == 'dev'
38
+ Requires-Dist: tox>=4.31.0; extra == 'dev'
39
+ Description-Content-Type: text/markdown
40
+
41
+ ![pymetadata logo](https://github.com/matthiaskoenig/pymetadata/raw/develop/docs/images/favicon/pymetadata-100x100-300dpi.png)
42
+
43
+ # pymetadata: python utilities for metadata and COMBINE archives
44
+ [![GitHub Actions CI/CD Status](https://github.com/matthiaskoenig/pymetadata/workflows/CI-CD/badge.svg)](https://github.com/matthiaskoenig/pymetadata/actions/workflows/main.yml)
45
+ [![Version](https://img.shields.io/pypi/v/pymetadata.svg)](https://pypi.org/project/pymetadata/)
46
+ [![Python Versions](https://img.shields.io/pypi/pyversions/pymetadata.svg)](https://pypi.org/project/pymetadata/)
47
+ [![MIT License](https://img.shields.io/pypi/l/pymetadata.svg)](https://opensource.org/licenses/MIT)
48
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5308801.svg)](https://doi.org/10.5281/zenodo.5308801)
49
+
50
+ pymetadata is a collection of python utilities for working with
51
+ metadata in the context of COMBINE standards with source code available from
52
+ [https://github.com/matthiaskoenig/pymetadata](https://github.com/matthiaskoenig/pymetadata).
53
+
54
+ Features include among others
55
+
56
+ - COMBINE archive version 1 support (OMEX)
57
+ - annotation classes and helpers
58
+ - SBO, KISAO and ECO ontology enums
59
+
60
+ If you have any questions or issues please [open an issue](https://github.com/matthiaskoenig/pymetadata/issues).
61
+
62
+ # Documentation
63
+ Documentation is still work in progress. For an example usage of the COMBINE archive
64
+ see [omex_example.py](src/pymetadata/examples/omex_example.py).
65
+
66
+ # How to cite
67
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5308801.svg)](https://doi.org/10.5281/zenodo.5308801)
68
+
69
+
70
+ # License
71
+ - Source Code: [MIT](https://opensource.org/license/MIT)
72
+ - Documentation: [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)
73
+
74
+ # Funding
75
+ Matthias König (MK) was supported by the Federal Ministry of Education and Research (BMBF, Germany) within the research network Systems Medicine of the Liver (LiSyM, grant number 031L0054). MK is supported by the Federal Ministry of Education and Research (BMBF, Germany) within ATLAS by grant number 031L0304B and by the German Research Foundation (DFG) within the Research Unit Program FOR 5151 QuaLiPerF (Quantifying Liver Perfusion-Function Relationship in Complex Resection - A Systems Medicine Approach) by grant number 436883643 and by grant number 465194077 (Priority Programme SPP 2311, Subproject SimLivA).
76
+
77
+ # Installation
78
+ `pymetadata` is available from [pypi](https://pypi.python.org/pypi/pymetadata) and
79
+ can be installed via
80
+
81
+ ```bash
82
+ pip install pymetadata
83
+ ```
84
+
85
+ # Cache path
86
+ `pymetadata` caches some information for faster retrieval. The cache path is set to
87
+
88
+ ```python
89
+ CACHE_PATH: Path = Path.home() / ".cache" / "pymetadata"
90
+ ```
91
+
92
+ To use a custom cache path use
93
+
94
+ ```python
95
+ import pymetadata
96
+ pymetadata.CACHE_PATH = <cache_path>
97
+ ```
98
+
99
+ © 2021-2025 Matthias König
@@ -0,0 +1,59 @@
1
+ ![pymetadata logo](https://github.com/matthiaskoenig/pymetadata/raw/develop/docs/images/favicon/pymetadata-100x100-300dpi.png)
2
+
3
+ # pymetadata: python utilities for metadata and COMBINE archives
4
+ [![GitHub Actions CI/CD Status](https://github.com/matthiaskoenig/pymetadata/workflows/CI-CD/badge.svg)](https://github.com/matthiaskoenig/pymetadata/actions/workflows/main.yml)
5
+ [![Version](https://img.shields.io/pypi/v/pymetadata.svg)](https://pypi.org/project/pymetadata/)
6
+ [![Python Versions](https://img.shields.io/pypi/pyversions/pymetadata.svg)](https://pypi.org/project/pymetadata/)
7
+ [![MIT License](https://img.shields.io/pypi/l/pymetadata.svg)](https://opensource.org/licenses/MIT)
8
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5308801.svg)](https://doi.org/10.5281/zenodo.5308801)
9
+
10
+ pymetadata is a collection of python utilities for working with
11
+ metadata in the context of COMBINE standards with source code available from
12
+ [https://github.com/matthiaskoenig/pymetadata](https://github.com/matthiaskoenig/pymetadata).
13
+
14
+ Features include among others
15
+
16
+ - COMBINE archive version 1 support (OMEX)
17
+ - annotation classes and helpers
18
+ - SBO, KISAO and ECO ontology enums
19
+
20
+ If you have any questions or issues please [open an issue](https://github.com/matthiaskoenig/pymetadata/issues).
21
+
22
+ # Documentation
23
+ Documentation is still work in progress. For an example usage of the COMBINE archive
24
+ see [omex_example.py](src/pymetadata/examples/omex_example.py).
25
+
26
+ # How to cite
27
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5308801.svg)](https://doi.org/10.5281/zenodo.5308801)
28
+
29
+
30
+ # License
31
+ - Source Code: [MIT](https://opensource.org/license/MIT)
32
+ - Documentation: [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)
33
+
34
+ # Funding
35
+ Matthias König (MK) was supported by the Federal Ministry of Education and Research (BMBF, Germany) within the research network Systems Medicine of the Liver (LiSyM, grant number 031L0054). MK is supported by the Federal Ministry of Education and Research (BMBF, Germany) within ATLAS by grant number 031L0304B and by the German Research Foundation (DFG) within the Research Unit Program FOR 5151 QuaLiPerF (Quantifying Liver Perfusion-Function Relationship in Complex Resection - A Systems Medicine Approach) by grant number 436883643 and by grant number 465194077 (Priority Programme SPP 2311, Subproject SimLivA).
36
+
37
+ # Installation
38
+ `pymetadata` is available from [pypi](https://pypi.python.org/pypi/pymetadata) and
39
+ can be installed via
40
+
41
+ ```bash
42
+ pip install pymetadata
43
+ ```
44
+
45
+ # Cache path
46
+ `pymetadata` caches some information for faster retrieval. The cache path is set to
47
+
48
+ ```python
49
+ CACHE_PATH: Path = Path.home() / ".cache" / "pymetadata"
50
+ ```
51
+
52
+ To use a custom cache path use
53
+
54
+ ```python
55
+ import pymetadata
56
+ pymetadata.CACHE_PATH = <cache_path>
57
+ ```
58
+
59
+ © 2021-2025 Matthias König
@@ -0,0 +1,45 @@
1
+ # Release information
2
+
3
+ ## make release
4
+ * update ontologies via `ontology.update_ontology_files()`
5
+ * update release notes in `release-notes` with commit
6
+ * make sure all tests run (`tox -p`)
7
+ * check formating and linting (`ruff check`)
8
+ * test bump version (`uvx bump-my-version bump [major|minor|patch] --dry-run -vv`)
9
+ * bump version (`uvx bump-my-version bump [major|minor|patch]`)
10
+ * `git push --tags` (triggers release)
11
+ * `git push`
12
+ * test installation in virtualenv from pypi
13
+ ```bash
14
+ uv venv --python 3.13
15
+ uv pip install pymetadata
16
+ ```
17
+
18
+ # Install dev dependencies:
19
+ ```bash
20
+ # install core dependencies
21
+ uv sync
22
+ # install dev dependencies
23
+ uv pip install -r pyproject.toml --extra dev
24
+ ```
25
+
26
+ ## Setup tox testing
27
+ See information on https://github.com/tox-dev/tox-uv
28
+ ```bash
29
+ uv tool install tox --with tox-uv
30
+ ```
31
+ Run single tox target
32
+ ```bash
33
+ tox r -e py312
34
+ ```
35
+ Run all tests in parallel
36
+ ```bash
37
+ tox run-parallel
38
+ ```
39
+
40
+ # Setup pre-commit
41
+ ```bash
42
+ uv pip install pre-commit
43
+ pre-commit install
44
+ pre-commit run
45
+ ```
@@ -0,0 +1,36 @@
1
+ # Working with composite annotations.
2
+
3
+ Composite annotations are semantic annotations that are comprised of multiple annotation
4
+ terms linked using standard qualifiers (also known as “relations” or “predicates”)
5
+ to indicate the meaning of annotation.
6
+ Composite annotations are used when a single knowledge resource term is not available to
7
+ sufficiently define a model or data element. For model-component annotations,
8
+ composite annotations have two primary components:
9
+ 1. the physical property represented by the annotated item (e.g., chemical concentration,
10
+ fluid volume) and
11
+ 2. the physical entity, process, force, or dependency that bears the property (e.g., a pool
12
+ of ATP in the cytoplasm, blood in a cardiac cavity, the glucokinase reaction).
13
+
14
+
15
+
16
+ **entity**
17
+ OPB: https://bioportal.bioontology.org/ontologies/OPB
18
+ Ontology of Physics for Biology
19
+
20
+ Molecular weight: OPB_01146; constant parameter
21
+ Concentration of chemical: OPB_00340
22
+
23
+ OBP: fluid volume; plasma;
24
+ similar to blood volume in vessel
25
+ portion of plasma (portion of blood)
26
+
27
+ dose
28
+ OBP: mass amount of chemical;
29
+
30
+ aborption rate: "Material flow rate"
31
+ Property first; entity second
32
+
33
+
34
+ **Properties of processes**
35
+ - describe process: source, sink & mediator; flow of material from one pool to another
36
+ - to describe the source: stomach; sink
@@ -0,0 +1,6 @@
1
+ This favicon was generated using the following graphics from Twitter Twemoji:
2
+
3
+ - Graphics Title: 1f363.svg
4
+ - Graphics Author: Copyright 2020 Twitter, Inc and other contributors (https://github.com/twitter/twemoji)
5
+ - Graphics Source: https://github.com/twitter/twemoji/blob/master/assets/svg/1f363.svg
6
+ - Graphics License: CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
@@ -0,0 +1 @@
1
+ {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
@@ -0,0 +1,70 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "pymetadata"
7
+ dynamic = ["version"]
8
+ description = "pymetadata are python utilities for working with metadata."
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ authors = [
12
+ {name="Matthias König", email="konigmatt@googlemail.com"}
13
+ ]
14
+ maintainers = [
15
+ {name="Matthias König", email="konigmatt@googlemail.com"}
16
+ ]
17
+ classifiers = [
18
+ "Development Status :: 4 - Beta",
19
+ "Intended Audience :: Science/Research",
20
+ "License :: OSI Approved :: MIT License",
21
+ "Operating System :: OS Independent",
22
+ "Programming Language :: Python :: 3.10",
23
+ "Programming Language :: Python :: 3.11",
24
+ "Programming Language :: Python :: 3.12",
25
+ "Programming Language :: Python :: 3.13",
26
+ "Programming Language :: Python :: 3.14",
27
+ "Programming Language :: Python :: Implementation :: CPython",
28
+ "Topic :: Scientific/Engineering",
29
+ "Topic :: Scientific/Engineering :: Bio-Informatics",
30
+ ]
31
+ keywords = [
32
+ "modeling",
33
+ "standardization",
34
+ "COMBINE",
35
+ "metadata",
36
+ "archive",
37
+ "annotation",
38
+ ]
39
+ dependencies = [
40
+ "depinfo>=2.2.0",
41
+ "lxml>=5.3",
42
+ "rich>=13.9.4",
43
+ "requests>=2.32.3",
44
+ "pronto>=2.5.8",
45
+ "fastobo>=0.12.3",
46
+ "jinja2>=3.1.5",
47
+ "xmltodict>=0.14.2",
48
+ "pydantic>=2.10.4",
49
+ ]
50
+
51
+ [project.optional-dependencies]
52
+ dev = [
53
+ "bump-my-version>=1.2.4",
54
+ "ruff>=0.14.0",
55
+ "pre-commit>=4.0.1",
56
+ "mypy>=1.18.2",
57
+ "tox>=4.31.0",
58
+ "pytest>=8.4.2",
59
+ "pytest-cov>=7.0.0",
60
+ ]
61
+
62
+ [project_urls]
63
+ Homepage = "https://github.com/matthiaskoenig/pymetadata"
64
+ Repository = "https://github.com/matthiaskoenig/pymetadata"
65
+ Documentation = "https://github.com/matthiaskoenig/pymetadata"
66
+ Issues = "https://github.com/matthiaskoenig/pymetadata/issues"
67
+ Download = "https://pypi.org/project/pymetadata"
68
+
69
+ [tool.hatch.version]
70
+ path = "./src/pymetadata/__init__.py"
@@ -0,0 +1,6 @@
1
+ # Release notes for pymetadata 0.0.10
2
+
3
+ - ontology enums (Fix #8)
4
+ - removed ontology downloads
5
+ - fixed mypy issues (Fix #1)
6
+ - checks on additional branches (Fix #9)
@@ -0,0 +1,3 @@
1
+ # Release notes for pymetadata 0.0.11
2
+
3
+ - typehints added
@@ -0,0 +1,3 @@
1
+ # Release notes for pymetadata 0.0.12
2
+
3
+ - minor bugfixes
@@ -0,0 +1,3 @@
1
+ # Release notes for pymetadata 0.0.13
2
+
3
+ - fixing slowdown due to large enums
@@ -0,0 +1,8 @@
1
+ # Release notes for pymetadata 0.0.14
2
+
3
+ - Fix #9, enable check on all branches & macos tests
4
+ - Simplified dependencies
5
+ - Fix #13, zenodo metadata added
6
+ - Fix #14, updated KISAO
7
+ - Fix #7, rich logging
8
+ - Fix #12, removed libchebi dependency