ds-caselaw-marklogic-api-client 34.0.0__tar.gz → 34.0.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.

Potentially problematic release.


This version of ds-caselaw-marklogic-api-client might be problematic. Click here for more details.

Files changed (86) hide show
  1. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/PKG-INFO +1 -1
  2. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/pyproject.toml +1 -1
  3. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/client_helpers/__init__.py +12 -6
  4. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/responses/search_result.py +1 -1
  5. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xml_helpers.py +5 -0
  6. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/LICENSE.md +0 -0
  7. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/README.md +0 -0
  8. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/Client.py +0 -0
  9. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/__init__.py +0 -0
  10. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/client_helpers/search_helpers.py +0 -0
  11. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/content_hash.py +0 -0
  12. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/errors.py +0 -0
  13. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/factories.py +0 -0
  14. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/identifier_resolution.py +0 -0
  15. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/__init__.py +0 -0
  16. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/documents/__init__.py +0 -0
  17. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/documents/body.py +0 -0
  18. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/documents/exceptions.py +0 -0
  19. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/documents/statuses.py +0 -0
  20. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/documents/transforms/html.xsl +0 -0
  21. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/documents/xml.py +0 -0
  22. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/identifiers/__init__.py +0 -0
  23. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/identifiers/fclid.py +0 -0
  24. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/identifiers/neutral_citation.py +0 -0
  25. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/identifiers/press_summary_ncn.py +0 -0
  26. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/identifiers/unpacker.py +0 -0
  27. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/judgments.py +0 -0
  28. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/neutral_citation_mixin.py +0 -0
  29. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/press_summaries.py +0 -0
  30. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/utilities/__init__.py +0 -0
  31. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/utilities/aws.py +0 -0
  32. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/utilities/dates.py +0 -0
  33. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/models/utilities/move.py +0 -0
  34. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/py.typed +0 -0
  35. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/responses/__init__.py +0 -0
  36. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/responses/search_response.py +0 -0
  37. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/responses/xsl/search_match.xsl +0 -0
  38. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/search_parameters.py +0 -0
  39. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/types.py +0 -0
  40. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/break_judgment_checkout.xqy +0 -0
  41. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/checkin_judgment.xqy +0 -0
  42. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/checkout_judgment.xqy +0 -0
  43. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/copy_document.xqy +0 -0
  44. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/delete_judgment.xqy +0 -0
  45. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/document_collections.xqy +0 -0
  46. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/document_exists.xqy +0 -0
  47. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_combined_stats_table.xqy +0 -0
  48. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_components_for_document.xqy +0 -0
  49. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_highest_enrichment_version.xqy +0 -0
  50. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_highest_parser_version.xqy +0 -0
  51. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_judgment.xqy +0 -0
  52. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_judgment_checkout_status.xqy +0 -0
  53. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_judgment_version.xqy +0 -0
  54. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_last_modified.xqy +0 -0
  55. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_next_document_sequence_number.xqy +0 -0
  56. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_pending_enrichment_for_version.xqy +0 -0
  57. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_pending_parse_for_version.xqy +0 -0
  58. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_properties_for_search_results.xqy +0 -0
  59. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_property.xqy +0 -0
  60. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_property_as_node.xqy +0 -0
  61. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_recently_enriched.xqy +0 -0
  62. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_recently_parsed.xqy +0 -0
  63. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_version_annotation.xqy +0 -0
  64. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/get_version_created.xqy +0 -0
  65. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/insert_document.xqy +0 -0
  66. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/list_judgment_versions.xqy +0 -0
  67. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/resolve_from_identifier_slug.xqy +0 -0
  68. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/resolve_from_identifier_value.xqy +0 -0
  69. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/set_boolean_property.xqy +0 -0
  70. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/set_metadata_citation.xqy +0 -0
  71. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/set_metadata_court.xqy +0 -0
  72. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/set_metadata_jurisdiction.xqy +0 -0
  73. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/set_metadata_name.xqy +0 -0
  74. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/set_metadata_this_uri.xqy +0 -0
  75. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/set_metadata_work_expression_date.xqy +0 -0
  76. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/set_property.xqy +0 -0
  77. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/set_property_as_node.xqy +0 -0
  78. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/update_document.xqy +0 -0
  79. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/update_locked_judgment.xqy +0 -0
  80. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/user_has_privilege.xqy +0 -0
  81. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/user_has_role.xqy +0 -0
  82. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/validate_all_documents.xqy +0 -0
  83. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/validate_document.xqy +0 -0
  84. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/xslt.xqy +0 -0
  85. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery/xslt_transform.xqy +0 -0
  86. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.2}/src/caselawclient/xquery_type_dicts.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ds-caselaw-marklogic-api-client
