pyUSPTO 0.4.1__tar.gz → 0.4.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. {pyuspto-0.4.1 → pyuspto-0.4.2}/.github/workflows/publish-docs.yaml +1 -1
  2. {pyuspto-0.4.1 → pyuspto-0.4.2}/.github/workflows/publish-to-test-pypi.yml +3 -3
  3. {pyuspto-0.4.1 → pyuspto-0.4.2}/PKG-INFO +1 -1
  4. {pyuspto-0.4.1 → pyuspto-0.4.2}/requirements-dev.txt +2 -2
  5. {pyuspto-0.4.1 → pyuspto-0.4.2}/requirements.txt +1 -1
  6. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/clients/patent_data.py +32 -10
  7. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/clients/petition_decisions.py +35 -7
  8. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO.egg-info/PKG-INFO +1 -1
  9. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/clients/test_patent_data_clients.py +7 -7
  10. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/clients/test_petition_decision_clients.py +6 -6
  11. {pyuspto-0.4.1 → pyuspto-0.4.2}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  12. {pyuspto-0.4.1 → pyuspto-0.4.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  13. {pyuspto-0.4.1 → pyuspto-0.4.2}/.github/ISSUE_TEMPLATE/documentation-updates.yml +0 -0
  14. {pyuspto-0.4.1 → pyuspto-0.4.2}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  15. {pyuspto-0.4.1 → pyuspto-0.4.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  16. {pyuspto-0.4.1 → pyuspto-0.4.2}/.github/dependabot.yml +0 -0
  17. {pyuspto-0.4.1 → pyuspto-0.4.2}/.github/workflows/python-tests.yml +0 -0
  18. {pyuspto-0.4.1 → pyuspto-0.4.2}/.gitignore +0 -0
  19. {pyuspto-0.4.1 → pyuspto-0.4.2}/.readthedocs.yaml +0 -0
  20. {pyuspto-0.4.1 → pyuspto-0.4.2}/ADVANCED.md +0 -0
  21. {pyuspto-0.4.1 → pyuspto-0.4.2}/CHANGELOG.md +0 -0
  22. {pyuspto-0.4.1 → pyuspto-0.4.2}/CODE_OF_CONDUCT.md +0 -0
  23. {pyuspto-0.4.1 → pyuspto-0.4.2}/CONTRIBUTING.md +0 -0
  24. {pyuspto-0.4.1 → pyuspto-0.4.2}/LICENSE +0 -0
  25. {pyuspto-0.4.1 → pyuspto-0.4.2}/README.md +0 -0
  26. {pyuspto-0.4.1 → pyuspto-0.4.2}/_version.pyi +0 -0
  27. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/Makefile +0 -0
  28. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/_static/.gitkeep +0 -0
  29. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/advanced.rst +0 -0
  30. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/clients/bulk_data.rst +0 -0
  31. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/clients/index.rst +0 -0
  32. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/clients/patent_data.rst +0 -0
  33. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/clients/petition_decisions.rst +0 -0
  34. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/clients/ptab_appeals.rst +0 -0
  35. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/clients/ptab_interferences.rst +0 -0
  36. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/clients/ptab_trials.rst +0 -0
  37. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/config/config.rst +0 -0
  38. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/config/http_config.rst +0 -0
  39. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/config/index.rst +0 -0
  40. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/exceptions.rst +0 -0
  41. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/index.rst +0 -0
  42. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/models/base.rst +0 -0
  43. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/models/bulk_data.rst +0 -0
  44. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/models/index.rst +0 -0
  45. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/models/patent_data.rst +0 -0
  46. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/models/petition_decisions.rst +0 -0
  47. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/models/ptab.rst +0 -0
  48. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/models/utils.rst +0 -0
  49. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/api/warnings.rst +0 -0
  50. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/conf.py +0 -0
  51. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/configuration.rst +0 -0
  52. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/development.rst +0 -0
  53. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/examples/bulk_data.rst +0 -0
  54. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/examples/ifw_example.rst +0 -0
  55. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/examples/index.rst +0 -0
  56. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/examples/patent_data.rst +0 -0
  57. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/examples/petition_decisions.rst +0 -0
  58. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/examples/ptab_appeals.rst +0 -0
  59. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/examples/ptab_interferences.rst +0 -0
  60. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/examples/ptab_trials.rst +0 -0
  61. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/index.rst +0 -0
  62. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/installation.rst +0 -0
  63. {pyuspto-0.4.1 → pyuspto-0.4.2}/docs/source/quickstart.rst +0 -0
  64. {pyuspto-0.4.1 → pyuspto-0.4.2}/examples/bulk_data_example.py +0 -0
  65. {pyuspto-0.4.1 → pyuspto-0.4.2}/examples/error_handling_example.py +0 -0
  66. {pyuspto-0.4.1 → pyuspto-0.4.2}/examples/ifw_example.py +0 -0
  67. {pyuspto-0.4.1 → pyuspto-0.4.2}/examples/patent_data_example.py +0 -0
  68. {pyuspto-0.4.1 → pyuspto-0.4.2}/examples/petition_decisions_example.py +0 -0
  69. {pyuspto-0.4.1 → pyuspto-0.4.2}/examples/ptab_appeals_example.py +0 -0
  70. {pyuspto-0.4.1 → pyuspto-0.4.2}/examples/ptab_interferences_example.py +0 -0
  71. {pyuspto-0.4.1 → pyuspto-0.4.2}/examples/ptab_trials_example.py +0 -0
  72. {pyuspto-0.4.1 → pyuspto-0.4.2}/pyUSPTO.code-workspace +0 -0
  73. {pyuspto-0.4.1 → pyuspto-0.4.2}/pyproject.toml +0 -0
  74. {pyuspto-0.4.1 → pyuspto-0.4.2}/setup.cfg +0 -0
  75. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/__init__.py +0 -0
  76. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/clients/__init__.py +0 -0
  77. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/clients/base.py +0 -0
  78. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/clients/bulk_data.py +0 -0
  79. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/clients/ptab_appeals.py +0 -0
  80. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/clients/ptab_interferences.py +0 -0
  81. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/clients/ptab_trials.py +0 -0
  82. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/config.py +0 -0
  83. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/exceptions.py +0 -0
  84. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/http_config.py +0 -0
  85. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/models/__init__.py +0 -0
  86. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/models/base.py +0 -0
  87. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/models/bulk_data.py +0 -0
  88. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/models/patent_data.py +0 -0
  89. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/models/petition_decisions.py +0 -0
  90. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/models/ptab.py +0 -0
  91. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/models/utils.py +0 -0
  92. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/py.typed +0 -0
  93. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/utils/__init__.py +0 -0
  94. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO/warnings.py +0 -0
  95. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO.egg-info/SOURCES.txt +0 -0
  96. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO.egg-info/dependency_links.txt +0 -0
  97. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO.egg-info/requires.txt +0 -0
  98. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO.egg-info/top_level.txt +0 -0
  99. {pyuspto-0.4.1 → pyuspto-0.4.2}/src/pyUSPTO.egg-info/zip-safe +0 -0
  100. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/__init__.py +0 -0
  101. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/clients/__init__.py +0 -0
  102. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/clients/test_base.py +0 -0
  103. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/clients/test_bulk_data_clients.py +0 -0
  104. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/clients/test_ptab_appeals_client.py +0 -0
  105. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/clients/test_ptab_interferences_client.py +0 -0
  106. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/clients/test_ptab_trials_client.py +0 -0
  107. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/conftest.py +0 -0
  108. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/integration/__init__.py +0 -0
  109. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/integration/conftest.py +0 -0
  110. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/integration/test_bulk_data_integration.py +0 -0
  111. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/integration/test_patent_data_integration.py +0 -0
  112. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/integration/test_petition_decisions_integration.py +0 -0
  113. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/integration/test_ptab_appeals_integration.py +0 -0
  114. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/integration/test_ptab_interferences_integration.py +0 -0
  115. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/integration/test_ptab_trials_integration.py +0 -0
  116. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/models/__init__.py +0 -0
  117. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/models/test_bulk_data_models.py +0 -0
  118. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/models/test_patent_data_models.py +0 -0
  119. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/models/test_petition_decision_models.py +0 -0
  120. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/models/test_ptab_models.py +0 -0
  121. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/models/test_utils.py +0 -0
  122. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/test_config.py +0 -0
  123. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/test_edge_cases.py +0 -0
  124. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/test_exceptions.py +0 -0
  125. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/test_http_config.py +0 -0
  126. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/test_init.py +0 -0
  127. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/test_version.py +0 -0
  128. {pyuspto-0.4.1 → pyuspto-0.4.2}/tests/utils/__init__.py +0 -0
  129. {pyuspto-0.4.1 → pyuspto-0.4.2}/tox.ini +0 -0
@@ -31,7 +31,7 @@ jobs:
31
31
  cd docs
32
32
  make html
33
33
  - name: Archive documentation
34
- uses: actions/upload-artifact@v6
34
+ uses: actions/upload-artifact@v7
35
35
  with:
36
36
  name: documentation
37
37
  path: docs/build/html/
@@ -32,7 +32,7 @@ jobs:
32
32
  - name: Build a binary wheel and a source tarball
33
33
  run: python3 -m build
34
34
  - name: Store the distribution packages
35
- uses: actions/upload-artifact@v6
35
+ uses: actions/upload-artifact@v7
36
36
  with:
37
37
  name: python-package-distributions
38
38
  path: dist/
@@ -53,7 +53,7 @@ jobs:
53
53
 
54
54
  steps:
55
55
  - name: Download all the dists
56
- uses: actions/download-artifact@v7
56
+ uses: actions/download-artifact@v8
57
57
  with:
58
58
  name: python-package-distributions
59
59
  path: dist/
@@ -76,7 +76,7 @@ jobs:
76
76
 
77
77
  steps:
78
78
  - name: Download all the dists
79
- uses: actions/download-artifact@v7
79
+ uses: actions/download-artifact@v8
80
80
  with:
81
81
  name: python-package-distributions
82
82
  path: dist/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyUSPTO
3
- Version: 0.4.1
3
+ Version: 0.4.2
4
4
  Summary: A Modern Python client for accessing the United States Patent and Trademark Office (USPTO) Open Data Portal (ODP) APIs.
5
5
  Author-email: Andrew Piechocki <apiechocki@dunlapcodding.com>
6
6
  License-Expression: MIT
@@ -12,7 +12,7 @@ appdirs==1.4.4
12
12
  # via sphinx-immaterial
13
13
  babel==2.18.0
14
14
  # via sphinx
15
- certifi==2026.1.4
15
+ certifi==2026.2.25
16
16
  # via requests
17
17
  charset-normalizer==3.4.4
18
18
  # via requests
@@ -95,7 +95,7 @@ requests==2.32.5
95
95
  # pyUSPTO (pyproject.toml)
96
96
  # sphinx
97
97
  # sphinx-immaterial
98
- ruff==0.15.2
98
+ ruff==0.15.4
99
99
  # via pyUSPTO (pyproject.toml)
100
100
  snowballstemmer==3.0.1
101
101
  # via sphinx
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # pip-compile --output-file=requirements.txt --strip-extras pyproject.toml
6
6
  #
7
- certifi==2026.1.4
7
+ certifi==2026.2.25
8
8
  # via requests
9
9
  charset-normalizer==3.4.4
10
10
  # via requests
@@ -275,17 +275,28 @@ class PatentDataClient(BaseUSPTOClient[PatentDataResponse]):
275
275
  f"applicationMetaData.patentNumber:{patent_number_q}"
276
276
  )
277
277
  if inventor_name_q:
278
+ v = (
279
+ f'"{inventor_name_q}"'
280
+ if " " in inventor_name_q
281
+ else inventor_name_q
282
+ )
278
283
  q_parts.append(
279
- f"applicationMetaData.inventorBag.inventorNameText:{inventor_name_q}"
284
+ f"applicationMetaData.inventorBag.inventorNameText:{v}"
280
285
  )
281
286
  if applicant_name_q:
282
- q_parts.append(
283
- f"applicationMetaData.firstApplicantName:{applicant_name_q}"
287
+ v = (
288
+ f'"{applicant_name_q}"'
289
+ if " " in applicant_name_q
290
+ else applicant_name_q
284
291
  )
292
+ q_parts.append(f"applicationMetaData.firstApplicantName:{v}")
285
293
  if assignee_name_q:
286
- q_parts.append(
287
- f"assignmentBag.assigneeBag.assigneeNameText:{assignee_name_q}"
294
+ v = (
295
+ f'"{assignee_name_q}"'
296
+ if " " in assignee_name_q
297
+ else assignee_name_q
288
298
  )
299
+ q_parts.append(f"assignmentBag.assigneeBag.assigneeNameText:{v}")
289
300
  if classification_q:
290
301
  q_parts.append(
291
302
  f"applicationMetaData.cpcClassificationBag:{classification_q}"
@@ -405,17 +416,28 @@ class PatentDataClient(BaseUSPTOClient[PatentDataResponse]):
405
416
  f"applicationMetaData.patentNumber:{patent_number_q}"
406
417
  )
407
418
  if inventor_name_q:
419
+ v = (
420
+ f'"{inventor_name_q}"'
421
+ if " " in inventor_name_q
422
+ else inventor_name_q
423
+ )
408
424
  q_parts.append(
409
- f"applicationMetaData.inventorBag.inventorNameText:{inventor_name_q}"
425
+ f"applicationMetaData.inventorBag.inventorNameText:{v}"
410
426
  )
411
427
  if applicant_name_q:
412
- q_parts.append(
413
- f"applicationMetaData.firstApplicantName:{applicant_name_q}"
428
+ v = (
429
+ f'"{applicant_name_q}"'
430
+ if " " in applicant_name_q
431
+ else applicant_name_q
414
432
  )
433
+ q_parts.append(f"applicationMetaData.firstApplicantName:{v}")
415
434
  if assignee_name_q:
416
- q_parts.append(
417
- f"assignmentBag.assigneeBag.assigneeNameText:{assignee_name_q}"
435
+ v = (
436
+ f'"{assignee_name_q}"'
437
+ if " " in assignee_name_q
438
+ else assignee_name_q
418
439
  )
440
+ q_parts.append(f"assignmentBag.assigneeBag.assigneeNameText:{v}")
419
441
  if classification_q:
420
442
  q_parts.append(
421
443
  f"applicationMetaData.cpcClassificationBag:{classification_q}"
@@ -204,19 +204,37 @@ class FinalPetitionDecisionsClient(BaseUSPTOClient[PetitionDecisionResponse]):
204
204
  if patent_number_q:
205
205
  q_parts.append(f"patentNumber:{patent_number_q}")
206
206
  if inventor_name_q:
207
- q_parts.append(f"inventorBag:{inventor_name_q}")
207
+ v = (
208
+ f'"{inventor_name_q}"'
209
+ if " " in inventor_name_q
210
+ else inventor_name_q
211
+ )
212
+ q_parts.append(f"inventorBag:{v}")
208
213
  if applicant_name_q:
209
- q_parts.append(f"firstApplicantName:{applicant_name_q}")
214
+ v = (
215
+ f'"{applicant_name_q}"'
216
+ if " " in applicant_name_q
217
+ else applicant_name_q
218
+ )
219
+ q_parts.append(f"firstApplicantName:{v}")
210
220
  if invention_title_q:
211
- q_parts.append(f"inventionTitle:{invention_title_q}")
221
+ v = (
222
+ f'"{invention_title_q}"'
223
+ if " " in invention_title_q
224
+ else invention_title_q
225
+ )
226
+ q_parts.append(f"inventionTitle:{v}")
212
227
  if decision_type_code_q:
213
228
  q_parts.append(f"decisionTypeCode:{decision_type_code_q}")
214
229
  if technology_center_q:
215
230
  q_parts.append(f"technologyCenter:{technology_center_q}")
216
231
  if final_deciding_office_name_q:
217
- q_parts.append(
218
- f"finalDecidingOfficeName:{final_deciding_office_name_q}"
232
+ v = (
233
+ f'"{final_deciding_office_name_q}"'
234
+ if " " in final_deciding_office_name_q
235
+ else final_deciding_office_name_q
219
236
  )
237
+ q_parts.append(f"finalDecidingOfficeName:{v}")
220
238
 
221
239
  # Handle decision date range
222
240
  if decision_date_from_q and decision_date_to_q:
@@ -414,9 +432,19 @@ class FinalPetitionDecisionsClient(BaseUSPTOClient[PetitionDecisionResponse]):
414
432
  if patent_number_q:
415
433
  q_parts.append(f"patentNumber:{patent_number_q}")
416
434
  if inventor_name_q:
417
- q_parts.append(f"inventorBag:{inventor_name_q}")
435
+ v = (
436
+ f'"{inventor_name_q}"'
437
+ if " " in inventor_name_q
438
+ else inventor_name_q
439
+ )
440
+ q_parts.append(f"inventorBag:{v}")
418
441
  if applicant_name_q:
419
- q_parts.append(f"firstApplicantName:{applicant_name_q}")
442
+ v = (
443
+ f'"{applicant_name_q}"'
444
+ if " " in applicant_name_q
445
+ else applicant_name_q
446
+ )
447
+ q_parts.append(f"firstApplicantName:{v}")
420
448
 
421
449
  # Handle decision date range
422
450
  if decision_date_from_q and decision_date_to_q:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyUSPTO
3
- Version: 0.4.1
3
+ Version: 0.4.2
4
4
  Summary: A Modern Python client for accessing the United States Patent and Trademark Office (USPTO) Open Data Portal (ODP) APIs.
5
5
  Author-email: Andrew Piechocki <apiechocki@dunlapcodding.com>
6
6
  License-Expression: MIT
@@ -370,15 +370,15 @@ class TestPatentApplicationSearch:
370
370
  ({"patent_number_q": "PN123"}, "applicationMetaData.patentNumber:PN123"),
371
371
  (
372
372
  {"inventor_name_q": "Doe J"},
373
- "applicationMetaData.inventorBag.inventorNameText:Doe J",
373
+ 'applicationMetaData.inventorBag.inventorNameText:"Doe J"',
374
374
  ),
375
375
  (
376
376
  {"applicant_name_q": "Corp Inc"},
377
- "applicationMetaData.firstApplicantName:Corp Inc",
377
+ 'applicationMetaData.firstApplicantName:"Corp Inc"',
378
378
  ),
379
379
  (
380
380
  {"assignee_name_q": "Assignee Ltd"},
381
- "assignmentBag.assigneeBag.assigneeNameText:Assignee Ltd",
381
+ 'assignmentBag.assigneeBag.assigneeNameText:"Assignee Ltd"',
382
382
  ),
383
383
  (
384
384
  {"classification_q": "H04L"},
@@ -471,7 +471,7 @@ class TestPatentApplicationSearch:
471
471
  )
472
472
 
473
473
  expected_q = (
474
- "applicationMetaData.inventorBag.inventorNameText:John Smith AND "
474
+ 'applicationMetaData.inventorBag.inventorNameText:"John Smith" AND '
475
475
  "applicationMetaData.cpcClassificationBag:G06F AND "
476
476
  "applicationMetaData.filingDate:[2020-01-01 TO 2022-01-01]"
477
477
  )
@@ -1957,15 +1957,15 @@ class TestPatentApplicationDataRetrieval:
1957
1957
  ({"patent_number_q": "PN123"}, "applicationMetaData.patentNumber:PN123"),
1958
1958
  (
1959
1959
  {"inventor_name_q": "Doe J"},
1960
- "applicationMetaData.inventorBag.inventorNameText:Doe J",
1960
+ 'applicationMetaData.inventorBag.inventorNameText:"Doe J"',
1961
1961
  ),
1962
1962
  (
1963
1963
  {"applicant_name_q": "Corp Inc"},
1964
- "applicationMetaData.firstApplicantName:Corp Inc",
1964
+ 'applicationMetaData.firstApplicantName:"Corp Inc"',
1965
1965
  ),
1966
1966
  (
1967
1967
  {"assignee_name_q": "Assignee Ltd"},
1968
- "assignmentBag.assigneeBag.assigneeNameText:Assignee Ltd",
1968
+ 'assignmentBag.assigneeBag.assigneeNameText:"Assignee Ltd"',
1969
1969
  ),
1970
1970
  (
1971
1971
  {"classification_q": "H04L"},
@@ -230,7 +230,7 @@ class TestFinalPetitionDecisionsClientSearch:
230
230
  params = call_args[1]["params"]
231
231
  assert "q" in params
232
232
  query = params["q"]
233
- assert "firstApplicantName:Test Corp" in query
233
+ assert 'firstApplicantName:"Test Corp"' in query
234
234
  assert "technologyCenter:1700" in query
235
235
  assert "decisionTypeCode:C" in query
236
236
  assert " AND " in query
@@ -284,7 +284,7 @@ class TestFinalPetitionDecisionsClientSearch:
284
284
 
285
285
  call_args = mock_make_request.call_args
286
286
  params = call_args[1]["params"]
287
- assert "inventorBag:John Doe" in params["q"]
287
+ assert 'inventorBag:"John Doe"' in params["q"]
288
288
 
289
289
  def test_search_with_invention_title(
290
290
  self,
@@ -299,7 +299,7 @@ class TestFinalPetitionDecisionsClientSearch:
299
299
 
300
300
  call_args = mock_make_request.call_args
301
301
  params = call_args[1]["params"]
302
- assert "inventionTitle:Test Invention" in params["q"]
302
+ assert 'inventionTitle:"Test Invention"' in params["q"]
303
303
 
304
304
  def test_search_with_final_deciding_office_name(
305
305
  self,
@@ -314,7 +314,7 @@ class TestFinalPetitionDecisionsClientSearch:
314
314
 
315
315
  call_args = mock_make_request.call_args
316
316
  params = call_args[1]["params"]
317
- assert "finalDecidingOfficeName:TC Director" in params["q"]
317
+ assert 'finalDecidingOfficeName:"TC Director"' in params["q"]
318
318
 
319
319
  def test_search_with_decision_date_from_only(
320
320
  self,
@@ -516,7 +516,7 @@ class TestFinalPetitionDecisionsClientDownload:
516
516
  call_args = mock_make_request.call_args
517
517
  params = call_args[1]["params"]
518
518
  assert params["format"] == "json"
519
- assert "firstApplicantName:Test Corp" in params.get("q", "")
519
+ assert 'firstApplicantName:"Test Corp"' in params.get("q", "")
520
520
 
521
521
  def test_download_csv(
522
522
  self,
@@ -613,7 +613,7 @@ class TestFinalPetitionDecisionsClientDownload:
613
613
 
614
614
  call_args = mock_make_request.call_args
615
615
  params = call_args[1]["params"]
616
- assert "inventorBag:Jane Doe" in params["q"]
616
+ assert 'inventorBag:"Jane Doe"' in params["q"]
617
617
 
618
618
  def test_download_with_decision_date_from_only(
619
619
  self,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes