[![status](https://joss.theoj.org/papers/1c9701c5d909d9b8255b754677b2ea51/status.svg)](https://joss.theoj.org/papers/1c9701c5d909d9b8255b754677b2ea51) [![PyPI version shields.io](https://img.shields.io/pypi/v/scribl.svg)](https://pypi.python.org/pypi/scribl/) [![Build scribl](https://github.com/amberbiology/scribl/actions/workflows/python-package.yml/badge.svg?branch=main)](https://github.com/amberbiology/scribl/actions/workflows/python-package.yml) [![GitHub license](https://img.shields.io/github/license/amberbiology/scribl.svg)](https://github.com/amberbiology/scribl/blob/master/LICENSE) <!-- [![Citation Badge](https://api.juleskreuer.eu/citation-badge.php?doi=10.21105/joss.06645)](https://juleskreuer.eu/citation-badge/) -->
# scribl
## A system for the semantic capture of relationships in biological literature
The **scribl** language was designed for the curation from scientific
articles, of the relationships between the various biological agents
and processes that they describe, with a view to generating a graph
database that captures these relationships as a connected network.
**scribl** statements are added as tags to articles in a literature
database (the **scribl** codebase currently supports the free,
open-source [Zotero](https://www.zotero.org/) database). These tags are
parsed and used to create a graph data structure that can be then be
exported for use in a graph database platform such as
[neo4j](https://neo4j.com), or Python's
[NetworkX](https://networkx.org/).
For example:
```
::agent c9orf72 :gene :protein :url https://www.uniprot.org/uniprot/Q96LT7
::agent gtp :tag nucleoside, purine, nucleoside triphosphate
::process exportin releases cargo into cytoplasm @ exportin-1
::process smcr8 mutation > ulk1 phosphorylation < autophagy = smcr8 expression
```
Full details of the language are available in the full documentation contained in
[scribl.pdf](https://github.com/amberbiology/scribl/blob/main/scribl.pdf).
## How to cite `scribl`
If you write a paper that uses `scribl` in your analysis, please cite
**both**:
- our [2024 article](https://joss.theoj.org/papers/1c9701c5d909d9b8255b754677b2ea51)
published in the *Journal of Open Source Software*:
> Webster GD, Lancaster AK. (2024) "scribl: A system for the semantic capture of relationships in biological literature." *Journal of Open Source Software* **9**(99):6645. doi:[10.21105/joss.06645](https://doi.org/10.21105/joss.06645)
- **and** the [Zenodo record](https://zenodo.org/doi/10.5281/zenodo.12728362) for
the software. To cite the correct version, follow these steps:
1. First visit the DOI for the overall Zenodo record:
[10.5281/zenodo.12728362](https://zenodo.org/doi/10.5281/zenodo.12728362).
This DOI represents **all versions**, and will always resolve to
the latest one.
2. When you are viewing the record, look for the **Versions** box
in the right-sidebar. Here are listed all versions (including
older versions).
3. Select and click the version-specific DOI that matches the
specific version of scribl that you used for your analysis.
4. Once you are visiting the Zenodo record for the specific
version, under the **Citation** box in the right-sidebar, select
the citation format you wish to use and click to copy the
citation. It will contain link to the version-specific DOI, and
be of the form:
> Webster GD, Lancaster, AK. (YYYY) "scribl: A system for the semantic capture of relationships in biological literature" (Version X.Y.Z) [Computer software]. Zenodo.
> <https://doi.org/10.5281/zenodo.XXXXX>
Note that citation metadata for the current Zenodo record is also
stored in
[CITATION.cff](https://github.com/amberbiology/scribl/blob/main/CITATION.cff)
## Quickstart install and test
We recommend installing in a virtual environment.
### Install from PyPI
```shell
pip install scribl
```
### Install via GitHub repo
```shell
git clone https://github.com/amberbiology/scribl.git
cd scribl
pip install .
```
This will pull in all relevant Python dependencies, including
[pyparsing](https://github.com/pyparsing/pyparsing),
[pyzotero](https://github.com/urschrei/pyzotero) and others within
your virtual environment
### Test your installation
When scribl is installed, it contains a command-line program `scribl`
that can perform some common API tasks, and to help the user jumpstart
exploring using the system. After installation here are two example
command-line you can cut-and-paste and run from the terminal to check
installation:
#### Check version
```shell
scribl --version
```
#### Check outputs
First create a new, empty directory and change into it, e.g.:
```shell
mkdir /tmp/scribl-test
cd /tmp/scribl-test
```
Then run:
```shell
scribl -g new_graphdb --zotero-library 5251557:group --networkx-fig graphdb-visual.png --graphmlfile graphdb.xml --cyphertextfile graphdb.cypher
```
This will read from a public Zotero `group` collection we have created
(ID `5251557`) for testing purposes, that includes citations with
scribl tags. This example run generates the following outputs:
- `new_graphdb` - directory containing the new scribl database
- `graphdb.cypher` - a plain text file in the [Cypher query
language](https://opencypher.org/)
- `graphdb.xml` - an XML file in
[GraphML](http://graphml.graphdrawing.org/) format
- `graphdb-visual.png` - a visualization of the GraphML graph in PNG
format:
![Visualization of scribl database via NetworkX](graphdb-visual.png)
see below for a more detailed description of visualization options.
## Visualization of the scribl database
As mentioned previously, a `scribl` database can be exported for use
in a graph database platform for further interactive exploration. One
of the most developed graph visualization platforms is as
[Neo4j](https://neo4j.com) which reads the output in [Cypher query
language](https://opencypher.org/) . Unfortunately Neo4j isn't
directly available via Python packaging system. The instructions for
installation and configuration is beyond the scope of this
documentation, but they are [available for most
platforms](https://neo4j.com/docs/operations-manual/current/installation/).
The [main scribl documentation](scribl.pdf) describes how to take the
exported Cypher text generated by a command like the above into Neo4j
and dynamically update the Neo4j database.
In the interests getting up and running quickly with visualizations,
but staying purely within the Python ecosystem, `scribl` also supports
outputs other than Cypher. The above mentioned
[GraphML](http://graphml.graphdrawing.org/) backend generates
visualizations using a combination of
[NetworkX](https://networkx.org/) and matplotlib. This feature enables
generation of static visualizations of the current scribl database.
Visualizations generated via the GraphML/NetworkX are best suited for
small networks and to get a feel for the scribl database structure
with a minimum of fuss. For "production" level visualization as well
as interactive analyses, however, you are likely to want to try Neo4j.
## Examples of `scribl` command-line program
Here are some common scribl tasks you can do using the `scribl`
command-line:
### Create a new database from Zotero library
```shell
scribl -g new_graphdb --zotero-library <LIBRARY_ID>:<TYPE> --zotero-api-key <API_KEY>
```
A scribl database is created in current directory with the name
`new_graphdb` using the Zotero `LIBRARY_ID` with specified `TYPE`
(either `user` or `group`). An `API_KEY` is only needed in the case of
accessing private libraries, or non-public group libraries. The
`pyzotero` library has
[documentation](https://github.com/urschrei/pyzotero#quickstart) on
how to find out your library ID and creating an API key.
### Create a new database from a local Zotero CSV file
```shell
scribl -g new_graphdb --zoterofile <ZOTERO_CSV>
```
This populates the database from a local CSV file `ZOTERO_CSV` exported
from a Zotero library. Note that the above two commands, just create (or
read from an existing) database, but generate no output. (Note that the
`new_graphdb` database is not overwritten if it already exists, unless the
`--overwrite` flag is also supplied)
To generate outputs, there are a number of options. All assume at
least one Zotero database has been imported, either from a local CSV
file, or via the Zotero library API (i.e. at least one of the import
steps above have been run at least once). Outputs will be skipped if
the database empty.
### Output representation of graph in GraphML format
```shell
scribl -g new_graphdb --graphmlfile <OUTPUT_XML>
```
This generates output in GraphML XML format (e.g. `OUTPUT_XML` should
be supplied with the appropriate extension, e.g. `graphdb.xml`).
### Output a NetworkX visualization
```shell
scribl -g new_graphdb --networkx-fig <OUTPUT_IMAGE>
```
This generates and saves the visualization as as one of the
`matplotlib` supported `OUTPUT_IMAGE` formats, using data from current
scribl database (for example, using `graphdb-visual.pdf` would
generate it in PDF format). The visualizations are produced from
GraphML XML output that is rendered using Python's NetworkX
library.
### Output representation of graph as a Cypher file
```shell
scribl -g new_graphdb --cyphertextfile <OUTPUT_CYPHER>
```
The above outputs a Cypher text representation of the database in the
file `OUTPUT_CYPHER`, as a plain text file in the previously mentioned
[Cypher query language](https://opencypher.org/), suitable for import
into [Neo4J](https://neo4j.com/).
For a full description of all command-line arguments, run:
```shell
scribl --help
```
## Using the `scribl` API directly in your programs
You can write your own Python program using the API directly. For
example, the code below, generates the same outputs as the [check
outputs](#check-outputs) example above. It creates a new database,
populates it from the same remote Zotero library, and then generates
`graphdb.xml` (GraphML), `graphdb.cypher` (Cypher) and
`graphdb-visual.png` (PNG).
```Python
from scribl.manage_graphdb import GraphDBInstance
gdb = GraphDBInstance("newgraph_db")
gdb.set_metadata("Test Scribl DB", "User name", "Small test")
gdb.import_zotero_library(5251557, "group")
gdb.load_zotero_csv()
gdb.export_graphml_text(filepath="graphdb.xml")
gdb.export_graphml_figure(filepath="graphdb-visual.png")
gdb.export_cypher_text(filepath="graphdb.cypher")
```
The [code](/scribl/scribl.py) for the `scribl` command contains more
examples of use of the API. In addition, more details can be found
in the main documentation.
## Running unit tests with `pytest`
1. clone the repo:
```shell
git clone https://github.com/amberbiology/scribl.git
```
2. install with `pip` with the option `test` package :
```shell
pip install .[test]
```
3. run `pytest`
Note that `pytest` creates output sandbox test files
[in the system temporary directory](https://docs.pytest.org/en/6.2.x/tmpdir.html#the-default-base-temporary-directory),
e.g. on Linux `pytest` creates a directory structure
`/tmp/pytest-of-USER/pytest-NUM/scribl_sandboxNUM` where `USER` is
the current user and `NUM` is incremented on each run. Only the
last three directories are retained.
## Development and contributing to `scribl`
`scribl` is completely open-source and being developed by Amber Biology LLC (@amberbiology).
See
[CHANGELOG.md](https://github.com/amberbiology/scribl/blob/main/CHANGELOG.md)
for a history of changes.
If you're interested in contributing, please read our [CONTRIBUTING guide](CONTRIBUTING.md).
## Copyright and license
scribl is Copyright (C) 2023, 2024. Amber Biology LLC
scribl is distributed under the terms of [AGPL-3.0 license](LICENSE)
## Acknowledgements
The development of the scribl platform was made possible by the
funding and expertise provided by the Association for Frontotemporal
Degeneration (AFTD - https://www.theaftd.org/) whose mission is to
improve the quality of life of people affected by Frontotemporal
Degeneration and drive research to a cure. We are particularly
grateful to AFTD leadership team members Debra Niehoff and Penny Dacks
for their invaluable direction and guidance, and for getting us access
to leading researchers in the field of neurodegenerative disease - all
of whose insights and advice were pivotal in the development of this
free, open-source research tool.
Raw data
{
"_id": null,
"home_page": null,
"name": "scribl",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "systems biology, network biology, literature database",
"author": null,
"author_email": "Amber Biology <info@amberbiology.com>",
"download_url": "https://files.pythonhosted.org/packages/7b/ea/4218753dddc956a5a6aa2a975dfa14d959c7aa13b7ec1667d7c99a99c693/scribl-0.8.2.tar.gz",
"platform": null,
"description": "[![status](https://joss.theoj.org/papers/1c9701c5d909d9b8255b754677b2ea51/status.svg)](https://joss.theoj.org/papers/1c9701c5d909d9b8255b754677b2ea51) [![PyPI version shields.io](https://img.shields.io/pypi/v/scribl.svg)](https://pypi.python.org/pypi/scribl/) [![Build scribl](https://github.com/amberbiology/scribl/actions/workflows/python-package.yml/badge.svg?branch=main)](https://github.com/amberbiology/scribl/actions/workflows/python-package.yml) [![GitHub license](https://img.shields.io/github/license/amberbiology/scribl.svg)](https://github.com/amberbiology/scribl/blob/master/LICENSE) <!-- [![Citation Badge](https://api.juleskreuer.eu/citation-badge.php?doi=10.21105/joss.06645)](https://juleskreuer.eu/citation-badge/) -->\n\n# scribl\n\n## A system for the semantic capture of relationships in biological literature\n\nThe **scribl** language was designed for the curation from scientific\narticles, of the relationships between the various biological agents\nand processes that they describe, with a view to generating a graph\ndatabase that captures these relationships as a connected network.\n\n**scribl** statements are added as tags to articles in a literature\ndatabase (the **scribl** codebase currently supports the free,\nopen-source [Zotero](https://www.zotero.org/) database). These tags are\nparsed and used to create a graph data structure that can be then be\nexported for use in a graph database platform such as\n[neo4j](https://neo4j.com), or Python's\n[NetworkX](https://networkx.org/).\n\nFor example:\n\n```\n::agent c9orf72 :gene :protein :url https://www.uniprot.org/uniprot/Q96LT7\n::agent gtp :tag nucleoside, purine, nucleoside triphosphate\n::process exportin releases cargo into cytoplasm @ exportin-1\n::process smcr8 mutation > ulk1 phosphorylation < autophagy = smcr8 expression\n```\n\nFull details of the language are available in the full documentation contained in\n[scribl.pdf](https://github.com/amberbiology/scribl/blob/main/scribl.pdf).\n\n## How to cite `scribl`\n\nIf you write a paper that uses `scribl` in your analysis, please cite\n**both**:\n\n- our [2024 article](https://joss.theoj.org/papers/1c9701c5d909d9b8255b754677b2ea51)\n published in the *Journal of Open Source Software*:\n\n > Webster GD, Lancaster AK. (2024) \"scribl: A system for the semantic capture of relationships in biological literature.\" *Journal of Open Source Software* **9**(99):6645. doi:[10.21105/joss.06645](https://doi.org/10.21105/joss.06645)\n\n- **and** the [Zenodo record](https://zenodo.org/doi/10.5281/zenodo.12728362) for\n the software. To cite the correct version, follow these steps:\n\n 1. First visit the DOI for the overall Zenodo record:\n [10.5281/zenodo.12728362](https://zenodo.org/doi/10.5281/zenodo.12728362).\n This DOI represents **all versions**, and will always resolve to\n the latest one.\n\n 2. When you are viewing the record, look for the **Versions** box\n in the right-sidebar. Here are listed all versions (including\n older versions).\n\n 3. Select and click the version-specific DOI that matches the\n specific version of scribl that you used for your analysis.\n\n 4. Once you are visiting the Zenodo record for the specific\n version, under the **Citation** box in the right-sidebar, select\n the citation format you wish to use and click to copy the\n citation. It will contain link to the version-specific DOI, and\n be of the form:\n\n > Webster GD, Lancaster, AK. (YYYY) \"scribl: A system for the semantic capture of relationships in biological literature\" (Version X.Y.Z) [Computer software]. Zenodo.\n > <https://doi.org/10.5281/zenodo.XXXXX>\n\n Note that citation metadata for the current Zenodo record is also\n stored in\n [CITATION.cff](https://github.com/amberbiology/scribl/blob/main/CITATION.cff)\n\n## Quickstart install and test\n\nWe recommend installing in a virtual environment.\n\n### Install from PyPI\n\n```shell\npip install scribl\n```\n\n### Install via GitHub repo\n\n```shell\ngit clone https://github.com/amberbiology/scribl.git\ncd scribl\npip install .\n```\n\nThis will pull in all relevant Python dependencies, including\n[pyparsing](https://github.com/pyparsing/pyparsing),\n[pyzotero](https://github.com/urschrei/pyzotero) and others within\nyour virtual environment\n\n### Test your installation\n\nWhen scribl is installed, it contains a command-line program `scribl`\nthat can perform some common API tasks, and to help the user jumpstart\nexploring using the system. After installation here are two example\ncommand-line you can cut-and-paste and run from the terminal to check\ninstallation:\n\n#### Check version\n\n```shell\nscribl --version\n```\n\n#### Check outputs\n\nFirst create a new, empty directory and change into it, e.g.:\n\n```shell\nmkdir /tmp/scribl-test\ncd /tmp/scribl-test\n```\n\nThen run:\n\n```shell\nscribl -g new_graphdb --zotero-library 5251557:group --networkx-fig graphdb-visual.png --graphmlfile graphdb.xml --cyphertextfile graphdb.cypher\n```\n\nThis will read from a public Zotero `group` collection we have created\n(ID `5251557`) for testing purposes, that includes citations with\nscribl tags. This example run generates the following outputs:\n\n- `new_graphdb` - directory containing the new scribl database\n\n- `graphdb.cypher` - a plain text file in the [Cypher query\n language](https://opencypher.org/)\n\n- `graphdb.xml` - an XML file in\n [GraphML](http://graphml.graphdrawing.org/) format\n\n- `graphdb-visual.png` - a visualization of the GraphML graph in PNG\n format:\n\n ![Visualization of scribl database via NetworkX](graphdb-visual.png)\n\n see below for a more detailed description of visualization options.\n\n## Visualization of the scribl database\n\nAs mentioned previously, a `scribl` database can be exported for use\nin a graph database platform for further interactive exploration. One\nof the most developed graph visualization platforms is as\n[Neo4j](https://neo4j.com) which reads the output in [Cypher query\nlanguage](https://opencypher.org/) . Unfortunately Neo4j isn't\ndirectly available via Python packaging system. The instructions for\ninstallation and configuration is beyond the scope of this\ndocumentation, but they are [available for most\nplatforms](https://neo4j.com/docs/operations-manual/current/installation/).\nThe [main scribl documentation](scribl.pdf) describes how to take the\nexported Cypher text generated by a command like the above into Neo4j\nand dynamically update the Neo4j database.\n\nIn the interests getting up and running quickly with visualizations,\nbut staying purely within the Python ecosystem, `scribl` also supports\noutputs other than Cypher. The above mentioned\n[GraphML](http://graphml.graphdrawing.org/) backend generates\nvisualizations using a combination of\n[NetworkX](https://networkx.org/) and matplotlib. This feature enables\ngeneration of static visualizations of the current scribl database.\nVisualizations generated via the GraphML/NetworkX are best suited for\nsmall networks and to get a feel for the scribl database structure\nwith a minimum of fuss. For \"production\" level visualization as well\nas interactive analyses, however, you are likely to want to try Neo4j.\n\n## Examples of `scribl` command-line program\n\nHere are some common scribl tasks you can do using the `scribl`\ncommand-line:\n\n### Create a new database from Zotero library\n\n```shell\nscribl -g new_graphdb --zotero-library <LIBRARY_ID>:<TYPE> --zotero-api-key <API_KEY>\n```\n\nA scribl database is created in current directory with the name\n`new_graphdb` using the Zotero `LIBRARY_ID` with specified `TYPE`\n(either `user` or `group`). An `API_KEY` is only needed in the case of\naccessing private libraries, or non-public group libraries. The\n`pyzotero` library has\n[documentation](https://github.com/urschrei/pyzotero#quickstart) on\nhow to find out your library ID and creating an API key.\n\n### Create a new database from a local Zotero CSV file\n\n```shell\nscribl -g new_graphdb --zoterofile <ZOTERO_CSV>\n```\n\nThis populates the database from a local CSV file `ZOTERO_CSV` exported\nfrom a Zotero library. Note that the above two commands, just create (or\nread from an existing) database, but generate no output. (Note that the\n`new_graphdb` database is not overwritten if it already exists, unless the\n`--overwrite` flag is also supplied)\n\nTo generate outputs, there are a number of options. All assume at\nleast one Zotero database has been imported, either from a local CSV\nfile, or via the Zotero library API (i.e. at least one of the import\nsteps above have been run at least once). Outputs will be skipped if\nthe database empty.\n\n### Output representation of graph in GraphML format\n\n```shell\nscribl -g new_graphdb --graphmlfile <OUTPUT_XML>\n```\n\nThis generates output in GraphML XML format (e.g. `OUTPUT_XML` should\nbe supplied with the appropriate extension, e.g. `graphdb.xml`).\n\n### Output a NetworkX visualization\n\n```shell\nscribl -g new_graphdb --networkx-fig <OUTPUT_IMAGE>\n```\n\nThis generates and saves the visualization as as one of the\n`matplotlib` supported `OUTPUT_IMAGE` formats, using data from current\nscribl database (for example, using `graphdb-visual.pdf` would\ngenerate it in PDF format). The visualizations are produced from\nGraphML XML output that is rendered using Python's NetworkX\nlibrary.\n\n### Output representation of graph as a Cypher file\n\n```shell\nscribl -g new_graphdb --cyphertextfile <OUTPUT_CYPHER>\n```\n\nThe above outputs a Cypher text representation of the database in the\nfile `OUTPUT_CYPHER`, as a plain text file in the previously mentioned\n[Cypher query language](https://opencypher.org/), suitable for import\ninto [Neo4J](https://neo4j.com/).\n\nFor a full description of all command-line arguments, run:\n\n```shell\nscribl --help\n```\n\n## Using the `scribl` API directly in your programs\n\nYou can write your own Python program using the API directly. For\nexample, the code below, generates the same outputs as the [check\noutputs](#check-outputs) example above. It creates a new database,\npopulates it from the same remote Zotero library, and then generates\n`graphdb.xml` (GraphML), `graphdb.cypher` (Cypher) and\n`graphdb-visual.png` (PNG).\n\n```Python\nfrom scribl.manage_graphdb import GraphDBInstance\n\ngdb = GraphDBInstance(\"newgraph_db\")\ngdb.set_metadata(\"Test Scribl DB\", \"User name\", \"Small test\")\ngdb.import_zotero_library(5251557, \"group\")\ngdb.load_zotero_csv()\ngdb.export_graphml_text(filepath=\"graphdb.xml\")\ngdb.export_graphml_figure(filepath=\"graphdb-visual.png\")\ngdb.export_cypher_text(filepath=\"graphdb.cypher\")\n```\n\nThe [code](/scribl/scribl.py) for the `scribl` command contains more\nexamples of use of the API. In addition, more details can be found\nin the main documentation.\n\n## Running unit tests with `pytest`\n\n1. clone the repo:\n\n ```shell\n git clone https://github.com/amberbiology/scribl.git\n ```\n\n2. install with `pip` with the option `test` package :\n\n ```shell\n pip install .[test]\n ```\n\n3. run `pytest`\n\n Note that `pytest` creates output sandbox test files\n [in the system temporary directory](https://docs.pytest.org/en/6.2.x/tmpdir.html#the-default-base-temporary-directory),\n e.g. on Linux `pytest` creates a directory structure\n `/tmp/pytest-of-USER/pytest-NUM/scribl_sandboxNUM` where `USER` is\n the current user and `NUM` is incremented on each run. Only the\n last three directories are retained.\n\n## Development and contributing to `scribl`\n\n`scribl` is completely open-source and being developed by Amber Biology LLC (@amberbiology).\n\nSee\n[CHANGELOG.md](https://github.com/amberbiology/scribl/blob/main/CHANGELOG.md)\nfor a history of changes.\n\nIf you're interested in contributing, please read our [CONTRIBUTING guide](CONTRIBUTING.md).\n\n## Copyright and license\n\nscribl is Copyright (C) 2023, 2024. Amber Biology LLC\n\nscribl is distributed under the terms of [AGPL-3.0 license](LICENSE)\n\n## Acknowledgements\n\nThe development of the scribl platform was made possible by the\nfunding and expertise provided by the Association for Frontotemporal\nDegeneration (AFTD - https://www.theaftd.org/) whose mission is to\nimprove the quality of life of people affected by Frontotemporal\nDegeneration and drive research to a cure. We are particularly\ngrateful to AFTD leadership team members Debra Niehoff and Penny Dacks\nfor their invaluable direction and guidance, and for getting us access\nto leading researchers in the field of neurodegenerative disease - all\nof whose insights and advice were pivotal in the development of this\nfree, open-source research tool.\n",
"bugtrack_url": null,
"license": "GNU AGPLv3+",
"summary": "A system for the semantic capture of relationships in biological literature",
"version": "0.8.2",
"project_urls": {
"Changelog": "https://github.com/amberbiology/scribl/blob/main/CHANGELOG.md",
"Homepage": "http://amberbiology.com",
"Source": "https://github.com/amberbiology/scribl/",
"Tracker": "https://github.com/amberbiology/scribl/issues"
},
"split_keywords": [
"systems biology",
" network biology",
" literature database"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "09c55c028c622bf0343f371dba24d929fb8a495a55886d5f81b958a8210c8033",
"md5": "146972ea911c5389d89693065b781235",
"sha256": "f534d1ead4f8353fbd9698c5ade4ec348e937d248d8c0dd2a63e52241c173506"
},
"downloads": -1,
"filename": "scribl-0.8.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "146972ea911c5389d89693065b781235",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 34945,
"upload_time": "2025-01-30T04:14:08",
"upload_time_iso_8601": "2025-01-30T04:14:08.068041Z",
"url": "https://files.pythonhosted.org/packages/09/c5/5c028c622bf0343f371dba24d929fb8a495a55886d5f81b958a8210c8033/scribl-0.8.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7bea4218753dddc956a5a6aa2a975dfa14d959c7aa13b7ec1667d7c99a99c693",
"md5": "be9af5214f658da5f1c8a67bb9718ded",
"sha256": "294bbf1f8a1654442c225dfa36891bcc52ba0e6bbeddee74d38d27d03138585c"
},
"downloads": -1,
"filename": "scribl-0.8.2.tar.gz",
"has_sig": false,
"md5_digest": "be9af5214f658da5f1c8a67bb9718ded",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6098872,
"upload_time": "2025-01-30T04:14:10",
"upload_time_iso_8601": "2025-01-30T04:14:10.399809Z",
"url": "https://files.pythonhosted.org/packages/7b/ea/4218753dddc956a5a6aa2a975dfa14d959c7aa13b7ec1667d7c99a99c693/scribl-0.8.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-30 04:14:10",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "amberbiology",
"github_project": "scribl",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "scribl"
}