Skip to content

Commit

Permalink
merge CAPCitation and CAPCitationTo schemas
Browse files Browse the repository at this point in the history
  • Loading branch information
mscarey committed May 5, 2021
1 parent c7e0a26 commit 7c97775
Show file tree
Hide file tree
Showing 6 changed files with 377 additions and 28 deletions.
5 changes: 0 additions & 5 deletions authorityspoke/decisions.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,6 @@
class CAPCitation:
cite: str
reporter: Optional[str] = None


@dataclass
class CAPCitationTo:
cite: str
case_ids: List[int] = field(default_factory=list)


Expand Down
20 changes: 4 additions & 16 deletions authorityspoke/io/schemas_json.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from legislice.schemas import EnactmentSchema
from nettlesome.schemas import PredicateSchema, EntitySchema, RawFactor

from authorityspoke.decisions import CAPCitation, CAPCitationTo, Decision
from authorityspoke.decisions import CAPCitation, Decision
from authorityspoke.evidence import Exhibit, Evidence
from nettlesome.factors import Factor
from authorityspoke.facts import Fact
Expand All @@ -44,27 +44,15 @@ class CAPCitationSchema(Schema):

__model__ = CAPCitation
cite = fields.Str()
reporter = fields.Str(data_key="type")
reporter = fields.Str(data_key="type", missing=None)
case_ids = fields.List(fields.Int(), allow_none=True)

@post_load
def make_object(self, data: RawCAPCitation, **kwargs) -> CAPCitation:
"""Load citation."""
return self.__model__(**data)


class CAPCitationToSchema(Schema):
"""Schema for Decision citations in CAP API response."""

__model__ = CAPCitationTo
cite = fields.Str()
case_ids = fields.List(fields.Int())

@post_load
def make_object(self, data: RawCAPCitation, **kwargs) -> CAPCitation:
"""Load citation."""
return self.__model__(cite=data["cite"])


class OpinionSchema(Schema):
"""Schema for Opinions, of which there may be several in one Decision."""

Expand Down Expand Up @@ -102,7 +90,7 @@ class DecisionSchema(Schema):
# reporter = fields.Str(missing=None)
# volume = fields.Str(missing=None)
id = fields.Int()
cites_to = fields.Nested(CAPCitationToSchema, many=True, missing=list)
cites_to = fields.Nested(CAPCitationSchema, many=True, missing=list)

