A data model and client for Wikidata QuickStatements
Project description
QuickStatements Client
A data model and client for Wikidata QuickStatements.
💪 Getting Started
Here's how to quickly construct some QuickStatements
import datetime
from quickstatements_client import DateQualifier, EntityQualifier, TextQualifier, EntityLine
subject_qid = "Q47475003" # Charles Tapley Hoyt
subject_orcid = "0000-0003-4423-4370"
reference_url_qualifier = TextQualifier(
predicate="S854", target=f"https://orcid.org/0000-0003-4423-4370"
)
start_date = datetime.datetime(year=2021, day=15, month=2)
start_date_qualifier = DateQualifier.start_time(start_date)
position_held_qualifier = EntityQualifier(predicate="P39", target="Q1706722")
employment_line = EntityLine(
subject=subject_qid,
predicate="P108", # employer
target="Q49121", # Harvard medical school
qualifiers=[reference_url_qualifier, start_date_qualifier, position_held_qualifier],
)
>>> employment_line.get_line()
'Q47475003|P108|Q49121|S854|"https://orcid.org/0000-0003-4423-4370"|P580|+2021-02-15T00:00:00Z/11|P39|Q1706722',
How to send some QuickStatements to the API:
from quickstatements_client import QuickStatementsClient
lines = [
employment_line,
...
]
client = QuickStatementsClient(token=..., username=...)
res = client.post(lines, batch_name="Test Batch")
# see also res.batch_id
import webbrowser
webbrowser.open_new_tab(res.batch_url)
Note: token
and username
are automatically looked up with pystow
if they aren't given.
Specifically, using pystow.get_config("quickstatements", "token)
and
pystow.get_config("quickstatements", "username")
.
🚀 Installation
The most recent release can be installed from PyPI with:
$ pip install quickstatements_client
The most recent code and data can be installed directly from GitHub with:
$ pip install git+https://github.com/cthoyt/quickstatements-client.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
This code was originally written as a contribution to PyORCIDator. Special thanks to Tiago Lubiana [@lubianat] and João Vitor [@jvfe] for discussions and testing.
⚖️ 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 instructions
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/quickstatements-client.git
$ cd quickstatements-client
$ 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
The documentation can be built locally using the following:
$ git clone git+https://github.com/cthoyt/quickstatements-client.git
$ cd quickstatements-client
$ tox -e docs
$ open docs/build/html/index.html
The documentation automatically installs the package as well as the docs
extra specified in the setup.cfg
. sphinx
plugins
like texext
can be added there. Additionally, they need to be added to the
extensions
list in docs/source/conf.py
.
📦 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.cfg
,src/quickstatements_client/version.py
, anddocs/source/conf.py
to not have the-dev
suffix - Packages the code in both a tar archive and a wheel using
build
- Uploads to PyPI using
twine
. Be sure to have a.pypirc
file 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 -- minor
after.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for quickstatements_client-0.0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7308b1b2b17a0425874ca7ca917898c1c63f4a82f891e5b57453031fb7ce34b6 |
|
MD5 | 31965041dfadba1edb74a4c3c1d37325 |
|
BLAKE2b-256 | 037cf416b0ef4ac40d21c5025f7a25fec94dfa2802ef114e519f73296e3a64a5 |
Hashes for quickstatements_client-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41f4f4218e8e9a295a91e47d0da0df64dc70e52049ac95de03dae5f30078f6fa |
|
MD5 | a9c506cfc12b5b78b29319a0a2ba141d |
|
BLAKE2b-256 | 51ab609f9cc9710e233ab94f61fce20f541e0e7b19f5acd3474da6c50f35fcc1 |