citation-url
Parse URLs for DOIs, PubMed identifiers, PMC identifiers, arXiv identifiers, etc.
This module has a single parse() function that takes in a URL and gives back
a parse status (success, unknown, or irreconcilable), a prefix, and
an identifier. If the status is unknown or irreconcilable, the prefix will
be left as None and the identifier will match the input:
>>> from citation_url import parse, Status
>>> parse("https://joss.theoj.org/papers/10.21105/joss.01708")
(Status.success, 'doi', '10.21105/joss.01708')
>>> parse("http://www.ncbi.nlm.nih.gov/pubmed/34739845")
(Status.success, 'pubmed', '34739845')
>>> parse("https://example.com/true-garbage")
(Status.unknown, None, 'https://example.com/true-garbage')
>>> parse("https://example.com/true-garbage")
(Status.unknown, None, 'https://example.com/true-garbage')
>>> parse("http://msb.embopress.org/content/13/11/954.full.pdf")
(Status.irreconcilable, None, 'http://msb.embopress.org/content/13/11/954.full.pdf')
🕵️ Why?
I wanted to be able to curate a list of papers in
Zotero, Mendeley, or any
other modern citation manager, make an XML export in the EndNote format, extract
and normalize the messy contents in the electronic-resource-num, text-urls,
and pdf-urls fields, then ensure that there are corresponding entries
on Wikidata using the Su Lab's
Wikidata Integrator.
Reuse this functionality with:
$ python -m citation_url.endnote --help
🚀 Installation
The most recent release can be installed from PyPI with:
$ pip install citation_url
The most recent code and data can be installed directly from GitHub with:
$ pip install git+https://github.com/cthoyt/citation-url.git
👐 Contributing
Contributions, whether filing an issue, making a pull request, or forking, are appreciated. See CONTRIBUTING.md for more information on getting involved.
👋 Attribution
⚖️ License
The code in this package is licensed under the MIT License.
🍪 Cookiecutter
This package was created with @audreyfeldroy's cookiecutter package using @cthoyt's cookiecutter-snekpack template.
🛠️ For Developers
See developer instrutions
The final section of the README is for if you want to get involved by making a code contribution.
Development Installation
To install in development mode, use the following:
$ git clone git+https://github.com/cthoyt/citation-url.git
$ cd citation-url
$ pip install -e .
🥼 Testing
After cloning the repository and installing tox with pip install tox, the unit tests in the tests/ folder can be
run reproducibly with:
$ tox
Additionally, these tests are automatically re-run with each commit in a GitHub Action.
📖 Building the Documentation
$ tox -e docs
📦 Making a Release
After installing the package in development mode and installing
tox with pip install tox, the commands for making a new release are contained within the finish environment
in tox.ini. Run the following from the shell:
$ tox -e finish
This script does the following:
- Uses Bump2Version to switch the version number in the
setup.cfgandsrc/citation_url/version.pyto not have the-devsuffix - Packages the code in both a tar archive and a wheel
- Uploads to PyPI using
twine. Be sure to have a.pypircfile configured to avoid the need for manual input at this step - Push to GitHub. You'll need to make a release going with the commit where the version was bumped.
- Bump the version to the next patch. If you made big changes and want to bump the version by minor, you can
use
tox -e bumpversion minorafter.
Metadata
Release files for citation-url 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| citation_url-0.1.1.tar.gz | 16.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| citation_url-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.3 kB
Release files / citation_url-0.1.1.tar.gz
| Download URL | citation_url-0.1.1.tar.gz |
|---|---|
| Size | 16.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1d6abac84d84f41d7549e611213305b14f5aa25a93d859c8c6c60739df57efad
|
|
BLAKE2b-256 checksum How to use checksums |
9f513fd89cc6e8eae58073dcd2494ac2f720c77b40feca6263f5411acd12181a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.1
|
Release files / citation_url-0.1.1-py3-none-any.whl
| Download URL | citation_url-0.1.1-py3-none-any.whl |
|---|---|
| Size | 10.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4dcc8291406ed4194ab3673a8c56ef04544e5278747fda65dbeeea760db4eab8
|
|
BLAKE2b-256 checksum How to use checksums |
f56d9625cc8b22021e41f2f3da95a917ed29ee330ee32f6f51823c824d2cac77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.1
|