Metadata-Version: 2.1
Name: followthemoney
Version: 3.7.2
Home-page: https://followthemoney.tech/
Author: Organized Crime and Corruption Reporting Project
Author-email: data@occrp.org
License: MIT
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: babel<3.0.0,>=2.14.0
Requires-Dist: pyyaml<7.0.0,>=5.0.0
Requires-Dist: types-PyYAML
Requires-Dist: sqlalchemy2-stubs
Requires-Dist: banal<1.1.0,>=1.0.6
Requires-Dist: rigour<1.0.0,>=0.6.1
Requires-Dist: click<9.0.0,>=8.0
Requires-Dist: stringcase<2.0.0,>=1.2.0
Requires-Dist: requests<3.0.0,>=2.21.0
Requires-Dist: normality<3.0.0,>=2.4.0
Requires-Dist: sqlalchemy<3.0.0,>=1.4.49
Requires-Dist: countrynames<2.0.0,>=1.13.0
Requires-Dist: prefixdate<1.0.0,>=0.4.0
Requires-Dist: fingerprints<2.0.0,>=1.0.1
Requires-Dist: phonenumbers<9.0.0,>=8.12.22
Requires-Dist: python-stdnum<2.0.0,>=1.16
Requires-Dist: pytz>=2021.1
Requires-Dist: rdflib<7.1.0,>=6.2.0
Requires-Dist: networkx<3.4,>=2.5
Requires-Dist: openpyxl<4.0.0,>=3.0.5
Requires-Dist: orjson<4.0,>=3.7
Provides-Extra: dev
Requires-Dist: pip>=10.0.0; extra == "dev"
Requires-Dist: bump2version; extra == "dev"
Requires-Dist: wheel>=0.29.0; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: types-PyYAML; extra == "dev"
Requires-Dist: types-requests; extra == "dev"
Requires-Dist: types-setuptools; extra == "dev"
Requires-Dist: types-openpyxl; extra == "dev"
Requires-Dist: flake8>=2.6.0; extra == "dev"
Requires-Dist: transifex-client; extra == "dev"
Requires-Dist: responses>=0.9.0; extra == "dev"
Requires-Dist: coverage>=4.1; extra == "dev"
Requires-Dist: recommonmark>=0.4.0; extra == "dev"

# Follow the Money

[![ftm-build](https://github.com/alephdata/followthemoney/actions/workflows/build.yml/badge.svg)](https://github.com/alephdata/followthemoney/actions/workflows/build.yml)

This repository contains a pragmatic data model for the entities most
commonly used in investigative reporting: people, companies, assets,
payments, court cases, etc.

The purpose of this is not to model reality in an ideal data model, but
rather to have a working data structure for researchers.

`followthemoney` also contains code used to validate and normalize many
of the elements of data, and to map tabular data into the model.

## Documentation

For a general introduction to `followthemoney`, check the high-level introduction:

* https://followthemoney.tech

Part of this package is a command-line tool that can be used to process and
transform data in various ways. You can find a tutorial here:

* https://followthemoney.tech/docs/cli/

Besides the introductions, there is also a full reference documentation for the
library and the contained ontology: 

* https://followthemoney.tech/explorer/

There's also a number of viewers for the RDF schema definitions generated
from FollowTheMoney, e.g.:

* [LODE documentation](http://150.146.207.114/lode/extract?url=https%3A%2F%2Falephdata.github.io%2Ffollowthemoney%2Fns%2Fftm.xml&owlapi=true&imported=true&lang=en)
* [WebVOWL](https://service.tib.eu/webvowl/#iri=https://alephdata.github.io/followthemoney/ns/ftm.xml)
* RDF/OWL specification in [XML](https://alephdata.github.io/followthemoney/ns/ftm.xml).

## Development environment

For local development with a virtualenv:

```bash
python3 -mvenv .env
source .env/bin/activate
pip install -e ".[dev]"
```

Now you can run the tests with

```bash
make test
```

## Releasing

We release a lot of version of `followthemoney` because even small changes
to the code base require a pypi release to begin being used in `aleph`. To
this end, here's the steps for making a release:

```bash
git pull --rebase
make build
make test
git add . && git commit -m "Updating translation files"
bumpversion patch
git push --atomic origin main $(git describe --tags --abbrev=0)
```

This will create a new patch release and upload a distribution of it. If
the changes are more significant, you can run `bumpversion` with the `minor`
or `major` arguments.

When the schema is updated, please update the docs, ideally including the
diagrams. For the RDF namespace and JavaScript version of the model, 
run `make generate`.
