followthemoney 1.3.7__py3-none-any.whl → 3.8.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.
- followthemoney/__init__.py +5 -3
- followthemoney/cli/__init__.py +17 -0
- followthemoney/cli/aggregate.py +56 -0
- followthemoney/cli/cli.py +88 -0
- followthemoney/cli/exports.py +121 -0
- followthemoney/cli/mapping.py +85 -0
- followthemoney/cli/sieve.py +67 -0
- followthemoney/cli/util.py +142 -0
- followthemoney/compare.py +130 -60
- followthemoney/exc.py +19 -6
- followthemoney/export/common.py +29 -0
- followthemoney/export/csv.py +82 -0
- followthemoney/export/excel.py +75 -0
- followthemoney/export/graph.py +79 -0
- followthemoney/export/neo4j.py +182 -0
- followthemoney/export/rdf.py +26 -0
- followthemoney/graph.py +308 -0
- followthemoney/helpers.py +212 -0
- followthemoney/mapping/__init__.py +1 -1
- followthemoney/mapping/csv.py +67 -35
- followthemoney/mapping/entity.py +116 -44
- followthemoney/mapping/property.py +90 -44
- followthemoney/mapping/query.py +27 -19
- followthemoney/mapping/source.py +15 -5
- followthemoney/mapping/sql.py +75 -61
- followthemoney/messages.py +13 -7
- followthemoney/model.py +108 -56
- followthemoney/namespace.py +119 -0
- followthemoney/offshore.py +48 -0
- followthemoney/ontology.py +77 -0
- followthemoney/property.py +204 -71
- followthemoney/proxy.py +455 -118
- followthemoney/rdf.py +9 -0
- followthemoney/schema/Address.yaml +78 -0
- followthemoney/schema/Airplane.yaml +17 -10
- followthemoney/schema/Analyzable.yaml +54 -0
- followthemoney/schema/Article.yaml +16 -0
- followthemoney/schema/Assessment.yaml +32 -0
- followthemoney/schema/Asset.yaml +10 -4
- followthemoney/schema/Associate.yaml +41 -0
- followthemoney/schema/Audio.yaml +24 -0
- followthemoney/schema/BankAccount.yaml +53 -9
- followthemoney/schema/Call.yaml +48 -0
- followthemoney/schema/CallForTenders.yaml +117 -0
- followthemoney/schema/Company.yaml +37 -12
- followthemoney/schema/Contract.yaml +41 -7
- followthemoney/schema/ContractAward.yaml +30 -11
- followthemoney/schema/CourtCase.yaml +16 -10
- followthemoney/schema/CourtCaseParty.yaml +17 -6
- followthemoney/schema/CryptoWallet.yaml +48 -0
- followthemoney/schema/Debt.yaml +37 -0
- followthemoney/schema/Directorship.yaml +17 -4
- followthemoney/schema/Document.yaml +72 -139
- followthemoney/schema/Documentation.yml +38 -0
- followthemoney/schema/EconomicActivity.yaml +32 -17
- followthemoney/schema/Email.yaml +76 -0
- followthemoney/schema/Employment.yaml +39 -0
- followthemoney/schema/Event.yaml +35 -3
- followthemoney/schema/Family.yaml +41 -0
- followthemoney/schema/Folder.yaml +13 -0
- followthemoney/schema/HyperText.yaml +21 -0
- followthemoney/schema/Identification.yaml +40 -0
- followthemoney/schema/Image.yaml +25 -0
- followthemoney/schema/Interest.yaml +3 -6
- followthemoney/schema/Interval.yaml +56 -5
- followthemoney/schema/LegalEntity.yaml +81 -20
- followthemoney/schema/License.yaml +7 -3
- followthemoney/schema/Membership.yaml +19 -4
- followthemoney/schema/Mention.yaml +54 -0
- followthemoney/schema/Message.yaml +73 -0
- followthemoney/schema/Note.yaml +23 -0
- followthemoney/schema/Occupancy.yaml +40 -0
- followthemoney/schema/Organization.yaml +38 -3
- followthemoney/schema/Ownership.yaml +16 -4
- followthemoney/schema/Package.yaml +17 -0
- followthemoney/schema/Page.yaml +43 -0
- followthemoney/schema/Pages.yaml +23 -0
- followthemoney/schema/Passport.yaml +15 -17
- followthemoney/schema/Payment.yaml +38 -7
- followthemoney/schema/Person.yaml +61 -5
- followthemoney/schema/PlainText.yaml +17 -0
- followthemoney/schema/Position.yaml +50 -0
- followthemoney/schema/Post.yaml +42 -0
- followthemoney/schema/Project.yaml +27 -0
- followthemoney/schema/ProjectParticipant.yaml +36 -0
- followthemoney/schema/PublicBody.yaml +14 -3
- followthemoney/schema/RealEstate.yaml +19 -3
- followthemoney/schema/Representation.yaml +17 -6
- followthemoney/schema/Sanction.yaml +44 -20
- followthemoney/schema/Security.yaml +59 -0
- followthemoney/schema/Similar.yaml +37 -0
- followthemoney/schema/Succession.yaml +36 -0
- followthemoney/schema/Table.yaml +32 -0
- followthemoney/schema/TaxRoll.yaml +27 -9
- followthemoney/schema/Thing.yaml +69 -13
- followthemoney/schema/Trip.yaml +42 -0
- followthemoney/schema/UnknownLink.yaml +17 -6
- followthemoney/schema/UserAccount.yaml +44 -0
- followthemoney/schema/Value.yaml +5 -1
- followthemoney/schema/Vehicle.yaml +25 -8
- followthemoney/schema/Vessel.yaml +18 -10
- followthemoney/schema/Video.yaml +20 -0
- followthemoney/schema/Workbook.yaml +18 -0
- followthemoney/schema.py +406 -135
- followthemoney/translations/ar/LC_MESSAGES/followthemoney.mo +0 -0
- followthemoney/translations/ar/LC_MESSAGES/followthemoney.po +2900 -787
- followthemoney/translations/bs/LC_MESSAGES/followthemoney.mo +0 -0
- followthemoney/translations/bs/LC_MESSAGES/followthemoney.po +2108 -520
- followthemoney/translations/de/LC_MESSAGES/followthemoney.mo +0 -0
- followthemoney/translations/de/LC_MESSAGES/followthemoney.po +2902 -782
- followthemoney/translations/es/LC_MESSAGES/followthemoney.mo +0 -0
- followthemoney/translations/es/LC_MESSAGES/followthemoney.po +2893 -779
- followthemoney/translations/fr/LC_MESSAGES/followthemoney.mo +0 -0
- followthemoney/translations/fr/LC_MESSAGES/followthemoney.po +4362 -0
- followthemoney/translations/fr/followthemoney.po +3861 -0
- followthemoney/translations/messages.pot +3021 -725
- followthemoney/translations/nb/LC_MESSAGES/followthemoney.mo +0 -0
- followthemoney/translations/nb/LC_MESSAGES/followthemoney.po +3778 -0
- followthemoney/translations/nl/LC_MESSAGES/followthemoney.mo +0 -0
- followthemoney/translations/nl/LC_MESSAGES/followthemoney.po +3837 -0
- followthemoney/translations/pt_BR/LC_MESSAGES/followthemoney.mo +0 -0
- followthemoney/translations/pt_BR/LC_MESSAGES/followthemoney.po +3784 -0
- followthemoney/translations/ru/LC_MESSAGES/followthemoney.mo +0 -0
- followthemoney/translations/ru/LC_MESSAGES/followthemoney.po +2837 -539
- followthemoney/translations/ru/followthemoney.po +4221 -0
- followthemoney/translations/tr/LC_MESSAGES/followthemoney.mo +0 -0
- followthemoney/translations/tr/LC_MESSAGES/followthemoney.po +2073 -491
- followthemoney/types/__init__.py +35 -17
- followthemoney/types/address.py +41 -21
- followthemoney/types/checksum.py +25 -0
- followthemoney/types/common.py +233 -88
- followthemoney/types/country.py +89 -56
- followthemoney/types/date.py +59 -76
- followthemoney/types/email.py +66 -35
- followthemoney/types/entity.py +66 -13
- followthemoney/types/gender.py +66 -0
- followthemoney/types/iban.py +47 -28
- followthemoney/types/identifier.py +49 -22
- followthemoney/types/ip.py +35 -21
- followthemoney/types/json.py +58 -0
- followthemoney/types/language.py +124 -37
- followthemoney/types/mimetype.py +44 -0
- followthemoney/types/name.py +56 -12
- followthemoney/types/number.py +30 -0
- followthemoney/types/phone.py +92 -34
- followthemoney/types/registry.py +52 -0
- followthemoney/types/string.py +43 -0
- followthemoney/types/topic.py +94 -0
- followthemoney/types/url.py +39 -17
- followthemoney/util.py +139 -45
- followthemoney-3.8.0.dist-info/METADATA +153 -0
- followthemoney-3.8.0.dist-info/RECORD +157 -0
- {followthemoney-1.3.7.dist-info → followthemoney-3.8.0.dist-info}/WHEEL +1 -2
- followthemoney-3.8.0.dist-info/entry_points.txt +17 -0
- followthemoney-1.3.7.dist-info/LICENSE.txt → followthemoney-3.8.0.dist-info/licenses/LICENSE +1 -1
- followthemoney/link.py +0 -75
- followthemoney/schema/Associate.yml +0 -19
- followthemoney/schema/Family.yml +0 -19
- followthemoney/schema/Land.yml +0 -9
- followthemoney/schema/Relationship.yaml +0 -26
- followthemoney/types/domain.py +0 -50
- followthemoney-1.3.7.dist-info/DESCRIPTION.rst +0 -3
- followthemoney-1.3.7.dist-info/METADATA +0 -39
- followthemoney-1.3.7.dist-info/RECORD +0 -108
- followthemoney-1.3.7.dist-info/entry_points.txt +0 -3
- followthemoney-1.3.7.dist-info/metadata.json +0 -1
- followthemoney-1.3.7.dist-info/namespace_packages.txt +0 -1
- followthemoney-1.3.7.dist-info/top_level.txt +0 -3
- ns/ontology.py +0 -128
- tests/types/test_addresses.py +0 -24
- tests/types/test_common.py +0 -32
- tests/types/test_countries.py +0 -27
- tests/types/test_dates.py +0 -73
- tests/types/test_domains.py +0 -23
- tests/types/test_emails.py +0 -32
- tests/types/test_entity.py +0 -19
- tests/types/test_iban.py +0 -109
- tests/types/test_identifiers.py +0 -27
- tests/types/test_ip.py +0 -29
- tests/types/test_languages.py +0 -23
- tests/types/test_names.py +0 -33
- tests/types/test_phones.py +0 -24
- tests/types/test_registry.py +0 -14
- tests/types/test_urls.py +0 -23
- {ns → followthemoney/export}/__init__.py +0 -0
- /tests/types/__init__.py → /followthemoney/py.typed +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: followthemoney
|
|
3
|
+
Version: 3.8.0
|
|
4
|
+
Summary: A data model for anti corruption data modeling and analysis.
|
|
5
|
+
Project-URL: Documentation, https://followthemoney.tech/
|
|
6
|
+
Project-URL: Repository, https://github.com/alephdata/followthemoney.git
|
|
7
|
+
Project-URL: Issues, https://github.com/alephdata/followthemoney/issues
|
|
8
|
+
Author-email: Organized Crime and Corruption Reporting Project <data@occrp.org>, OpenSanctions <info@opensanctions.org>
|
|
9
|
+
License: MIT License
|
|
10
|
+
|
|
11
|
+
Copyright (c) 2017-2024 Journalism Development Network, Inc.
|
|
12
|
+
|
|
13
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
14
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
15
|
+
in the Software without restriction, including without limitation the rights
|
|
16
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
17
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
18
|
+
furnished to do so, subject to the following conditions:
|
|
19
|
+
|
|
20
|
+
The above copyright notice and this permission notice shall be included in all
|
|
21
|
+
copies or substantial portions of the Software.
|
|
22
|
+
|
|
23
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
24
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
25
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
26
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
27
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
28
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
29
|
+
SOFTWARE.
|
|
30
|
+
License-File: LICENSE
|
|
31
|
+
Classifier: Intended Audience :: Developers
|
|
32
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
33
|
+
Classifier: Operating System :: OS Independent
|
|
34
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
35
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
36
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
37
|
+
Requires-Python: >=3.10
|
|
38
|
+
Requires-Dist: babel<3.0.0,>=2.14.0
|
|
39
|
+
Requires-Dist: banal<1.1.0,>=1.0.6
|
|
40
|
+
Requires-Dist: click<9.0.0,>=8.0
|
|
41
|
+
Requires-Dist: countrynames<2.0.0,>=1.13.0
|
|
42
|
+
Requires-Dist: fingerprints<2.0.0,>=1.0.1
|
|
43
|
+
Requires-Dist: networkx<3.5,>=2.5
|
|
44
|
+
Requires-Dist: normality<3.0.0,>=2.4.0
|
|
45
|
+
Requires-Dist: openpyxl<4.0.0,>=3.0.5
|
|
46
|
+
Requires-Dist: orjson<4.0,>=3.7
|
|
47
|
+
Requires-Dist: phonenumbers<9.0.0,>=8.12.22
|
|
48
|
+
Requires-Dist: prefixdate<1.0.0,>=0.4.0
|
|
49
|
+
Requires-Dist: python-stdnum<2.0.0,>=1.16
|
|
50
|
+
Requires-Dist: pytz>=2021.1
|
|
51
|
+
Requires-Dist: pyyaml<7.0.0,>=5.0.0
|
|
52
|
+
Requires-Dist: rdflib<7.2.0,>=6.2.0
|
|
53
|
+
Requires-Dist: requests<3.0.0,>=2.21.0
|
|
54
|
+
Requires-Dist: rigour<1.0.0,>=0.8.1
|
|
55
|
+
Requires-Dist: sqlalchemy2-stubs
|
|
56
|
+
Requires-Dist: sqlalchemy<3.0.0,>=1.4.49
|
|
57
|
+
Requires-Dist: stringcase<2.0.0,>=1.2.0
|
|
58
|
+
Requires-Dist: types-pyyaml
|
|
59
|
+
Provides-Extra: dev
|
|
60
|
+
Requires-Dist: build; extra == 'dev'
|
|
61
|
+
Requires-Dist: bump2version; extra == 'dev'
|
|
62
|
+
Requires-Dist: coverage>=4.1; extra == 'dev'
|
|
63
|
+
Requires-Dist: flake8>=2.6.0; extra == 'dev'
|
|
64
|
+
Requires-Dist: mypy; extra == 'dev'
|
|
65
|
+
Requires-Dist: pip>=10.0.0; extra == 'dev'
|
|
66
|
+
Requires-Dist: pytest; extra == 'dev'
|
|
67
|
+
Requires-Dist: pytest-cov; extra == 'dev'
|
|
68
|
+
Requires-Dist: recommonmark>=0.4.0; extra == 'dev'
|
|
69
|
+
Requires-Dist: responses>=0.9.0; extra == 'dev'
|
|
70
|
+
Requires-Dist: transifex-client; extra == 'dev'
|
|
71
|
+
Requires-Dist: twine; extra == 'dev'
|
|
72
|
+
Requires-Dist: types-openpyxl; extra == 'dev'
|
|
73
|
+
Requires-Dist: types-pyyaml; extra == 'dev'
|
|
74
|
+
Requires-Dist: types-requests; extra == 'dev'
|
|
75
|
+
Requires-Dist: types-setuptools; extra == 'dev'
|
|
76
|
+
Requires-Dist: wheel>=0.29.0; extra == 'dev'
|
|
77
|
+
Description-Content-Type: text/markdown
|
|
78
|
+
|
|
79
|
+
# Follow the Money
|
|
80
|
+
|
|
81
|
+
[](https://github.com/alephdata/followthemoney/actions/workflows/build.yml)
|
|
82
|
+
|
|
83
|
+
This repository contains a pragmatic data model for the entities most
|
|
84
|
+
commonly used in investigative reporting: people, companies, assets,
|
|
85
|
+
payments, court cases, etc.
|
|
86
|
+
|
|
87
|
+
The purpose of this is not to model reality in an ideal data model, but
|
|
88
|
+
rather to have a working data structure for researchers.
|
|
89
|
+
|
|
90
|
+
`followthemoney` also contains code used to validate and normalize many
|
|
91
|
+
of the elements of data, and to map tabular data into the model.
|
|
92
|
+
|
|
93
|
+
## Documentation
|
|
94
|
+
|
|
95
|
+
For a general introduction to `followthemoney`, check the high-level introduction:
|
|
96
|
+
|
|
97
|
+
* https://followthemoney.tech
|
|
98
|
+
|
|
99
|
+
Part of this package is a command-line tool that can be used to process and
|
|
100
|
+
transform data in various ways. You can find a tutorial here:
|
|
101
|
+
|
|
102
|
+
* https://followthemoney.tech/docs/cli/
|
|
103
|
+
|
|
104
|
+
Besides the introductions, there is also a full reference documentation for the
|
|
105
|
+
library and the contained ontology:
|
|
106
|
+
|
|
107
|
+
* https://followthemoney.tech/explorer/
|
|
108
|
+
|
|
109
|
+
There's also a number of viewers for the RDF schema definitions generated
|
|
110
|
+
from FollowTheMoney, e.g.:
|
|
111
|
+
|
|
112
|
+
* [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)
|
|
113
|
+
* [WebVOWL](https://service.tib.eu/webvowl/#iri=https://alephdata.github.io/followthemoney/ns/ftm.xml)
|
|
114
|
+
* RDF/OWL specification in [XML](https://alephdata.github.io/followthemoney/ns/ftm.xml).
|
|
115
|
+
|
|
116
|
+
## Development environment
|
|
117
|
+
|
|
118
|
+
For local development with a virtualenv:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
python3 -mvenv .env
|
|
122
|
+
source .env/bin/activate
|
|
123
|
+
pip install -e ".[dev]"
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Now you can run the tests with
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
make test
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Releasing
|
|
133
|
+
|
|
134
|
+
We release a lot of version of `followthemoney` because even small changes
|
|
135
|
+
to the code base require a pypi release to begin being used in `aleph`. To
|
|
136
|
+
this end, here's the steps for making a release:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
git pull --rebase
|
|
140
|
+
make build
|
|
141
|
+
make test
|
|
142
|
+
git add . && git commit -m "Updating translation files"
|
|
143
|
+
bumpversion patch
|
|
144
|
+
git push --atomic origin main $(git describe --tags --abbrev=0)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
This will create a new patch release and upload a distribution of it. If
|
|
148
|
+
the changes are more significant, you can run `bumpversion` with the `minor`
|
|
149
|
+
or `major` arguments.
|
|
150
|
+
|
|
151
|
+
When the schema is updated, please update the docs, ideally including the
|
|
152
|
+
diagrams. For the RDF namespace and JavaScript version of the model,
|
|
153
|
+
run `make generate`.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
followthemoney/__init__.py,sha256=-5MmNEJ1l81MQncQPSsLxZ-nf7ct3KDn1FrEZ5NRvNc,360
|
|
2
|
+
followthemoney/compare.py,sha256=1GFkCfTzA8QR0CH90kvySR8hvl9hQRUerW5Xw2Ivmpg,5134
|
|
3
|
+
followthemoney/exc.py,sha256=ynZs_UnTVxHR-iBfat_CpVLraYzVX5yLtVf5Ti14hl4,734
|
|
4
|
+
followthemoney/graph.py,sha256=VNDKrUBkz_-DmKsr5v-Xm8VfxzabnTwkU_MFk92_TjA,10848
|
|
5
|
+
followthemoney/helpers.py,sha256=Btb6BlHg_c-qCXZo-NP_LURKG-qu-QD3Fj1ev_c7Xic,7956
|
|
6
|
+
followthemoney/messages.py,sha256=zUEa9CFecU8nRafIzhN6TKCh1kEihiIyIS1qr8PxY4g,806
|
|
7
|
+
followthemoney/model.py,sha256=p4Bk0XPi9z7SKZVgG1FqeM2i45xwAlDIkHwyyUcDKk0,6426
|
|
8
|
+
followthemoney/namespace.py,sha256=qYplxKn5OO3zDMf3NItKwTwDsJOnski5JbeyhssqhR8,4434
|
|
9
|
+
followthemoney/offshore.py,sha256=Pf0tx-7GyhIZRueshDRqPNlxkHfGstmW5yNDID5Mnws,1060
|
|
10
|
+
followthemoney/ontology.py,sha256=7PEoUKISNpkRvVhuLeE3IE9ZiNtdR8mn9_kzZ9yF9l0,2986
|
|
11
|
+
followthemoney/property.py,sha256=zi9ss1v0e8Wmv-FuLtZd2aod5iTLfBekBxuOTgIOUMU,7718
|
|
12
|
+
followthemoney/proxy.py,sha256=M7RIPF0k-P3v7GYKYhRVVaO1cnUf5FArJepE-2c0KMQ,20033
|
|
13
|
+
followthemoney/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
+
followthemoney/rdf.py,sha256=_BzWiBc61UYjiyadvGKya4P4JlJfvZtNrn8SP2hC2JM,328
|
|
15
|
+
followthemoney/schema.py,sha256=Tk61vRmWaawW-1HOmu-hbYZtkD8it0fIvNtSRxBEQxA,16774
|
|
16
|
+
followthemoney/util.py,sha256=dMaCas9EjUPQ9q_a4qtV1pQOxWfxPjyjwR0e84XSN9c,4396
|
|
17
|
+
followthemoney/cli/__init__.py,sha256=Fl05wMr5-FlOSMRpmu1HJSNfPRpy8u9as5IRbGXdo4U,421
|
|
18
|
+
followthemoney/cli/aggregate.py,sha256=Gwfi5Bt1LCwqbpsCu4P1Cr-QJtCWhbaqgGEzfwJUUL4,2142
|
|
19
|
+
followthemoney/cli/cli.py,sha256=yrPw2iyKY-E-uRWe6KN9W3ayvz-22vfpe_ZeD0RiI0c,3591
|
|
20
|
+
followthemoney/cli/exports.py,sha256=HsTyIOz1KQSeObp9-9SKzSUBW158XOhpU5_Stv_2HWM,4016
|
|
21
|
+
followthemoney/cli/mapping.py,sha256=aEl57en0zu57yMA2AU5y01U5Yyqo_42hkMlAdfIQP08,3284
|
|
22
|
+
followthemoney/cli/sieve.py,sha256=Wh1UQxzyM9Gh60ooS4s4ydlW1b69bMzFM08tg8ttSIY,1940
|
|
23
|
+
followthemoney/cli/util.py,sha256=CFcS-PEwpMasMWX_Yg283O_PaAhcPwkvahFNWc13C8c,4769
|
|
24
|
+
followthemoney/export/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
+
followthemoney/export/common.py,sha256=_YrXrwsqmyboDZDhtJ_PazUUJYe1Y-Trqc9lz4YlVR8,991
|
|
26
|
+
followthemoney/export/csv.py,sha256=AvWgyWg0nICAVLv4k9QgWRlgJhJonKCjzlZkrahe5Tg,2633
|
|
27
|
+
followthemoney/export/excel.py,sha256=pj6zNpIbye_Zm3vhCamcqHEe9Fw-RyjtWQDCFY6608s,2645
|
|
28
|
+
followthemoney/export/graph.py,sha256=v0z1FgadyFk5aQ0A5q8E9R4fSO-Tpi5JU9YTDwnRKD8,2765
|
|
29
|
+
followthemoney/export/neo4j.py,sha256=JCLb1eW5FFIJXqmnpNMRzRs1KYuYkCtHZp7KJcu-JNY,7104
|
|
30
|
+
followthemoney/export/rdf.py,sha256=E6RiW7oIsJdaBaLAVm6o-MTokARZtqONPuayILqTqo0,786
|
|
31
|
+
followthemoney/mapping/__init__.py,sha256=iwNqzzvrzJNbNDlOCaDLlBTUrNTlnYHIB5cvo_-9oN4,82
|
|
32
|
+
followthemoney/mapping/csv.py,sha256=Tvc6VSh7-ca63LEE4G0yqOCeGMETkuKzUjIkVn4_d7Q,3185
|
|
33
|
+
followthemoney/mapping/entity.py,sha256=-x_VBHiVthIrZZ-PVKD3oBAq6LYcsyeYW-9TFv80k7M,5905
|
|
34
|
+
followthemoney/mapping/property.py,sha256=41V16HJh6da7oKdSJWyRcyMkx2XFd6iDm9-4PH7Wihw,5036
|
|
35
|
+
followthemoney/mapping/query.py,sha256=8M6bOlEX2p_bbVwEwTu_1slEtU0cfRJB7ajZp-F07CE,2622
|
|
36
|
+
followthemoney/mapping/source.py,sha256=sri-XpSjeHZbQtqNcz1eJYvwVSBNqGO5JwhWswiEx3c,649
|
|
37
|
+
followthemoney/mapping/sql.py,sha256=m3Ho8B2pFsg6q2zj-y55h0O3x9eb6wzjlPBQyZ6DVcI,4752
|
|
38
|
+
followthemoney/schema/Address.yaml,sha256=9cPZfkNiV-5fNfSzBFcE_dwD0V2_WLpGSLT6kL8GbuQ,1709
|
|
39
|
+
followthemoney/schema/Airplane.yaml,sha256=i3tI4INH6ZtKBqm09fAUtCbieFlha-vPfQURXMDZTIU,622
|
|
40
|
+
followthemoney/schema/Analyzable.yaml,sha256=WvyhjYqI7QzBt3qPDgO7MDasJH1qQtgQMToHkV_xtlU,1237
|
|
41
|
+
followthemoney/schema/Article.yaml,sha256=jTH63eP2aZ87W_6m8jS4R_btcrI46tYGeCEqKNLTwLU,266
|
|
42
|
+
followthemoney/schema/Assessment.yaml,sha256=-RH_aEz4xGejucRcwl45KVAnzSLeQ7zwJWguuKST3m0,630
|
|
43
|
+
followthemoney/schema/Asset.yaml,sha256=xQhHJJtnGLfiOaUncqGv4JR3Yn7l46yAg7p0hKFAFVE,260
|
|
44
|
+
followthemoney/schema/Associate.yaml,sha256=ijTHd6GDlK4lMtijdkTzERR9DODtqKk0XoZPlDEsUnI,901
|
|
45
|
+
followthemoney/schema/Audio.yaml,sha256=Eb1rZGUEOX7XDAj_1YIN28NCBzMvkopQBNwgHt_kS18,452
|
|
46
|
+
followthemoney/schema/BankAccount.yaml,sha256=Pvw9FxJYwwnJMoo3IblyPki9VRjLsM4F30jzKZWv9dE,1452
|
|
47
|
+
followthemoney/schema/Call.yaml,sha256=kbVCnVxucBrEplxehXHThLSJAJjy_GhWan-IeZZjr0M,980
|
|
48
|
+
followthemoney/schema/CallForTenders.yaml,sha256=2IWonTzfSbrkynMoEWqv5fekUeFM_xDKpKIbRe1XDbo,3227
|
|
49
|
+
followthemoney/schema/Company.yaml,sha256=ozXP_PHly_cOa3xjKkxaUnlwXc-0jsLYt_682Auql48,3276
|
|
50
|
+
followthemoney/schema/Contract.yaml,sha256=-wVVUBu_KvmiWEjXrw1zgY2m9AAkiHCDd-hxFCUzj6k,1586
|
|
51
|
+
followthemoney/schema/ContractAward.yaml,sha256=b2spaZHYCaP1yR1RCsrI7mUjk-fAF7BUE3dc8Vl3cUQ,1689
|
|
52
|
+
followthemoney/schema/CourtCase.yaml,sha256=lcovnY0Ne_xcggvkqfCW_RHvsRKo8kFTCPCyovAXRtI,599
|
|
53
|
+
followthemoney/schema/CourtCaseParty.yaml,sha256=MpodN2251V_MYD2dBOHZ_qD7Uv6cLg8Gd_b-I8HZjPI,588
|
|
54
|
+
followthemoney/schema/CryptoWallet.yaml,sha256=1Akp0Bzd_x_0GgsUOxW0zkvNDozoMP_8fJyrSn0dAy4,1068
|
|
55
|
+
followthemoney/schema/Debt.yaml,sha256=gSGl1xKPaPWAYYEcX7MxezVn3Gu-CYBIzxGzMd9UTm4,657
|
|
56
|
+
followthemoney/schema/Directorship.yaml,sha256=BMx2AQTLy5ta_lWPnYKj7LFjZWTwtu1hgWncISdKf28,773
|
|
57
|
+
followthemoney/schema/Document.yaml,sha256=MA-vZrK_Imd2HuIhJ7c_BH9Cpecv-DewXJhfjECXjuw,2927
|
|
58
|
+
followthemoney/schema/Documentation.yml,sha256=AZ1kHiKcvkyv3SINLwAwUyoWMVrF8O0mSJhMN4jNNaE,760
|
|
59
|
+
followthemoney/schema/EconomicActivity.yaml,sha256=hm2x-p-49fGOZcy6xVtiplpJs4XsQVFYLgb8D41az0k,4049
|
|
60
|
+
followthemoney/schema/Email.yaml,sha256=IqEHgqUsapbTnCBO7OuV-GvoxLH8LIQscZOyAiateqw,1549
|
|
61
|
+
followthemoney/schema/Employment.yaml,sha256=rQXGva4uOKzQbkow4AM4Iez5t7kzm0HTqhhWzvgosl4,674
|
|
62
|
+
followthemoney/schema/Event.yaml,sha256=NclU-s8puxBk-KlJuz3EF1dqM99d5DCwD_xFh-TXTOU,751
|
|
63
|
+
followthemoney/schema/Family.yaml,sha256=cgZ7ZM_2p_dzUGrLVj8QL86gpeDM-AoK8AbyHjh5b6E,983
|
|
64
|
+
followthemoney/schema/Folder.yaml,sha256=W12iJHTYua7bF7oTpgiDbarEkfa0Q2gSmfLdl537HQY,180
|
|
65
|
+
followthemoney/schema/HyperText.yaml,sha256=Wg5dWeLrVjbXiI-ao69tosJ7rI0DvNU8cCo8AhUXwh4,319
|
|
66
|
+
followthemoney/schema/Identification.yaml,sha256=6txjZs6-3Kn94c3G4tDeDt9Jb4FW55-xjSnYVrvmiEA,853
|
|
67
|
+
followthemoney/schema/Image.yaml,sha256=wuznboWECGiV96_GQiXq1-oKNoxO8zKisR4xyusnEn8,394
|
|
68
|
+
followthemoney/schema/Interest.yaml,sha256=VUrehmsN1WgtS1oAa5jn_JGtSkZGGYLGNahp-R5JhOQ,282
|
|
69
|
+
followthemoney/schema/Interval.yaml,sha256=WtmSoBngajhpNLtDZ8Ocpdd0I0tLG-7A4afuHXxssow,1919
|
|
70
|
+
followthemoney/schema/LegalEntity.yaml,sha256=1AouOu97lbKeLP1VNaprN_oACdTvcptGHob-Wbkc17Q,4298
|
|
71
|
+
followthemoney/schema/License.yaml,sha256=9Ye5vGEBhi7ttGqf0DdAGCJCN3zz5HtGu52dCcmCsQk,452
|
|
72
|
+
followthemoney/schema/Membership.yaml,sha256=IPmaOX4Ai2r4sGcA5ig2WmLvWHb38akdxp4smEdDWOE,710
|
|
73
|
+
followthemoney/schema/Mention.yaml,sha256=nBeulR_Jm4x75aJ7yNF0TAVhHJqXQaEzOutLIn_YU-4,1086
|
|
74
|
+
followthemoney/schema/Message.yaml,sha256=89k3kdN2w_Vfz1UjbUUPojZtMsAvmZGiDSkHeSNMl8w,1484
|
|
75
|
+
followthemoney/schema/Note.yaml,sha256=NohwtFupxIssZuEgQowiQWqKit4uQ-OatAu3yp9eJj4,411
|
|
76
|
+
followthemoney/schema/Occupancy.yaml,sha256=-alsy15cz3RXC_2xYN6rXxwxSOW_hazCNyIvmp7Jawo,773
|
|
77
|
+
followthemoney/schema/Organization.yaml,sha256=wPXU1ni0-3QzvttDq-gIjbAYHzcWoo3nsLGLw6cnHKI,1064
|
|
78
|
+
followthemoney/schema/Ownership.yaml,sha256=tLWESE9VX0aUuhe6C1pToq2-auPVZBdE3xvBmTRfmPc,1057
|
|
79
|
+
followthemoney/schema/Package.yaml,sha256=gPr-P3lcg7OOAav_KVa8baK4yK57JwfcXwxXheD96UQ,310
|
|
80
|
+
followthemoney/schema/Page.yaml,sha256=sQt_CnVyjDVGVECLQoGYZH4hxpjdPhxVRz4XJW-_1OU,1107
|
|
81
|
+
followthemoney/schema/Pages.yaml,sha256=KKPGZ06Ehp5mWIGnYfHUBN9jT03bk8nakw0pB5bA_7E,450
|
|
82
|
+
followthemoney/schema/Passport.yaml,sha256=gFVnLRkNzLfjQqDOArk8IIXghqCTcpAu0TDsizAIju4,786
|
|
83
|
+
followthemoney/schema/Payment.yaml,sha256=WRBJuj9ljsxLBs-0g9Z9UD87uR1RTtuUiYnWOnKr1qA,1757
|
|
84
|
+
followthemoney/schema/Person.yaml,sha256=EsMcdOzGa8v8zQ_AgvDHSUFL0SflPMhdSdC7TWwW0sU,2354
|
|
85
|
+
followthemoney/schema/PlainText.yaml,sha256=hfnVi-HmQeDbqDquSpkPJax9hNm86ioXGr4hzNzyPFE,278
|
|
86
|
+
followthemoney/schema/Position.yaml,sha256=ZpxjWOLxwva_on32r9WD5ys0Ty3YxCju41mg9HG-pe0,1308
|
|
87
|
+
followthemoney/schema/Post.yaml,sha256=cbxy8cWXHFKSvr1ylwDilRURhcsyd9-H7fn_Lb4lsFE,1034
|
|
88
|
+
followthemoney/schema/Project.yaml,sha256=2svtyGJopS0UrqPiuYGpBzj30V7k3LRDX4N1U56y4yY,462
|
|
89
|
+
followthemoney/schema/ProjectParticipant.yaml,sha256=xNehEu90uqUfboNouezhZQ8ZQLxzWq1yyNO4kua-Lyc,727
|
|
90
|
+
followthemoney/schema/PublicBody.yaml,sha256=BNfLBqH1OapoEninAjWmqZx_n-G5QUnzzydW7300TiY,301
|
|
91
|
+
followthemoney/schema/RealEstate.yaml,sha256=NWFHXqEHskYQN-kvQESZpu74nztShqoYSZEjZAr-DHM,1363
|
|
92
|
+
followthemoney/schema/Representation.yaml,sha256=sCvFnUDQaElq2cqSB0rILcMYb2gaMZqlzxlHxyX9IGg,792
|
|
93
|
+
followthemoney/schema/Sanction.yaml,sha256=fKkfVPQvY_R2zyQfEkuradilBAwVQWRkWw1Z4_Fn1V8,1259
|
|
94
|
+
followthemoney/schema/Security.yaml,sha256=w8Och0cslWjHPAs60HZ6JarEXdIbqGlIbN1NlvgN_7Y,1212
|
|
95
|
+
followthemoney/schema/Similar.yaml,sha256=gD8rZEaPQWzU-rEfsKdn62uEucF3KxYBcPMoSdnxvME,817
|
|
96
|
+
followthemoney/schema/Succession.yaml,sha256=RMJQqZ4Fv88N1RvWTAgjYg9BB5cELSj5CCAjM681Fpg,749
|
|
97
|
+
followthemoney/schema/Table.yaml,sha256=GcsIAgSO9t2tvObA9zU2HhxlSqTe9CePmUnagu1Z0vI,641
|
|
98
|
+
followthemoney/schema/TaxRoll.yaml,sha256=ugMzaaS7uyq2OLD50eGLcfvd6Cg0cSt65-T9GVqpRSA,746
|
|
99
|
+
followthemoney/schema/Thing.yaml,sha256=PeseDMTO8rDzoTrxRjL9efyJQ0_lGgRQRTzwLu5OwiU,2458
|
|
100
|
+
followthemoney/schema/Trip.yaml,sha256=nLQD_ApmVJ8D56Czl7K700hhNZjzFV9FOQ3NBSQDLiM,771
|
|
101
|
+
followthemoney/schema/UnknownLink.yaml,sha256=lneS_HZNgeLyJxwzWnLx0ZoyY3MXt99I_K2X_o9z5g8,682
|
|
102
|
+
followthemoney/schema/UserAccount.yaml,sha256=V1JWwwcggCO4G9ByJY9zlQ0uOVp8HQK2mRXwqaGJnBM,763
|
|
103
|
+
followthemoney/schema/Value.yaml,sha256=cNHTCtakMTXDW0Qpb6ArZodi9rMJ-Ebvp1WsOIRRzw4,310
|
|
104
|
+
followthemoney/schema/Vehicle.yaml,sha256=Ypl4A5HJFOZfZh3DK0ewN-hyJuCMcovR0mPNddIZrOA,1051
|
|
105
|
+
followthemoney/schema/Vessel.yaml,sha256=nFaUJ_0BzFJstvog1iDvwV9DHKHr9ky4DLb1NZGGh1E,1096
|
|
106
|
+
followthemoney/schema/Video.yaml,sha256=LY3DYMWTHXiAhL0hxBCNCz50cp2sPbUlEhhig5Fbjos,327
|
|
107
|
+
followthemoney/schema/Workbook.yaml,sha256=iikWPElz4klA7SkWH7eae6xqhbkMCIP_3zdeXzFEMU0,354
|
|
108
|
+
followthemoney/translations/messages.pot,sha256=JhtY9NJ9wP_EAX4APxOqMyvKcX53oIC9kAxBsliJkf4,107703
|
|
109
|
+
followthemoney/translations/ar/LC_MESSAGES/followthemoney.mo,sha256=uhb2crSNh8K2ts_QUeD2wvgWgzzpLJWRzXok-Uyx3Zk,38795
|
|
110
|
+
followthemoney/translations/ar/LC_MESSAGES/followthemoney.po,sha256=DuIfvR5v0sPGwFbeg3y6_jCbeglvHWXQ2LDH6prfwLc,121326
|
|
111
|
+
followthemoney/translations/bs/LC_MESSAGES/followthemoney.mo,sha256=xBctvF0GUKbZl6cszj_s3oB6I6Z7iJ8O_pXKRZcR4QU,10751
|
|
112
|
+
followthemoney/translations/bs/LC_MESSAGES/followthemoney.po,sha256=cQdXsSU0gDtH-cdCuyhHDotRjDCz_xrEOZBP62JocXc,93144
|
|
113
|
+
followthemoney/translations/de/LC_MESSAGES/followthemoney.mo,sha256=6SiKvdkHPo6Ru4Jep_P_J-eJnd0TZv-bUdMHELrLoSY,36069
|
|
114
|
+
followthemoney/translations/de/LC_MESSAGES/followthemoney.po,sha256=pB9sZkXx-eS5-WVhGWme03HOiP0XEIluijRHHJlqr_c,115528
|
|
115
|
+
followthemoney/translations/es/LC_MESSAGES/followthemoney.mo,sha256=PYf8-_3V_thdDe6L2DbAAx4_G7_XuNduttlHqSMJ2WI,32142
|
|
116
|
+
followthemoney/translations/es/LC_MESSAGES/followthemoney.po,sha256=AyH6mEivN3tEemqVY6CVrcoVnu2dMjcN1NzuR32Qzz8,115178
|
|
117
|
+
followthemoney/translations/fr/followthemoney.po,sha256=uLWYl4ibZHfQObR_LWvXOq7SvdYC_VaAaisPUzZQDTY,106799
|
|
118
|
+
followthemoney/translations/fr/LC_MESSAGES/followthemoney.mo,sha256=TAsq2ALl1g6JdoEJWl3sSASmIv5a0BBUU8nScjGSruo,42515
|
|
119
|
+
followthemoney/translations/fr/LC_MESSAGES/followthemoney.po,sha256=NBH5chbuqUBqxYZgMnDo2RtQz7UuMGMeHLeFwrEflR8,119960
|
|
120
|
+
followthemoney/translations/nb/LC_MESSAGES/followthemoney.mo,sha256=u8912O6hTkuuxDpT6804JzvZ-jitITqe6I1i30hXPSg,498
|
|
121
|
+
followthemoney/translations/nb/LC_MESSAGES/followthemoney.po,sha256=Tvm7-UzSUGqCcY1wK7rbVP3JFKW-wxCxU1gDJw_9_XQ,89793
|
|
122
|
+
followthemoney/translations/nl/LC_MESSAGES/followthemoney.mo,sha256=nupwBw55tZSJoCocIHO4txPd_Zxl7wuBOXbOHzjRTYE,486
|
|
123
|
+
followthemoney/translations/nl/LC_MESSAGES/followthemoney.po,sha256=qOBe7fZ4AXL9J8pqH2Lv8LFzaHm_C0O8R6dHwlLnQA8,90873
|
|
124
|
+
followthemoney/translations/pt_BR/LC_MESSAGES/followthemoney.mo,sha256=E6v_Qz5JIV-UmhfUovtth7AYIw947f2K5UKnEjpU9V0,505
|
|
125
|
+
followthemoney/translations/pt_BR/LC_MESSAGES/followthemoney.po,sha256=pG6tnzGFvsKrNRNwq8_JMH2_IjaOpGm_ztZfR5B20FY,89844
|
|
126
|
+
followthemoney/translations/ru/followthemoney.po,sha256=NYISuFWe_4sPleIqmHjDsIsMBE_oS6yZxbdpizACpUY,130617
|
|
127
|
+
followthemoney/translations/ru/LC_MESSAGES/followthemoney.mo,sha256=bXJ9UXFg_MMxzxgqpyyMhv-qT0llqwZFMRocJp-K4PM,67338
|
|
128
|
+
followthemoney/translations/ru/LC_MESSAGES/followthemoney.po,sha256=7SQWytOTvoAQq60GJMh22a1nAzhdEUb5BO4ldpiCtnA,141918
|
|
129
|
+
followthemoney/translations/tr/LC_MESSAGES/followthemoney.mo,sha256=SC84e_ZF_oFJG1NKdyZY_W6Kb6POORZB6wdeAcEWmnE,487
|
|
130
|
+
followthemoney/translations/tr/LC_MESSAGES/followthemoney.po,sha256=AZC3marhtVVq8Ck1FOgnt4sbDMz548nX48O9GDwImbQ,89826
|
|
131
|
+
followthemoney/types/__init__.py,sha256=X9XeM6JktzirAw5gGkyDKGM70NuiJ9Tbjoq0IwVclxU,1745
|
|
132
|
+
followthemoney/types/address.py,sha256=P6ctzojJks70RZIwk5Bhc9djxejZo4Te0m5pQ9M7bAM,1651
|
|
133
|
+
followthemoney/types/checksum.py,sha256=OqjCsBPyMIV3_Y20kTTvjkyayy32pBtaI5KKwYQb6lY,937
|
|
134
|
+
followthemoney/types/common.py,sha256=Yk-7LZ6uDgFzKXUZxQ_j5miN2ZMnlBOziU0iFC7FE9I,10202
|
|
135
|
+
followthemoney/types/country.py,sha256=PlkqZ9_06UO3f47YFYyL3gWwpm151FFlWAV3fodtPfQ,3409
|
|
136
|
+
followthemoney/types/date.py,sha256=4lZCd0aws-T3HE2BYkb-a-t8iQDr0nqFSAEBoUKiTlM,2683
|
|
137
|
+
followthemoney/types/email.py,sha256=zAnMHwC_FZh7IagpDRhGZf-GfQR6uW8d-lZP4UCdGcM,2745
|
|
138
|
+
followthemoney/types/entity.py,sha256=FA8xXNCkiM7HlF6k5lxTlb_B_LKlUwaoOMaVqAdjgYc,2477
|
|
139
|
+
followthemoney/types/gender.py,sha256=AVCa6ocsxueVhGW7RA2BIbQEfDRQANDpKkGY7ZakTYE,1820
|
|
140
|
+
followthemoney/types/iban.py,sha256=QYD49erJCB6I2nbtTagRMvpa4RyjezfB4Fpat2QLwAc,1797
|
|
141
|
+
followthemoney/types/identifier.py,sha256=Gk4h75_KyjkdtomrK9Ldsh9rD7-bsenFryevJFwqlX0,2036
|
|
142
|
+
followthemoney/types/ip.py,sha256=BxGARP9JWEWvyRnr7A7xUNwmTxyFd9kwXSZrKR0TK2Q,1412
|
|
143
|
+
followthemoney/types/json.py,sha256=Hefwns1-ziJf310MWvdfX5ICkOgj9cnnMJuqq1e6qKY,1676
|
|
144
|
+
followthemoney/types/language.py,sha256=CaNKofIzgH8M0yC7YcDt3o2faVCm-NL9xsaC9ypnTyc,2849
|
|
145
|
+
followthemoney/types/mimetype.py,sha256=EZ5hIdn-wosfLc-GjXDaOzevxaSXPbSPHDUJmPT1h0I,1355
|
|
146
|
+
followthemoney/types/name.py,sha256=_Vu-MPYbgdN55gNBT2qHh-RDgbLQgT2l_kftnqJIEdw,2240
|
|
147
|
+
followthemoney/types/number.py,sha256=9l5v3hcAoJ4V6jaBS_-Kc1gtdJlQrY9L98ElC5e_PLQ,943
|
|
148
|
+
followthemoney/types/phone.py,sha256=2YFbPBtMepvCWTdcxXq3Fq4AU8B4QYk1FARBpsH8xjs,4040
|
|
149
|
+
followthemoney/types/registry.py,sha256=hvQ1oIWz_4PpyUnKA5azbaZCulNb5LCIPyC-AQYVVyw,1936
|
|
150
|
+
followthemoney/types/string.py,sha256=grDn1OgKWxIzVxGEdp0HjVKIqtQ9W4SW2ty4quv3Pcs,1202
|
|
151
|
+
followthemoney/types/topic.py,sha256=6g57JKTFF_I233-afvuaswFxMaN_Kmg5MZ4_iAKZh9c,3754
|
|
152
|
+
followthemoney/types/url.py,sha256=r7Pd6Yfn--amwMi_nHoTLMwm5SH8h50SMgQaa2G4PJ0,1492
|
|
153
|
+
followthemoney-3.8.0.dist-info/METADATA,sha256=8VnbpVAf1DUAE8xYD6U2OE-5bBGdGlcMMx10e_EIqaY,6145
|
|
154
|
+
followthemoney-3.8.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
155
|
+
followthemoney-3.8.0.dist-info/entry_points.txt,sha256=xvTXjAz0CiZplq4V3iQXlmBexaJyW3zNucIvcDP6L_c,593
|
|
156
|
+
followthemoney-3.8.0.dist-info/licenses/LICENSE,sha256=3tfmmk9RtT1eh67a-NDRwcmOLzztbCtqlHW6O1U92ZA,1098
|
|
157
|
+
followthemoney-3.8.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
[console_scripts]
|
|
2
|
+
followthemoney = followthemoney.cli.cli:cli
|
|
3
|
+
ftm = followthemoney.cli.cli:cli
|
|
4
|
+
ftmutil = followthemoney.cli.cli:cli
|
|
5
|
+
|
|
6
|
+
[babel.extractors]
|
|
7
|
+
ftmmodel = followthemoney.messages:extract_yaml
|
|
8
|
+
|
|
9
|
+
[followthemoney.cli]
|
|
10
|
+
aggregate = followthemoney.cli.aggregate:aggregate
|
|
11
|
+
csv = followthemoney.cli.exports:export_csv
|
|
12
|
+
cypher = followthemoney.cli.exports:export_cypher
|
|
13
|
+
excel = followthemoney.cli.exports:export_excel
|
|
14
|
+
gexf = followthemoney.cli.exports:export_gexf
|
|
15
|
+
mapping = followthemoney.cli.mapping:run_mapping
|
|
16
|
+
rdf = followthemoney.cli.exports:export_rdf
|
|
17
|
+
sieve = followthemoney.cli.sieve:sieve
|
followthemoney-1.3.7.dist-info/LICENSE.txt → followthemoney-3.8.0.dist-info/licenses/LICENSE
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2017-
|
|
3
|
+
Copyright (c) 2017-2024 Journalism Development Network, Inc.
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
followthemoney/link.py
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
from followthemoney.types import registry
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class Link(object):
|
|
5
|
-
"""A wrapper object for an RDF-like statement, similar to a triple
|
|
6
|
-
but with weighting and some other metadata. This has built-in
|
|
7
|
-
support for packing, i.e. transforming the link to a form suitable
|
|
8
|
-
for storage in a key/value store.
|
|
9
|
-
"""
|
|
10
|
-
__slots__ = ['ref', 'prop', 'value', 'weight', 'inverted', 'inferred']
|
|
11
|
-
|
|
12
|
-
def __init__(self, ref, prop, value, weight=1.0,
|
|
13
|
-
inverted=False, inferred=False):
|
|
14
|
-
self.ref = ref
|
|
15
|
-
self.prop = prop
|
|
16
|
-
self.value = value
|
|
17
|
-
self.weight = weight
|
|
18
|
-
self.inverted = inverted
|
|
19
|
-
self.inferred = inferred
|
|
20
|
-
|
|
21
|
-
@property
|
|
22
|
-
def subject(self):
|
|
23
|
-
return registry.deref(self.ref)[1]
|
|
24
|
-
|
|
25
|
-
@property
|
|
26
|
-
def value_ref(self):
|
|
27
|
-
return self.prop.type.ref(self.value)
|
|
28
|
-
|
|
29
|
-
def rdf(self):
|
|
30
|
-
"""Convert to an RDF triple. This looses weighting and inferrence
|
|
31
|
-
metadata."""
|
|
32
|
-
if self.inverted:
|
|
33
|
-
return
|
|
34
|
-
subject_type, subject = registry.deref(self.ref)
|
|
35
|
-
subject_uri = subject_type.rdf(subject)
|
|
36
|
-
value_obj = self.prop.type.rdf(self.value)
|
|
37
|
-
return (subject_uri, self.prop.uri, value_obj)
|
|
38
|
-
|
|
39
|
-
def to_tuple(self):
|
|
40
|
-
return (self.prop.qname, self.weight, self.inverted, self.inferred,
|
|
41
|
-
self.value)
|
|
42
|
-
|
|
43
|
-
@classmethod
|
|
44
|
-
def from_tuple(cls, model, ref, data):
|
|
45
|
-
qname, weight, inverted, inferred, value = data
|
|
46
|
-
prop = model.get_qname(qname)
|
|
47
|
-
return cls(ref, prop, value,
|
|
48
|
-
weight=weight,
|
|
49
|
-
inverted=inverted,
|
|
50
|
-
inferred=inferred)
|
|
51
|
-
|
|
52
|
-
def invert(self):
|
|
53
|
-
if not self.inverted and self.prop.reverse is not None:
|
|
54
|
-
return Link(self.value_ref,
|
|
55
|
-
self.prop.reverse,
|
|
56
|
-
self.subject,
|
|
57
|
-
weight=self.weight)
|
|
58
|
-
return Link(self.value_ref,
|
|
59
|
-
self.prop,
|
|
60
|
-
self.subject,
|
|
61
|
-
weight=self.weight,
|
|
62
|
-
inverted=not self.inverted)
|
|
63
|
-
|
|
64
|
-
def __repr__(self):
|
|
65
|
-
return '<Link(%r, %r, %r)>' % (self.ref, self.prop, self.value)
|
|
66
|
-
|
|
67
|
-
def __hash__(self):
|
|
68
|
-
return hash(self.to_tuple())
|
|
69
|
-
|
|
70
|
-
def __eq__(self, other):
|
|
71
|
-
return self.ref == other.ref \
|
|
72
|
-
and self.prop == other.prop \
|
|
73
|
-
and self.value == other.value \
|
|
74
|
-
and self.weight == other.weight \
|
|
75
|
-
and self.inverted == other.inverted
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
Associate:
|
|
2
|
-
label: "Associate"
|
|
3
|
-
description: "Non-family association between two people"
|
|
4
|
-
extends: Relationship
|
|
5
|
-
icon: fa-hand-holding-usd
|
|
6
|
-
matchable: false
|
|
7
|
-
featured:
|
|
8
|
-
- person
|
|
9
|
-
- associate
|
|
10
|
-
- relationship
|
|
11
|
-
properties:
|
|
12
|
-
associate:
|
|
13
|
-
label: "Associate"
|
|
14
|
-
description: "An associate of the subject person."
|
|
15
|
-
type: entity
|
|
16
|
-
schema: Person
|
|
17
|
-
reverse:
|
|
18
|
-
name: associates
|
|
19
|
-
label: "Associates"
|
followthemoney/schema/Family.yml
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
Family:
|
|
2
|
-
label: "Family"
|
|
3
|
-
description: "Family relationship between two people"
|
|
4
|
-
extends: Relationship
|
|
5
|
-
icon: fa-home-heart
|
|
6
|
-
matchable: false
|
|
7
|
-
featured:
|
|
8
|
-
- person
|
|
9
|
-
- relative
|
|
10
|
-
- relationship
|
|
11
|
-
properties:
|
|
12
|
-
relative:
|
|
13
|
-
label: "Relative"
|
|
14
|
-
type: entity
|
|
15
|
-
schema: Person
|
|
16
|
-
reverse:
|
|
17
|
-
name: familyRelative
|
|
18
|
-
label: "Relatives"
|
|
19
|
-
description: "The relative of the subject person."
|
followthemoney/schema/Land.yml
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
Relationship:
|
|
2
|
-
label: "Relationship"
|
|
3
|
-
description: "Person-to-person relationship"
|
|
4
|
-
extends: Interval
|
|
5
|
-
matchable: false
|
|
6
|
-
featured:
|
|
7
|
-
- person
|
|
8
|
-
- relationship
|
|
9
|
-
properties:
|
|
10
|
-
person:
|
|
11
|
-
label: "Person"
|
|
12
|
-
description: "The subject of the familial relation."
|
|
13
|
-
type: entity
|
|
14
|
-
schema: Person
|
|
15
|
-
reverse:
|
|
16
|
-
name: relationshipPerson
|
|
17
|
-
label: "Related to"
|
|
18
|
-
relationship:
|
|
19
|
-
label: "Relationship"
|
|
20
|
-
description: "Nature of the relationship, from the *person's* perspective eg. 'mother', where 'relative' is mother of 'person'."
|
|
21
|
-
supportingDocumentType:
|
|
22
|
-
label: "Supporting document"
|
|
23
|
-
description: "Eg. birth certificate, marriage license. This is *not* just the data source."
|
|
24
|
-
supportingDocumentNumber:
|
|
25
|
-
label: "Supporting document number"
|
|
26
|
-
descripton: "Number or unique identifier for supporting document"
|
followthemoney/types/domain.py
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# TODO: https://pypi.python.org/pypi/publicsuffix/
|
|
2
|
-
# import socket
|
|
3
|
-
from normality import stringify
|
|
4
|
-
from urllib.parse import urlparse
|
|
5
|
-
|
|
6
|
-
from followthemoney.types.common import PropertyType
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class DomainType(PropertyType):
|
|
10
|
-
name = 'domain'
|
|
11
|
-
group = 'domains'
|
|
12
|
-
prefix = 'dns'
|
|
13
|
-
|
|
14
|
-
# def _check_exists(self, domain):
|
|
15
|
-
# """Actually try to resolve a domain name."""
|
|
16
|
-
# try:
|
|
17
|
-
# domain = domain.encode('idna').lower()
|
|
18
|
-
# socket.getaddrinfo(domain, None)
|
|
19
|
-
# return True
|
|
20
|
-
# except:
|
|
21
|
-
# return False
|
|
22
|
-
|
|
23
|
-
def validate(self, obj, **kwargs):
|
|
24
|
-
"""Check if a thing is a valid domain name."""
|
|
25
|
-
text = stringify(obj)
|
|
26
|
-
if text is None:
|
|
27
|
-
return False
|
|
28
|
-
if '.' not in text:
|
|
29
|
-
return False
|
|
30
|
-
if '@' in text or ':' in text:
|
|
31
|
-
return False
|
|
32
|
-
if len(text) < 4:
|
|
33
|
-
return False
|
|
34
|
-
return True
|
|
35
|
-
|
|
36
|
-
def clean_text(self, domain, **kwargs):
|
|
37
|
-
"""Try to extract only the domain bit from the """
|
|
38
|
-
try:
|
|
39
|
-
# handle URLs by extracting the domain name
|
|
40
|
-
domain = urlparse(domain).hostname or domain
|
|
41
|
-
domain = domain.lower()
|
|
42
|
-
# get rid of port specs
|
|
43
|
-
domain = domain.rsplit(':', 1)[0]
|
|
44
|
-
domain = domain.rstrip('.')
|
|
45
|
-
# handle unicode
|
|
46
|
-
domain = domain.encode("idna").decode('ascii')
|
|
47
|
-
except ValueError:
|
|
48
|
-
return None
|
|
49
|
-
if self.validate(domain):
|
|
50
|
-
return domain
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.0
|
|
2
|
-
Name: followthemoney
|
|
3
|
-
Version: 1.3.7
|
|
4
|
-
Summary: UNKNOWN
|
|
5
|
-
Home-page: https://occrp.org
|
|
6
|
-
Author: Organized Crime and Corruption Reporting Project
|
|
7
|
-
Author-email: pudo@occrp.org
|
|
8
|
-
License: MIT
|
|
9
|
-
Description-Content-Type: UNKNOWN
|
|
10
|
-
Platform: UNKNOWN
|
|
11
|
-
Requires-Dist: babel
|
|
12
|
-
Requires-Dist: banal (>=0.3.8)
|
|
13
|
-
Requires-Dist: pyyaml
|
|
14
|
-
Requires-Dist: requests[security] (>=2.18.4)
|
|
15
|
-
Requires-Dist: python-levenshtein (>=0.12.0)
|
|
16
|
-
Requires-Dist: normality (>=0.6.1)
|
|
17
|
-
Requires-Dist: sqlalchemy (>=1.2.0)
|
|
18
|
-
Requires-Dist: countrynames (>=1.6.0)
|
|
19
|
-
Requires-Dist: languagecodes (>=1.0.4)
|
|
20
|
-
Requires-Dist: phonenumbers (>=8.9.11)
|
|
21
|
-
Requires-Dist: schwifty (>=2018.4.1)
|
|
22
|
-
Requires-Dist: urlnormalizer (>=1.2.0)
|
|
23
|
-
Requires-Dist: pytz (>=2018.5)
|
|
24
|
-
Requires-Dist: rdflib (>=4.1)
|
|
25
|
-
Provides-Extra: dev
|
|
26
|
-
Requires-Dist: pip (>=10.0.0); extra == 'dev'
|
|
27
|
-
Requires-Dist: bumpversion (>=0.5.3); extra == 'dev'
|
|
28
|
-
Requires-Dist: wheel (>=0.29.0); extra == 'dev'
|
|
29
|
-
Requires-Dist: twine; extra == 'dev'
|
|
30
|
-
Requires-Dist: flake8 (>=2.6.0); extra == 'dev'
|
|
31
|
-
Requires-Dist: nose; extra == 'dev'
|
|
32
|
-
Requires-Dist: transifex-client; extra == 'dev'
|
|
33
|
-
Requires-Dist: responses (>=0.9.0); extra == 'dev'
|
|
34
|
-
Requires-Dist: coverage (>=4.1); extra == 'dev'
|
|
35
|
-
Requires-Dist: recommonmark (>=0.4.0); extra == 'dev'
|
|
36
|
-
|
|
37
|
-
Data model and validator for investigative graph data.
|
|
38
|
-
|
|
39
|
-
|