ds-caselaw-marklogic-api-client 34.0.0__tar.gz → 34.0.1__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 (86) hide show
  1. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/PKG-INFO +1 -1
  2. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/pyproject.toml +1 -1
  3. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/client_helpers/__init__.py +12 -6
  4. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/xml_helpers.py +5 -0
  5. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/LICENSE.md +0 -0
  6. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/README.md +0 -0
  7. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/Client.py +0 -0
  8. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/__init__.py +0 -0
  9. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/client_helpers/search_helpers.py +0 -0
  10. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/content_hash.py +0 -0
  11. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/errors.py +0 -0
  12. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/factories.py +0 -0
  13. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/identifier_resolution.py +0 -0
  14. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/__init__.py +0 -0
  15. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/documents/__init__.py +0 -0
  16. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/documents/body.py +0 -0
  17. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/documents/exceptions.py +0 -0
  18. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/documents/statuses.py +0 -0
  19. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/documents/transforms/html.xsl +0 -0
  20. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/documents/xml.py +0 -0
  21. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/identifiers/__init__.py +0 -0
  22. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/identifiers/fclid.py +0 -0
  23. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/identifiers/neutral_citation.py +0 -0
  24. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/identifiers/press_summary_ncn.py +0 -0
  25. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/identifiers/unpacker.py +0 -0
  26. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/judgments.py +0 -0
  27. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/neutral_citation_mixin.py +0 -0
  28. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/press_summaries.py +0 -0
  29. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/utilities/__init__.py +0 -0
  30. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/utilities/aws.py +0 -0
  31. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/utilities/dates.py +0 -0
  32. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/models/utilities/move.py +0 -0
  33. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/py.typed +0 -0
  34. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/responses/__init__.py +0 -0
  35. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/responses/search_response.py +0 -0
  36. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/responses/search_result.py +0 -0
  37. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/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.1}/src/caselawclient/search_parameters.py +0 -0
  39. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/types.py +0 -0
  40. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/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.1}/src/caselawclient/xquery/checkin_judgment.xqy +0 -0
  42. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/xquery/checkout_judgment.xqy +0 -0
  43. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/xquery/copy_document.xqy +0 -0
  44. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/xquery/delete_judgment.xqy +0 -0
  45. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/xquery/document_collections.xqy +0 -0
  46. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/xquery/document_exists.xqy +0 -0
  47. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/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.1}/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.1}/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.1}/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.1}/src/caselawclient/xquery/get_judgment.xqy +0 -0
  52. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/src/caselawclient/xquery/get_property.xqy +0 -0
  60. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/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.1}/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.1}/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.1}/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.1}/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.1}/src/caselawclient/xquery/insert_document.xqy +0 -0
  66. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/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.1}/src/caselawclient/xquery/set_property.xqy +0 -0
  77. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/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.1}/src/caselawclient/xquery/update_document.xqy +0 -0
  79. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/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.1}/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.1}/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.1}/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.1}/src/caselawclient/xquery/validate_document.xqy +0 -0
  84. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/xquery/xslt.xqy +0 -0
  85. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/src/caselawclient/xquery/xslt_transform.xqy +0 -0
  86. {ds_caselaw_marklogic_api_client-34.0.0 → ds_caselaw_marklogic_api_client-34.0.1}/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.1
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.1"
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
  )
@@ -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,