0.9.1 (2022-07-15)

  • update eyecite and lxml dependencies to avoid Python 3.10 build error

  • add 3.10 to supported Python versions

0.9.0 (2021-10-27)

  • replace marshmallow serializers with pydantic

  • add OpinionReading methods for getting anchored terms/passages

  • add OpinionReading.anchored factors property

  • add AnchoredHoldings.add_enactment method

  • add AnchoredHoldings.insert_term method

  • rename AnchoredHoldings.insert_term to add_term

  • fix bug in “ignore” parameter to collect_mentioned data loading function

  • fix bug: wrong function was used to expand text in enactment test data

  • import CaseBody and CaseData models from Justopinion

  • bump legislice dependency to 0.7.0

  • bump anchorpoint dependency to 0.7.0

  • remove marshmallow and marshmallow-oneofschema dependencies

  • remove apispec and apispec-oneofschema dependencies

  • remove enactment_index module

  • remove downloads module

  • remove schemas_yaml module

  • remove EnactmentIndex class

  • remove OpinionReading.implies_other_holdings method

  • remove load_anchored_holdings function

  • remove load_rules_with_index function

  • remove collect_enactment_anchors function

  • remove read_fact function

  • remove TextLinkDict type annotation

0.8.1 (2021-09-18)

  • limit version range for Legislice import

0.8.0 (2021-08-12)

  • import Opinion, Decision, and Court data classes from Justopinion package

  • depend on Justopinion package to download caselaw with CAPClient class

  • Holdings of an Opinion are now stored on an OpinionReading, not on the Opinion

  • read_decision function now makes a DecisionReading, not a Decision

  • install with, not setup.cfg

  • fix error in Opinion.explain_contradiction(HoldingGroup)

0.7.2 (2021-06-16)

  • accept added fields in CAPCitation schema

  • change method for FakeEnactment finding file

0.7.1 (2021-06-15)

  • change “quotes” schema field names to “anchors”

  • add doctests to documentation

  • update example in readme to work with current version

  • use new Eyecite API changing “base_citation” to “corrected_citation”

0.7.0 (2021-05-20)

  • remove Enactment download functions (use Legislice download client instead)

  • remove Opinion download functions (use CAPClient class instead)

  • use different Legislice schema imports for JSON and YAML

  • move fake download client to separate module

  • add read methods to CAP opinion download client

  • add read methods to CAPClient

  • DecisionSchema can accept months instead of dates

  • merge CAPCitation and CAPCitationTo schemas

  • Holding has separate add_enactment and with_enactment methods

  • Rule has separate add_enactment and with_enactment methods

  • Rule has separate add_factor and with_factor methods

  • Procedure has separate add_factor and with_factor methods

  • increase versions of Nettlesome and Legislice dependencies

  • add CAPClient to top level of package

  • add “Creating and Loading Holding Data” documentation page

  • Rules select all text of Enactments without selected text only during init, not during schema load

  • change field name from “quotes” to “anchors” in YAML import files

  • fix bug: dump methods couldn’t find Decision and Opinion schemas

0.6.0 (2021-04-09)

  • Comparison methods use Explanations instead of ContextRegisters

  • Remove io/anchors module

  • Remove “factors” module that conflicted with Nettlesome module of same name

  • Add Fact.negated method

  • Remove “role” param for Procedure.add_factor

  • Rules can be added even if one of the operands has more Enactments

  • Procedure.recursive_terms doesn’t include FactorGroups

  • Procedure.terms doesn’t include FactorGroups

  • Add comparable_with methods

  • Decision is no longer a dataclass

  • remove context param from Opinion comparisons

  • handle Opinion.explanations_implication(HoldingGroup)

  • Increase minimum Nettlesome version to 0.5.0

0.5.1 (2021-03-08)

  • Import Nettlesome library as dependency

  • Remove “anchors” fields from Factors in AuthoritySpoke Holding API Schema

0.5.0 (2021-01-25)

  • Predicate.content attribute no longer includes an extra placeholder for a “quantity”

  • Predicate.content attribute must be a valid Python string template

  • Rename “context_factors” field to “terms”

  • Rely on Predicate placeholder names to label terms as interchangeable

  • Remove Predicate.reciprocal field used to label terms as interchangeable

  • Add Comparable class for Predicate with a numeric comparison

  • Rename Comparable.quantity to Comparable.expression

  • Comparable.expression can be a

0.4.1 (2021-01-02)

  • Increase minimum Legislice version to 0.4.1

  • Remove read_enactments and read_enactment. Use Legislice’s download client or schema instead.

0.4.0 (2020-08-26)

  • Create ComparableGroup class for unordered Factor collections

  • Create FactorSequence class for ordered Factor collections

  • Eliminate Analogy class, moving its methods to FactorGroup and FactorSequence

  • Add Factor.consistent_with method to search for available context avoiding contradiction

  • Add “or” operator for FactorGroup

  • Integrate Legislice API client for retrieving text from US Constitution and US Code

  • Remove functions for loading legislation text from XML files. Use API client instead.

  • Delete classes for accessing XML legislation files: Code, Regime, and Jurisdiction

0.3.4 (2020-01-02)

  • Create broader conditions for Procedure.contradicts()

0.3.3 (2020-01-01)

  • Add to utils folder

0.3.2 (2020-01-01)

  • Publish repo’s utils folder as part of AuthoritySpoke package

0.3.1 (2020-01-01)

  • Fix bug where some types of cross-references caused loading of Holdings from JSON to fail

  • Update case download function because Case Access Project API no longer includes “casebody” field in all responses from cases endpoint

  • new_context function can use string to find Factor to be replaced

  • Enactment URIs can target a chapeau or continuation

  • Fix bug that created [multiple pint Unit Registries](

0.3.0 (2019-12-07)

  • Enactments may choose text by section without a TextQuoteSelector

  • Remove “regime” parameter from Enactment

  • Add data serialization using [Marshmallow](

  • Migrate JSON data loading functions to Marshmallow

  • Add Decision class containing Opinions

  • Add Explanation class to clarify relationships between Holdings

  • Improve readability of string representations of objects

  • Move text selectors to separate [anchorpoint]( library

  • Add [apispec]( schema specification for Holding input JSON files

0.2.0 (2019-09-24)

  • Merge ProceduralRule class with Rule

  • Split aspects of Rule into a separate Holding class

  • Use Selectors to anchor Holdings to Opinion text

  • Ignore was/were differences in Predicate content text

  • Let input JSON label a Rule as the “exclusive” way to get output

  • Create addition operator for Factors, Rules, and Holdings

  • Let Rule init method handle the necessary Procedure init method

  • Use addition operator to add Factors as Rule inputs

  • Use addition operator to add Enactments to Rules

  • Create function to consolidate list of Enactments

  • Add Union operator for Rules and Holdings

  • Move functions for loading objects from JSON and XML to new I/O modules

  • Add “explain” functions to show how generic Factors match up when a contradiction or implication exists

  • Add whitespace to __str__ methods for greater clarity

0.1.0 (2019-06-10)

  • Add Regime and Jurisdiction classes to organize Enactments

  • Add TextQuoteSelector class to select text from Enactments

  • Change Enactment init method to use TextQuoteSelectors


You can find open issues and current changes to AuthoritySpoke through its GitHub repo.


On Twitter, you can follow @authorityspoke or @mcareyaus for project updates.