ds-caselaw-marklogic-api-client 31.0.1__py3-none-any.whl → 31.2.0__py3-none-any.whl

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.
caselawclient/Client.py CHANGED
@@ -30,7 +30,7 @@ from caselawclient.models.judgments import Judgment
30
30
  from caselawclient.models.press_summaries import PressSummary
31
31
  from caselawclient.models.utilities import move
32
32
  from caselawclient.search_parameters import SearchParameters
33
- from caselawclient.types import DocumentURIString
33
+ from caselawclient.types import DocumentIdentifierSlug, DocumentIdentifierValue, DocumentURIString
34
34
  from caselawclient.xquery_type_dicts import (
35
35
  MarkLogicDocumentURIString,
36
36
  MarkLogicDocumentVersionURIString,
@@ -1203,11 +1203,13 @@ class MarklogicApiClient:
1203
1203
 
1204
1204
  return results
1205
1205
 
1206
- def resolve_from_identifier_slug(self, identifier_uri: str, published_only: bool = True) -> IdentifierResolutions:
1206
+ def resolve_from_identifier_slug(
1207
+ self, identifier_slug: DocumentIdentifierSlug, published_only: bool = True
1208
+ ) -> IdentifierResolutions:
1207
1209
  """Given a PUI/EUI url, look up the precomputed slug and return the
1208
1210
  MarkLogic document URIs which match that slug. Multiple returns should be anticipated"""
1209
1211
  vars: query_dicts.ResolveFromIdentifierSlugDict = {
1210
- "identifier_uri": DocumentURIString(identifier_uri),
1212
+ "identifier_slug": identifier_slug,
1211
1213
  "published_only": int(published_only),
1212
1214
  }
1213
1215
  raw_results: list[str] = get_multipart_strings_from_marklogic_response(
@@ -1218,14 +1220,8 @@ class MarklogicApiClient:
1218
1220
  )
1219
1221
  return IdentifierResolutions.from_marklogic_output(raw_results)
1220
1222
 
1221
- def resolve_from_identifier(self, identifier_uri: str, published_only: bool = True) -> IdentifierResolutions:
1222
- warnings.warn(
1223
- "resolve_from_identifier deprecated, use resolve_from_identifier_slug instead", DeprecationWarning
1224
- )
1225
- return self.resolve_from_identifier_slug(identifier_uri, published_only)
1226
-
1227
1223
  def resolve_from_identifier_value(
1228
- self, identifier_value: str, published_only: bool = True
1224
+ self, identifier_value: DocumentIdentifierValue, published_only: bool = True
1229
1225
  ) -> IdentifierResolutions:
1230
1226
  """Given a PUI/EUI url, look up the precomputed slug and return the
1231
1227
  MarkLogic document URIs which match that slug. Multiple returns should be anticipated"""
@@ -9,6 +9,8 @@ from caselawclient.Client import MarklogicApiClient
9
9
  from caselawclient.identifier_resolution import IdentifierResolution, IdentifierResolutions
10
10
  from caselawclient.models.documents import Document
11
11
  from caselawclient.models.documents.body import DocumentBody
12
+ from caselawclient.models.identifiers import Identifier
13
+ from caselawclient.models.identifiers.fclid import FindCaseLawIdentifier
12
14
  from caselawclient.models.judgments import Judgment
13
15
  from caselawclient.models.press_summaries import PressSummary
14
16
  from caselawclient.responses.search_result import SearchResult, SearchResultMetadata
@@ -68,8 +70,12 @@ class DocumentFactory:
68
70
  cls,
69
71
  uri: DocumentURIString = DocumentURIString("test/2023/123"),
70
72
  api_client: Optional[MarklogicApiClient] = None,
73
+ identifiers: Optional[list[Identifier]] = None,
71
74
  **kwargs: Any,
72
75
  ) -> target_class:
76
+ def _fake_linked_documents(*args: Any, **kwargs: Any) -> list["Document"]:
77
+ return [document]
78
+
73
79
  if not api_client:
74
80
  api_client = Mock(spec=MarklogicApiClient)
75
81
  api_client.get_judgment_xml_bytestring.return_value = DEFAULT_DOCUMENT_BODY_XML.encode(encoding="utf-8")
