ds-caselaw-marklogic-api-client 28.1.0__py3-none-any.whl → 29.0.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.
Potentially problematic release.
This version of ds-caselaw-marklogic-api-client might be problematic. Click here for more details.
- caselawclient/Client.py +4 -0
- caselawclient/models/documents/__init__.py +18 -8
- caselawclient/models/identifiers/__init__.py +37 -1
- caselawclient/models/identifiers/fclid.py +50 -0
- caselawclient/models/identifiers/neutral_citation.py +2 -0
- caselawclient/models/identifiers/unpacker.py +2 -0
- caselawclient/models/judgments.py +10 -13
- caselawclient/models/neutral_citation_mixin.py +8 -4
- caselawclient/models/press_summaries.py +9 -12
- caselawclient/xquery/get_next_document_sequence_number.xqy +14 -0
- {ds_caselaw_marklogic_api_client-28.1.0.dist-info → ds_caselaw_marklogic_api_client-29.0.0.dist-info}/METADATA +3 -2
- {ds_caselaw_marklogic_api_client-28.1.0.dist-info → ds_caselaw_marklogic_api_client-29.0.0.dist-info}/RECORD +14 -12
- {ds_caselaw_marklogic_api_client-28.1.0.dist-info → ds_caselaw_marklogic_api_client-29.0.0.dist-info}/LICENSE.md +0 -0
- {ds_caselaw_marklogic_api_client-28.1.0.dist-info → ds_caselaw_marklogic_api_client-29.0.0.dist-info}/WHEEL +0 -0
caselawclient/Client.py
CHANGED
|
@@ -1217,3 +1217,7 @@ class MarklogicApiClient:
|
|
|
1217
1217
|
),
|
|
1218
1218
|
)
|
|
1219
1219
|
return IdentifierResolutions.from_marklogic_output(raw_results)
|
|
1220
|
+
|
|
1221
|
+
def get_next_document_sequence_number(self) -> int:
|
|
1222
|
+
"""Increment the MarkLogic sequence number by one and return the value."""
|
|
1223
|
+
return int(self._eval_and_decode({}, "get_next_document_sequence_number.xqy"))
|
|
@@ -15,6 +15,8 @@ from caselawclient.errors import (
|
|
|
15
15
|
NotSupportedOnVersion,
|
|
16
16
|
OnlySupportedOnVersion,
|
|
17
17
|
)
|
|
18
|
+
from caselawclient.models.identifiers import Identifier
|
|
19
|
+
from caselawclient.models.identifiers.fclid import FindCaseLawIdentifier, FindCaseLawIdentifierSchema
|
|
18
20
|
from caselawclient.models.identifiers.unpacker import unpack_all_identifiers_from_etree
|
|
19
21
|
from caselawclient.models.utilities import VersionsDict, extract_version, render_versions
|
|
20
22
|
from caselawclient.models.utilities.aws import (
|
|
@@ -170,13 +172,11 @@ class Document:
|
|
|
170
172
|
self.identifiers = unpack_all_identifiers_from_etree(identifiers_element_as_etree)
|
|
171
173
|
|
|
172
174
|
@property
|
|
173
|
-
def best_human_identifier(self) -> Optional[
|
|
174
|
-
"""
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
Should typically be overridden in subclasses.
|
|
179
|
-
"""
|
|
175
|
+
def best_human_identifier(self) -> Optional[Identifier]:
|
|
176
|
+
"""Return the preferred identifier for the document, providing that it is considered human readable."""
|
|
177
|
+
preferred_identifier = self.identifiers.preferred()
|
|
178
|
+
if preferred_identifier and preferred_identifier.schema.human_readable:
|
|
179
|
+
return preferred_identifier
|
|
180
180
|
return None
|
|
181
181
|
|
|
182
182
|
@property
|
|
@@ -432,6 +432,12 @@ class Document:
|
|
|
432
432
|
if not self.is_publishable:
|
|
433
433
|
raise CannotPublishUnpublishableDocument
|
|
434
434
|
|
|
435
|
+
## If it doesn't already have one, get a new FCLID for this document and assign
|
|
436
|
+
if len(self.identifiers.of_type(FindCaseLawIdentifier)) < 1:
|
|
437
|
+
document_fclid = FindCaseLawIdentifierSchema.mint(self.api_client)
|
|
438
|
+
self.identifiers.add(document_fclid)
|
|
439
|
+
self.save_identifiers()
|
|
440
|
+
|
|
435
441
|
publish_documents(uri_for_s3(self.uri))
|
|
436
442
|
self.api_client.set_published(self.uri, True)
|
|
437
443
|
announce_document_event(
|
|
@@ -500,13 +506,17 @@ class Document:
|
|
|
500
506
|
"documentType": parser_type_noun,
|
|
501
507
|
"metadata": {
|
|
502
508
|
"name": self.body.name or None,
|
|
503
|
-
"cite":
|
|
509
|
+
"cite": None,
|
|
504
510
|
"court": self.body.court or None,
|
|
505
511
|
"date": checked_date,
|
|
506
512
|
"uri": self.uri,
|
|
507
513
|
},
|
|
508
514
|
}
|
|
509
515
|
|
|
516
|
+
## TODO: Remove this hack around the fact that NCNs are assumed to be present for all documents' metadata, but actually different document classes may have different metadata
|
|
517
|
+
if hasattr(self, "neutral_citation"):
|
|
518
|
+
parser_instructions["metadata"]["cite"] = self.neutral_citation
|
|
519
|
+
|
|
510
520
|
request_parse(
|
|
511
521
|
uri=self.uri,
|
|
512
522
|
reference=self.consignment_reference,
|
|
@@ -32,13 +32,20 @@ class IdentifierSchema(ABC):
|
|
|
32
32
|
name: str
|
|
33
33
|
namespace: str
|
|
34
34
|
|
|
35
|
+
human_readable: bool
|
|
36
|
+
""" Should this identifier type be considered for display as a 'human readable' identifier? """
|
|
37
|
+
|
|
38
|
+
base_score_multiplier: float = 1.0
|
|
39
|
+
""" A multiplier used to adjust the relative ranking of this identifier when calculating preferred identifiers. """
|
|
40
|
+
|
|
35
41
|
def __init_subclass__(cls: type["IdentifierSchema"], **kwargs: Any) -> None:
|
|
36
42
|
"""Ensure that subclasses have the required attributes set."""
|
|
37
43
|
for required in (
|
|
38
44
|
"name",
|
|
39
45
|
"namespace",
|
|
46
|
+
"human_readable",
|
|
40
47
|
):
|
|
41
|
-
if not
|
|
48
|
+
if not hasattr(cls, required):
|
|
42
49
|
raise NotImplementedError(f"Can't instantiate IdentifierSchema without {required} attribute.")
|
|
43
50
|
super().__init_subclass__(**kwargs)
|
|
44
51
|
|
|
@@ -101,6 +108,11 @@ class Identifier(ABC):
|
|
|
101
108
|
def url_slug(self) -> str:
|
|
102
109
|
return self.schema.compile_identifier_url_slug(self.value)
|
|
103
110
|
|
|
111
|
+
@property
|
|
112
|
+
def score(self) -> float:
|
|
113
|
+
"""Return the score of this identifier, used to calculate the preferred identifier for a document."""
|
|
114
|
+
return 1 * self.schema.base_score_multiplier
|
|
115
|
+
|
|
104
116
|
def same_as(self, other: "Identifier") -> bool:
|
|
105
117
|
"Is this the same as another identifier (in value and schema)?"
|
|
106
118
|
return self.value == other.value and self.schema == other.schema
|
|
@@ -127,6 +139,11 @@ class Identifiers(dict[str, Identifier]):
|
|
|
127
139
|
else:
|
|
128
140
|
super().__delitem__(key)
|
|
129
141
|
|
|
142
|
+
def of_type(self, identifier_type: type[Identifier]) -> list[Identifier]:
|
|
143
|
+
"""Return a list of all identifiers of a given type."""
|
|
144
|
+
uuids = self.keys()
|
|
145
|
+
return [self[uuid] for uuid in list(uuids) if isinstance(self[uuid], identifier_type)]
|
|
146
|
+
|
|
130
147
|
def delete_type(self, deleted_identifier_type: type[Identifier]) -> None:
|
|
131
148
|
"For when we want an identifier to be the only valid identifier of that type, delete the others first"
|
|
132
149
|
uuids = self.keys()
|
|
@@ -144,3 +161,22 @@ class Identifiers(dict[str, Identifier]):
|
|
|
144
161
|
identifiers_root.append(identifier.as_xml_tree)
|
|
145
162
|
|
|
146
163
|
return identifiers_root
|
|
164
|
+
|
|
165
|
+
def by_score(self, type: Optional[type[Identifier]] = None) -> list[Identifier]:
|
|
166
|
+
"""
|
|
167
|
+
:param type: Optionally, an identifier type to constrain this list to.
|
|
168
|
+
|
|
169
|
+
:return: Return a list of identifiers, sorted by their score in descending order.
|
|
170
|
+
"""
|
|
171
|
+
identifiers = self.of_type(type) if type else list(self.values())
|
|
172
|
+
return sorted(identifiers, key=lambda v: v.score, reverse=True)
|
|
173
|
+
|
|
174
|
+
def preferred(self, type: Optional[type[Identifier]] = None) -> Optional[Identifier]:
|
|
175
|
+
"""
|
|
176
|
+
:param type: Optionally, an identifier type to constrain the results to.
|
|
177
|
+
|
|
178
|
+
:return: Return the highest scoring identifier of the given type (or of any type, if none is specified). Returns `None` if no identifier is available.
|
|
179
|
+
"""
|
|
180
|
+
if len(self) == 0:
|
|
181
|
+
return None
|
|
182
|
+
return self.by_score(type)[0]
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from typing import TYPE_CHECKING
|
|
3
|
+
|
|
4
|
+
from sqids import Sqids
|
|
5
|
+
|
|
6
|
+
from . import Identifier, IdentifierSchema
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
from caselawclient.Client import MarklogicApiClient
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
VALID_FCLID_PATTERN = re.compile(r"^[bcdfghjkmnpqrstvwxyz23456789]{4,}$")
|
|
13
|
+
|
|
14
|
+
FCLID_MINIMUM_LENGTH = 8
|
|
15
|
+
FCLID_ALPHABET = "bcdfghjkmnpqrstvwxyz23456789"
|
|
16
|
+
|
|
17
|
+
sqids = Sqids(
|
|
18
|
+
min_length=FCLID_MINIMUM_LENGTH,
|
|
19
|
+
alphabet=FCLID_ALPHABET,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class FindCaseLawIdentifierSchema(IdentifierSchema):
|
|
24
|
+
"""
|
|
25
|
+
Identifier schema describing a Find Case Law Identifier.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
name = "Find Case Law Identifier"
|
|
29
|
+
namespace = "fclid"
|
|
30
|
+
human_readable = False
|
|
31
|
+
base_score_multiplier = 0.8
|
|
32
|
+
|
|
33
|
+
@classmethod
|
|
34
|
+
def validate_identifier(cls, value: str) -> bool:
|
|
35
|
+
return bool(VALID_FCLID_PATTERN.match(value))
|
|
36
|
+
|
|
37
|
+
@classmethod
|
|
38
|
+
def compile_identifier_url_slug(cls, value: str) -> str:
|
|
39
|
+
return "tna." + value
|
|
40
|
+
|
|
41
|
+
@classmethod
|
|
42
|
+
def mint(cls, api_client: "MarklogicApiClient") -> "FindCaseLawIdentifier":
|
|
43
|
+
"""Generate a totally new Find Case Law identifier."""
|
|
44
|
+
next_sequence_number = api_client.get_next_document_sequence_number()
|
|
45
|
+
new_identifier = sqids.encode([next_sequence_number])
|
|
46
|
+
return FindCaseLawIdentifier(value=new_identifier)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class FindCaseLawIdentifier(Identifier):
|
|
50
|
+
schema = FindCaseLawIdentifierSchema
|
|
@@ -3,9 +3,11 @@ from typing import Optional
|
|
|
3
3
|
from lxml import etree
|
|
4
4
|
|
|
5
5
|
from . import IDENTIFIER_UNPACKABLE_ATTRIBUTES, Identifier, Identifiers, InvalidIdentifierXMLRepresentationException
|
|
6
|
+
from .fclid import FindCaseLawIdentifier
|
|
6
7
|
from .neutral_citation import NeutralCitationNumber
|
|
7
8
|
|
|
8
9
|
IDENTIFIER_NAMESPACE_MAP: dict[str, type[Identifier]] = {
|
|
10
|
+
"fclid": FindCaseLawIdentifier,
|
|
9
11
|
"ukncn": NeutralCitationNumber,
|
|
10
12
|
}
|
|
11
13
|
|
|
@@ -25,20 +25,17 @@ class Judgment(NeutralCitationMixin, Document):
|
|
|
25
25
|
super().__init__(self.document_noun, uri, *args, **kwargs)
|
|
26
26
|
|
|
27
27
|
@cached_property
|
|
28
|
-
def neutral_citation(self) -> NeutralCitationString:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
},
|
|
36
|
-
)
|
|
28
|
+
def neutral_citation(self) -> Optional[NeutralCitationString]:
|
|
29
|
+
value_in_xml = self.body.get_xpath_match_string(
|
|
30
|
+
"/akn:akomaNtoso/akn:*/akn:meta/akn:proprietary/uk:cite/text()",
|
|
31
|
+
{
|
|
32
|
+
"uk": "https://caselaw.nationalarchives.gov.uk/akn",
|
|
33
|
+
"akn": "http://docs.oasis-open.org/legaldocml/ns/akn/3.0",
|
|
34
|
+
},
|
|
37
35
|
)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return self.neutral_citation
|
|
36
|
+
if value_in_xml:
|
|
37
|
+
return NeutralCitationString(value_in_xml)
|
|
38
|
+
return None
|
|
42
39
|
|
|
43
40
|
@cached_property
|
|
44
41
|
def linked_document(self) -> Optional["PressSummary"]:
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
from abc import ABC, abstractmethod
|
|
2
2
|
from functools import cached_property
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import Any, Optional
|
|
4
4
|
|
|
5
5
|
from ds_caselaw_utils import neutral_url
|
|
6
6
|
from ds_caselaw_utils.types import NeutralCitationString
|
|
7
|
+
from typing_extensions import deprecated
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
class NeutralCitationMixin(ABC):
|
|
@@ -38,12 +39,15 @@ class NeutralCitationMixin(ABC):
|
|
|
38
39
|
|
|
39
40
|
@cached_property
|
|
40
41
|
@abstractmethod
|
|
41
|
-
|
|
42
|
+
@deprecated("Legacy usage of NCNs is deprecated; you should be moving to the Identifiers framework")
|
|
43
|
+
def neutral_citation(self) -> Optional[NeutralCitationString]: ...
|
|
42
44
|
|
|
43
45
|
@cached_property
|
|
46
|
+
@deprecated("Legacy usage of NCNs is deprecated; you should be moving to the Identifiers framework")
|
|
44
47
|
def has_ncn(self) -> bool:
|
|
45
|
-
return
|
|
48
|
+
return self.neutral_citation is not None and self.neutral_citation != ""
|
|
46
49
|
|
|
47
50
|
@cached_property
|
|
51
|
+
@deprecated("Legacy usage of NCNs is deprecated; you should be moving to the Identifiers framework")
|
|
48
52
|
def has_valid_ncn(self) -> bool:
|
|
49
|
-
return self.
|
|
53
|
+
return self.neutral_citation is not None and neutral_url(self.neutral_citation) is not None
|
|
@@ -27,19 +27,16 @@ class PressSummary(NeutralCitationMixin, Document):
|
|
|
27
27
|
super().__init__(self.document_noun, uri, *args, **kwargs)
|
|
28
28
|
|
|
29
29
|
@cached_property
|
|
30
|
-
def neutral_citation(self) -> NeutralCitationString:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
},
|
|
37
|
-
)
|
|
30
|
+
def neutral_citation(self) -> Optional[NeutralCitationString]:
|
|
31
|
+
value_in_xml = self.body.get_xpath_match_string(
|
|
32
|
+
"/akn:akomaNtoso/akn:doc/akn:preface/akn:p/akn:neutralCitation/text()",
|
|
33
|
+
{
|
|
34
|
+
"akn": "http://docs.oasis-open.org/legaldocml/ns/akn/3.0",
|
|
35
|
+
},
|
|
38
36
|
)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return self.neutral_citation
|
|
37
|
+
if value_in_xml:
|
|
38
|
+
return NeutralCitationString(value_in_xml)
|
|
39
|
+
return None
|
|
43
40
|
|
|
44
41
|
@cached_property
|
|
45
42
|
def linked_document(self) -> Optional[Judgment]:
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
xquery version "1.0-ml";
|
|
2
|
+
declare option xdmp:transaction-mode "update";
|
|
3
|
+
|
|
4
|
+
let $_ := xdmp:set-transaction-mode("update")
|
|
5
|
+
let $state_doc := fn:doc("state.xml")
|
|
6
|
+
let $counter_node := $state_doc/state/document_counter
|
|
7
|
+
|
|
8
|
+
let $current_counter := $counter_node/text()
|
|
9
|
+
let $new_counter := fn:sum(($current_counter, 1))
|
|
10
|
+
|
|
11
|
+
let $_ := xdmp:node-replace($counter_node, <document_counter>{$new_counter}</document_counter>)
|
|
12
|
+
let $_ := xdmp:commit()
|
|
13
|
+
|
|
14
|
+
return $new_counter
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ds-caselaw-marklogic-api-client
|
|
3
|
-
Version:
|
|
3
|
+
Version: 29.0.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
|
|
@@ -11,7 +11,7 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.10
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
13
|
Requires-Dist: boto3 (>=1.26.112,<2.0.0)
|
|
14
|
-
Requires-Dist: certifi (>=2024.
|
|
14
|
+
Requires-Dist: certifi (>=2024.12.14,<2024.13.0)
|
|
15
15
|
Requires-Dist: charset-normalizer (>=3.0.0,<4.0.0)
|
|
16
16
|
Requires-Dist: django-environ (>=0.11.0,<0.12.0)
|
|
17
17
|
Requires-Dist: ds-caselaw-utils (>=2.0.0,<3.0.0)
|
|
@@ -25,6 +25,7 @@ Requires-Dist: pytz (>=2024.1,<2025.0)
|
|
|
25
25
|
Requires-Dist: requests (>=2.28.2,<3.0.0)
|
|
26
26
|
Requires-Dist: requests-toolbelt (>=0.10.1,<1.1.0)
|
|
27
27
|
Requires-Dist: saxonche (>=12.5.0,<13.0.0)
|
|
28
|
+
Requires-Dist: sqids (>=0.5.0,<0.6.0)
|
|
28
29
|
Requires-Dist: typing-extensions (>=4.7.1,<5.0.0)
|
|
29
30
|
Description-Content-Type: text/markdown
|
|
30
31
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
caselawclient/Client.py,sha256=
|
|
1
|
+
caselawclient/Client.py,sha256=6BaVpKSvMcNhSaDXzTkN1h4iV7KFrY7SgSHNGqGQ_2o,43863
|
|
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
|
|
@@ -7,18 +7,19 @@ caselawclient/errors.py,sha256=tV0vs3wYSd331BzmfuRiZV6GAdsd91rtN65ymRaSx3s,3164
|
|
|
7
7
|
caselawclient/factories.py,sha256=6-xZMVmvtXA8AnyWJgJTums1EWfM6lPIhrWQu0NopJo,4472
|
|
8
8
|
caselawclient/identifier_resolution.py,sha256=IOqrZcIHoHhNOCAkNveOBcWddBNpkOB8cz1r0zFa8mQ,1829
|
|
9
9
|
caselawclient/models/__init__.py,sha256=kd23EUpvaC7aLHdgk8farqKAQEx3lf7RvNT2jEatvlg,68
|
|
10
|
-
caselawclient/models/documents/__init__.py,sha256=
|
|
10
|
+
caselawclient/models/documents/__init__.py,sha256=Lzb18MyCPLlG0Y4EdnjZvnGFSSpsNs_BUgJA6BQqL28,19520
|
|
11
11
|
caselawclient/models/documents/body.py,sha256=mtdjmG1WU2qSpyRLS8-PWcSoXpDa2Qz6xlcTbxZgxvA,5603
|
|
12
12
|
caselawclient/models/documents/exceptions.py,sha256=rw1xId16vBKvBImgFmFUpeFgKqU7VTNtVLIEVBPGKyk,374
|
|
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=
|
|
17
|
-
caselawclient/models/identifiers/
|
|
18
|
-
caselawclient/models/identifiers/
|
|
19
|
-
caselawclient/models/
|
|
20
|
-
caselawclient/models/
|
|
21
|
-
caselawclient/models/
|
|
16
|
+
caselawclient/models/identifiers/__init__.py,sha256=4D_ssfNK7gj7Z4XMHqCzn-EwsPM4a6IofYkU1JjnRF4,6449
|
|
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/unpacker.py,sha256=01gWWlOd_2PxT1GJzOIXbp0G4iGGIxHaTaJMBOQ1TDs,1834
|
|
20
|
+
caselawclient/models/judgments.py,sha256=xFjfOspa9ZL29gvvGVNq11JC7h-LKebFMrQYvVIIoEI,1868
|
|
21
|
+
caselawclient/models/neutral_citation_mixin.py,sha256=LDaxNndLcTKsjJCyEKO1kGTJ6YD6h-6SzQVE0-gwPSI,2208
|
|
22
|
+
caselawclient/models/press_summaries.py,sha256=bEqJxu-7eBLhwulOsDXYDl2ptIp3RkkMpOcdVvWB5ds,1836
|
|
22
23
|
caselawclient/models/utilities/__init__.py,sha256=u3yIhbTjFQ1JJyAm5wsMEBswWl4t6Z7UMORF5FqC2xQ,1257
|
|
23
24
|
caselawclient/models/utilities/aws.py,sha256=umfPzjtykg_-OP1ACirpXfOLN4QenqA0A8tJk3DzYRk,8211
|
|
24
25
|
caselawclient/models/utilities/dates.py,sha256=WwORxVjUHM1ZFcBF6Qtwo3Cj0sATsnSECkUZ6ls1N1Q,492
|
|
@@ -45,6 +46,7 @@ caselawclient/xquery/get_judgment.xqy,sha256=8V-sEFKmtpf2LIZD9QKVRfpblEsmDpP4BA6
|
|
|
45
46
|
caselawclient/xquery/get_judgment_checkout_status.xqy,sha256=mdY9UXLyzQdB7byEERPqentlr0YDLbXRVqH0h4UuZTQ,193
|
|
46
47
|
caselawclient/xquery/get_judgment_version.xqy,sha256=wF9k9-CBrqo8VbxxyTrD-AGzR3-3jMm25tRVCjxPLrU,292
|
|
47
48
|
caselawclient/xquery/get_last_modified.xqy,sha256=8fCm_7o_kkytCEmEeSTLWzLP7iOjuPV01IfHDgf6HaQ,172
|
|
49
|
+
caselawclient/xquery/get_next_document_sequence_number.xqy,sha256=LkGoaS7jZfaKDuZLi0apP5qHP1rpcM1HbqX3RUwquKY,450
|
|
48
50
|
caselawclient/xquery/get_pending_enrichment_for_version.xqy,sha256=8J5Pi-jMXJd_BgtpK4g6C9uR99HP57JpFv5WkoPfNuo,2016
|
|
49
51
|
caselawclient/xquery/get_pending_parse_for_version.xqy,sha256=9cjVZtHeBBjm-a7RMsn1PVJt_Ug78YFlmp5CN8VJ1jQ,1197
|
|
50
52
|
caselawclient/xquery/get_properties_for_search_results.xqy,sha256=Tlv3EKwVV_q-JyQyhjWVHIleicPDpucxP4ScuQjpgSw,625
|
|
@@ -75,7 +77,7 @@ caselawclient/xquery/validate_document.xqy,sha256=PgaDcnqCRJPIVqfmWsNlXmCLNKd21q
|
|
|
75
77
|
caselawclient/xquery/xslt.xqy,sha256=w57wNijH3dkwHkpKeAxqjlghVflQwo8cq6jS_sm-erM,199
|
|
76
78
|
caselawclient/xquery/xslt_transform.xqy,sha256=smyFFxqmtkuOzBd2l7uw6K2oAsYctudrP8omdv_XNAM,2463
|
|
77
79
|
caselawclient/xquery_type_dicts.py,sha256=kybL-YzwK34Fr6MeWfqVOJHYrs0ZNeDWXDsp8o2Yb1U,6114
|
|
78
|
-
ds_caselaw_marklogic_api_client-
|
|
79
|
-
ds_caselaw_marklogic_api_client-
|
|
80
|
-
ds_caselaw_marklogic_api_client-
|
|
81
|
-
ds_caselaw_marklogic_api_client-
|
|
80
|
+
ds_caselaw_marklogic_api_client-29.0.0.dist-info/LICENSE.md,sha256=fGMzyyLuQW-IAXUeDSCrRdsYW536aEWThdbpCjo6ZKg,1108
|
|
81
|
+
ds_caselaw_marklogic_api_client-29.0.0.dist-info/METADATA,sha256=x0GZ0GgA91sa_O9Eq2aal3FONl6Vs2lknsPdrPUmlzE,4272
|
|
82
|
+
ds_caselaw_marklogic_api_client-29.0.0.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
|
83
|
+
ds_caselaw_marklogic_api_client-29.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|