From c4e06c56cda22701210c03cbbe601e5913e2e35e Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Sat, 27 Jul 2024 14:38:26 -0400 Subject: [PATCH] RFC: Axis Anatomical Orientation --- rfc/x/.gitattributes | 2 + rfc/x/.gitignore | 7 + rfc/x/index.md | 307 ++++++++ rfc/x/markdown/Orientation.md | 23 + rfc/x/orientation.schema.json | 28 + rfc/x/orientation.ts | 25 + rfc/x/orientation.yml | 31 + rfc/x/pixi.lock | 1245 +++++++++++++++++++++++++++++++++ rfc/x/pixi.toml | 19 + 9 files changed, 1687 insertions(+) create mode 100644 rfc/x/.gitattributes create mode 100644 rfc/x/.gitignore create mode 100644 rfc/x/index.md create mode 100644 rfc/x/markdown/Orientation.md create mode 100644 rfc/x/orientation.schema.json create mode 100644 rfc/x/orientation.ts create mode 100644 rfc/x/orientation.yml create mode 100644 rfc/x/pixi.lock create mode 100644 rfc/x/pixi.toml diff --git a/rfc/x/.gitattributes b/rfc/x/.gitattributes new file mode 100644 index 00000000..07fe41c5 --- /dev/null +++ b/rfc/x/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/rfc/x/.gitignore b/rfc/x/.gitignore new file mode 100644 index 00000000..50d4789d --- /dev/null +++ b/rfc/x/.gitignore @@ -0,0 +1,7 @@ +# pixi environments +.pixi +*.egg-info + +markdown/types +markdown/index.md +orientation.py diff --git a/rfc/x/index.md b/rfc/x/index.md new file mode 100644 index 00000000..5a570b05 --- /dev/null +++ b/rfc/x/index.md @@ -0,0 +1,307 @@ +# RFC: Axis Anatomical Orientation + +Summary: An optional, explicit field for + +## Status + +Brief description of status, including, e.g., `WIP | In-Review | Approved | Withdrawn | Obsolete`. + +| Name | GitHub Handle | Institution | Date | Status | +|-----------|---------------|-------------|------------|----------------------------------------| +| David Feng | dyf | Allen Institute for Neural Dynamics | 2023-07-26 | Author | +| Matthew McCormick | thewtex | Kitware | 2024-07-27 | Author | + +## Overview + +This RFC proposes the addition of an optional `anatomicalOrientation` field to the OME-NGFF axis description. +This field will provide explicit metadata about the anatomical orientation in an image using a +controlled vocabulary. The goal is to preserve essential biological information and eliminate assumptions +about orientation which can lead to errors in downstream analysis and alignment to anatomical atlases. + +## Background + +In the current OME-Zarr draft, canonical axis names are identified, e.g. `x`, `y`, `z` anatomical orientation of a subject is not specified. This omission forces tools to make assumptions about orientation, which can result in wasted time and erroneous analysis. + +Anatomical symmetry, such as in the brain, makes it impossible to retroactively determine the orientation of acquired data. By explicitly defining anatomical orientation in the specification, we can ensure consistency and accuracy in data analysis and interpretation. + +Existing standards provide some prior art for this proposal: +- The Insight Toolkit (ITK) ecosystem uses three-letter acronyms (e.g., `RAS` for Right-Anterior-Superior) to describe anatomical orientation, but these acronyms are often ambiguous and require users to look up their meanings frequently. +- Nifti’s coordinate transforms assume data maps into `RAS`, but this relies on users being familiar with and adhering to the Nifti specification. +- The Brain Image Library uses a more explicit controlled vocabulary, asking submitters to choose orientation for each axis (e.g., `left-to-right`, `anterior-to-posterior`). This approach is used at the Allen Institute for Neural Dynamics and has been discussed in community forums. +- The open Metadata Initiative for Neuroscience Data Structures (openMINDS) Metadata Initiative defines `anatomicalAxesOrientation` to record this information in tuples like `RAS`. +- The Digital Imaging and Communications in Medicine (DICOM) standard explicitly specifies anatomical orientation for bipeds as x-axis is increasing to the left hand side of the patient, the y-axis is increasing to the posterior side of the patient, and the z-axis is increasing toward the head of the patient and has a similar dorsal, cranial, rostral, proximal, and distal for quadrupeds. + +## Proposal + +We propose adding an OPTIONAL `anatomicalOrientation` field to the `axes` metadata in the OME-Zarr specification. This field will use a controlled vocabulary to explicitly define the anatomical orientation of the image. + +This metadata data MUST only be used in cases where there is a single subject in the acquired volume or extracted image region-of-interest and the subject is roughly aligned to the imaging axes. + +### Controlled Vocabulary + +The controlled vocabulary for the `anatomicalOrientation` field will include: + +- `left-to-right` +- `right-to-left` + +- `anterior-to-posterior` +- `posterior-to-anterior` + +- `inferior-to-superior` +- `superior-to-inferior` +- `dorsal-to-ventral` +- `ventral-to-dorsal` +- `rostral-to-caudal` +- `caudal-to-rostral` + +A set of NGFF `axes` MUST only have one of the set `{ "left-to-right", "right-to-left" }` or `{ "anterior-to-posterior", "posterior-to-anterior" }` or the remaining values. + +### Default Value + +For images of biped or quadruped subjects, `anatomicalOrientation` SHOULD be explicitly specified. + +If no orientation is specified, the implicit default value will be + +```json + "axes": [ + { "name": "z", "type": "space", "unit": "micrometer", "anatomicalOrientation": "inferior-to-superior" }, + { "name": "y", "type": "space", "unit": "micrometer", "anatomicalOrientation": "posterior-to-anterior" }, + { "name": "x", "type": "space", "unit": "micrometer", "anatomicalOrientation": "left-to-right" } + ] +``` + +To maintain consistency with the Nifti standard. + +## Coding Scheme + +We define the [LinkML encoding scheme](./orientation.yml) to enumerate the possible values +and provides their descriptions: + +### Enum: Orientation + +Anatomical orientation refers to the specific arrangement and directional alignment of anatomical structures within an imaging dataset. It is crucial for ensuring accurate alignment and comparison of images to anatomical atlases, facilitating consistent analysis and interpretation of biological data. + +#### Permissible Values + +| Text | Description | Meaning | Other Information | +| :--- | :---: | :---: | ---: | +| left-to-right | Describes the directional orientation from the left side to the right side of an anatomical structure or body. | | | +| right-to-left | Describes the directional orientation from the right side to the left side of an anatomical structure or body. | | | +| anterior-to-posterior | Describes the directional orientation from the front (anterior) to the back (posterior) of an anatomical structure or body. | | | +| posterior-to-anterior | Describes the directional orientation from the back (posterior) to the front (anterior) of an anatomical structure or body. | | | +| inferior-to-superior | Describes the directional orientation from the lower (inferior) to the upper (superior) part of an anatomical structure or body. | | | +| superior-to-inferior | Describes the directional orientation from the upper (superior) to the lower (inferior) part of an anatomical structure or body. | | | +| dorsal-to-ventral | Describes the directional orientation from the back (dorsal) to the front (ventral) of an anatomical structure or body. | | | +| ventral-to-dorsal | Describes the directional orientation from the front (ventral) to the back (dorsal) of an anatomical structure or body. | | | +| rostral-to-caudal | Describes the directional orientation from the front (rostral) to the back (caudal) end of an anatomical structure, typically used in reference to the central nervous system. | | | +| caudal-to-rostral | Describes the directional orientation from the back (caudal) to the front (rostral) end of an anatomical structure, typically used in reference to the central nervous system. | | | + +Which coorresponds to the following JSON Schema, + +## Requirements + +For the problem(s) solved by this RFC, what constrains the possible solutions? +List other RFCs, or standards (ISO, etc.) which are applicable. It is suggested +that the following text SHOULD be used in all RFCs: + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be +interpreted as described in [IETF RFC 2119][IETF RFC 2119] + +## Stakeholders + +Who has a stake in whether this RFC is accepted? + +* Facilitator: + - Josh Moore (German Bioimaging) +* Reviewers: + - Andras Lasso (Queens University) + - Sharmishtaa Seshamani (Allen Institute for Neural Dynamics) + - Lydia Ng (Allen Institute for Brain Science) +* Consulted: + - Yaël Balbastre (University College London) + - Davis Bennett + - John Bogovic (Janelia Research) + - Steve Pieper (Isomics) + - David Clunie (PixelMed) + - Nick Tustison (University of Virginia) + - Nick Lusk (Allen Institute for Neural Dynamics) + - Cai McCann + - Camilo Laiton + - Alan Watson (University of Pittsburgh) + - Dzenan Zukic (Kitware) + - Satra Ghosh (MIT) + - Niles Grattis (Cahal Neuro) + - Wouter-Michiel Vierdag (EMBL) + - Luca Marconato (EMBL) +* Socialization: + - Discussed at the [Get Your Brain Together HCK02](https://github.com/InsightSoftwareConsortium/GetYourBrainTogether/blob/main/HCK02_2023_Allen_Institute_Hybrid/BoFBreakouts/Anatomic_orientation_in_OME-Zarr_NGFF_BoF_notes.md) + - ome/ngff GitHub Issue #208 + - Discussed at the Get Your Brain Together HKC03 + +## Implementation + +The implementation will involve adding the `orientation` field to the `axes` metadata +in the NGFF schema. The field will use the controlled vocabulary specified above. + +In JSON-Schema: + +```json +{ + "$defs": { + "Orientation": { + "description": "Anatomical orientation refers to the specific arrangement and directional alignment of anatomical structures within an imaging dataset. It is crucial for ensuring accurate alignment and comparison of images to anatomical atlases, facilitating consistent analysis and interpretation of biological data.", + "enum": [ + "left-to-right", + "right-to-left", + "anterior-to-posterior", + "posterior-to-anterior", + "inferior-to-superior", + "superior-to-inferior", + "dorsal-to-ventral", + "ventral-to-dorsal", + "rostral-to-caudal", + "caudal-to-rostral" + ], + "title": "Orientation", + "type": "string" + } + }, + "$id": "https://w3id.org/ome/ngff", + "$schema": "https://json-schema.org/draft/2019-09/schema", + "additionalProperties": true, + "metamodel_version": "1.7.0", + "title": "orientation", + "type": "object", + "version": "0.1.0" +} +``` + +In Pydantic: + +```python +from enum import Enum + +class Orientation(str, Enum): + """ + Anatomical orientation refers to the specific arrangement and directional alignment of anatomical structures within an imaging dataset. It is crucial for ensuring accurate alignment and comparison of images to anatomical atlases, facilitating consistent analysis and interpretation of biological data. + """ + # Describes the directional orientation from the left side to the right side of an anatomical structure or body. + left_to_right = "left-to-right" + # Describes the directional orientation from the right side to the left side of an anatomical structure or body. + right_to_left = "right-to-left" + # Describes the directional orientation from the front (anterior) to the back (posterior) of an anatomical structure or body. + anterior_to_posterior = "anterior-to-posterior" + # Describes the directional orientation from the back (posterior) to the front (anterior) of an anatomical structure or body. + posterior_to_anterior = "posterior-to-anterior" + # Describes the directional orientation from the lower (inferior) to the upper (superior) part of an anatomical structure or body. + inferior_to_superior = "inferior-to-superior" + # Describes the directional orientation from the upper (superior) to the lower (inferior) part of an anatomical structure or body. + superior_to_inferior = "superior-to-inferior" + # Describes the directional orientation from the back (dorsal) to the front (ventral) of an anatomical structure or body. + dorsal_to_ventral = "dorsal-to-ventral" + # Describes the directional orientation from the front (ventral) to the back (dorsal) of an anatomical structure or body. + ventral_to_dorsal = "ventral-to-dorsal" + # Describes the directional orientation from the front (rostral) to the back (caudal) end of an anatomical structure, typically used in reference to the central nervous system. + rostral_to_caudal = "rostral-to-caudal" + # Describes the directional orientation from the back (caudal) to the front (rostral) end of an anatomical structure, typically used in reference to the central nervous system. + caudal_to_rostral = "caudal-to-rostral" +``` + +TypeScript: + +```typescript +/** +* Anatomical orientation refers to the specific arrangement and directional alignment of anatomical structures within an imaging dataset. It is crucial for ensuring accurate alignment and comparison of images to anatomical atlases, facilitating consistent analysis and interpretation of biological data. +*/ +export enum Orientation { + /** Describes the directional orientation from the left side to the right side of an anatomical structure or body. */ + left_to_right = "left-to-right", + /** Describes the directional orientation from the right side to the left side of an anatomical structure or body. */ + right_to_left = "right-to-left", + /** Describes the directional orientation from the front (anterior) to the back (posterior) of an anatomical structure or body. */ + anterior_to_posterior = "anterior-to-posterior", + /** Describes the directional orientation from the back (posterior) to the front (anterior) of an anatomical structure or body. */ + posterior_to_anterior = "posterior-to-anterior", + /** Describes the directional orientation from the lower (inferior) to the upper (superior) part of an anatomical structure or body. */ + inferior_to_superior = "inferior-to-superior", + /** Describes the directional orientation from the upper (superior) to the lower (inferior) part of an anatomical structure or body. */ + superior_to_inferior = "superior-to-inferior", + /** Describes the directional orientation from the back (dorsal) to the front (ventral) of an anatomical structure or body. */ + dorsal_to_ventral = "dorsal-to-ventral", + /** Describes the directional orientation from the front (ventral) to the back (dorsal) of an anatomical structure or body. */ + ventral_to_dorsal = "ventral-to-dorsal", + /** Describes the directional orientation from the front (rostral) to the back (caudal) end of an anatomical structure, typically used in reference to the central nervous system. */ + rostral_to_caudal = "rostral-to-caudal", + /** Describes the directional orientation from the back (caudal) to the front (rostral) end of an anatomical structure, typically used in reference to the central nervous system. */ + caudal_to_rostral = "caudal-to-rostral", +}; +``` + +## Drawbacks, risks, alternatives, and unknowns + +- **Costs:** This will add another field to the axes metadata. While some implementers do not deal with anatomical orientation, this field is optional. +- **Risks:** Incorrect implementation or interpretation of the new field could lead to data misalignment. +- **Alternatives:** Continue using existing methods with assumed or undefined orientations, which is error-prone. + +## Abandoned Ideas + +Use three-letter encoding, which is common in other implementations, e.g. `RAS`. +However, these acronyms are not immediately decipherable for those who do not routinely +encounter anatomical information. Second, there is ambiguity in whether `R` refers to +"starting from the right" or "going to the right". Third, since NGFF axes are encoded +separately, it is most natural to encode each axis direction separately. + +A free-form value in `anatomicalOrientation` or `long_name` fields was considered, but +an consistently understood controlled vocabuary is desired. + +Defining only a default implicit orientation was considered, but this did not meet the +needs of real-world acquisitions. + +## Prior art and references + +### + +- [ITK Coordinate Systems](https://www.slicer.org/wiki/Coordinate_systems#Anatomical_coordinate_system) +- [Nifti Orientation](https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/Orientation%20Explained#:~:text=A%20valid%20NIfTI%20image%20can,way%20aro) +- [Allen Institute Data Schema](https://github.com/AllenNeuralDynamics/aind-data-schema/blob/24d3899823557c7b45d1cdff844993dee3c63e9d/src/aind_data_schema/imaging/acquisition.py#L26) +- [Get Your Brain Together Hackathon Notes](https://github.com/InsightSoftwareConsortium/GetYourBrainTogether/blob/main/HCK02_2023_Allen_Institute_Hybrid/BoFBreakouts/Anatomic_orientation_in_OME-Zarr_NGFF_BoF_notes.md) +- [3D Slicer Coordinate Systems documentation](https://slicer.readthedocs.io/en/latest/user_guide/coordinate_systems.html) +- [Human Brain Project openMINDS anatomicalAxesOrientation](https://raw.githubusercontent.com/HumanBrainProject/openMINDS_controlledTerms/v1/instances/anatomicalAxesOrientation/RAS.jsonld) +- [DICOM Image Position and Image Orientation C7.6.2.1.1](https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.2.html#sect_C.7.6.2.1.1) + +Related and complementary is the [Nifti-Zarr draft standard](https://github.com/neuroscales/nifti-zarr/tree/draft/0.2), whose goal is to enhance OME-Zarr with Nifti metadata. +However, this only implicitly allows an `RAS` orientation where as this proposal enables explicit encoding with other orientation options. + +For simplicity and to address the most common use cases, only instances where a single organism are present in the image are support. + +## Future possibilities + +Future work may include expanding the controlled vocabulary based on community feedback and evolving requirements. + +## Performance + +Explicitly defining anatomical orientation is expected to improve the accuracy and efficiency of downstream analysis, but specific performance metrics will need to be defined and evaluated. + +## Backwards Compatibility + +The proposed change is backwards compatible, as it introduces a new optional field without altering existing fields. + +## Testing + +Testing will include validating the presence and correctness of the `anatomicalOrientation` field in the metadata and ensuring compatibility with existing tools and workflows. + +## UI/UX + +End-users applications SHOULD display the encoded information. + +## Tutorials and Examples (Optional Header) + +TODO + +Note: This document is based on the [RFC template from Hashicorp][template] +(TODO: license requested). + +[IETF RFC 2119]: https://tools.ietf.org/html/rfc2119 +[rubber duck debugging]: https://en.wikipedia.org/wiki/Rubber_duck_debugging +[template]: https://works.hashicorp.com/articles/rfc-template \ No newline at end of file diff --git a/rfc/x/markdown/Orientation.md b/rfc/x/markdown/Orientation.md new file mode 100644 index 00000000..ccd2348b --- /dev/null +++ b/rfc/x/markdown/Orientation.md @@ -0,0 +1,23 @@ + +# Enum: Orientation + +Anatomical orientation refers to the specific arrangement and directional alignment of anatomical structures within an imaging dataset. It is crucial for ensuring accurate alignment and comparison of images to anatomical atlases, facilitating consistent analysis and interpretation of biological data. + +URI: [ngff:Orientation](https://w3id.org/ome/ngff/Orientation) + + +## Permissible Values + +| Text | Description | Meaning | Other Information | +| :--- | :---: | :---: | ---: | +| left-to-right | Describes the directional orientation from the left side to the right side of an anatomical structure or body. | | | +| right-to-left | Describes the directional orientation from the right side to the left side of an anatomical structure or body. | | | +| anterior-to-posterior | Describes the directional orientation from the front (anterior) to the back (posterior) of an anatomical structure or body. | | | +| posterior-to-anterior | Describes the directional orientation from the back (posterior) to the front (anterior) of an anatomical structure or body. | | | +| inferior-to-superior | Describes the directional orientation from the lower (inferior) to the upper (superior) part of an anatomical structure or body. | | | +| superior-to-inferior | Describes the directional orientation from the upper (superior) to the lower (inferior) part of an anatomical structure or body. | | | +| dorsal-to-ventral | Describes the directional orientation from the back (dorsal) to the front (ventral) of an anatomical structure or body. | | | +| ventral-to-dorsal | Describes the directional orientation from the front (ventral) to the back (dorsal) of an anatomical structure or body. | | | +| rostral-to-caudal | Describes the directional orientation from the front (rostral) to the back (caudal) end of an anatomical structure, typically used in reference to the central nervous system. | | | +| caudal-to-rostral | Describes the directional orientation from the back (caudal) to the front (rostral) end of an anatomical structure, typically used in reference to the central nervous system. | | | + diff --git a/rfc/x/orientation.schema.json b/rfc/x/orientation.schema.json new file mode 100644 index 00000000..15954df1 --- /dev/null +++ b/rfc/x/orientation.schema.json @@ -0,0 +1,28 @@ +{ + "$defs": { + "Orientation": { + "description": "Anatomical orientation refers to the specific arrangement and directional alignment of anatomical structures within an imaging dataset. It is crucial for ensuring accurate alignment and comparison of images to anatomical atlases, facilitating consistent analysis and interpretation of biological data.", + "enum": [ + "left-to-right", + "right-to-left", + "anterior-to-posterior", + "posterior-to-anterior", + "inferior-to-superior", + "superior-to-inferior", + "dorsal-to-ventral", + "ventral-to-dorsal", + "rostral-to-caudal", + "caudal-to-rostral" + ], + "title": "Orientation", + "type": "string" + } + }, + "$id": "https://w3id.org/ome/ngff", + "$schema": "https://json-schema.org/draft/2019-09/schema", + "additionalProperties": true, + "metamodel_version": "1.7.0", + "title": "orientation", + "type": "object", + "version": "0.1.0" +} diff --git a/rfc/x/orientation.ts b/rfc/x/orientation.ts new file mode 100644 index 00000000..2f7d028a --- /dev/null +++ b/rfc/x/orientation.ts @@ -0,0 +1,25 @@ +/** + * Anatomical orientation refers to the specific arrangement and directional alignment of anatomical structures within an imaging dataset. It is crucial for ensuring accurate alignment and comparison of images to anatomical atlases, facilitating consistent analysis and interpretation of biological data. + */ +export enum Orientation { + /** Describes the directional orientation from the left side to the right side of an anatomical structure or body. */ + left_to_right = "left-to-right", + /** Describes the directional orientation from the right side to the left side of an anatomical structure or body. */ + right_to_left = "right-to-left", + /** Describes the directional orientation from the front (anterior) to the back (posterior) of an anatomical structure or body. */ + anterior_to_posterior = "anterior-to-posterior", + /** Describes the directional orientation from the back (posterior) to the front (anterior) of an anatomical structure or body. */ + posterior_to_anterior = "posterior-to-anterior", + /** Describes the directional orientation from the lower (inferior) to the upper (superior) part of an anatomical structure or body. */ + inferior_to_superior = "inferior-to-superior", + /** Describes the directional orientation from the upper (superior) to the lower (inferior) part of an anatomical structure or body. */ + superior_to_inferior = "superior-to-inferior", + /** Describes the directional orientation from the back (dorsal) to the front (ventral) of an anatomical structure or body. */ + dorsal_to_ventral = "dorsal-to-ventral", + /** Describes the directional orientation from the front (ventral) to the back (dorsal) of an anatomical structure or body. */ + ventral_to_dorsal = "ventral-to-dorsal", + /** Describes the directional orientation from the front (rostral) to the back (caudal) end of an anatomical structure, typically used in reference to the central nervous system. */ + rostral_to_caudal = "rostral-to-caudal", + /** Describes the directional orientation from the back (caudal) to the front (rostral) end of an anatomical structure, typically used in reference to the central nervous system. */ + caudal_to_rostral = "caudal-to-rostral", +} diff --git a/rfc/x/orientation.yml b/rfc/x/orientation.yml new file mode 100644 index 00000000..854b0dd5 --- /dev/null +++ b/rfc/x/orientation.yml @@ -0,0 +1,31 @@ +id: https://w3id.org/ome/ngff +name: orientation +version: 0.1.0 +description: >- + The orientation field provides explicit metadata about the anatomical orientation in an image using a + controlled vocabulary. The goal is to preserve essential biological information and eliminate assumptions + about orientation which can lead to errors in downstream analysis and alignment to anatomical atlases. +prefixes: + ome: https://w3id.org/ome/ + ngff: https://w3id.org/ome/ngff/ + linkml: https://w3id.org/linkml/ +imports: + - linkml:types +default_range: string +default_prefix: ngff + +enums: + Orientation: + description: >- + Anatomical orientation refers to the specific arrangement and directional alignment of anatomical structures within an imaging dataset. It is crucial for ensuring accurate alignment and comparison of images to anatomical atlases, facilitating consistent analysis and interpretation of biological data. + permissible_values: + left-to-right: Describes the directional orientation from the left side to the right side of an anatomical structure or body. + right-to-left: Describes the directional orientation from the right side to the left side of an anatomical structure or body. + anterior-to-posterior: Describes the directional orientation from the front (anterior) to the back (posterior) of an anatomical structure or body. + posterior-to-anterior: Describes the directional orientation from the back (posterior) to the front (anterior) of an anatomical structure or body. + inferior-to-superior: Describes the directional orientation from the lower (inferior) to the upper (superior) part of an anatomical structure or body. + superior-to-inferior: Describes the directional orientation from the upper (superior) to the lower (inferior) part of an anatomical structure or body. + dorsal-to-ventral: Describes the directional orientation from the back (dorsal) to the front (ventral) of an anatomical structure or body. + ventral-to-dorsal: Describes the directional orientation from the front (ventral) to the back (dorsal) of an anatomical structure or body. + rostral-to-caudal: Describes the directional orientation from the front (rostral) to the back (caudal) end of an anatomical structure, typically used in reference to the central nervous system. + caudal-to-rostral: Describes the directional orientation from the back (caudal) to the front (rostral) end of an anatomical structure, typically used in reference to the central nervous system. \ No newline at end of file diff --git a/rfc/x/pixi.lock b/rfc/x/pixi.lock new file mode 100644 index 00000000..ec0e4e95 --- /dev/null +++ b/rfc/x/pixi.lock @@ -0,0 +1,1245 @@ +version: 5 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.4-h194c7f8_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz + - pypi: https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/44/827b2a91a5816512fcaf3cc4ebc465ccd5d598c45cefa6703fcf4a79018f/attrs-23.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1c/d5/c84e1a17bf61d4df64ca866a1c9a913874b4e9bdc131ec689a0ad013fb36/certifi-2024.7.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cb/51/3e7e021920cfe2f7d18b672642e13f7dc4f53545d530b52ee6533b6681ca/CFGraph-0.2.1.tar.gz + - pypi: https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/fb/14d30eb4956408ee3ae09ad34299131fb383c47df355ddb428a7331cfa1e/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dc/8e/ee360a94aa8a2079e805044ea08cfffb61c7c30284ae784af97760e4a4ef/curies-0.7.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/20/8d/778b7d51b981a96554f29136cd59ca7880bf58094338085bcf2a979a0e6a/Deprecated-1.2.14-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/96/c2/3dd434b0108730014f1b96fd286040dc3bcb70066346f7e01ec2ac95865f/et_xmlfile-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/00/be/d59db2d1d52697c6adc9eacaf50e8965b6345cc143f671e1ed068818d5cf/graphviz-0.20.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bd/37/56b0da468a85e7704f3b2bc045015301bdf4be2184a44868c71f6dca6fe2/greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7b/24/61844afbf38acf419e01ca2639f7bd079584523d34471acbc4152ee991c5/hbreader-0.9.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/3e/741d8c82801c347547f8a2a06aa57dbb1992be9e948df2ea0eda2c8b79e8/idna-3.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b6/85/7882d311924cbcfc70b1890780763e36ff0b140c7e51c110fc59a532f087/isodate-0.6.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/00/cc/7fbd75d3362e939eb98bcf9bd22f3f7df8c237a85148899ed3d38e5614e5/json_flattener-0.1.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/71/57/38c47753c67ad67f76ba04ea673c9b77431a19e7b2601937e6872a99e841/jsonasobj-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/90/0d93963711f811efe528e3cead2f2bfb78c196df74d8a24fe8d655288e50/jsonasobj2-1.0.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/73/07/02e16ed01e04a374e644b575638ec7987ae846d25ad97bcc9945a3ee4b0e/jsonpatch-1.33-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/16/0a/3b1ee3721b4bd684b0e29c724ab82ed3b2c0e42285beb8bf9e18de8c903f/jsonpath_ng-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/07/44bd408781594c4d0a027666ef27fab1e441b109dc3b76b4f836f8fd04fe/jsonschema_specifications-2023.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d2/3e/e0dfcd090d710eb2b804f51bafafa202991c4a2388234a50f0492a4f02e5/linkml-1.8.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/47/cbddeb34d1ec97844465efaa55c4031267efed28de888d5c799e5396f968/linkml_dataops-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b1/15/b832a9b992a2934a9df312b6def412f077ee829fd795ee0fa5062482f2fc/linkml_runtime-1.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/0d/2454f072fae3b5a137c119abf15465d1771319dfe9e4acbb31722a0fff91/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d0/31/ba45bf0b2aa7898d81cbbfac0e88c267befb59ad91a19e36e1bc5578ddb1/parse-1.20.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/e8/715b09df3dab02b07809d812042dc47a46236b5603d9d3a2572dbd1d8a97/prefixcommons-0.1.12-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7c/76/41960fc3a60eb42c57075989fb5ea94fb887bb6997595410a099cf215921/prefixmaps-0.2.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/09/b3/a5a54b47cccd1ab661ed5775235c5e06924753c2d4817737c5667bfa19a8/pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/96/ee/370c3b1908327dac967841ff723db391a02f3637c95c6898160e5ffe1060/PyJSG-0.11.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9d/ea/6d76df31432a0e6fdf81681a895f009a4bb47b3c39036db3e1b528191d52/pyparsing-3.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9b/48/efb1b1d3f3aee8cfc9f256738ca6e79ec362edbfc3a3abecbaf84db04643/PyShEx-0.8.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/39/7d/ff5000e0882f2b3995bef20b667945d3faa9289b556295e4cc5d2e91f104/PyShExC-0.9.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/f9/cf155cf32ca7d6fa3601bc4c5dd19086af4b320b706919d48a4c79081cf9/pytest-8.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dc/1e/fb11174c9eaebcec27d36e9e994b90ffa168bc3226925900b9dbbf16c9da/pytest-logging-2015.11.4.tar.gz + - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/fd/499b261a34e9c6e39b9f5711c4b3093bca980b8db4b49de3009d808f41c9/PyTrie-0.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b4/33/720548182ffa8344418126017aa1d4ab4aeec9a2275f04ce3f3573d8ace8/PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d4/b0/7b7d8b5b0d01f1a0b12cc2e5038a868ef3a15825731b8a0d776cf47566c0/rdflib-7.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d0/d2/760527679057a7dad67f4e41f3e0c463b247f0bdbffc594e0add7c9077d6/rdflib_jsonld-0.6.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/97/d8a785d2c7131c731c90cb0e65af9400081af4380bea4ec04868dc21aa92/rdflib_shim-1.0.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/59/2056f61236782a2c86b33906c025d4f4a0b17be0161b63b70fd9e8775d36/referencing-0.35.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/d4/f7407c3d15d5ac779c3dd34fbbc6ea2090f77bd7dd12f207ccf881551208/rfc3987-1.3.8-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/91/ea027a9f835c2c59603236b451f7cb1ee5a280b9df26da7b4850e4f1a13a/rpds_py-0.19.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/73/67/8ece580cc363331d9a53055130f86b096bf16e38156e33b1d3014fffda6b/ruamel.yaml-0.18.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/30/d3/5fe978cd01a61c12efd24d65fa68c6f28f28c8073a06cf11db3a854390ca/ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/18/6e/d23bcde21d4ef0250a74e7505d2990d429f862be65810a3b650a69def7f0/ShExJSG-0.8.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/77/48ce09fce2836856588beb84f434c1f8812d1428326efd993b619d49d949/sparqlslurper-0.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/89/176e3db96e31e795d7dfd91dd67749d3d1f0316bb30c6931a6140e1a0477/SPARQLWrapper-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/60/f8/7794f3055d50e96cee04c19c7faeedacb323c7762f334660ba03bed95485/SQLAlchemy-2.0.31-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c7/1b/af4f4c4f3f7339a4b7eb3c0ab13416db98f8ac09de3399129ee5fdfa282b/types_python_dateutil-2.9.0.20240316-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ca/1c/89ffc63a9605b583d5df2be791a27bc1a42b7c32bab68d3c8f2f73a98cd4/urllib3-2.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/24/01/a4034a94a5f1828eb050230e7cf13af3ac23cf763512b6afe008d3def97c/watchdog-4.0.1-py3-none-manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/3b/45/0c30e10a2ac52606476394e4ba11cf3b12ba5823e7fbb9167f80eee6000a/webcolors-24.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/62/30ca2405de6a20448ee557ab2cd61ab9c5900be7cbd18a2639db595f0b98/wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl +packages: +- kind: conda + name: _libgcc_mutex + version: '0.1' + build: conda_forge + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- kind: conda + name: _openmp_mutex + version: '4.5' + build: 2_gnu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23621 + timestamp: 1650670423406 +- kind: pypi + name: annotated-types + version: 0.7.0 + url: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + sha256: 1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 + requires_dist: + - typing-extensions>=4.0.0 ; python_version < '3.9' + requires_python: '>=3.8' +- kind: pypi + name: antlr4-python3-runtime + version: 4.9.3 + url: https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz + sha256: f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b + requires_dist: + - typing ; python_version < '3.5' +- kind: pypi + name: arrow + version: 1.3.0 + url: https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl + sha256: c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80 + requires_dist: + - python-dateutil>=2.7.0 + - types-python-dateutil>=2.8.10 + - doc8 ; extra == 'doc' + - sphinx>=7.0.0 ; extra == 'doc' + - sphinx-autobuild ; extra == 'doc' + - sphinx-autodoc-typehints ; extra == 'doc' + - sphinx-rtd-theme>=1.3.0 ; extra == 'doc' + - dateparser==1.* ; extra == 'test' + - pre-commit ; extra == 'test' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mock ; extra == 'test' + - pytz==2021.1 ; extra == 'test' + - simplejson==3.* ; extra == 'test' + requires_python: '>=3.8' +- kind: pypi + name: attrs + version: 23.2.0 + url: https://files.pythonhosted.org/packages/e0/44/827b2a91a5816512fcaf3cc4ebc465ccd5d598c45cefa6703fcf4a79018f/attrs-23.2.0-py3-none-any.whl + sha256: 99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 + requires_dist: + - importlib-metadata ; python_version < '3.8' + - attrs[tests] ; extra == 'cov' + - coverage[toml]>=5.3 ; extra == 'cov' + - attrs[tests] ; extra == 'dev' + - pre-commit ; extra == 'dev' + - furo ; extra == 'docs' + - myst-parser ; extra == 'docs' + - sphinx ; extra == 'docs' + - sphinx-notfound-page ; extra == 'docs' + - sphinxcontrib-towncrier ; extra == 'docs' + - towncrier ; extra == 'docs' + - zope-interface ; extra == 'docs' + - attrs[tests-no-zope] ; extra == 'tests' + - zope-interface ; extra == 'tests' + - mypy>=1.6 ; (platform_python_implementation == 'CPython' and python_version >= '3.8') and extra == 'tests-mypy' + - pytest-mypy-plugins ; (platform_python_implementation == 'CPython' and python_version >= '3.8') and extra == 'tests-mypy' + - attrs[tests-mypy] ; extra == 'tests-no-zope' + - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'tests-no-zope' + - hypothesis ; extra == 'tests-no-zope' + - pympler ; extra == 'tests-no-zope' + - pytest-xdist[psutil] ; extra == 'tests-no-zope' + - pytest>=4.3.0 ; extra == 'tests-no-zope' + requires_python: '>=3.7' +- kind: conda + name: bzip2 + version: 1.0.8 + build: h4bc722e_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- kind: conda + name: ca-certificates + version: 2024.7.4 + build: hbcca054_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda + sha256: c1548a3235376f464f9931850b64b02492f379b2f2bb98bc786055329b080446 + md5: 23ab7665c5f63cfb9f1f6195256daac6 + license: ISC + purls: [] + size: 154853 + timestamp: 1720077432978 +- kind: pypi + name: certifi + version: 2024.7.4 + url: https://files.pythonhosted.org/packages/1c/d5/c84e1a17bf61d4df64ca866a1c9a913874b4e9bdc131ec689a0ad013fb36/certifi-2024.7.4-py3-none-any.whl + sha256: c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90 + requires_python: '>=3.6' +- kind: pypi + name: cfgraph + version: 0.2.1 + url: https://files.pythonhosted.org/packages/cb/51/3e7e021920cfe2f7d18b672642e13f7dc4f53545d530b52ee6533b6681ca/CFGraph-0.2.1.tar.gz + sha256: b57fe7044a10b8ff65aa3a8a8ddc7d4cd77bf511b42e57289cd52cbc29f8fe74 + requires_dist: + - rdflib>=0.4.2 +- kind: pypi + name: chardet + version: 5.2.0 + url: https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl + sha256: e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970 + requires_python: '>=3.7' +- kind: pypi + name: charset-normalizer + version: 3.3.2 + url: https://files.pythonhosted.org/packages/ee/fb/14d30eb4956408ee3ae09ad34299131fb383c47df355ddb428a7331cfa1e/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b + requires_python: '>=3.7.0' +- kind: pypi + name: click + version: 8.1.7 + url: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl + sha256: ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 + requires_dist: + - colorama ; platform_system == 'Windows' + - importlib-metadata ; python_version < '3.8' + requires_python: '>=3.7' +- kind: pypi + name: curies + version: 0.7.10 + url: https://files.pythonhosted.org/packages/dc/8e/ee360a94aa8a2079e805044ea08cfffb61c7c30284ae784af97760e4a4ef/curies-0.7.10-py3-none-any.whl + sha256: ad80f420dd76b6f3e921a245370ff6ab7473c48c29c17254970c03cd2e58af5f + requires_dist: + - pytrie + - pydantic + - requests + - sphinx ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - sphinx-automodapi ; extra == 'docs' + - fastapi ; extra == 'fastapi' + - python-multipart ; extra == 'fastapi' + - httpx ; extra == 'fastapi' + - defusedxml ; extra == 'fastapi' + - uvicorn ; extra == 'fastapi' + - flask ; extra == 'flask' + - defusedxml ; extra == 'flask' + - pandas ; extra == 'pandas' + - rdflib ; extra == 'rdflib' + - pytest ; extra == 'tests' + - coverage ; extra == 'tests' + requires_python: '>=3.8' +- kind: pypi + name: deprecated + version: 1.2.14 + url: https://files.pythonhosted.org/packages/20/8d/778b7d51b981a96554f29136cd59ca7880bf58094338085bcf2a979a0e6a/Deprecated-1.2.14-py2.py3-none-any.whl + sha256: 6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c + requires_dist: + - wrapt<2,>=1.10 + - tox ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - bump2version<1 ; extra == 'dev' + - sphinx<2 ; extra == 'dev' + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- kind: pypi + name: et-xmlfile + version: 1.1.0 + url: https://files.pythonhosted.org/packages/96/c2/3dd434b0108730014f1b96fd286040dc3bcb70066346f7e01ec2ac95865f/et_xmlfile-1.1.0-py3-none-any.whl + sha256: a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada + requires_python: '>=3.6' +- kind: pypi + name: fqdn + version: 1.5.1 + url: https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl + sha256: 3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014 + requires_dist: + - cached-property>=1.3.0 ; python_version < '3.8' + requires_python: '>=2.7,!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,<4' +- kind: pypi + name: graphviz + version: 0.20.3 + url: https://files.pythonhosted.org/packages/00/be/d59db2d1d52697c6adc9eacaf50e8965b6345cc143f671e1ed068818d5cf/graphviz-0.20.3-py3-none-any.whl + sha256: 81f848f2904515d8cd359cc611faba817598d2feaac4027b266aa3eda7b3dde5 + requires_dist: + - tox>=3 ; extra == 'dev' + - flake8 ; extra == 'dev' + - pep8-naming ; extra == 'dev' + - wheel ; extra == 'dev' + - twine ; extra == 'dev' + - sphinx<7,>=5 ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - pytest<8.1,>=7 ; extra == 'test' + - pytest-mock>=3 ; extra == 'test' + - pytest-cov ; extra == 'test' + - coverage ; extra == 'test' + requires_python: '>=3.8' +- kind: pypi + name: greenlet + version: 3.0.3 + url: https://files.pythonhosted.org/packages/bd/37/56b0da468a85e7704f3b2bc045015301bdf4be2184a44868c71f6dca6fe2/greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + sha256: fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf + requires_dist: + - sphinx ; extra == 'docs' + - furo ; extra == 'docs' + - objgraph ; extra == 'test' + - psutil ; extra == 'test' + requires_python: '>=3.7' +- kind: pypi + name: hbreader + version: 0.9.1 + url: https://files.pythonhosted.org/packages/7b/24/61844afbf38acf419e01ca2639f7bd079584523d34471acbc4152ee991c5/hbreader-0.9.1-py3-none-any.whl + sha256: 9a6e76c9d1afc1b977374a5dc430a1ebb0ea0488205546d4678d6e31cc5f6801 + requires_python: '>=3.7' +- kind: pypi + name: idna + version: '3.7' + url: https://files.pythonhosted.org/packages/e5/3e/741d8c82801c347547f8a2a06aa57dbb1992be9e948df2ea0eda2c8b79e8/idna-3.7-py3-none-any.whl + sha256: 82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0 + requires_python: '>=3.5' +- kind: pypi + name: iniconfig + version: 2.0.0 + url: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + sha256: b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 + requires_python: '>=3.7' +- kind: pypi + name: isodate + version: 0.6.1 + url: https://files.pythonhosted.org/packages/b6/85/7882d311924cbcfc70b1890780763e36ff0b140c7e51c110fc59a532f087/isodate-0.6.1-py2.py3-none-any.whl + sha256: 0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96 + requires_dist: + - six +- kind: pypi + name: isoduration + version: 20.11.0 + url: https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl + sha256: b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042 + requires_dist: + - arrow>=0.15.0 + requires_python: '>=3.7' +- kind: pypi + name: jinja2 + version: 3.1.4 + url: https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- kind: pypi + name: json-flattener + version: 0.1.9 + url: https://files.pythonhosted.org/packages/00/cc/7fbd75d3362e939eb98bcf9bd22f3f7df8c237a85148899ed3d38e5614e5/json_flattener-0.1.9-py3-none-any.whl + sha256: 6b027746f08bf37a75270f30c6690c7149d5f704d8af1740c346a3a1236bc941 + requires_dist: + - click + - pyyaml + requires_python: '>=3.7.0' +- kind: pypi + name: jsonasobj + version: 1.3.1 + url: https://files.pythonhosted.org/packages/71/57/38c47753c67ad67f76ba04ea673c9b77431a19e7b2601937e6872a99e841/jsonasobj-1.3.1-py3-none-any.whl + sha256: b9e329dc1ceaae7cf5d5b214684a0b100e0dad0be6d5bbabac281ec35ddeca65 +- kind: pypi + name: jsonasobj2 + version: 1.0.4 + url: https://files.pythonhosted.org/packages/e5/90/0d93963711f811efe528e3cead2f2bfb78c196df74d8a24fe8d655288e50/jsonasobj2-1.0.4-py3-none-any.whl + sha256: 12e86f86324d54fcf60632db94ea74488d5314e3da554c994fe1e2c6f29acb79 + requires_dist: + - hbreader + requires_python: '>=3.6' +- kind: pypi + name: jsonpatch + version: '1.33' + url: https://files.pythonhosted.org/packages/73/07/02e16ed01e04a374e644b575638ec7987ae846d25ad97bcc9945a3ee4b0e/jsonpatch-1.33-py2.py3-none-any.whl + sha256: 0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade + requires_dist: + - jsonpointer>=1.9 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*' +- kind: pypi + name: jsonpath-ng + version: 1.6.1 + url: https://files.pythonhosted.org/packages/16/0a/3b1ee3721b4bd684b0e29c724ab82ed3b2c0e42285beb8bf9e18de8c903f/jsonpath_ng-1.6.1-py3-none-any.whl + sha256: 8f22cd8273d7772eea9aaa84d922e0841aa36fdb8a2c6b7f6c3791a16a9bc0be + requires_dist: + - ply +- kind: pypi + name: jsonpointer + version: 3.0.0 + url: https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl + sha256: 13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 + requires_python: '>=3.7' +- kind: pypi + name: jsonschema + version: 4.23.0 + url: https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl + sha256: fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566 + requires_dist: + - attrs>=22.2.0 + - importlib-resources>=1.4.0 ; python_version < '3.9' + - jsonschema-specifications>=2023.3.6 + - pkgutil-resolve-name>=1.3.10 ; python_version < '3.9' + - referencing>=0.28.4 + - rpds-py>=0.7.1 + - fqdn ; extra == 'format' + - idna ; extra == 'format' + - isoduration ; extra == 'format' + - jsonpointer>1.13 ; extra == 'format' + - rfc3339-validator ; extra == 'format' + - rfc3987 ; extra == 'format' + - uri-template ; extra == 'format' + - webcolors>=1.11 ; extra == 'format' + - fqdn ; extra == 'format-nongpl' + - idna ; extra == 'format-nongpl' + - isoduration ; extra == 'format-nongpl' + - jsonpointer>1.13 ; extra == 'format-nongpl' + - rfc3339-validator ; extra == 'format-nongpl' + - rfc3986-validator>0.1.0 ; extra == 'format-nongpl' + - uri-template ; extra == 'format-nongpl' + - webcolors>=24.6.0 ; extra == 'format-nongpl' + requires_python: '>=3.8' +- kind: pypi + name: jsonschema-specifications + version: 2023.12.1 + url: https://files.pythonhosted.org/packages/ee/07/44bd408781594c4d0a027666ef27fab1e441b109dc3b76b4f836f8fd04fe/jsonschema_specifications-2023.12.1-py3-none-any.whl + sha256: 87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c + requires_dist: + - importlib-resources>=1.4.0 ; python_version < '3.9' + - referencing>=0.31.0 + requires_python: '>=3.8' +- kind: conda + name: ld_impl_linux-64 + version: '2.40' + build: hf3520f5_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + sha256: 764b6950aceaaad0c67ef925417594dd14cd2e22fff864aeef455ac259263d15 + md5: b80f2f396ca2c28b8c14c437a4ed1e74 + constrains: + - binutils_impl_linux-64 2.40 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 707602 + timestamp: 1718625640445 +- kind: conda + name: libexpat + version: 2.6.2 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + sha256: 331bb7c7c05025343ebd79f86ae612b9e1e74d2687b8f3179faec234f986ce19 + md5: e7ba12deb7020dd080c6c70e7b6f6a3d + depends: + - libgcc-ng >=12 + constrains: + - expat 2.6.2.* + license: MIT + license_family: MIT + purls: [] + size: 73730 + timestamp: 1710362120304 +- kind: conda + name: libffi + version: 3.4.2 + build: h7f98852_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + purls: [] + size: 58292 + timestamp: 1636488182923 +- kind: conda + name: libgcc-ng + version: 14.1.0 + build: h77fa898_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda + sha256: b8e869ac96591cda2704bf7e77a301025e405227791a0bddf14a3dac65125538 + md5: ca0fad6a41ddaef54a153b78eccb5037 + depends: + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.1.0 h77fa898_0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 842109 + timestamp: 1719538896937 +- kind: conda + name: libgomp + version: 14.1.0 + build: h77fa898_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda + sha256: 7699df61a1f6c644b3576a40f54791561f2845983120477a16116b951c9cdb05 + md5: ae061a5ed5f05818acdf9adab72c146d + depends: + - _libgcc_mutex 0.1 conda_forge + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 456925 + timestamp: 1719538796073 +- kind: conda + name: libnsl + version: 2.0.1 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- kind: conda + name: libsqlite + version: 3.46.0 + build: hde9e2c9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + sha256: daee3f68786231dad457d0dfde3f7f1f9a7f2018adabdbb864226775101341a8 + md5: 18aa975d2094c34aef978060ae7da7d8 + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0a0 + license: Unlicense + purls: [] + size: 865346 + timestamp: 1718050628718 +- kind: conda + name: libuuid + version: 2.38.1 + build: h0b41bf4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- kind: conda + name: libzlib + version: 1.3.1 + build: h4ab18f5_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + sha256: adf6096f98b537a11ae3729eaa642b0811478f0ea0402ca67b5108fe2cb0010d + md5: 57d7dc60e9325e3de37ff8dffd18e814 + depends: + - libgcc-ng >=12 + constrains: + - zlib 1.3.1 *_1 + license: Zlib + license_family: Other + purls: [] + size: 61574 + timestamp: 1716874187109 +- kind: pypi + name: linkml + version: 1.8.1 + url: https://files.pythonhosted.org/packages/d2/3e/e0dfcd090d710eb2b804f51bafafa202991c4a2388234a50f0492a4f02e5/linkml-1.8.1-py3-none-any.whl + sha256: a68cb4f9bfa16353a4f84ae581db8272a5d151db46f1d6b601c87cb0be6e2d28 + requires_dist: + - antlr4-python3-runtime>=4.9.0,<4.10 + - black>=24.0.0 ; extra == 'black' or extra == 'tests' + - click>=7.0 + - graphviz>=0.10.1 + - hbreader + - isodate>=0.6.0 + - jinja2>=3.1.0 + - jsonasobj2>=1.0.3,<2.0.0 + - jsonschema[format]>=4.0.0 + - linkml-dataops + - linkml-runtime==1.8.0 + - openpyxl + - parse + - prefixcommons>=0.1.7 + - prefixmaps>=0.2.2 + - pydantic>=1.0.0,<3.0.0 + - pyjsg>=0.11.6 + - pyshacl>=0.25.0,<0.26.0 ; extra == 'shacl' or extra == 'tests' + - pyshex>=0.7.20 + - pyshexc>=0.8.3 + - python-dateutil + - pyyaml + - rdflib>=6.0.0 + - requests>=2.22 + - sqlalchemy>=1.4.31 + - typing-extensions>=4.4.0 ; python_version < '3.9' + - watchdog>=0.9.0 + requires_python: '>=3.8.1,<4.0.0' +- kind: pypi + name: linkml-dataops + version: 0.1.0 + url: https://files.pythonhosted.org/packages/48/47/cbddeb34d1ec97844465efaa55c4031267efed28de888d5c799e5396f968/linkml_dataops-0.1.0-py3-none-any.whl + sha256: 193cf7f659e5f07946d2c2761896910d5f7151d91282543b1363801f68307f4c + requires_dist: + - jinja2 + - jsonpatch + - jsonpath-ng + - linkml-runtime>=1.1.6 + - ruamel-yaml + requires_python: '>=3.7' +- kind: pypi + name: linkml-runtime + version: 1.8.0 + url: https://files.pythonhosted.org/packages/b1/15/b832a9b992a2934a9df312b6def412f077ee829fd795ee0fa5062482f2fc/linkml_runtime-1.8.0-py3-none-any.whl + sha256: e99a809eda52640633f07a9e8b391d1a9da863eb68a475dfd74a79335b909931 + requires_dist: + - click + - curies>=0.5.4 + - deprecated + - hbreader + - json-flattener>=0.1.9 + - jsonasobj2>=1.0.4,<2.dev0 + - jsonschema>=3.2.0 + - prefixcommons>=0.1.12 + - prefixmaps>=0.1.4 + - pydantic>=1.10.2,<3.0.0 + - pyyaml + - rdflib>=6.0.0 + - requests + requires_python: '>=3.8,<4.0' +- kind: pypi + name: markupsafe + version: 2.1.5 + url: https://files.pythonhosted.org/packages/0a/0d/2454f072fae3b5a137c119abf15465d1771319dfe9e4acbb31722a0fff91/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 + requires_python: '>=3.7' +- kind: conda + name: ncurses + version: '6.5' + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + sha256: 4fc3b384f4072b68853a0013ea83bdfd3d66b0126e2238e1d6e1560747aa7586 + md5: fcea371545eda051b6deafb24889fc69 + depends: + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + purls: [] + size: 887465 + timestamp: 1715194722503 +- kind: pypi + name: openpyxl + version: 3.1.5 + url: https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl + sha256: 5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2 + requires_dist: + - et-xmlfile + requires_python: '>=3.8' +- kind: conda + name: openssl + version: 3.3.1 + build: h4bc722e_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda + sha256: b294b3cc706ad1048cdb514f0db3da9f37ae3fcc0c53a7104083dd0918adb200 + md5: e1b454497f9f7c1147fdde4b53f1b512 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc-ng >=12 + constrains: + - pyopenssl >=22.1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2895213 + timestamp: 1721194688955 +- kind: pypi + name: packaging + version: '24.1' + url: https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl + sha256: 5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 + requires_python: '>=3.8' +- kind: pypi + name: parse + version: 1.20.2 + url: https://files.pythonhosted.org/packages/d0/31/ba45bf0b2aa7898d81cbbfac0e88c267befb59ad91a19e36e1bc5578ddb1/parse-1.20.2-py2.py3-none-any.whl + sha256: 967095588cb802add9177d0c0b6133b5ba33b1ea9007ca800e526f42a85af558 +- kind: pypi + name: pluggy + version: 1.5.0 + url: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + sha256: 44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 + requires_dist: + - pre-commit ; extra == 'dev' + - tox ; extra == 'dev' + - pytest ; extra == 'testing' + - pytest-benchmark ; extra == 'testing' + requires_python: '>=3.8' +- kind: pypi + name: ply + version: '3.11' + url: https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl + sha256: 096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce +- kind: pypi + name: prefixcommons + version: 0.1.12 + url: https://files.pythonhosted.org/packages/31/e8/715b09df3dab02b07809d812042dc47a46236b5603d9d3a2572dbd1d8a97/prefixcommons-0.1.12-py3-none-any.whl + sha256: 16dbc0a1f775e003c724f19a694fcfa3174608f5c8b0e893d494cf8098ac7f8b + requires_dist: + - pyyaml>=6.0,<7.0 + - click>=8.1.3,<9.0.0 + - pytest-logging>=2015.11.4,<2016.0.0 + - requests>=2.28.1,<3.0.0 + requires_python: '>=3.7,<4.0' +- kind: pypi + name: prefixmaps + version: 0.2.5 + url: https://files.pythonhosted.org/packages/7c/76/41960fc3a60eb42c57075989fb5ea94fb887bb6997595410a099cf215921/prefixmaps-0.2.5-py3-none-any.whl + sha256: 68caa04b3a6a8e058aa1c55affe32c62e44b564d031d63f768e267b796a1f3ee + requires_dist: + - curies>=0.5.3 + - pyyaml>=5.3.1 + requires_python: '>=3.8,<4.0' +- kind: pypi + name: pydantic + version: 2.8.2 + url: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + sha256: 73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8 + requires_dist: + - annotated-types>=0.4.0 + - pydantic-core==2.20.1 + - typing-extensions>=4.12.2 ; python_version >= '3.13' + - typing-extensions>=4.6.1 ; python_version < '3.13' + - email-validator>=2.0.0 ; extra == 'email' + requires_python: '>=3.8' +- kind: pypi + name: pydantic-core + version: 2.20.1 + url: https://files.pythonhosted.org/packages/09/b3/a5a54b47cccd1ab661ed5775235c5e06924753c2d4817737c5667bfa19a8/pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- kind: pypi + name: pyjsg + version: 0.11.10 + url: https://files.pythonhosted.org/packages/96/ee/370c3b1908327dac967841ff723db391a02f3637c95c6898160e5ffe1060/PyJSG-0.11.10-py3-none-any.whl + sha256: 10af60ff42219be7e85bf7f11c19b648715b0b29eb2ddbd269e87069a7c3f26d + requires_dist: + - antlr4-python3-runtime~=4.9.3 + - jsonasobj>=1.2.1 +- kind: pypi + name: pyparsing + version: 3.1.2 + url: https://files.pythonhosted.org/packages/9d/ea/6d76df31432a0e6fdf81681a895f009a4bb47b3c39036db3e1b528191d52/pyparsing-3.1.2-py3-none-any.whl + sha256: f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742 + requires_dist: + - railroad-diagrams ; extra == 'diagrams' + - jinja2 ; extra == 'diagrams' + requires_python: '>=3.6.8' +- kind: pypi + name: pyshex + version: 0.8.1 + url: https://files.pythonhosted.org/packages/9b/48/efb1b1d3f3aee8cfc9f256738ca6e79ec362edbfc3a3abecbaf84db04643/PyShEx-0.8.1-py3-none-any.whl + sha256: 6da1b10123e191abf8dcb6bf3e54aa3e1fcf771df5d1a0ed453217c8900c8e6a + requires_dist: + - cfgraph>=0.2.1 + - chardet + - pyshexc==0.9.1 + - rdflib-shim + - requests>=2.22.0 + - shexjsg>=0.8.2 + - sparqlslurper>=0.5.1 + - sparqlwrapper>=1.8.5 + - urllib3 + requires_python: '>=3.6' +- kind: pypi + name: pyshexc + version: 0.9.1 + url: https://files.pythonhosted.org/packages/39/7d/ff5000e0882f2b3995bef20b667945d3faa9289b556295e4cc5d2e91f104/PyShExC-0.9.1-py2.py3-none-any.whl + sha256: efc55ed5cb2453e9df569b03e282505e96bb06597934288f3b23dd980ef10028 + requires_dist: + - antlr4-python3-runtime~=4.9.3 + - chardet + - jsonasobj>=1.2.1 + - pyjsg>=0.11.10 + - rdflib-shim + - shexjsg>=0.8.1 + requires_python: '>=3.7' +- kind: pypi + name: pytest + version: 8.3.2 + url: https://files.pythonhosted.org/packages/0f/f9/cf155cf32ca7d6fa3601bc4c5dd19086af4b320b706919d48a4c79081cf9/pytest-8.3.2-py3-none-any.whl + sha256: 4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5 + requires_dist: + - iniconfig + - packaging + - pluggy<2,>=1.5 + - exceptiongroup>=1.0.0rc8 ; python_version < '3.11' + - tomli>=1 ; python_version < '3.11' + - colorama ; sys_platform == 'win32' + - argcomplete ; extra == 'dev' + - attrs>=19.2 ; extra == 'dev' + - hypothesis>=3.56 ; extra == 'dev' + - mock ; extra == 'dev' + - pygments>=2.7.2 ; extra == 'dev' + - requests ; extra == 'dev' + - setuptools ; extra == 'dev' + - xmlschema ; extra == 'dev' + requires_python: '>=3.8' +- kind: pypi + name: pytest-logging + version: 2015.11.4 + url: https://files.pythonhosted.org/packages/dc/1e/fb11174c9eaebcec27d36e9e994b90ffa168bc3226925900b9dbbf16c9da/pytest-logging-2015.11.4.tar.gz + sha256: cec5c85ecf18aab7b2ead5498a31b9f758680ef5a902b9054ab3f2bdbb77c896 + requires_dist: + - pytest>=2.8.1 +- kind: conda + name: python + version: 3.12.4 + build: h194c7f8_0_cpython + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.4-h194c7f8_0_cpython.conda + sha256: 97a78631e6c928bf7ad78d52f7f070fcf3bd37619fa48dc4394c21cf3058cdee + md5: d73490214f536cccb5819e9873048c92 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.46.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.3.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 32073625 + timestamp: 1718621771849 +- kind: pypi + name: python-dateutil + version: 2.9.0.post0 + url: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + sha256: a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 + requires_dist: + - six>=1.5 + requires_python: '!=3.0.*,!=3.1.*,!=3.2.*,>=2.7' +- kind: pypi + name: pytrie + version: 0.4.0 + url: https://files.pythonhosted.org/packages/b9/fd/499b261a34e9c6e39b9f5711c4b3093bca980b8db4b49de3009d808f41c9/PyTrie-0.4.0-py3-none-any.whl + sha256: f687c224ee8c66cda8e8628a903011b692635ffbb08d4b39c5f92b18eb78c950 + requires_dist: + - sortedcontainers +- kind: pypi + name: pyyaml + version: 6.0.1 + url: https://files.pythonhosted.org/packages/b4/33/720548182ffa8344418126017aa1d4ab4aeec9a2275f04ce3f3573d8ace8/PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0 + requires_python: '>=3.6' +- kind: pypi + name: rdflib + version: 7.0.0 + url: https://files.pythonhosted.org/packages/d4/b0/7b7d8b5b0d01f1a0b12cc2e5038a868ef3a15825731b8a0d776cf47566c0/rdflib-7.0.0-py3-none-any.whl + sha256: 0438920912a642c866a513de6fe8a0001bd86ef975057d6962c79ce4771687cd + requires_dist: + - berkeleydb>=18.1.0,<19.0.0 ; extra == 'berkeleydb' + - html5lib>=1.0,<2.0 ; extra == 'html' + - isodate>=0.6.0,<0.7.0 + - lxml>=4.3.0,<5.0.0 ; extra == 'lxml' + - networkx>=2.0.0,<3.0.0 ; extra == 'networkx' + - pyparsing>=2.1.0,<4 + requires_python: '>=3.8.1,<4.0.0' +- kind: pypi + name: rdflib-jsonld + version: 0.6.1 + url: https://files.pythonhosted.org/packages/d0/d2/760527679057a7dad67f4e41f3e0c463b247f0bdbffc594e0add7c9077d6/rdflib_jsonld-0.6.1-py2.py3-none-any.whl + sha256: bcf84317e947a661bae0a3f2aee1eced697075fc4ac4db6065a3340ea0f10fc2 + requires_dist: + - rdflib>=5.0.0 +- kind: pypi + name: rdflib-shim + version: 1.0.3 + url: https://files.pythonhosted.org/packages/5f/97/d8a785d2c7131c731c90cb0e65af9400081af4380bea4ec04868dc21aa92/rdflib_shim-1.0.3-py3-none-any.whl + sha256: 7a853e7750ef1e9bf4e35dea27d54e02d4ed087de5a9e0c329c4a6d82d647081 + requires_dist: + - rdflib>=5.0.0 + - rdflib-jsonld==0.6.1 + requires_python: '>=3.7' +- kind: conda + name: readline + version: '8.2' + build: h8228510_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 281456 + timestamp: 1679532220005 +- kind: pypi + name: referencing + version: 0.35.1 + url: https://files.pythonhosted.org/packages/b7/59/2056f61236782a2c86b33906c025d4f4a0b17be0161b63b70fd9e8775d36/referencing-0.35.1-py3-none-any.whl + sha256: eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de + requires_dist: + - attrs>=22.2.0 + - rpds-py>=0.7.0 + requires_python: '>=3.8' +- kind: pypi + name: requests + version: 2.32.3 + url: https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl + sha256: 70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 + requires_dist: + - charset-normalizer<4,>=2 + - idna<4,>=2.5 + - urllib3<3,>=1.21.1 + - certifi>=2017.4.17 + - pysocks!=1.5.7,>=1.5.6 ; extra == 'socks' + - chardet<6,>=3.0.2 ; extra == 'use-chardet-on-py3' + requires_python: '>=3.8' +- kind: pypi + name: rfc3339-validator + version: 0.1.4 + url: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl + sha256: 24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa + requires_dist: + - six + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' +- kind: pypi + name: rfc3987 + version: 1.3.8 + url: https://files.pythonhosted.org/packages/65/d4/f7407c3d15d5ac779c3dd34fbbc6ea2090f77bd7dd12f207ccf881551208/rfc3987-1.3.8-py2.py3-none-any.whl + sha256: 10702b1e51e5658843460b189b185c0366d2cf4cff716f13111b0ea9fd2dce53 +- kind: pypi + name: rpds-py + version: 0.19.1 + url: https://files.pythonhosted.org/packages/54/91/ea027a9f835c2c59603236b451f7cb1ee5a280b9df26da7b4850e4f1a13a/rpds_py-0.19.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 08ce9c95a0b093b7aec75676b356a27879901488abc27e9d029273d280438505 + requires_python: '>=3.8' +- kind: pypi + name: ruamel-yaml + version: 0.18.6 + url: https://files.pythonhosted.org/packages/73/67/8ece580cc363331d9a53055130f86b096bf16e38156e33b1d3014fffda6b/ruamel.yaml-0.18.6-py3-none-any.whl + sha256: 57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636 + requires_dist: + - ruamel-yaml-clib>=0.2.7 ; platform_python_implementation == 'CPython' and python_version < '3.13' + - ryd ; extra == 'docs' + - mercurial>5.7 ; extra == 'docs' + - ruamel-yaml-jinja2>=0.2 ; extra == 'jinja2' + requires_python: '>=3.7' +- kind: pypi + name: ruamel-yaml-clib + version: 0.2.8 + url: https://files.pythonhosted.org/packages/30/d3/5fe978cd01a61c12efd24d65fa68c6f28f28c8073a06cf11db3a854390ca/ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl + sha256: d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92 + requires_python: '>=3.6' +- kind: pypi + name: shexjsg + version: 0.8.2 + url: https://files.pythonhosted.org/packages/18/6e/d23bcde21d4ef0250a74e7505d2990d429f862be65810a3b650a69def7f0/ShExJSG-0.8.2-py2.py3-none-any.whl + sha256: 3b0d8432dd313bee9e1343382c5e02e9908dd941a7dd7342bf8c0200fe523766 + requires_dist: + - pyjsg>=0.11.10 +- kind: pypi + name: six + version: 1.16.0 + url: https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl + sha256: 8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*' +- kind: pypi + name: sortedcontainers + version: 2.4.0 + url: https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl + sha256: a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0 +- kind: pypi + name: sparqlslurper + version: 0.5.1 + url: https://files.pythonhosted.org/packages/1a/77/48ce09fce2836856588beb84f434c1f8812d1428326efd993b619d49d949/sparqlslurper-0.5.1-py3-none-any.whl + sha256: ae49b2d8ce3dd38df7a40465b228ad5d33fb7e11b3f248d195f9cadfc9cfff87 + requires_dist: + - rdflib-shim + - rdflib>=5.0.0 + - sparqlwrapper>=1.8.2 + requires_python: '>=3.7.4' +- kind: pypi + name: sparqlwrapper + version: 2.0.0 + url: https://files.pythonhosted.org/packages/31/89/176e3db96e31e795d7dfd91dd67749d3d1f0316bb30c6931a6140e1a0477/SPARQLWrapper-2.0.0-py3-none-any.whl + sha256: c99a7204fff676ee28e6acef327dc1ff8451c6f7217dcd8d49e8872f324a8a20 + requires_dist: + - rdflib>=6.1.1 + - setuptools>=3.7.1 ; extra == 'dev' + - mypy>=0.931 ; extra == 'dev' + - pandas>=1.3.5 ; extra == 'dev' + - pandas-stubs>=1.2.0.48 ; extra == 'dev' + - sphinx<5 ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - keepalive>=0.5 ; extra == 'keepalive' + - pandas>=1.3.5 ; extra == 'pandas' + requires_python: '>=3.7' +- kind: pypi + name: sqlalchemy + version: 2.0.31 + url: https://files.pythonhosted.org/packages/60/f8/7794f3055d50e96cee04c19c7faeedacb323c7762f334660ba03bed95485/SQLAlchemy-2.0.31-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 74afabeeff415e35525bf7a4ecdab015f00e06456166a2eba7590e49f8db940e + requires_dist: + - typing-extensions>=4.6.0 + - greenlet!=0.4.17 ; python_version < '3.13' and (platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))) + - importlib-metadata ; python_version < '3.8' + - greenlet!=0.4.17 ; extra == 'aiomysql' + - aiomysql>=0.2.0 ; extra == 'aiomysql' + - greenlet!=0.4.17 ; extra == 'aioodbc' + - aioodbc ; extra == 'aioodbc' + - greenlet!=0.4.17 ; extra == 'aiosqlite' + - aiosqlite ; extra == 'aiosqlite' + - typing-extensions!=3.10.0.1 ; extra == 'aiosqlite' + - greenlet!=0.4.17 ; extra == 'asyncio' + - greenlet!=0.4.17 ; extra == 'asyncmy' + - asyncmy!=0.2.4,!=0.2.6,>=0.2.3 ; extra == 'asyncmy' + - mariadb!=1.1.2,!=1.1.5,>=1.0.1 ; extra == 'mariadb-connector' + - pyodbc ; extra == 'mssql' + - pymssql ; extra == 'mssql-pymssql' + - pyodbc ; extra == 'mssql-pyodbc' + - mypy>=0.910 ; extra == 'mypy' + - mysqlclient>=1.4.0 ; extra == 'mysql' + - mysql-connector-python ; extra == 'mysql-connector' + - cx-oracle>=8 ; extra == 'oracle' + - oracledb>=1.0.1 ; extra == 'oracle-oracledb' + - psycopg2>=2.7 ; extra == 'postgresql' + - greenlet!=0.4.17 ; extra == 'postgresql-asyncpg' + - asyncpg ; extra == 'postgresql-asyncpg' + - pg8000>=1.29.1 ; extra == 'postgresql-pg8000' + - psycopg>=3.0.7 ; extra == 'postgresql-psycopg' + - psycopg2-binary ; extra == 'postgresql-psycopg2binary' + - psycopg2cffi ; extra == 'postgresql-psycopg2cffi' + - psycopg[binary]>=3.0.7 ; extra == 'postgresql-psycopgbinary' + - pymysql ; extra == 'pymysql' + - sqlcipher3-binary ; extra == 'sqlcipher' + requires_python: '>=3.7' +- kind: conda + name: tk + version: 8.6.13 + build: noxft_h4845f30_101 + build_number: 101 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- kind: pypi + name: types-python-dateutil + version: 2.9.0.20240316 + url: https://files.pythonhosted.org/packages/c7/1b/af4f4c4f3f7339a4b7eb3c0ab13416db98f8ac09de3399129ee5fdfa282b/types_python_dateutil-2.9.0.20240316-py3-none-any.whl + sha256: 6b8cb66d960771ce5ff974e9dd45e38facb81718cc1e208b10b1baccbfdbee3b + requires_python: '>=3.8' +- kind: pypi + name: typing-extensions + version: 4.12.2 + url: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl + sha256: 04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d + requires_python: '>=3.8' +- kind: conda + name: tzdata + version: 2024a + build: h0c530f3_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + sha256: 7b2b69c54ec62a243eb6fba2391b5e443421608c3ae5dbff938ad33ca8db5122 + md5: 161081fc7cec0bfda0d86d7cb595f8d8 + license: LicenseRef-Public-Domain + purls: [] + size: 119815 + timestamp: 1706886945727 +- kind: pypi + name: uri-template + version: 1.3.0 + url: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl + sha256: a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363 + requires_dist: + - types-pyyaml ; extra == 'dev' + - mypy ; extra == 'dev' + - flake8 ; extra == 'dev' + - flake8-annotations ; extra == 'dev' + - flake8-bandit ; extra == 'dev' + - flake8-bugbear ; extra == 'dev' + - flake8-commas ; extra == 'dev' + - flake8-comprehensions ; extra == 'dev' + - flake8-continuation ; extra == 'dev' + - flake8-datetimez ; extra == 'dev' + - flake8-docstrings ; extra == 'dev' + - flake8-import-order ; extra == 'dev' + - flake8-literal ; extra == 'dev' + - flake8-modern-annotations ; extra == 'dev' + - flake8-noqa ; extra == 'dev' + - flake8-pyproject ; extra == 'dev' + - flake8-requirements ; extra == 'dev' + - flake8-typechecking-import ; extra == 'dev' + - flake8-use-fstring ; extra == 'dev' + - pep8-naming ; extra == 'dev' + requires_python: '>=3.7' +- kind: pypi + name: urllib3 + version: 2.2.2 + url: https://files.pythonhosted.org/packages/ca/1c/89ffc63a9605b583d5df2be791a27bc1a42b7c32bab68d3c8f2f73a98cd4/urllib3-2.2.2-py3-none-any.whl + sha256: a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472 + requires_dist: + - brotli>=1.0.9 ; platform_python_implementation == 'CPython' and extra == 'brotli' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'brotli' + - h2<5,>=4 ; extra == 'h2' + - pysocks!=1.5.7,<2.0,>=1.5.6 ; extra == 'socks' + - zstandard>=0.18.0 ; extra == 'zstd' + requires_python: '>=3.8' +- kind: pypi + name: watchdog + version: 4.0.1 + url: https://files.pythonhosted.org/packages/24/01/a4034a94a5f1828eb050230e7cf13af3ac23cf763512b6afe008d3def97c/watchdog-4.0.1-py3-none-manylinux2014_x86_64.whl + sha256: ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84 + requires_dist: + - pyyaml>=3.10 ; extra == 'watchmedo' + requires_python: '>=3.8' +- kind: pypi + name: webcolors + version: 24.6.0 + url: https://files.pythonhosted.org/packages/3b/45/0c30e10a2ac52606476394e4ba11cf3b12ba5823e7fbb9167f80eee6000a/webcolors-24.6.0-py3-none-any.whl + sha256: 8cf5bc7e28defd1d48b9e83d5fc30741328305a8195c29a8e668fa45586568a1 + requires_dist: + - furo ; extra == 'docs' + - sphinx ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-inline-tabs ; extra == 'docs' + - sphinx-notfound-page ; extra == 'docs' + - sphinxext-opengraph ; extra == 'docs' + - coverage[toml] ; extra == 'tests' + requires_python: '>=3.8' +- kind: pypi + name: wrapt + version: 1.16.0 + url: https://files.pythonhosted.org/packages/62/62/30ca2405de6a20448ee557ab2cd61ab9c5900be7cbd18a2639db595f0b98/wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b + requires_python: '>=3.6' +- kind: conda + name: xz + version: 5.2.6 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 + md5: 2161070d867d1b1204ea749c8eec4ef0 + depends: + - libgcc-ng >=12 + license: LGPL-2.1 and GPL-2.0 + purls: [] + size: 418368 + timestamp: 1660346797927 diff --git a/rfc/x/pixi.toml b/rfc/x/pixi.toml new file mode 100644 index 00000000..3ad7a07e --- /dev/null +++ b/rfc/x/pixi.toml @@ -0,0 +1,19 @@ +[project] +name = "ngff-anatomical-orientation" +version = "0.1.0" +description = "Build the model, schema, language bindings for the NGFF axis anatomical orientation proposal" +authors = ["Matt McCormick "] +channels = ["conda-forge"] +platforms = ["linux-64"] + +[tasks] +gen-markdown = "gen-markdown -d ./markdown ./orientation.yml" +gen-json-schema = "gen-json-schema orientation.yml > orientation.schema.json" +gen-pydantic = "gen-pydantic orientation.yml > orientation.py" +gen-typescript = "gen-typescript orientation.yml > orientation.ts" + +[dependencies] +python = ">=3.12.4,<4" + +[pypi-dependencies] +linkml = ">=1.8.1, <2"