@@ -78,6 +84,14 @@ class DocumentFactory:
78
84
  document = cls.target_class(uri, api_client=api_client)
79
85
  document.body = kwargs.pop("body") if "body" in kwargs else DocumentBodyFactory.build()
80
86
 
87
+ if identifiers is None:
88
+ document.identifiers.add(FindCaseLawIdentifier(value="a1b2c3"))
89
+ else:
90
+ for identifier in identifiers:
91
+ document.identifiers.add(identifier)
92
+
93
+ setattr(document, "linked_documents", _fake_linked_documents)
94
+
81
95
  for param_name, default_value in cls.PARAMS_MAP.items():
82
96
  value = kwargs.get(param_name, default_value)
83
97
  setattr(document, param_name, value)
@@ -3,7 +3,7 @@ from typing import NamedTuple
3
3
 
4
4
  from caselawclient.models.identifiers import Identifier
5
5
  from caselawclient.models.identifiers.unpacker import IDENTIFIER_NAMESPACE_MAP
6
- from caselawclient.types import DocumentURIString
6
+ from caselawclient.types import DocumentIdentifierSlug, DocumentIdentifierValue
7
7
  from caselawclient.xquery_type_dicts import MarkLogicDocumentURIString
8
8
 
9
9
 
@@ -31,9 +31,9 @@ class IdentifierResolution(NamedTuple):
31
31
 
32
32
  identifier_uuid: str
33
33
  document_uri: MarkLogicDocumentURIString
34
- identifier_slug: DocumentURIString
34
+ identifier_slug: DocumentIdentifierSlug
35
35
  document_published: bool
36
- identifier_value: str
36
+ identifier_value: DocumentIdentifierValue
37
37
  identifier_namespace: str
38
38
  identifier_type: type[Identifier]
39
39
 
@@ -44,9 +44,9 @@ class IdentifierResolution(NamedTuple):
44
44
  return IdentifierResolution(
45
45
  identifier_uuid=row["documents.compiled_url_slugs.identifier_uuid"],
46
46
  document_uri=MarkLogicDocumentURIString(row["documents.compiled_url_slugs.document_uri"]),
47
- identifier_slug=DocumentURIString(row["documents.compiled_url_slugs.identifier_slug"]),
47
+ identifier_slug=DocumentIdentifierSlug(row["documents.compiled_url_slugs.identifier_slug"]),
48
48
  document_published=row["documents.compiled_url_slugs.document_published"] == "true",
49
- identifier_value=row["documents.compiled_url_slugs.identifier_value"],
49
+ identifier_value=DocumentIdentifierValue(row["documents.compiled_url_slugs.identifier_value"]),
50
50
  identifier_namespace=identifier_namespace,
51
51
  identifier_type=IDENTIFIER_NAMESPACE_MAP[identifier_namespace],
52
52
  )
@@ -161,7 +161,19 @@ class Document:
161
161
  """
162
162
  :return: The absolute, public URI at which a copy of this document can be found
163
163
  """
164
- return f"https://caselaw.nationalarchives.gov.uk/{self.uri}"
164
+ return f"https://caselaw.nationalarchives.gov.uk/{self.slug}"
165
+
166
+ @cached_property
167
+ def slug(self) -> str:
168
+ """
169
+ :return: The best public-facing URL for the judgment, which is the slug
170
+ of the most-preferred identifier, which should either be an NCN or fclid.
171
+ """
172
+ preferred_identifier = self.identifiers.preferred()
173
+ if preferred_identifier:
174
+ return preferred_identifier.url_slug
175
+ msg = f"No preferred identifier exists for {self.uri}"
176
+ raise RuntimeError(msg)
165
177
 
166
178
  @cached_property
167
179
  def is_published(self) -> bool:
@@ -497,7 +509,7 @@ class Document:
497
509
  raise AttributeError(f"Neither 'Document' nor 'DocumentBody' objects have an attribute '{name}'")
498
510
 
499
511
  def linked_document_resolutions(self, namespaces: list[str], only_published: bool = True) -> IdentifierResolutions:
500
- """Get documents which share the same neutral citation as this document."""
512
+ """Get document resolutions which share the same neutral citation as this document."""
501
513
  if not hasattr(self, "neutral_citation") or not self.neutral_citation:
502
514
  return IdentifierResolutions([])
503
515
 
@@ -513,3 +525,10 @@ class Document:
513
525
  if resolution.document_uri != self.uri.as_marklogic() and resolution.identifier_namespace in namespaces
514
526
  ]
515
527
  )
528
+
529
+ def linked_documents(self, namespaces: list[str], only_published: bool = True) -> list["Document"]:
530
+ resolutions = self.linked_document_resolutions(namespaces=namespaces, only_published=only_published)
531
+ return [
532
+ Document(resolution.document_uri.as_document_uri(), api_client=self.api_client)
533
+ for resolution in resolutions
534
+ ]
@@ -4,6 +4,8 @@ from uuid import uuid4
4
4
 
5
5
  from lxml import etree
6
6
 
7
+ from caselawclient.types import DocumentIdentifierSlug, DocumentIdentifierValue
8
+
7
9
  IDENTIFIER_PACKABLE_ATTRIBUTES: list[str] = [
8
10
  "uuid",
9
11
  "value",
@@ -60,7 +62,7 @@ class IdentifierSchema(ABC):
60
62
 
61
63
  @classmethod
62
64
  @abstractmethod
63
- def compile_identifier_url_slug(cls, value: str) -> str:
65
+ def compile_identifier_url_slug(cls, value: str) -> DocumentIdentifierSlug:
64
66
  """Convert an identifier into a precompiled URL slug."""
65
67
  pass
66
68
 
@@ -71,7 +73,7 @@ class Identifier(ABC):
71
73
  schema: type[IdentifierSchema]
72
74
 
73
75
  uuid: str
74
- value: str
76
+ value: DocumentIdentifierValue
75
77
 
76
78
  def __init_subclass__(cls: type["Identifier"], **kwargs: Any) -> None:
77
79
  """Ensure that subclasses have the required attributes set."""
@@ -87,7 +89,7 @@ class Identifier(ABC):
87
89
  return self.value
88
90
 
89
91
  def __init__(self, value: str, uuid: Optional[str] = None) -> None:
90
- self.value = value
92
+ self.value = DocumentIdentifierValue(value)
91
93
  if uuid:
92
94
  self.uuid = uuid
93
95
  else:
@@ -3,6 +3,8 @@ from typing import TYPE_CHECKING
3
3
 
4
4
  from sqids import Sqids
5
5
 
6
+ from caselawclient.types import DocumentIdentifierSlug
7
+
6
8
  from . import Identifier, IdentifierSchema
7
9
 
8
10
  if TYPE_CHECKING:
@@ -35,8 +37,8 @@ class FindCaseLawIdentifierSchema(IdentifierSchema):
35
37
  return bool(VALID_FCLID_PATTERN.match(value))
36
38
 
37
39
  @classmethod
38
- def compile_identifier_url_slug(cls, value: str) -> str:
39
- return "tna." + value
40
+ def compile_identifier_url_slug(cls, value: str) -> DocumentIdentifierSlug:
41
+ return DocumentIdentifierSlug("tna." + value)
40
42
 
41
43
  @classmethod
42
44
  def mint(cls, api_client: "MarklogicApiClient") -> "FindCaseLawIdentifier":
@@ -3,6 +3,8 @@ import re
3
3
  from ds_caselaw_utils import neutral_url
4
4
  from ds_caselaw_utils.types import NeutralCitationString
5
5
 
6
+ from caselawclient.types import DocumentIdentifierSlug
7
+
6
8
  from . import Identifier, IdentifierSchema
7
9
 
8
10
  VALID_NCN_PATTERN = re.compile(r"(^\[([0-9]{4})\] ([a-zA-Z]+)(?: ([a-zA-Z]+))? ([0-9]+)(?: \(([a-zA-Z]+)\))?$)")
@@ -38,13 +40,13 @@ class NeutralCitationNumberSchema(IdentifierSchema):
38
40
  return bool(VALID_NCN_PATTERN.match(value))
39
41
 
40
42
  @classmethod
41
- def compile_identifier_url_slug(cls, value: str) -> str:
43
+ def compile_identifier_url_slug(cls, value: str) -> DocumentIdentifierSlug:
42
44
  ncn_based_uri_string = neutral_url(
43
45
  NeutralCitationString(value)
44
46
  ) # TODO: At some point this should move out of utils and into this class.
45
47
  if not ncn_based_uri_string:
46
48
  raise Exception(f"Unable to convert NCN {value} into NCN-based URL slug")
47
- return ncn_based_uri_string
49
+ return DocumentIdentifierSlug(ncn_based_uri_string)
48
50
 
49
51
 
50
52
  class NeutralCitationNumber(Identifier):
@@ -1,3 +1,5 @@
1
+ from caselawclient.types import DocumentIdentifierSlug
2
+
1
3
  from .neutral_citation import NeutralCitationNumber, NeutralCitationNumberSchema
2
4
 
3
5
 
@@ -12,8 +14,8 @@ class PressSummaryRelatedNCNIdentifierSchema(NeutralCitationNumberSchema):
12
14
  base_score_multiplier = 0.5
13
15
 
14
16
  @classmethod
15
- def compile_identifier_url_slug(cls, value: str) -> str:
16
- return super().compile_identifier_url_slug(value) + "/press-summary"
17
+ def compile_identifier_url_slug(cls, value: str) -> DocumentIdentifierSlug:
18
+ return DocumentIdentifierSlug(super().compile_identifier_url_slug(value) + "/press-summary")
17
19
 
18
20
 
19
21
  class PressSummaryRelatedNCNIdentifier(NeutralCitationNumber):
caselawclient/types.py CHANGED
@@ -2,8 +2,29 @@ class InvalidDocumentURIException(Exception):
2
2
  """The document URI is not valid."""
3
3
 
4
4
 
5
+ class InvalidMarkLogicDocumentURIException(Exception):
6
+ """The MarkLogic document URI is not valid."""
7
+
8
+
5
9
  class MarkLogicDocumentURIString(str):
6
- pass
10
+ def __new__(cls, content: str) -> "MarkLogicDocumentURIString":
11
+ # Check that the URI begins with a slash
12
+ if content[0] != "/":
13
+ raise InvalidMarkLogicDocumentURIException(
14
+ f'"{content}" is not a valid MarkLogic document URI; URIs must begin with a slash.'
15
+ )
16
+
17
+ # Check that the URI ends with ".xml"
18
+ if not content.endswith(".xml"):
19
+ raise InvalidMarkLogicDocumentURIException(
20
+ f'"{content}" is not a valid MarkLogic document URI; URIs must end with ".xml". '
21
+ )
22
+
23
+ # If everything is good, return as usual
24
+ return str.__new__(cls, content)
25
+
26
+ def as_document_uri(self) -> "DocumentURIString":
27
+ return DocumentURIString(self.lstrip("/").rstrip(".xml"))
7
28
 
8
29
 
9
30
  class DocumentURIString(str):
@@ -29,3 +50,11 @@ class DocumentURIString(str):
29
50
 
30
51
  def as_marklogic(self) -> MarkLogicDocumentURIString:
31
52
  return MarkLogicDocumentURIString(f"/{self}.xml")
53
+
54
+
55
+ class DocumentIdentifierSlug(str):
56
+ pass
57
+
58
+
59
+ class DocumentIdentifierValue(str):
60
+ pass
@@ -1,7 +1,7 @@
1
1
  xquery version "1.0-ml";
2
2
 
3
3
  declare namespace xdmp="http://marklogic.com/xdmp";
4
- declare variable $identifier_uri as xs:string external;
4
+ declare variable $identifier_slug as xs:string external;
5
5
  declare variable $published_only as xs:int? external := 1;
6
6
 
7
7
  let $published_query := if ($published_only) then " AND document_published = 'true'" else ""
@@ -11,7 +11,6 @@ return xdmp:sql(
11
11
  $query,
12
12
  "map",
13
13
  map:new((
14
- map:entry("uri", $identifier_uri)
14
+ map:entry("uri", $identifier_slug)
15
15
  ))
16
16
  )
17
-
@@ -7,7 +7,7 @@ checks. They are used to enforce appropriately typed variables being passed in t
7
7
  """
8
8
 
9
9
  from typing import Any, NewType, Optional, TypedDict
10
- from caselawclient.types import DocumentURIString
10
+ from caselawclient.types import DocumentURIString, DocumentIdentifierSlug, DocumentIdentifierValue
11
11
  from caselawclient.types import MarkLogicDocumentURIString as MarkLogicDocumentURIString
12
12
 
13
13
  MarkLogicDocumentVersionURIString = NewType("MarkLogicDocumentVersionURIString", MarkLogicDocumentURIString)
@@ -143,13 +143,13 @@ class ListJudgmentVersionsDict(MarkLogicAPIDict):
143
143
 
144
144
  # resolve_from_identifier_slug.xqy
145
145
  class ResolveFromIdentifierSlugDict(MarkLogicAPIDict):
146
- identifier_uri: DocumentURIString
146
+ identifier_slug: DocumentIdentifierSlug
147
147
  published_only: Optional[int]
148
148
 
149
149
 
150
150
  # resolve_from_identifier_value.xqy
151
151
  class ResolveFromIdentifierValueDict(MarkLogicAPIDict):
152
- identifier_value: str
152
+ identifier_value: DocumentIdentifierValue
153
153
  published_only: Optional[int]
154
154
 
155
155
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ds-caselaw-marklogic-api-client
3
- Version: 31.0.1
3
+ Version: 31.2.0
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,22 +1,22 @@
1
- caselawclient/Client.py,sha256=H7cey5bqxyfJgBbIenokg6OLkoz1QBePyCpdePQgTEI,45010
1
+ caselawclient/Client.py,sha256=Vy8DRniIxWQxc0hMlnhD-e6_O3WM9eVLX7PBaP1fPLg,44756
2
2
  caselawclient/__init__.py,sha256=DY-caubLDQWWingSdsBWgovDNXh8KcnkI6kwz08eIFk,612
3
3
  caselawclient/client_helpers/__init__.py,sha256=fyDNKCdrTb2N0Ks23YDhmvlXKfLTHnYQCXhnZb-QQbg,3832
4
4
  caselawclient/client_helpers/search_helpers.py,sha256=R99HyRLeYHgsw2L3DOidEqlKLLvs6Tga5rKTuWQViig,1525
5
5
  caselawclient/content_hash.py,sha256=0cPC4OoABq0SC2wYFX9-24DodNigeOqksDxgxQH_hUA,2221
6
6
  caselawclient/errors.py,sha256=JC16fEGq_MRJX-_KFzfINCV2Cqx8o6OWOt3C16rQd84,3142
7
- caselawclient/factories.py,sha256=_ey9KTu393H9q1hWAjr5LIp4oYzDre55QpVMkmxNSb0,6223
8
- caselawclient/identifier_resolution.py,sha256=pqapUH8oiZF3ie-s_CI0hvZwH__JVcjJ4VxkpBxswmA,2354
7
+ caselawclient/factories.py,sha256=BzxG7rBprmszxS1U1jsyBKaMSSm22RFmFK1nQSOZJlw,6812
8
+ caselawclient/identifier_resolution.py,sha256=BKj7k8ca6b8ZpeoOk2uHYqprOOp9aN5qEB7PWvfJmSw,2439
9
9
  caselawclient/models/__init__.py,sha256=kd23EUpvaC7aLHdgk8farqKAQEx3lf7RvNT2jEatvlg,68
10
- caselawclient/models/documents/__init__.py,sha256=LNo9FVKkF9rGzmJ4swEKrKXvimpvenE3OU_Z3Rt6Jic,18230
10
+ caselawclient/models/documents/__init__.py,sha256=hmO7PuXl3PkD_AXoW2bz4hRmyvj0Ivh3QvF4pDGPCvU,19089
11
11
  caselawclient/models/documents/body.py,sha256=mhPOV1cOF3RJr69UzNPlo1KrzePaj7KDPYi1exP06L0,5880
12
12
  caselawclient/models/documents/exceptions.py,sha256=Mz1P8uNqf5w6uLnRwJt6xK7efsVqtd5VA-WXUUH7QLk,285
13
13
  caselawclient/models/documents/statuses.py,sha256=Cp4dTQmJOtsU41EJcxy5dV1841pGD2PNWH0VrkDEv4Q,579
14
14
  caselawclient/models/documents/transforms/html.xsl,sha256=oSSO-IBX4qLiSWexQYmWJfGNevF09aCBx4D1NYqXxpo,38322
15
15
  caselawclient/models/documents/xml.py,sha256=HlmPb63lLMnySSOLP4iexcAyQiLByKBZtTd25f8sY8M,1268
16
- caselawclient/models/identifiers/__init__.py,sha256=mi7PGHYtezZx7HjpIPpBn58Ugs7XMY7jFeAnkYtxsic,6521
17
- caselawclient/models/identifiers/fclid.py,sha256=pTO586ra0sr4DbjHSxuI8UlxfNXLm9nDNVoDUIxiUrE,1354
18
- caselawclient/models/identifiers/neutral_citation.py,sha256=3Jw1_-NmGfGmrWGFSzLdTHBYHIHq4tPkF8U7Jba-jGo,1848
19
- caselawclient/models/identifiers/press_summary_ncn.py,sha256=r55-qgi9LDnGxY8vTKijzotGknA6mNLpu55QQTV8Lxo,652
16
+ caselawclient/models/identifiers/__init__.py,sha256=sbS638jek1qtOSyGWVfIgaja0tnpK5iB5FXiYJSbJiU,6666
17
+ caselawclient/models/identifiers/fclid.py,sha256=FBqarEcnr-1AYmFvjTu1WoPNSBY785h27_bDh_ITgf8,1453
18
+ caselawclient/models/identifiers/neutral_citation.py,sha256=O3zLw8lnhh5Mb0COjwhhDfTyvcSt48Td5pfT6yaCCJk,1947
19
+ caselawclient/models/identifiers/press_summary_ncn.py,sha256=0SU6WQqj337VOio8pzSHn2AgFTF1_B3bKDnrpTMPTZY,751
20
20
  caselawclient/models/identifiers/unpacker.py,sha256=xvp480QESbN36NEc6qeo-orqOBq6WchnLI7thY7A1qs,2156
21
21
  caselawclient/models/judgments.py,sha256=H_-t4mCa3LdYu1cLOhQB5n045RdJghWpqS5hgPPDE4U,2170
22
22
  caselawclient/models/neutral_citation_mixin.py,sha256=jAac3PPuWyPdj9N-n-U_JfwkbgbSIXaqFVQahfu95do,2086
@@ -31,7 +31,7 @@ caselawclient/responses/search_response.py,sha256=Z76Zj4VvM-EV_vdiehv2-Jfkr9HZD3
31
31
  caselawclient/responses/search_result.py,sha256=hotJHJ9wQusjb4PjZm1DDZv2HEsXWTtZU5TOTj2T0rw,8205
32
32
  caselawclient/responses/xsl/search_match.xsl,sha256=4Sv--MrwBd7J48E9aI7jlFSXGlNi4dBqgzJ3bdMJ_ZU,1018
33
33
  caselawclient/search_parameters.py,sha256=nR-UC1aWZbdXzXBrVDaHECU4Ro8Zi4JZATtgrpAVsKY,3342
34
- caselawclient/types.py,sha256=gedGlrO1ZA_wYdCuquwi6seFr5OqTPxi1O0D_lKdEps,1087
34
+ caselawclient/types.py,sha256=0PsEsQzJOInpuwZ-Ydw0UpGns6jbHzlJhc-Ms28sqCU,2064
35
35
  caselawclient/xml_helpers.py,sha256=FEtE8gxaEZmcgua-Xu8awPmiOm9K58OSabEYVGpiVEY,493
36
36
  caselawclient/xquery/break_judgment_checkout.xqy,sha256=rISzoBKxQKrP5ZRdCSoRqOXW8T_NDBSZRFjOXo_H3ns,220
37
37
  caselawclient/xquery/checkin_judgment.xqy,sha256=QeGqO3kL-q0UrjopCVU0lCbkwbyoc5SuNLYFAIbbyMg,197
@@ -60,7 +60,7 @@ caselawclient/xquery/get_version_annotation.xqy,sha256=pFDMGA9SxI59iUPaoAeUsq23k
60
60
  caselawclient/xquery/get_version_created.xqy,sha256=bRweaXFtwMBNzL16SlOdiOxHkbqNUwpwDHLxpZYVCh0,250
61
61
  caselawclient/xquery/insert_document.xqy,sha256=iP2xTaLGa-u6X9KfS1yJ6yPCKQUWQFYdEW1S4YcMY7w,531
62
62
  caselawclient/xquery/list_judgment_versions.xqy,sha256=WShga8igeD21hSLfVSvCOiDMPDhNH6KGf1OW6G0SAkY,190
63
- caselawclient/xquery/resolve_from_identifier_slug.xqy,sha256=Fa-RSw9ZwD__BmT5LLJ0J0HcDstDbedkEccv45M3L4g,484
63
+ caselawclient/xquery/resolve_from_identifier_slug.xqy,sha256=jMaOugdG1XVQIk9AR5NOth8D2RS8VEUJuBwjO9j4MFM,485
64
64
  caselawclient/xquery/resolve_from_identifier_value.xqy,sha256=7uP3DnRi67qSp0aUhW6Cv_GA8BQGw6GuvtAghjrT7Z4,493
65
65
  caselawclient/xquery/set_boolean_property.xqy,sha256=8Vg3yDWqeDynUJQHw2OF4daDIKTnp8ARol1_OCqY0Dk,355
66
66
  caselawclient/xquery/set_metadata_citation.xqy,sha256=ImwijXowvOCiH_br_LepnKsEpys9tg4Cf3uz6MoC5-c,659
@@ -79,8 +79,8 @@ caselawclient/xquery/validate_all_documents.xqy,sha256=z_0YEXmRcZ-FaJM0ouKiTjdI4
79
79
  caselawclient/xquery/validate_document.xqy,sha256=PgaDcnqCRJPIVqfmWsNlXmCLNKd21qkJrvY1RtNP7eA,140
80
80
  caselawclient/xquery/xslt.xqy,sha256=w57wNijH3dkwHkpKeAxqjlghVflQwo8cq6jS_sm-erM,199
81
81
  caselawclient/xquery/xslt_transform.xqy,sha256=cccaFiGkCcvSfDv007UriZ3I4ak2nTLP1trRZdbOoS8,2462
82
- caselawclient/xquery_type_dicts.py,sha256=IElFK9aFZboNgKytRjK2EQPIJJcXXw9NVfRTWKx2zJo,6283
83
- ds_caselaw_marklogic_api_client-31.0.1.dist-info/LICENSE.md,sha256=fGMzyyLuQW-IAXUeDSCrRdsYW536aEWThdbpCjo6ZKg,1108
84
- ds_caselaw_marklogic_api_client-31.0.1.dist-info/METADATA,sha256=e7BXXpCwlXXnWa8XPFirGNhc5NGJWRVmoNl8T6ts_C0,4251
85
- ds_caselaw_marklogic_api_client-31.0.1.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
86
- ds_caselaw_marklogic_api_client-31.0.1.dist-info/RECORD,,
82
+ caselawclient/xquery_type_dicts.py,sha256=mkpvJcqgKhDi7xkW9RLGIoXIzrpcmLSkg_B1zP8CWWk,6358
83
+ ds_caselaw_marklogic_api_client-31.2.0.dist-info/LICENSE.md,sha256=fGMzyyLuQW-IAXUeDSCrRdsYW536aEWThdbpCjo6ZKg,1108
84
+ ds_caselaw_marklogic_api_client-31.2.0.dist-info/METADATA,sha256=HNAET2YVbjajtXPpugLs70YeF_xXgM8NbIIEmcAJYU8,4251
85
+ ds_caselaw_marklogic_api_client-31.2.0.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
86
+ ds_caselaw_marklogic_api_client-31.2.0.dist-info/RECORD,,