{"id":34063877,"url":"https://github.com/parkerhancock/patent_client","last_synced_at":"2025-12-14T05:51:15.660Z","repository":{"id":33171278,"uuid":"153186389","full_name":"parkerhancock/patent_client","owner":"parkerhancock","description":"A collection of ORM-style clients to public patent data","archived":false,"fork":false,"pushed_at":"2025-09-29T15:55:56.000Z","size":83327,"stargazers_count":121,"open_issues_count":30,"forks_count":44,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-10-25T13:52:51.035Z","etag":null,"topics":["337","assignment","epo","inpadoc","ip","itc","ops","patent","trademark","usitc","uspto"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parkerhancock.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-10-15T21:51:48.000Z","updated_at":"2025-10-18T16:07:04.000Z","dependencies_parsed_at":"2023-01-16T22:45:25.664Z","dependency_job_id":"11db44c5-1fc1-4ee1-a99d-1e23e7bcf2ed","html_url":"https://github.com/parkerhancock/patent_client","commit_stats":{"total_commits":379,"total_committers":8,"mean_commits":47.375,"dds":0.03430079155672827,"last_synced_commit":"8fd5be7618b8c8dcc4f7c7b5136dde52d4cd2e7a"},"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/parkerhancock/patent_client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parkerhancock%2Fpatent_client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parkerhancock%2Fpatent_client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parkerhancock%2Fpatent_client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parkerhancock%2Fpatent_client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parkerhancock","download_url":"https://codeload.github.com/parkerhancock/patent_client/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parkerhancock%2Fpatent_client/sbom","scorecard":{"id":720548,"data":{"date":"2025-08-11","repo":{"name":"github.com/parkerhancock/patent_client","commit":"7b5e5569fe0b3d81b3686d3540a0d1b1fc903289"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/13 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yaml:1","Warn: no topLevel permission defined: .github/workflows/deploy.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 20 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"22 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-48 / GHSA-fj7x-q9j7-g6q6","Warn: Project is vulnerable to: PYSEC-2024-230 / GHSA-248v-346w-9cwc","Warn: Project is vulnerable to: GHSA-vqfr-h8mv-ghfj","Warn: Project is vulnerable to: GHSA-29gw-9793-fvw7","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: GHSA-gmj6-6f8f-6699","Warn: Project is vulnerable to: GHSA-q2x7-8rv6-6q7h","Warn: Project is vulnerable to: GHSA-33p9-3p43-82vq","Warn: Project is vulnerable to: PYSEC-2022-42969","Warn: Project is vulnerable to: GHSA-7hfw-26vp-jp8m","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5","Warn: Project is vulnerable to: GHSA-753j-mpmx-qq6g","Warn: Project is vulnerable to: GHSA-7cx3-6m66-7c5m","Warn: Project is vulnerable to: GHSA-8w49-h785-mj3c","Warn: Project is vulnerable to: GHSA-w235-7p84-xx57","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: PYSEC-2024-187 / GHSA-rqc4-2hc7-8c8v","Warn: Project is vulnerable to: GHSA-jfmj-5v4g-7637"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yaml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/build.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yaml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/build.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yaml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/build.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yaml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/build.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yaml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/build.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yaml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/build.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yaml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/build.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yaml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/build.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yaml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/deploy.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yaml:69: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/deploy.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy.yaml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/deploy.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yaml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/deploy.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yaml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/deploy.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy.yaml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/deploy.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yaml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/parkerhancock/patent_client/deploy.yaml/master?enable=pin","Info:   0 out of  10 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-22T11:11:13.712Z","repository_id":33171278,"created_at":"2025-08-22T11:11:13.713Z","updated_at":"2025-08-22T11:11:13.713Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27718771,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-14T02:00:11.348Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["337","assignment","epo","inpadoc","ip","itc","ops","patent","trademark","usitc","uspto"],"created_at":"2025-12-14T05:51:12.208Z","updated_at":"2025-12-14T05:51:15.651Z","avatar_url":"https://github.com/parkerhancock.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![patent_client_logo](https://raw.githubusercontent.com/parkerhancock/patent_client/master/docs/_static/patent_client_logo.svg)](https://patent-client.readthedocs.io)\n\n[![Build](https://github.com/parkerhancock/patent_client/actions/workflows/build.yaml/badge.svg)](https://github.com/parkerhancock/patent_client/actions/workflows/build.yaml)\n[![codecov](https://codecov.io/gh/parkerhancock/patent_client/branch/master/graph/badge.svg?token=pWsiQLHi6r)](https://codecov.io/gh/parkerhancock/patent_client)\n[![Documentation](https://img.shields.io/readthedocs/patent-client/stable)](https://patent-client.readthedocs.io/en/stable/)\n\n\n[![PyPI](https://img.shields.io/pypi/v/patent-client?color=blue)](https://pypi.org/project/patent-client)\n[![PyPI - Python Versions](https://img.shields.io/pypi/pyversions/patent-client)](https://pypi.org/project/patent-client)\n[![Downloads](https://static.pepy.tech/badge/patent_client/month)](https://pepy.tech/project/patent_client)\n[![Pydantic v2](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/pydantic/pydantic/main/docs/badge/v2.json)](https://pydantic.dev)\n\n# Summary\n\nA powerful library for accessing intellectual property, featuring:\n\n- 🍰 **Ease of use:** All sources use a simple unified API inspired by [Django-ORM][DORM].\n- 🐼 **Pandas Integration:** Results are easily castable to [Pandas Dataframes and Series][PANDAS].\n- 🚀 **Performance:** Fetched data is retrieved using the [httpx][httpx] library with native HTTP/2 and asyncio support, and cached using the [hishel][hishel] library for super-fast queries, and [yankee][yankee] for data extraction.\n- 🌐 **Async/Await Support:** All API's (optionally!) support the async/await syntax.\n- 🔮 **Pydantic v2 Support:** All models retrieved are [Pydantic v2 models][pydantic] with all the goodness that comes with them!\n\nDocs, including a fulsome Getting Started and User Guide are available on [Read the Docs](http://patent-client.readthedocs.io). The Examples folder includes examples of using `patent_client` for\nmany common IP tasks\n\n## ⭐ New in v5 ⭐\n\nVersion 5 brings a new and more reliable way to provide synchronous and asynchronous access to the various APIs.\nIn version 5, like in version 3, you can just `from patent_client import [Model]` and get a synchronous version\nof the model. No asynchronous methods or functionality at all. Or you can do `from patent_client._async import [Model]`\nand get an asynchronous version of the model.\n\nVersion 5 also brings support for the USPTO's new [Open Data Portal](https://beta-data.uspto.gov/home), a system currently in beta that is scheduled to replace the current Patent Examination Data System in late 2024.\n\n## Coverage\n\n- [United States Patent \u0026 Trademark Office][USPTO]\n\n  - [Patent Examination Data][PEDS] - Full Support\n  - [Open Data Portal][ODP] - Full Support\n  - [Global Dossier][GD] - Full Support\n  - [Patent Assignment Data][Assignment] - Lookup Support\n  - [Patent Trial \u0026 Appeal Board API v2][PTAB] - Supports Proceedings, Decisions, and Documents\n  - [Patent Public Search][PPS] - Full Support\n  - [Bulk Data Storage System][BDSS] - Full Support\n\n\n- [European Patent Office - Open Patent Services][OPS]\n\n  - Inpadoc - Full Support\n  - EPO Register - No Support (in progress)\n  - Classification - No Support\n\n* Free software: Apache Software License 2.0\n\n[DORM]: https://docs.djangoproject.com/en/4.0/topics/db/queries/\n[PANDAS]: https://pandas.pydata.org/docs/\n[httpx]: https://www.python-httpx.org/\n[hishel]: https://hishel.com/\n[yankee]: https://github.com/parkerhancock/yankee\n[Assignment]: user_guide/assignments.html\n[OPS]: https://patent-client.readthedocs.io/en/latest/user_guide/epo.html\n[PPS]:  https://patent-client.readthedocs.io/en/latest/user_guide/fulltext.html\n[PEDS]: https://patent-client.readthedocs.io/en/latest/user_guide/peds.html\n[PTAB]: https://patent-client.readthedocs.io/en/latest/user_guide/ptab.html\n[USPTO]: http://developer.uspto.gov\n[BDSS]: https://patent-client.readthedocs.io/en/latest/user_guide/bulk_data.html\n[GD]: https://patent-client.readthedocs.io/en/latest/user_guide/global_dossier.html\n[pydantic]: https://docs.pydantic.dev/latest/\n[ODP]: https://patent-client.readthedocs.io/en/latest/user_guide/open_data_portal.html\n\n\n## Installation\n\n```\npip install patent_client\n```\n\nIf you only want access to USPTO resources, you're done!\nHowever, additional setup is necessary to access EPO Inpadoc and EPO Register resources. See the [Docs](http://patent-client.readthedocs.io).\n\n\n## Quick Start\n\nTo use the project:\n\n```python\n# Import the model classes you need\n\u003e\u003e\u003e from patent_client import Inpadoc, Assignment, USApplication\n\n# Fetch US Applications\n\u003e\u003e\u003e app = USApplication.objects.get('15710770')\n\u003e\u003e\u003e app.patent_title\n'Camera Assembly with Concave-Shaped Front Face'\n\n# Fetch from USPTO Assignments\n\u003e\u003e\u003e assignments = Assignment.objects.filter(assignee='Google')\n\u003e\u003e\u003e len(assignments) \u003e 23000\nTrue\n\u003e\u003e\u003e assignment = Assignment.objects.get('47086-788')\n\u003e\u003e\u003e assignment.conveyance_text\n'ASSIGNMENT OF ASSIGNORS INTEREST'\n\n# Fetch from INPADOC\n\u003e\u003e\u003e pub = Inpadoc.objects.get('EP3082535A1')\n\u003e\u003e\u003e pub.biblio.title\n'AUTOMATIC FLUID DISPENSER'\n\n```\n\n## Async Quick Start\n\nTo use async with Patent Client, just import the classes you need from the async module. All methods\nand iterators that access data or create a network request are asynchronous.\n\n```python\nfrom patent_client._async import USApplication\n\napps = list()\nasync for app in USApplication.objects.filter(first_named_applicant=\"Google\"):\n  apps.append(app)\n\napp = await USApplication.objects.aget(\"16123456\")\n\n```\n\n\u003c!-- RTD-IGNORE --\u003e\n\n## Documentation\n\nDocs, including a fulsome Getting Started are available on [Read the Docs](http://patent-client.readthedocs.io).\n\n\u003c!-- END-RTD-IGNORE --\u003e\n\n# Development\n\nTo run the all tests run:\n\n```\npytest\n```\n\nA developer guide is provided in the [Documentation](http://patent-client.readthedocs.io).\nPull requests welcome!\n\n# Related projects\n\n- [Python EPO OPS Client](https://github.com/55minutes/python-epo-ops-client)\n- [Google Public Patent Data](https://github.com/google/patents-public-data)\n- [PatentsView API Wrapper](https://github.com/mikeym88/PatentsView-API-Wrapper)\n- [USPTO Scrapy Scraper](https://github.com/blazers08/USPTO)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparkerhancock%2Fpatent_client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparkerhancock%2Fpatent_client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparkerhancock%2Fpatent_client/lists"}