Generates, filters, parses, and cleans data regarding the financial disclosures of judges in the American Judicial System

Overview

This repository contains code that gets data regarding financial disclosures from the Court Listener API

  • main.py: contains driver code that interacts with all the other files. Only file that should be run. When run it will grab all the data and populate output.csv with it
  • auth_token.py: Reads API authentication token.
  • AUTH_TOKEN.txt: Contains API authentication token. Obtain yours from here and paste it into this file
  • fields.py: contains the code that grabs all the fields from every disclosure
  • lookups.py: contains some extra lookup tables (aside form the ones embedded in fields.py) for the values returned from the API
  • utils.py: contains some utility functions
  • requirements.txt: contains the list of dependencies used. Install them by running pip install -r requirements.txt
  • README.txt: readme in txt format

Overview

Every year judges file a financial disclosure form as mandated by law. Courtlistener parses these forms which are PDFs into their database. Here is an example of one of the unederlying forms that will help me explain what every row in our data is: https://storage.courtlistener.com/us/federal/judicial/financial-disclosures/9529/patricia-a-sullivan-disclosure.2019.pdf Disclosures are seperated into certain categories, such as positions, or investments. Each individual listing under a certain type of disclosure, is a row in our data. So if you look at that PDF, Member and Officer at Board of Directors of Roger Williams University School of Law, would be the basis for one row. If you scroll down to investments, MFS Investment Management (Educational Funds) (H), would also be the basis for one row. For that row, the fields listed below under Disclosure Fields -> Investments will all be filled out (unless they are not present in the courtlistner database). The Common Fields and Person Fields will also be filled out. Person fields are fields unique to the judge, and common fields unique to the report. So for the two example rows, the common fields and person fields would remain constant (as the judge and report are the same), but the disclosure fields will be different. For the first one, the fields under Disclosure Fields -> Positions will be filled out, with the rest of the disclosure fields empty, and for the second one the fields under Disclosure Fields -> Investments would be filled out.

=============
Common Fields
=============



sha1: SHA1 hash of the generated PDF
is_amended: Is disclosure amended?
Disclosure PDF: PDF of the original filed disclosure
Year Disclosed: Date of judicial agreement.
report_type: Financial Disclosure report type
addendum_redacted: Is the addendum partially or completely redacted?
Disclosure Type: Type of the disclosure, (investments, debts, etc)

=============
Disclosure Fields
=============


Note: Depending on the Disclosure Type field above, the corresponding fields will be filled in for the row


agreements:
        date_raw: Date of judicial agreement.
        parties_and_terms: Parties and terms of agreement (ex. Board Member NY Ballet)
        redacted: Does the agreement row contain redaction(s)?
        financial_disclosure: The financial disclosure associated with this agreement.
        id: ID of the record.
        date_created: The moment when the item was created.
        date_modified: The last moment when the item was modified. A value in year 1750 indicates the value is unknown

debts:
        creditor_name: Liability/Debt creditor
        description: Description of the debt
        value_code: Form code for the value of the judicial debt, substituted with the numerical values of the range.
        value_code_max: The maximum value of the value_code.
        redacted: Does the debt row contain redaction(s)?
        id: ID of the record
        date_created: The moment when the item was created.
        date_modified: The last moment when the item was modified. A value in year 1750 indicates the value is unknown

gifts:
        source: Source of the judicial gift. (ex. Alta Ski Area).
        description: Description of the gift (ex. Season Pass).
        value: Value of the judicial gift, (ex. $1,199.00)
        redacted: Does the gift row contain redaction(s)?
        id: ID of the record
        date_created: The moment when the item was created.
        date_modified: The last moment when the item was modified. A value in year 1750 indicates the value is unknown

