# PubMed Client - Python Bindings
Python bindings for the PubMed and PMC (PubMed Central) API client library.
## Overview
This package provides Python bindings to the Rust-based PubMed client library, enabling high-performance access to PubMed and PMC APIs from Python.
## Features
- **PubMed API**: Search and retrieve article metadata
- **PMC API**: Access full-text articles from PubMed Central
- **High Performance**: Built with Rust for speed and reliability
- **Async Support**: Asynchronous API calls for efficient data retrieval
- **Type-Safe**: Full type hints for better IDE support
## Installation
### From PyPI (when published)
```bash
pip install pubmed-client
```
### From Source with uv
```bash
# Clone the repository
git clone https://github.com/illumination-k/pubmed-client-rs.git
cd pubmed-client-rs/pubmed-client-py
# Create virtual environment and install
uv venv
uv pip install -e .
```
## Development
### Prerequisites
- Python >= 3.12
- Rust toolchain (installed via rustup)
- uv (for Python package management)
- maturin (for building Python bindings)
### Setup Development Environment
```bash
# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install maturin via uv
uv tool install maturin
# Create virtual environment
cd pubmed-client-py
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install in development mode
uv pip install -e .
# Or use maturin develop for faster iteration
uv run maturin develop
```
### Running Tests
```bash
# Install dev dependencies
uv sync --group dev
# Run tests
uv run pytest
# Run tests with coverage
uv run pytest --cov=pubmed_client
```
### Code Quality
```bash
# Format code
uv run ruff format
# Lint code
uv run ruff check
# Type checking
uv run mypy
```
## Usage
Coming soon! The bindings are currently in development.
## Building
```bash
# Build wheel
uv run maturin build --release
# Build and install in development mode
uv run maturin develop
# Build for distribution
uv run maturin build --release --sdist
```
## Publishing
```bash
# Publish to PyPI (requires credentials)
uv run maturin publish
```
## License
MIT
## Links
- [Repository](https://github.com/illumination-k/pubmed-client-rs)
- [Core Rust Library](../pubmed-client)
- [CLI Tool](../pubmed-cli)
- [WebAssembly Bindings](../pubmed-client-wasm)
Raw data
{
"_id": null,
"home_page": null,
"name": "pubmed-client-py",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "pubmed, pmc, biomedical, research, api, bioinformatics",
"author": "illumination-k",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/e8/d7/5de0dfcd65952dcce7fa7b6bec04086e68de9798e7b396a6a396e481e29c/pubmed_client_py-0.0.1.tar.gz",
"platform": null,
"description": "# PubMed Client - Python Bindings\n\nPython bindings for the PubMed and PMC (PubMed Central) API client library.\n\n## Overview\n\nThis package provides Python bindings to the Rust-based PubMed client library, enabling high-performance access to PubMed and PMC APIs from Python.\n\n## Features\n\n- **PubMed API**: Search and retrieve article metadata\n- **PMC API**: Access full-text articles from PubMed Central\n- **High Performance**: Built with Rust for speed and reliability\n- **Async Support**: Asynchronous API calls for efficient data retrieval\n- **Type-Safe**: Full type hints for better IDE support\n\n## Installation\n\n### From PyPI (when published)\n\n```bash\npip install pubmed-client\n```\n\n### From Source with uv\n\n```bash\n# Clone the repository\ngit clone https://github.com/illumination-k/pubmed-client-rs.git\ncd pubmed-client-rs/pubmed-client-py\n\n# Create virtual environment and install\nuv venv\nuv pip install -e .\n```\n\n## Development\n\n### Prerequisites\n\n- Python >= 3.12\n- Rust toolchain (installed via rustup)\n- uv (for Python package management)\n- maturin (for building Python bindings)\n\n### Setup Development Environment\n\n```bash\n# Install uv if not already installed\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# Install maturin via uv\nuv tool install maturin\n\n# Create virtual environment\ncd pubmed-client-py\nuv venv\nsource .venv/bin/activate # On Windows: .venv\\Scripts\\activate\n\n# Install in development mode\nuv pip install -e .\n\n# Or use maturin develop for faster iteration\nuv run maturin develop\n```\n\n### Running Tests\n\n```bash\n# Install dev dependencies\nuv sync --group dev\n\n# Run tests\nuv run pytest\n\n# Run tests with coverage\nuv run pytest --cov=pubmed_client\n```\n\n### Code Quality\n\n```bash\n# Format code\nuv run ruff format\n\n# Lint code\nuv run ruff check\n\n# Type checking\nuv run mypy\n```\n\n## Usage\n\nComing soon! The bindings are currently in development.\n\n## Building\n\n```bash\n# Build wheel\nuv run maturin build --release\n\n# Build and install in development mode\nuv run maturin develop\n\n# Build for distribution\nuv run maturin build --release --sdist\n```\n\n## Publishing\n\n```bash\n# Publish to PyPI (requires credentials)\nuv run maturin publish\n```\n\n## License\n\nMIT\n\n## Links\n\n- [Repository](https://github.com/illumination-k/pubmed-client-rs)\n- [Core Rust Library](../pubmed-client)\n- [CLI Tool](../pubmed-cli)\n- [WebAssembly Bindings](../pubmed-client-wasm)\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python bindings for PubMed and PMC APIs for retrieving biomedical research articles",
"version": "0.0.1",
"project_urls": {
"Documentation": "https://github.com/illumination-k/pubmed-client-rs/tree/main/pubmed-client-py",
"Homepage": "https://github.com/illumination-k/pubmed-client-rs",
"Repository": "https://github.com/illumination-k/pubmed-client-rs"
},
"split_keywords": [
"pubmed",
" pmc",
" biomedical",
" research",
" api",
" bioinformatics"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "6e6a430a17dd78c1d8333991bba51db8c85c4e65d8475432db758867545e7fce",
"md5": "c1c2b65ed88202b9c18805b95935d5c1",
"sha256": "350c81bc67b214375a3433dc3aea6537a31912fe14027086f643fc83b25f4a03"
},
"downloads": -1,
"filename": "pubmed_client_py-0.0.1-cp312-cp312-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "c1c2b65ed88202b9c18805b95935d5c1",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.12",
"size": 2970764,
"upload_time": "2025-11-01T06:29:10",
"upload_time_iso_8601": "2025-11-01T06:29:10.893296Z",
"url": "https://files.pythonhosted.org/packages/6e/6a/430a17dd78c1d8333991bba51db8c85c4e65d8475432db758867545e7fce/pubmed_client_py-0.0.1-cp312-cp312-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ae1bd4ee2f288c5f2618186d4c242095742cd09d23bfb4b1d4ebba7d71f0c4f1",
"md5": "91b9db8ec3c96be5f3ce0cc982e0804e",
"sha256": "c5629323da03167e9ff285380e4bd13144ed05553d426f93304a47541690002d"
},
"downloads": -1,
"filename": "pubmed_client_py-0.0.1-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "91b9db8ec3c96be5f3ce0cc982e0804e",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.12",
"size": 2864249,
"upload_time": "2025-11-01T06:29:13",
"upload_time_iso_8601": "2025-11-01T06:29:13.017063Z",
"url": "https://files.pythonhosted.org/packages/ae/1b/d4ee2f288c5f2618186d4c242095742cd09d23bfb4b1d4ebba7d71f0c4f1/pubmed_client_py-0.0.1-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "18a945684adb69cdf86856b844c1c7d8d7416f601f1bb68c8275e5dce7fad695",
"md5": "ccd511c17b55b3badc390caf4d544448",
"sha256": "bf725f1309aadef378ef406076a7a7f12a637c90cb6de527eac335985bc497e5"
},
"downloads": -1,
"filename": "pubmed_client_py-0.0.1-cp312-cp312-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "ccd511c17b55b3badc390caf4d544448",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.12",
"size": 5451527,
"upload_time": "2025-11-01T06:29:14",
"upload_time_iso_8601": "2025-11-01T06:29:14.724487Z",
"url": "https://files.pythonhosted.org/packages/18/a9/45684adb69cdf86856b844c1c7d8d7416f601f1bb68c8275e5dce7fad695/pubmed_client_py-0.0.1-cp312-cp312-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2703c83864f4719fe0d6e53c12ff5da15b1a0d60438ef1a9ecf1fbf0f0f5db90",
"md5": "d8c0e351203b6f8c8d1a83e29f3b99ff",
"sha256": "3943800eacfef496ab1a6d0682fe020146394587cd38cb61ebe1138a52af1ca8"
},
"downloads": -1,
"filename": "pubmed_client_py-0.0.1-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "d8c0e351203b6f8c8d1a83e29f3b99ff",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.12",
"size": 2640557,
"upload_time": "2025-11-01T06:29:16",
"upload_time_iso_8601": "2025-11-01T06:29:16.354315Z",
"url": "https://files.pythonhosted.org/packages/27/03/c83864f4719fe0d6e53c12ff5da15b1a0d60438ef1a9ecf1fbf0f0f5db90/pubmed_client_py-0.0.1-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8b71887927a838183eb42cb7a849a19ae2db34800d721efde42e9ba049acffee",
"md5": "2a78bec99ff5475d4c5d97cace973eeb",
"sha256": "8cc503ee1fcbbd99b6895942391402fb1d98661074f2213960a9816dd8ebcbaf"
},
"downloads": -1,
"filename": "pubmed_client_py-0.0.1-cp313-cp313-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "2a78bec99ff5475d4c5d97cace973eeb",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.12",
"size": 2971442,
"upload_time": "2025-11-01T06:29:18",
"upload_time_iso_8601": "2025-11-01T06:29:18.450522Z",
"url": "https://files.pythonhosted.org/packages/8b/71/887927a838183eb42cb7a849a19ae2db34800d721efde42e9ba049acffee/pubmed_client_py-0.0.1-cp313-cp313-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b02bf30591ff87b124cb9e6561f73441812bda3b5cad6bad627d4b6712a4ad67",
"md5": "0a6764ba2cfcae5909807c031c6ed520",
"sha256": "b7f8b73e8113ead70f0fd089a33b75fcf3f068e077c3c3c9f09360eec77f8290"
},
"downloads": -1,
"filename": "pubmed_client_py-0.0.1-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "0a6764ba2cfcae5909807c031c6ed520",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.12",
"size": 2863422,
"upload_time": "2025-11-01T06:29:20",
"upload_time_iso_8601": "2025-11-01T06:29:20.342498Z",
"url": "https://files.pythonhosted.org/packages/b0/2b/f30591ff87b124cb9e6561f73441812bda3b5cad6bad627d4b6712a4ad67/pubmed_client_py-0.0.1-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fa117a296b5c6913ca423c005c88f787560f2b427169c495d6eaec37710b3f78",
"md5": "04954872864424ec0ec0eea22cf940bc",
"sha256": "1bdd9b1de3e021af7facabba154ead2b951e562a0da05ee4e0514ee07c9e6538"
},
"downloads": -1,
"filename": "pubmed_client_py-0.0.1-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "04954872864424ec0ec0eea22cf940bc",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.12",
"size": 2640997,
"upload_time": "2025-11-01T06:29:22",
"upload_time_iso_8601": "2025-11-01T06:29:22.326689Z",
"url": "https://files.pythonhosted.org/packages/fa/11/7a296b5c6913ca423c005c88f787560f2b427169c495d6eaec37710b3f78/pubmed_client_py-0.0.1-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f13aba0dcf9a0f4fa820606358cf95b35c529494e253d874468a7e162449b25e",
"md5": "e6c899e51fc3555eba301892d9a665bc",
"sha256": "25c90a4c5bc0d1248b717d80a3fc8cca84f51a46a7add5a1638f52588413a498"
},
"downloads": -1,
"filename": "pubmed_client_py-0.0.1-cp314-cp314-win_amd64.whl",
"has_sig": false,
"md5_digest": "e6c899e51fc3555eba301892d9a665bc",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.12",
"size": 2640997,
"upload_time": "2025-11-01T06:29:24",
"upload_time_iso_8601": "2025-11-01T06:29:24.387008Z",
"url": "https://files.pythonhosted.org/packages/f1/3a/ba0dcf9a0f4fa820606358cf95b35c529494e253d874468a7e162449b25e/pubmed_client_py-0.0.1-cp314-cp314-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e8d75de0dfcd65952dcce7fa7b6bec04086e68de9798e7b396a6a396e481e29c",
"md5": "82ecf3c9f8d6935358fe355800ef0647",
"sha256": "b8fd8dbf192ee82e9d88c8553f0d63ddadddb00edcf592d0bc27f1803268927c"
},
"downloads": -1,
"filename": "pubmed_client_py-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "82ecf3c9f8d6935358fe355800ef0647",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 1181327,
"upload_time": "2025-11-01T06:29:26",
"upload_time_iso_8601": "2025-11-01T06:29:26.222660Z",
"url": "https://files.pythonhosted.org/packages/e8/d7/5de0dfcd65952dcce7fa7b6bec04086e68de9798e7b396a6a396e481e29c/pubmed_client_py-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-01 06:29:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "illumination-k",
"github_project": "pubmed-client-rs",
"github_not_found": true,
"lcname": "pubmed-client-py"
}