3
- Version: 34.0.0
3
+ Version: 34.0.2
4
4
  Summary: An API client for interacting with the underlying data in Find Caselaw.
5
5
  Home-page: https://github.com/nationalarchives/ds-caselaw-custom-api-client
6
6
  Keywords: national archives,caselaw
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "ds-caselaw-marklogic-api-client"
3
- version = "34.0.0"
3
+ version = "34.0.2"
4
4
  description = "An API client for interacting with the underlying data in Find Caselaw."
5
5
  authors = ["The National Archives"]
6
6
  homepage = "https://github.com/nationalarchives/ds-caselaw-custom-api-client"
@@ -5,6 +5,8 @@ from typing import Any, Optional, TypedDict
5
5
  from lxml import etree
6
6
  from typing_extensions import NotRequired
7
7
 
8
+ from caselawclient.xml_helpers import DEFAULT_NAMESPACES
9
+
8
10
  from ..models.documents import Document
9
11
  from ..models.judgments import Judgment
10
12
  from ..models.press_summaries import PressSummary
@@ -124,19 +126,23 @@ class VersionAnnotation:
124
126
 
125
127
 
126
128
  def get_document_type_class(xml: bytes) -> type[Document]:
127
- """Attempt to get the type of the document based on the XML root node."""
129
+ """Attempt to get the type of the document based on the top-level structure of the XML document."""
128
130
 
129
131
  node = etree.fromstring(xml)
130
132
 
131
- # If the document's root element is `judgment` it's a `Judgment`, regardless of the presence of a `name`.
132
- if node.tag == "judgment":
133
+ # If the main node is `<judgment>`, it's a judgment
134
+ if node.xpath("/akn:akomaNtoso/akn:judgment", namespaces=DEFAULT_NAMESPACES):
133
135
  return Judgment
134
136
 
135
- # If the document's root element has a `name` attribute with a value of `pressSummary` we can assume it's a `PressSummary`
136
- if node.tag == "doc" and node.attrib.get("name") == "pressSummary":
137
+ # If the main node is `<doc name='pressSummary'>`, it's a press summary
138
+ if node.xpath("/akn:akomaNtoso/akn:doc[@name='pressSummary']", namespaces=DEFAULT_NAMESPACES):
137
139
  return PressSummary
138
140
 
141
+ # If the document is a parser error with a root element of `error`, it's not of a special type.
142
+ if node.xpath("/error", namespaces=DEFAULT_NAMESPACES):
143
+ return Document
144
+
139
145
  # Otherwise, we don't know for sure. Fail out.
140
146
  raise CannotDetermineDocumentType(
141
- "Unable to accurately determine the type of document based on the root XML node.",
147
+ "Unable to determine the Document type by its XML",
142
148
  )
@@ -173,7 +173,7 @@ class SearchResult:
173
173
 
174
174
  @property
175
175
  def identifiers(self) -> Identifiers:
176
- identifiers_etrees = self._get_xpath("//identifiers")
176
+ identifiers_etrees = self._get_xpath(".//identifiers")
177
177
  if count := len(identifiers_etrees) != 1:
178
178
  logging.warning(f"{count} //identifiers nodes found in search result, expected 1.")
179
179
  identifiers_etree = None if not identifiers_etrees else identifiers_etrees[0]
@@ -2,6 +2,11 @@ from typing import Dict, Optional
2
2
 
3
3
  from lxml import etree
4
4
 
5
+ DEFAULT_NAMESPACES = {
6
+ "uk": "https://caselaw.nationalarchives.gov.uk/akn",
7
+ "akn": "http://docs.oasis-open.org/legaldocml/ns/akn/3.0",
8
+ }
9
+
5
10
 
6
11
  def get_xpath_match_string(
7
12
  node: etree._Element,