investments:
        page_number: The page number the investment is listed on.  This is used to generate links directly to the PDF page.
        description: Name of investment (ex. APPL common stock).
        redacted: Does the investment row contains redaction(s)?
        income_during_reporting_period_code: Increase in investment value - as a form code. Substituted with the numerical values of the range.
        income_during_reporting_period_code_max: Maximum value of income_during_reporting_period_code.
        income_during_reporting_period_type: Type of investment (ex. Rent, Dividend). Typically standardized but not universally.
        gross_value_code: Investment total value code at end of reporting period as code (ex. J (1-15,000)). Substituted with the numerical values of the range.
        gross_value_code_max: Maximum value of the gross_value_code.
        gross_value_method: Investment valuation method code (ex. Q = Appraisal)
        transaction_during_reporting_period: Transaction of investment during reporting period (ex. Buy, Sold)
        transaction_date_raw: Date of the transaction, if any (D2)
        transaction_date: Date of the transaction, if any (D2)
        transaction_value_code: Transaction value amount, as form code (ex. J (1-15,000)). Substituted with the numerical values of the range.
        transaction_value_code_max: Maximum value of transaction_value_code.
        transaction_gain_code: Gain from investment transaction if any (ex. A (1-1000)). Substituted with the numerical values of the range.
        transaction_gain_code_max: Maximum value of transaction_gain_code.
        transaction_partner: Identity of the transaction partner
        has_inferred_values: If the investment name was inferred during extraction. This is common because transactions usually list the first purchase of a stock and leave the name value blank for subsequent purchases or sales.
        id: ID of the record
        date_created: The moment when the item was created.
        date_modified: The last moment when the item was modified. A value in year 1750 indicates the value is unknown

non_investment_incomes:
        date_raw: Date of non-investment income (ex. 2011).
        source_type: Source and type of non-investment income for the judge (ex. Teaching a class at U. Miami).
        income_amount: Amount earned by judge, often a number, but sometimes with explanatory text (e.g. 'Income at firm: $xyz').
        redacted: Does the non-investment income row contain redaction(s)?
        id: ID of the record
        date_created: The moment when the item was created.
        date_modified: The last moment when the item was modified. A value in year 1750 indicates the value is unknown

