rdframe


Namerdframe JSON
Version 0.1.1 PyPI version JSON
download
home_page
Summary
upload_time2023-12-10 14:33:27
maintainer
docs_urlNone
authordavid
requires_python>=3.11,<4.0
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # RDFrame | [SHACL profiles](/shacl) | [CQL profiles](/cql)

## About

This library serves two purposes.

1. Development of X -> SPARQL mappings, currently in two flavours
    1. SHACL interpreted for display, + endpoint definitions as RDF -> SPARQL
    2. [CQL](https://docs.ogc.org/DRAFTS/21-065.html) to SPARQL
       _i.e. a developer would write Python to implement mappings a particular way and can have a tight REPL process
       including visualising examples._
2. End user generation/specification of profiles which use the above.
   _i.e. a user would only use the web interface to specify profiles or specific CQL queries to achieve a desired
   outcome._

## RDFrame GUI components

### Prez SHACL version

1. Runtime values - Data specified at runtime when using for example the URI of an object to retrieve information about;
   the URI of a container object from which member items are listed; limit and offset values for use in pagination.
2. Endpoint Definition. This specifies the class(es) of object(s) to be returned from an endpoint, along with
   information about ordering, and pagination.

    1. Where a sh:target / sh:select is used, variables can be defined in the sh:select using a `$`. These values will
       be populated at runtime with, in priority order:
        1. Runtime values
        2. Default values specified with the endpoint definition. At present custom properties have been used to define
           default limit and offset values. This
3. Profile Definition. Used to specifiy which properties of focus objects should be returned.
4. SPARQL query. This is generated from the above three inputs.
5. Example data. This is any RDF data which can be used to test or demonstrate use of the profile/endpoint definition.
6. Results. The result of applying the generated SPARQL query against the Example data.

### CQL version

Description forthcoming - available at `/cql`

## Patterns to address common use cases

The current set of SHACL profiles are tailored towards a set of known use cases for [Prez](https://github.com/RDFLib/prez).

### 1.1 List objects based on their relationship to a container object.

Endpoint definition requirements:

1. The container object's URI, either specified as a runtime value.
2. sh:target / sh:select statement
3. sh:targetClass

The sh:targetClass is required due to a limitation with using `sh:select` as a string. The sh:targetClass is required in
order to generate the Construct part of the generated SPARQL query. The sh:select subquery is only validated and
inserted - there is no programmatic extraction of components.

Properties of the focus objects to include/exclude are specified in a profile (see 3.1 -> 3.3).

#### 1.1.1 Add triples to the CONSTRUCT part of the query from the FOCUS NODE selection

Optionally, triples can be added to the CONSTRUCT part of the query from the FOCUS NODE selection.
Triples to add can be defined via sh:rule / with sh:subject sh:predicate sh:object.
If a Literal is used as the range for any of these (sh:subject sh:predicate sh:object), and the Literal starts with a '?',
it will be translated into a variable in the generated SPARQL query.
Note: by default only the CLASS of an object is included from the focus node selection. This is the only provided 
mechanism to provide additional triples from the SELECT subquery which is used for focus node selection. Properties for
inclusion can be specified in the profile (via SHACL property shapes).

### 1.2 List objects based on their class.

Endpoint definition requirements:

1. sh:targetClass - the class of object to be listed.

Properties of the focus objects to include/exclude are specified in a profile (see 3.1 -> 3.3).

### 2.1 Describe an object given its URI

Endpoint definition requirements:

1. A runtime value for the object for example: `{"object": "http://my-object-uri"}`
2. `sh:targetNode "$object"` within the endpoint definition.

Properties of the focus objects to include/exclude are specified in a profile (see 3.1 -> 3.3).

### 3.1 Include all properties of a focus node

Includes all direct properties of a given focus node i.e. as a triple pattern `<focus_uri> ?p ?o`

There does not appear to be a relevant concept to borrow from SHACL that provides a mechanism to specify the retrieval
of all predicate values from a given focus node. As this is a common use case when displaying data, for conciseness an
extension property has been created:

`http://example.com/shacl-extension#allPredicateValues`

This property is used in place of specified path values under `sh:path`, for example:

```
ex:OpenNodeShape
    a              sh:NodeShape ;
    sh:property [
        sh:path shext:allPredicateValues ;
    ] ;
```

### 3.2 Include specified properties of a focus node

Specifying properties to include implies all properties NOT specifically included are to be **excluded**.

Specified property paths can be included using [SHACL Propety Paths](https://www.w3.org/TRhttps://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#property-paths)

These can either be specified directly using `sh:path` on a property shape, or multiple property paths can be specified
using `sh:union`.

#### 3.2.1 Include specified properties simple - single property path

Profile requirement:

1. `sh:path <property path expression>`

#### 3.2.2 Include specified properties complex - multiple property paths

Profile requirement:

1. ```
   sh:path ( sh:union ( <property path expression 1> <property path expression 2> ...) )
   ```

### 3.3 Exclude specified properties of a focus node

Specifying properties to exclude implies all *direct* properties NOT excluded are to be **included**.

Profile requirement:

1. Property shapes includes a sh:maxCount of 0

NB: the current assumption is that a user can either include specified

Use of patterns in Prez endpoints

### 3.4 Include blank node property chains

Although the SHACL vocabulary provides for ways to identify blank nodes, it does not appear there is a concise way to
specify that property chains including blank nodes should be included in the description of a focus node. For this
reason a custom property has been created. This property can be included on the nodeshape in a profile. The property is
`http://example.com/shacl-extension#bnode-depth`. The range of the property is the number of blank node (object/subject
pairs) to follow. It is used as follows:

```
ex:OpenNodeShape
    a sh:NodeShape ;
    shext:bnode-depth 2 ;
.
```

### 4.1 Include specific object values

Profile requirement:

1. Specify object values using `sh:hasValue` for a single value or `sh:in` with an RDF list for multiple values.

## Use of patterns in Prez endpoints

The following table shows where different patterns are used in the proposed Prez endpoint definitions.

| Endpoint                                                                                   | Endpoint Definition Pattern                                         | Profile Definition Patterns                                                                                                                                   |
|--------------------------------------------------------------------------------------------|---------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Catprez Catalog Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#cp-catalog-listing_tab)                                  | 1.2 List objects based on their class.                              |                                                                                                                                                               |
| [Catprez Catalog Object](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#cp-catalog-object_tab)                                    | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |
| [Catprez Resource Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#cp-resource-listing_tab)                                | 1.1 List objects based on their relationship to a container object. | 3.2.2 Include specified properties complex - multiple property paths                                           |
| [Catprez Resource Object](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#cp-resource-object_tab)                                  | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |
| [Vocprez Vocabulary Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#vp-vocab-listing_tab)                                 | 1.2 List objects based on their class.                              |                                                                                                                                                               |
| [Vocprez Vocabulary Object](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#vp-vocab-object-top-level_tab)                         | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |
| [Vocprez Vocabulary Object Children Page 1/2](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#vp-vocab-object-children-page-1_tab) | 1.1 List objects based on their relationship to a container object. | 3.1 Include all properties of a focus node                                                                         |
| [Vocprez Vocabulary Concept Object](#)                                                     | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains <br> 3.2.2 Include specified properties complex - multiple property paths |
| [Vocprez Collection Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#vp-collection-listing_tab)                            | 1.2 List objects based on their class.                              |                                                                                                                                                               |
| [Vocprez Collection Object](#)                                                             | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |
| [Vocprez Collection Concept Object](#)                                                     | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |
| [Spaceprez Dataset Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#sp-dataset-listing_tab)                                | 1.2 List objects based on their class.                              |                                                                                                                                                               |
| [Spaceprez Dataset Object](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#sp-dataset-object_tab)                                  | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |
| [Spaceprez Feature Collection Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#sp-feature-collection-listing_tab)          | 1.1 List objects based on their relationship to a container object. |                                                                                                                 |
| [Spaceprez Feature Collection Object](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#sp-feature-collection-object_tab)            | 2.1 Describe an object given its URI                                | 3.3 Exclude specified properties of a focus node <br> 3.4 Include blank node property chains                                                                        |
| [Spaceprez Feature Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#sp-feature-listing_tab)                                | 1.1 List objects based on their relationship to a container object. |                                                                                                                                                               |
| [Spaceprez Feature Object](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#sp-feature-object_tab)                                  | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |

## Appendix - why use sh:union and property shapes?

Direct and Precise: sh:union and property paths allow direct referencing of specific properties, offering clear and granular control over displayed properties. They support SPARQL property path syntax for complex property relationships, and using sh:union, they can be specified together in a single RDF List.  
- sh:inversePath
- sh:alternativePath
- sh:path
As these property paths are used in the profile, they are about the selection of properties *after a set of focus nodes* has been selected, as such the most common use cases are where a union of properties is required, rather than a logical and. sh:union can be mapped directly to SPARQL union, giving a clear and direct mapping from the profile to the SPARQL query.

As these are specified off of a property node, sh:minCount and sh:maxCount are also available, and can be used to indicate optional properties (sh:minCount 0) or to indicate that a property should be excluded (sh:maxCount 0).
            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "rdframe",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.11,<4.0",
    "maintainer_email": "",
    "keywords": "",
    "author": "david",
    "author_email": "dcchabgood@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/6d/68/d7611d50845062cb528f247ee69288ae1fbecc57f4944022ba732457ebd7/rdframe-0.1.1.tar.gz",
    "platform": null,
    "description": "# RDFrame | [SHACL profiles](/shacl) | [CQL profiles](/cql)\n\n## About\n\nThis library serves two purposes.\n\n1. Development of X -> SPARQL mappings, currently in two flavours\n    1. SHACL interpreted for display, + endpoint definitions as RDF -> SPARQL\n    2. [CQL](https://docs.ogc.org/DRAFTS/21-065.html) to SPARQL\n       _i.e. a developer would write Python to implement mappings a particular way and can have a tight REPL process\n       including visualising examples._\n2. End user generation/specification of profiles which use the above.\n   _i.e. a user would only use the web interface to specify profiles or specific CQL queries to achieve a desired\n   outcome._\n\n## RDFrame GUI components\n\n### Prez SHACL version\n\n1. Runtime values - Data specified at runtime when using for example the URI of an object to retrieve information about;\n   the URI of a container object from which member items are listed; limit and offset values for use in pagination.\n2. Endpoint Definition. This specifies the class(es) of object(s) to be returned from an endpoint, along with\n   information about ordering, and pagination.\n\n    1. Where a sh:target / sh:select is used, variables can be defined in the sh:select using a `$`. These values will\n       be populated at runtime with, in priority order:\n        1. Runtime values\n        2. Default values specified with the endpoint definition. At present custom properties have been used to define\n           default limit and offset values. This\n3. Profile Definition. Used to specifiy which properties of focus objects should be returned.\n4. SPARQL query. This is generated from the above three inputs.\n5. Example data. This is any RDF data which can be used to test or demonstrate use of the profile/endpoint definition.\n6. Results. The result of applying the generated SPARQL query against the Example data.\n\n### CQL version\n\nDescription forthcoming - available at `/cql`\n\n## Patterns to address common use cases\n\nThe current set of SHACL profiles are tailored towards a set of known use cases for [Prez](https://github.com/RDFLib/prez).\n\n### 1.1 List objects based on their relationship to a container object.\n\nEndpoint definition requirements:\n\n1. The container object's URI, either specified as a runtime value.\n2. sh:target / sh:select statement\n3. sh:targetClass\n\nThe sh:targetClass is required due to a limitation with using `sh:select` as a string. The sh:targetClass is required in\norder to generate the Construct part of the generated SPARQL query. The sh:select subquery is only validated and\ninserted - there is no programmatic extraction of components.\n\nProperties of the focus objects to include/exclude are specified in a profile (see 3.1 -> 3.3).\n\n#### 1.1.1 Add triples to the CONSTRUCT part of the query from the FOCUS NODE selection\n\nOptionally, triples can be added to the CONSTRUCT part of the query from the FOCUS NODE selection.\nTriples to add can be defined via sh:rule / with sh:subject sh:predicate sh:object.\nIf a Literal is used as the range for any of these (sh:subject sh:predicate sh:object), and the Literal starts with a '?',\nit will be translated into a variable in the generated SPARQL query.\nNote: by default only the CLASS of an object is included from the focus node selection. This is the only provided \nmechanism to provide additional triples from the SELECT subquery which is used for focus node selection. Properties for\ninclusion can be specified in the profile (via SHACL property shapes).\n\n### 1.2 List objects based on their class.\n\nEndpoint definition requirements:\n\n1. sh:targetClass - the class of object to be listed.\n\nProperties of the focus objects to include/exclude are specified in a profile (see 3.1 -> 3.3).\n\n### 2.1 Describe an object given its URI\n\nEndpoint definition requirements:\n\n1. A runtime value for the object for example: `{\"object\": \"http://my-object-uri\"}`\n2. `sh:targetNode \"$object\"` within the endpoint definition.\n\nProperties of the focus objects to include/exclude are specified in a profile (see 3.1 -> 3.3).\n\n### 3.1 Include all properties of a focus node\n\nIncludes all direct properties of a given focus node i.e. as a triple pattern `<focus_uri> ?p ?o`\n\nThere does not appear to be a relevant concept to borrow from SHACL that provides a mechanism to specify the retrieval\nof all predicate values from a given focus node. As this is a common use case when displaying data, for conciseness an\nextension property has been created:\n\n`http://example.com/shacl-extension#allPredicateValues`\n\nThis property is used in place of specified path values under `sh:path`, for example:\n\n```\nex:OpenNodeShape\n    a              sh:NodeShape ;\n    sh:property [\n        sh:path shext:allPredicateValues ;\n    ] ;\n```\n\n### 3.2 Include specified properties of a focus node\n\nSpecifying properties to include implies all properties NOT specifically included are to be **excluded**.\n\nSpecified property paths can be included using [SHACL Propety Paths](https://www.w3.org/TRhttps://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#property-paths)\n\nThese can either be specified directly using `sh:path` on a property shape, or multiple property paths can be specified\nusing `sh:union`.\n\n#### 3.2.1 Include specified properties simple - single property path\n\nProfile requirement:\n\n1. `sh:path <property path expression>`\n\n#### 3.2.2 Include specified properties complex - multiple property paths\n\nProfile requirement:\n\n1. ```\n   sh:path ( sh:union ( <property path expression 1> <property path expression 2> ...) )\n   ```\n\n### 3.3 Exclude specified properties of a focus node\n\nSpecifying properties to exclude implies all *direct* properties NOT excluded are to be **included**.\n\nProfile requirement:\n\n1. Property shapes includes a sh:maxCount of 0\n\nNB: the current assumption is that a user can either include specified\n\nUse of patterns in Prez endpoints\n\n### 3.4 Include blank node property chains\n\nAlthough the SHACL vocabulary provides for ways to identify blank nodes, it does not appear there is a concise way to\nspecify that property chains including blank nodes should be included in the description of a focus node. For this\nreason a custom property has been created. This property can be included on the nodeshape in a profile. The property is\n`http://example.com/shacl-extension#bnode-depth`. The range of the property is the number of blank node (object/subject\npairs) to follow. It is used as follows:\n\n```\nex:OpenNodeShape\n    a sh:NodeShape ;\n    shext:bnode-depth 2 ;\n.\n```\n\n### 4.1 Include specific object values\n\nProfile requirement:\n\n1. Specify object values using `sh:hasValue` for a single value or `sh:in` with an RDF list for multiple values.\n\n## Use of patterns in Prez endpoints\n\nThe following table shows where different patterns are used in the proposed Prez endpoint definitions.\n\n| Endpoint                                                                                   | Endpoint Definition Pattern                                         | Profile Definition Patterns                                                                                                                                   |\n|--------------------------------------------------------------------------------------------|---------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [Catprez Catalog Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#cp-catalog-listing_tab)                                  | 1.2 List objects based on their class.                              |                                                                                                                                                               |\n| [Catprez Catalog Object](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#cp-catalog-object_tab)                                    | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |\n| [Catprez Resource Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#cp-resource-listing_tab)                                | 1.1 List objects based on their relationship to a container object. | 3.2.2 Include specified properties complex - multiple property paths                                           |\n| [Catprez Resource Object](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#cp-resource-object_tab)                                  | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |\n| [Vocprez Vocabulary Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#vp-vocab-listing_tab)                                 | 1.2 List objects based on their class.                              |                                                                                                                                                               |\n| [Vocprez Vocabulary Object](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#vp-vocab-object-top-level_tab)                         | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |\n| [Vocprez Vocabulary Object Children Page 1/2](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#vp-vocab-object-children-page-1_tab) | 1.1 List objects based on their relationship to a container object. | 3.1 Include all properties of a focus node                                                                         |\n| [Vocprez Vocabulary Concept Object](#)                                                     | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains <br> 3.2.2 Include specified properties complex - multiple property paths |\n| [Vocprez Collection Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#vp-collection-listing_tab)                            | 1.2 List objects based on their class.                              |                                                                                                                                                               |\n| [Vocprez Collection Object](#)                                                             | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |\n| [Vocprez Collection Concept Object](#)                                                     | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |\n| [Spaceprez Dataset Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#sp-dataset-listing_tab)                                | 1.2 List objects based on their class.                              |                                                                                                                                                               |\n| [Spaceprez Dataset Object](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#sp-dataset-object_tab)                                  | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |\n| [Spaceprez Feature Collection Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#sp-feature-collection-listing_tab)          | 1.1 List objects based on their relationship to a container object. |                                                                                                                 |\n| [Spaceprez Feature Collection Object](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#sp-feature-collection-object_tab)            | 2.1 Describe an object given its URI                                | 3.3 Exclude specified properties of a focus node <br> 3.4 Include blank node property chains                                                                        |\n| [Spaceprez Feature Listing](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#sp-feature-listing_tab)                                | 1.1 List objects based on their relationship to a container object. |                                                                                                                                                               |\n| [Spaceprez Feature Object](https://rdframe.sgraljii8d3km.ap-southeast-2.cs.amazonlightsail.com/shacl/#sp-feature-object_tab)                                  | 2.1 Describe an object given its URI                                | 3.1 Include all properties of a focus node <br> 3.4 Include blank node property chains                                                                        |\n\n## Appendix - why use sh:union and property shapes?\n\nDirect and Precise: sh:union and property paths allow direct referencing of specific properties, offering clear and granular control over displayed properties. They support SPARQL property path syntax for complex property relationships, and using sh:union, they can be specified together in a single RDF List.  \n- sh:inversePath\n- sh:alternativePath\n- sh:path\nAs these property paths are used in the profile, they are about the selection of properties *after a set of focus nodes* has been selected, as such the most common use cases are where a union of properties is required, rather than a logical and. sh:union can be mapped directly to SPARQL union, giving a clear and direct mapping from the profile to the SPARQL query.\n\nAs these are specified off of a property node, sh:minCount and sh:maxCount are also available, and can be used to indicate optional properties (sh:minCount 0) or to indicate that a property should be excluded (sh:maxCount 0).",
    "bugtrack_url": null,
    "license": "",
    "summary": "",
    "version": "0.1.1",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "29a4f9e2bd082c27fa909bb1dcc6355ceb0708bcc90ecd2080c7aca50eb445e2",
                "md5": "66622b9771b930be92b0bceeaca26480",
                "sha256": "3a8c54da40aa9b57d8e1785d85e2013343038d4ef1f9255d2bc7cc0996301361"
            },
            "downloads": -1,
            "filename": "rdframe-0.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "66622b9771b930be92b0bceeaca26480",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11,<4.0",
            "size": 22498,
            "upload_time": "2023-12-10T14:33:25",
            "upload_time_iso_8601": "2023-12-10T14:33:25.659656Z",
            "url": "https://files.pythonhosted.org/packages/29/a4/f9e2bd082c27fa909bb1dcc6355ceb0708bcc90ecd2080c7aca50eb445e2/rdframe-0.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6d68d7611d50845062cb528f247ee69288ae1fbecc57f4944022ba732457ebd7",
                "md5": "565fbf69cfe66e5cc362a0c58208750e",
                "sha256": "9e508518c64932abf05fe123f00aadc6f90d0d6fae446fd0b01cec0a40f49a7a"
            },
            "downloads": -1,
            "filename": "rdframe-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "565fbf69cfe66e5cc362a0c58208750e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11,<4.0",
            "size": 23112,
            "upload_time": "2023-12-10T14:33:27",
            "upload_time_iso_8601": "2023-12-10T14:33:27.270477Z",
            "url": "https://files.pythonhosted.org/packages/6d/68/d7611d50845062cb528f247ee69288ae1fbecc57f4944022ba732457ebd7/rdframe-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-10 14:33:27",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "rdframe"
}
        
Elapsed time: 0.38731s