class Meta:
unknown = EXCLUDE
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
interactions:
- request:
body: null
headers:
Accept:
- '*/*'
Accept-Encoding:
- gzip, deflate
Connection:
- keep-alive
User-Agent:
- python-requests/2.25.1
method: GET
uri: https://api.case.law/v1/cases/3675682/
response:
body:
string: !!binary |
H4sIAAAAAAAC/41Wa2vjRhT9K4Og0FJHnvfD33azaRuabmGdQKEsZiyNYnUVSejhbAj5770jWU6k
TRQHYssz5565c+aM7n0M0jhYMamE1HQRtFUWrIJd05T1arm0ZRpGtnZhZu+Xe7L0z/XyAF4GiyC3
dw7wf17+9fHL3ze//4H2Ibr5fHl98Qmtrz9cX6wPmI3dbiu3T22TFrkPSO+2VdHe7rqAPG1cjNaN
bVwNAbGL0hpwmxgGAEwxVmeEnhHsJ4vom2s2eXu3dRVMfi5ChOWZZMzPJmlVN5vS3vo4LWAks88D
hEgYidKmS6MOVv8+Bs1D6aeKJEmj1Gb9vB8RgqKbcB0ioHlaHIGlrWyWuRdAIg26CtFFHCIaI67J
O3CqEbCeNyESQr/E7l0eF9Uz0u+7T+Hq4p/LNSIMazoXsD7/9BF1asF/8PR1EeyLrPUn9PjOwfY4
OFqKOSdYGcWV1P6E+5lnvUEWGN3aKipiv+Y4ArILKlcWVePB7606IOul0cwvlrRZtjl4auQK9KWD
end4uwIcFoqKtmreX6WD1cu2Xr5hRi8xTNVZewu/2uMiGJujw9dtWbk7h849GSoS1OzcxLiQ0X9t
ldZxGvXEj/3VOpBssiK/ne4reO/GvWQc9vAy0fsdsGVpDZTBKrFZ7Y4pd9t66s1Rb5qis/tgbs7A
Wd6HlPp745fcpLG/EsJQoSX96n02RS+QbRADb40iRlBBDsSM6TGMCcUwxjPElM0QEzlkrPmEmCrN
1Nu8lIu3eTnH6DfINkaSTmCaGC1e3VyfrtAn6HCAkpOhfE7dQYR+X+YUvXqonmEl+qDs+dsYSk7A
nMAjGD6AOJ3IZzhhWpoZaeSc4JwO/jBy4mgtNeZkjDYDWuGpTQWTkzQmsvMZOzF2sJOYHI7WhKiR
S7kYrPdjEhjgnI7R8oAmbMrNmKDwIh7B5UDO2OTsoX5zTdkIrfiQNpncAqEIJVKP9MC0R3d6wLZO
d7fAM9CBFijFRGMoO5JNTmV8yeXcqcjBvkJNYIRQYzAZvz7w0aRTpSWlkhjxah6g9FQ7rTll/PUX
JCFk5v4SfyIOeooPZfm936Iy5lQ8YH+4K9AOJFWRN9A0bMZFx1M8Vx0oMqD2UouuIg8RZZzMRsH8
sTE8dnc/UbwP4aOvefDQV70FPMESfgJqFHxp4YegkYLPKz8AzRR8Uh8CDVU3SbWP98PQOnUEfuBn
3+78EsLqkGzpq7q797tdBDa32UOd1r4OR7aKU/idNg/BiiipQJqdrTbQGuTQQQiqiVgEReRH8iSN
XR6BpjhURAMrNI+Vzb95osoCOw8Vx5A0Z1gqKblwZxjCS1dFLm/SrAs18CcMgb4UXltdu1LvLBUS
BJQUKxcTwxxgOOXJ1kRxoiKFFWZWgtGJw5ZtmSVJtE0sczqC+yoT66g1wnusTu92tt75c1/JWFpr
nODKcCmx98h9UcXD5jTk+nTog9vSt9Rx11tScob5GcXXRK6IWDEaama4Mb9ivMI4ePofFOgXbhkM
AAA=
headers:
Accept-Ranges:
- bytes
Access-Control-Allow-Headers:
- Authorization
Access-Control-Allow-Origin:
- '*'
Age:
- '25380'
Allow:
- GET, HEAD, OPTIONS
CF-Cache-Status:
- HIT
CF-RAY:
- 64a73d6a2f8257f9-DFW
Cache-Control:
- s-maxage=86400, max-age=3600
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Length:
- '1142'
Content-Type:
- application/json
Date:
- Wed, 05 May 2021 04:31:33 GMT
Expect-CT:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Referrer-Policy:
- same-origin
Server:
- cloudflare
Set-Cookie:
- __cfduid=d71573467668bf5f6b54e092b17ec8ab41620189093; expires=Fri, 04-Jun-21
04:31:33 GMT; path=/; domain=.case.law; HttpOnly; SameSite=Lax
Strict-Transport-Security:
- max-age=15768000
Vary:
- Accept, Cookie, Accept-Encoding
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- DENY
cf-request-id:
- 09dc64b659000057f98c0bc000000001
status:
code: 200
message: OK
- request:
body: null
headers:
Accept:
- '*/*'
Accept-Encoding:
- gzip, deflate
Connection:
- keep-alive
User-Agent:
- python-requests/2.25.1
method: GET
uri: https://api.case.law/v1/cases/?cite=543+U.+S.+220
response:
body:
string: !!binary |
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
headers:
Accept-Ranges:
- bytes
Access-Control-Allow-Headers:
- Authorization
Access-Control-Allow-Origin:
- '*'
Age:
- '137'
Allow:
- GET, HEAD, OPTIONS
CF-Cache-Status:
- HIT
CF-RAY:
- 64a73d6aee180f16-DFW
Cache-Control:
- s-maxage=86400, max-age=3600
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Length:
- '2096'
Content-Type:
- application/json
Date:
- Wed, 05 May 2021 04:31:33 GMT
Expect-CT:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Referrer-Policy:
- same-origin
Server:
- cloudflare
Set-Cookie:
- __cfduid=d536949b8c5207c7155dda4c6cb6326b21620189093; expires=Fri, 04-Jun-21
04:31:33 GMT; path=/; domain=.case.law; HttpOnly; SameSite=Lax
Strict-Transport-Security:
- max-age=15768000
Vary:
- Accept, Cookie, Accept-Encoding
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- DENY
cf-request-id:
- 09dc64b6d100000f1629ae4000000001
status:
code: 200
message: OK
version: 1
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
interactions:
- request:
body: null
headers:
Accept:
- '*/*'
Accept-Encoding:
- gzip, deflate
Connection:
- keep-alive
User-Agent:
- python-requests/2.25.1
method: GET
uri: https://api.case.law/v1/cases/?cite=9+F.+Cas.+50
response:
body:
string: !!binary |
H4sIAAAAAAAC/+2VTW/jNhCG/4ogYIEWtSV+iRJ1S70JsMg2l2QPRbEwKImMWSuSQVJJgyD/vUPJ
duwgWSOLHnuII3He4Qxnho+e4rofOh+XZBZ36h946Ia2ncUbq+5NP7jdu1VuaD28/vUUmyYuMea0
4JTN4sG2cRmvvN+4Mk3lxiS1dCpp5UN6j9Pw7NKdOo0hirxT4HDx5fL8OrpPot/Pr26+nv+5tSxl
VYXQ0pu+CzKzVm6Uqc636hFkjaqNA+uykT7shAtSzFEWLH29Vn7ZDXeVsmBZQPDoqk8iNsuLTIJC
G+v8ciNvg2OGYKWVrxZq48fg01n94yZYeq1NbWQ72cOKiC6SCAIkEXg9f5/F9307hJM9najIpHMp
JYgxlLGMZzznoTKT5SV9AWuVtHXfhIDH+vg59GTTWx+kp2LulC4VjIRQGpq63HVCNcrKNhxGObCF
9oIMAsBoWH9691HmUmnXczdslJ3Xfo7Tdxp6ZtdJdB1kUD6fgMq1wy0Yjt13eWBK9iMzepneRosQ
MOp15FcqulHWGt/bx7AAu8vOSRfK8/dgjWtMPQWexjYM7JhV23e3UzaT/tQcH242HjU9yhxeHlYw
GK1xXkEcbwe1zzscOSQUJsctfQ+DBfOibd951TXL48BB9BJZz+ExFWmGju7Q3nfT6B/6g/3FcbxL
nwi6T+Bne59m8Cjg7yKshXGGfxmCn1/Ctfo1gQ3iLQ3Uw5S47GT76IwLNX3obbPcEqQQUJGVJBmH
dCpUM1ToglWNUkLxutZVVWmOMnhpMFGcZRiRilWIyKJCKMvyQhSNrkSekzz0v68tbN1p06iuhjqi
hFEOVVxJuwuZMQQL0jYGcjL+MS5zDEmYu5V0q4CGktJMCCUIo0RoRFHow3jlh03AB7QqJojgOWJz
zG9wUWJUZnkiCoby/DeEShRcDpknyEeYJ8gR875efrm6jpSPZJuMVPt6trj84+zqXfq1a9NN/Gtl
vb6T3ZsAzPkc8TlFpxjITyOQ/iwCZ3vlRgJOWnWgxDTk7+uVhjzY/7wceVnXzRzmu3uPlItkkXyG
AoPkAJM7r11gIvL9fH3roNxNdA3dg4/mwth6MH5LSw3cDLj8DISywLFAy7C1AqTVg38XmOIYmEch
PkjNwR1Ac3Cvmall616g+S25/s+gOV3Cn4AmOG6v4B6b22v4NjfDKqaTbJz2T+MQTjjN+YdwSjgh
h0DNBWdFg/IaKybyTFKqtc4JFQ2wqhacSqwzjVCVIYobRgokcaEyTauCN7x4G6g5OQYqZkJAxwMM
rOzWISf45tbwrTDt6JFzIjhnhAC8gawwe1bCQUiCaYExRgzMGcNMzVH+/IrNHBXHcK6QRLqhotJF
IWmGfwBngm4wL3FWUpIUVECaOzh/f/4XZxZ7UsQKAAA=
headers:
Accept-Ranges:
- bytes
Access-Control-Allow-Headers:
- Authorization
Access-Control-Allow-Origin:
- '*'
Age:
- '4366'
Allow:
- GET, HEAD, OPTIONS
CF-Cache-Status:
- HIT
CF-RAY:
- 64a74ef80a609b7f-DFW
Cache-Control:
- s-maxage=86400, max-age=3600
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Length:
- '1058'
Content-Type:
- application/json
Date:
- Wed, 05 May 2021 04:43:32 GMT
Expect-CT:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Referrer-Policy:
- same-origin
Server:
- cloudflare
Set-Cookie:
- __cfduid=debb48845c6c5c119de2e5e22361377eb1620189812; expires=Fri, 04-Jun-21
04:43:32 GMT; path=/; domain=.case.law; HttpOnly; SameSite=Lax
Strict-Transport-Security:
- max-age=15768000
Vary:
- Accept, Cookie, Accept-Encoding
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- DENY
cf-request-id:
- 09dc6faf0700009b7fa5a01000000001
status:
code: 200
message: OK
version: 1

0 comments on commit 7c97775

Please sign in to comment.