positions:
        non judiciary position: Position title (ex. Trustee).
        organization_name: Name of organization or entity (ex. Trust #1).
        redacted: Does the position row contain redaction(s)?
        id: ID of the record
        date_created: The moment when the item was created.
        date_modified: The last moment when the item was modified. A value in year 1750 indicates the value is unknown

reimbursements:
        id: ID of the record
        date_created: The moment when the item was created.
        date_modified: The last moment when the item was modified. A value in year 1750 indicates the value is unknown
        source: Source of the reimbursement (ex. FSU Law School).
        date_raw: Dates as a text string for the date of reimbursements. This is often conference dates (ex. June 2-6, 2011). 
        location: Location of the reimbursement (ex. Harvard Law School, Cambridge, MA).
        purpose: Purpose of the reimbursement (ex. Baseball announcer).
        items_paid_or_provided: Items reimbursed (ex. Room, Airfare).
        redacted: Does the reimbursement contain redaction(s)?

spouse_incomes:
        id: ID of the record
        date_created: The moment when the item was created.
        date_modified: The last moment when the item was modified. A value in year 1750 indicates the value is unknown
        source_type: Source and type of income of judicial spouse (ex. Salary from Bank job).
        redacted: Does the spousal-income row contain redaction(s)?
        date_raw: Date of spousal income (ex. 2011).


=============
Person Fields
=============


fjc_id: The ID of a judge as assigned by the Federal Judicial Center.
Date of Birth: The date of birth for the person
name_last: The last name of this person
political_affiliations: Political affiliations for the judge. Variable length so combined by a comma
Death Country: The country where the person died.
Birth City: The city where the person was born.
name_suffix: Any suffixes that this person's name may have
aba_ratings: American Bar Association Ratings. Variable length so combined by a comma
name_first: The first name of this person.
Death State: The state where the person died.
sources: Sources about the person. Variable length so combined with a newline
Birth Country: The country where the person was born.
cl_id: A unique identifier for judge, also indicating source of data.
gender: The person's gender
name_middle: The middle name or names of this person
ftm_eid: The ID of a judge as assigned by the Follow the Money database.
Death City: The city where the person died.
positions: Positions of person. Variable length so combined with a newline
ftm_total_received: The amount of money received by this person and logged by Follow the Money.
Date of Death: The date of death for the person
religion: The religion of a person
educations: Educations of the person. Variable length so combined by a comma
bachelor school: Name of the school from which they got their Bachelor's degree, and/or Bachelor's of Law degree. Variable length so combined by a comma
juris doctor school: name of the school from which they got their jusris doctor degree. their Bachelor's degree, and/or Bachelor's of Law degree. Variable length so combined by a comma
race: Race of the person. Variable length so combined by a comma
Birth State: The state where the person was born.


You might also like...
advance python series: Data Classes, OOPs, python

Working With Pydantic - Built-in Data Process ========================== Normal way to process data (reading json file): the normal princiople, it's f

A Python library for setting up projects using tabular data.

A Python library for setting up projects using tabular data. It can create project folders, standardize delimiters, and convert files to CSV from either individual files or a directory.

An open source utility for creating publication quality LaTex figures generated from OpenFOAM data files.

foamTEX An open source utility for creating publication quality LaTex figures generated from OpenFOAM data files. Explore the docs » Report Bug · Requ

Python code for working with NFL play by play data.

nfl_data_py nfl_data_py is a Python library for interacting with NFL data sourced from nflfastR, nfldata, dynastyprocess, and Draft Scout. Includes im

This contains timezone mapping information for when preprocessed from the geonames data

when-data This contains timezone mapping information for when preprocessed from the geonames data. It exists in a separate repository so that one does

Quick tutorial on orchest.io that shows how to build multiple deep learning models on your data with a single line of code using python
Quick tutorial on orchest.io that shows how to build multiple deep learning models on your data with a single line of code using python

Deep AutoViML Pipeline for orchest.io Quickstart Build Deep Learning models with a single line of code: deep_autoviml Deep AutoViML helps you build te

Soccerdata - Efficiently scrape soccer data from various sources
Soccerdata - Efficiently scrape soccer data from various sources

SoccerData is a collection of wrappers over soccer data from Club Elo, ESPN, FBr

DataAnalysis: Some data analysis projects in charles_pikachu
DataAnalysis: Some data analysis projects in charles_pikachu

DataAnalysis DataAnalysis: Some data analysis projects in charles_pikachu You can star this repository to keep track of the project if it's helpful fo

Code for our SIGIR 2022 accepted paper : P3 Ranker: Mitigating the Gaps between Pre-training and Ranking Fine-tuning with Prompt-based Learning and Pre-finetuning

P3 Ranker Implementation for our SIGIR2022 accepted paper: P3 Ranker: Mitigating the Gaps between Pre-training and Ranking Fine-tuning with Prompt-bas

Owner
Ali Rastegar
Hi
Ali Rastegar
Valentine-with-Python - A Python program generates an animation of a heart with cool texts of your loved one

Valentine with Python Valentines with Python is a mini fun project I have coded.

Niraj Tiwari 4 Dec 31, 2022
Obmovies - A short guide on setting up the system and environment dependencies required for ob's Movies database

Obmovies - A short guide on setting up the system and environment dependencies required for ob's Movies database

null 1 Jan 4, 2022
graphical orbitational simulation of solar system planets with real values and physics implemented so you get a nice elliptical orbits. you can change timestamp value or scale from source code idc.

solarSystemOrbitalSimulation graphical orbitational simulation of solar system planets with real values and physics implemented so you get a nice elli

Mega 3 Mar 3, 2022
Data-Scrapping SEO - the project uses various data scrapping and Google autocompletes API tools to provide relevant points of different keywords so that search engines can be optimized

Data-Scrapping SEO - the project uses various data scrapping and Google autocompletes API tools to provide relevant points of different keywords so that search engines can be optimized; as this information is gathered, the marketing team can target the top keywords to get your company’s website higher on a results page.

Vibhav Kumar Dixit 2 Jul 18, 2022
Mayan EDMS is a document management system.

Mayan EDMS is a document management system. Its main purpose is to store, introspect, and categorize files, with a strong emphasis on preserving the contextual and business information of documents. It can also OCR, preview, label, sign, send, and receive thoses files.

null 3 Oct 2, 2021
Software engineering course project. Secondhand trading system.

PigeonSale Software engineering course project. Secondhand trading system. Documentation API doumenatation: list of APIs Backend documentation: notes

Harry Lee 1 Sep 1, 2022
Build AGNOS, the operating system for your comma three

agnos-builder This is the tool to build AGNOS, our Ubuntu based OS. AGNOS runs on the comma three devkit. NOTE: the edk2_tici and agnos-firmare submod

comma.ai 21 Dec 24, 2022
BakTst_Org is a backtesting system for quantitative transactions.

BakTst_Org 中文reademe:传送门 Introduction: BakTst_Org is a prototype of the backtesting system used for BTC quantitative trading. This readme is mainly di

null 18 May 8, 2021
Fully reproducible, Dockerized, step-by-step, tutorial on how to mock a "real-time" Kafka data stream from a timestamped csv file. Detailed blog post published on Towards Data Science.

time-series-kafka-demo Mock stream producer for time series data using Kafka. I walk through this tutorial and others here on GitHub and on my Medium

Maria Patterson 26 Nov 15, 2022
A tutorial for people to run synthetic data replica's from source healthcare datasets

Synthetic-Data-Replica-for-Healthcare Description What is this? A tailored hands-on tutorial showing how to use Python to create synthetic data replic

null 11 Mar 22, 2022