matchbox-db 0.2.2__tar.gz

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.
Files changed (72) hide show
  1. matchbox_db-0.2.2/LICENSE +21 -0
  2. matchbox_db-0.2.2/PKG-INFO +160 -0
  3. matchbox_db-0.2.2/README.md +104 -0
  4. matchbox_db-0.2.2/pyproject.toml +130 -0
  5. matchbox_db-0.2.2/setup.cfg +4 -0
  6. matchbox_db-0.2.2/src/matchbox/__init__.py +13 -0
  7. matchbox_db-0.2.2/src/matchbox/client/__init__.py +9 -0
  8. matchbox_db-0.2.2/src/matchbox/client/_handler.py +302 -0
  9. matchbox_db-0.2.2/src/matchbox/client/_settings.py +26 -0
  10. matchbox_db-0.2.2/src/matchbox/client/clean/__init__.py +29 -0
  11. matchbox_db-0.2.2/src/matchbox/client/clean/lib.py +191 -0
  12. matchbox_db-0.2.2/src/matchbox/client/clean/steps/__init__.py +71 -0
  13. matchbox_db-0.2.2/src/matchbox/client/clean/steps/clean_basic.py +508 -0
  14. matchbox_db-0.2.2/src/matchbox/client/clean/steps/clean_basic_original.py +128 -0
  15. matchbox_db-0.2.2/src/matchbox/client/clean/utils.py +158 -0
  16. matchbox_db-0.2.2/src/matchbox/client/helpers/__init__.py +15 -0
  17. matchbox_db-0.2.2/src/matchbox/client/helpers/cleaner.py +60 -0
  18. matchbox_db-0.2.2/src/matchbox/client/helpers/comparison.py +47 -0
  19. matchbox_db-0.2.2/src/matchbox/client/helpers/index.py +68 -0
  20. matchbox_db-0.2.2/src/matchbox/client/helpers/selector.py +253 -0
  21. matchbox_db-0.2.2/src/matchbox/client/models/__init__.py +1 -0
  22. matchbox_db-0.2.2/src/matchbox/client/models/dedupers/__init__.py +5 -0
  23. matchbox_db-0.2.2/src/matchbox/client/models/dedupers/base.py +54 -0
  24. matchbox_db-0.2.2/src/matchbox/client/models/dedupers/naive.py +83 -0
  25. matchbox_db-0.2.2/src/matchbox/client/models/linkers/__init__.py +9 -0
  26. matchbox_db-0.2.2/src/matchbox/client/models/linkers/base.py +55 -0
  27. matchbox_db-0.2.2/src/matchbox/client/models/linkers/deterministic.py +93 -0
  28. matchbox_db-0.2.2/src/matchbox/client/models/linkers/splinklinker.py +253 -0
  29. matchbox_db-0.2.2/src/matchbox/client/models/linkers/weighteddeterministic.py +166 -0
  30. matchbox_db-0.2.2/src/matchbox/client/models/models.py +168 -0
  31. matchbox_db-0.2.2/src/matchbox/client/results.py +217 -0
  32. matchbox_db-0.2.2/src/matchbox/client/visualisation.py +41 -0
  33. matchbox_db-0.2.2/src/matchbox/common/__init__.py +1 -0
  34. matchbox_db-0.2.2/src/matchbox/common/arrow.py +24 -0
  35. matchbox_db-0.2.2/src/matchbox/common/db.py +121 -0
  36. matchbox_db-0.2.2/src/matchbox/common/dtos.py +225 -0
  37. matchbox_db-0.2.2/src/matchbox/common/exceptions.py +176 -0
  38. matchbox_db-0.2.2/src/matchbox/common/factories/__init__.py +1 -0
  39. matchbox_db-0.2.2/src/matchbox/common/factories/dags.py +137 -0
  40. matchbox_db-0.2.2/src/matchbox/common/factories/entities.py +629 -0
  41. matchbox_db-0.2.2/src/matchbox/common/factories/models.py +945 -0
  42. matchbox_db-0.2.2/src/matchbox/common/factories/sources.py +660 -0
  43. matchbox_db-0.2.2/src/matchbox/common/graph.py +61 -0
  44. matchbox_db-0.2.2/src/matchbox/common/hash.py +156 -0
  45. matchbox_db-0.2.2/src/matchbox/common/logging.py +72 -0
  46. matchbox_db-0.2.2/src/matchbox/common/sources.py +333 -0
  47. matchbox_db-0.2.2/src/matchbox/common/transform.py +406 -0
  48. matchbox_db-0.2.2/src/matchbox/server/__init__.py +15 -0
  49. matchbox_db-0.2.2/src/matchbox/server/api/__init__.py +5 -0
  50. matchbox_db-0.2.2/src/matchbox/server/api/arrow.py +75 -0
  51. matchbox_db-0.2.2/src/matchbox/server/api/cache.py +196 -0
  52. matchbox_db-0.2.2/src/matchbox/server/api/routes.py +674 -0
  53. matchbox_db-0.2.2/src/matchbox/server/base.py +459 -0
  54. matchbox_db-0.2.2/src/matchbox/server/postgresql/__init__.py +8 -0
  55. matchbox_db-0.2.2/src/matchbox/server/postgresql/adapter.py +456 -0
  56. matchbox_db-0.2.2/src/matchbox/server/postgresql/benchmark/__init__.py +1 -0
  57. matchbox_db-0.2.2/src/matchbox/server/postgresql/benchmark/cluster_pipeline.py +83 -0
  58. matchbox_db-0.2.2/src/matchbox/server/postgresql/benchmark/generate_tables.py +560 -0
  59. matchbox_db-0.2.2/src/matchbox/server/postgresql/benchmark/query.py +93 -0
  60. matchbox_db-0.2.2/src/matchbox/server/postgresql/db.py +102 -0
  61. matchbox_db-0.2.2/src/matchbox/server/postgresql/mixin.py +19 -0
  62. matchbox_db-0.2.2/src/matchbox/server/postgresql/orm.py +295 -0
  63. matchbox_db-0.2.2/src/matchbox/server/postgresql/utils/__init__.py +1 -0
  64. matchbox_db-0.2.2/src/matchbox/server/postgresql/utils/db.py +308 -0
  65. matchbox_db-0.2.2/src/matchbox/server/postgresql/utils/insert.py +558 -0
  66. matchbox_db-0.2.2/src/matchbox/server/postgresql/utils/query.py +584 -0
  67. matchbox_db-0.2.2/src/matchbox/server/postgresql/utils/results.py +198 -0
  68. matchbox_db-0.2.2/src/matchbox_db.egg-info/PKG-INFO +160 -0
  69. matchbox_db-0.2.2/src/matchbox_db.egg-info/SOURCES.txt +70 -0
  70. matchbox_db-0.2.2/src/matchbox_db.egg-info/dependency_links.txt +1 -0
  71. matchbox_db-0.2.2/src/matchbox_db.egg-info/requires.txt +24 -0
  72. matchbox_db-0.2.2/src/matchbox_db.egg-info/top_level.txt +1 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Department for Business and Trade
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,160 @@
1
+ Metadata-Version: 2.2
2
+ Name: matchbox-db
3
+ Version: 0.2.2
4
+ Summary: A framework for orchestrating and comparing data linking and deduplication methodologies.
5
+ Author: Department for Business and Trade
6
+ License: MIT License
7
+
8
+ Copyright (c) 2024 Department for Business and Trade
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Documentation, https://uktrade.github.io/matchbox/
29
+ Project-URL: Repository, https://github.com/uktrade/matchbox.git
30
+ Requires-Python: <3.14,>=3.11
31
+ Description-Content-Type: text/markdown
32
+ License-File: LICENSE
33
+ Requires-Dist: click>=8.1.7
34
+ Requires-Dist: connectorx>=0.3.3
35
+ Requires-Dist: duckdb>=1.1.1
36
+ Requires-Dist: faker>=36.1.1
37
+ Requires-Dist: frozendict>=2.4.6
38
+ Requires-Dist: httpx>=0.28.0
39
+ Requires-Dist: matplotlib>=3.9.2
40
+ Requires-Dist: pandas>=2.2.3
41
+ Requires-Dist: psycopg2>=2.9.10
42
+ Requires-Dist: pyarrow>=17.0.0
43
+ Requires-Dist: pydantic-settings>=2.5.2
44
+ Requires-Dist: pydantic>=2.9.2
45
+ Requires-Dist: rustworkx>=0.15.1
46
+ Requires-Dist: splink<4.1.0,>=4.0.5
47
+ Requires-Dist: sqlalchemy>=2.0.35
48
+ Requires-Dist: rich>=13.9.4
49
+ Provides-Extra: server
50
+ Requires-Dist: boto3>=1.35.99; extra == "server"
51
+ Requires-Dist: ddtrace>=3.2.1; extra == "server"
52
+ Requires-Dist: fastapi[standard]<0.116.0,>=0.115.0; extra == "server"
53
+ Requires-Dist: pg-bulk-ingest>=0.0.54; extra == "server"
54
+ Requires-Dist: python-multipart>=0.0.18; extra == "server"
55
+ Requires-Dist: tomli>=2.0.1; extra == "server"
56
+
57
+ # 🔥 Matchbox DB
58
+
59
+ Record matching is a chore. Matchbox is a match pipeline orchestration tool that aims to:
60
+
61
+ * Make matching an iterative, collaborative, measurable problem
62
+ * Compose sources, dedupers and linkers and make the results very easy to query
63
+ * Allow organisations to know they have matching records without having to share the data
64
+ * Allow matching pipelines to run iteratively
65
+ * Support batch and real-time matching
66
+
67
+ Matchbox doesn't store raw data, instead indexing the data in your warehouse and leaving permissioning at the level of the user, service or pipeline.
68
+
69
+ ## Installation
70
+ To install the matchbox client:
71
+ ```
72
+ pip install "matchbox-db"
73
+ ```
74
+
75
+ To install the full package, including the server features:
76
+
77
+ ```
78
+ pip install "matchbox-db[server]"
79
+ ```
80
+
81
+ ## Running the server locally
82
+
83
+ To run the server locally, run:
84
+
85
+ ```bash
86
+ docker compose up --build
87
+ ```
88
+
89
+ ## Running the server locally with Datadog (monitoring) integration
90
+
91
+ 1. Run:
92
+
93
+ ```
94
+ cp ./environments/datadog-agent-private-sample.env ./environments/.datadog-agent-private.env
95
+ ```
96
+
97
+ 2. Populate the newly-created ` ./environments/.datadog-agent-private.env` with a Datadog API key.
98
+
99
+
100
+ 3. Run the server using:
101
+
102
+ ```bash
103
+ docker compose --profile monitoring up --build
104
+ ```
105
+
106
+
107
+ ## Use cases
108
+
109
+ ### Data architects and engineers
110
+
111
+ * Reconcile entities across disparate datasets
112
+ * Rationalise about the quality of different entity matching pipelines and serve up the best
113
+ * Run matching pipelines without recomputing them every time
114
+ * Lay the foundation for the nouns of a semantic layer
115
+
116
+ ### Data analysts and scientists
117
+
118
+ * Use your team's best matching methods when retrieving entities, always
119
+ * Measurably improve methodologies when they don't work for you
120
+ * When you link new datasets, allow others to use your work easily and securely
121
+
122
+ ### Service owners
123
+
124
+ * Understand the broader business entities in your service, not just what you have
125
+ * Enrich other services with data generated in yours without giving away any permissioning powers
126
+ * Empower your users to label matched entities and let other services use that information
127
+
128
+ ## Structure
129
+
130
+ > [!CAUTION]
131
+ > Some of the below is aspirational. Matchbox is in alpha and under heavy construction.
132
+
133
+ The project is loosely formed into a client/server structure.
134
+
135
+ ### Server
136
+
137
+ The parts of matchbox intended for deployment. Allows different backends as long as they can meet the standards of the adapter and tests.
138
+
139
+ ### Client
140
+
141
+ The parts of matchbox intended for users and services to call a matchbox server, and to insert matched data in the right structure.
142
+
143
+ If the dataset isn't already in matchbox, it'll need to be indexed.
144
+
145
+ Pipelines using this part of matchbox will:
146
+
147
+ 1. Use `matchbox.query()` to retrieve source data from the perspective of a particular resolution point
148
+ 2. Use `matchbox.process()` to clean the data with standardised processes
149
+ 3. Use `matchbox.make_model()` with `matchbox.dedupers` and `matchbox.linkers` to create a new model
150
+ 4. Generate probabilistic model outputs using `model.run()`
151
+ 5. Upload the probabilites to matchbox with `results.to_matchbox()`
152
+ 6. Label data, or use existing data, to decide the probability threshold that you're willing to consider "truth" for your new model
153
+ 7. Use `model.roc_curve()` and other tools to make your decision
154
+ 8. Update `model.truth` to codify it
155
+
156
+ With the truth threshold set to `1.0` by default, deterministic methodologies are ready for others to use from step five!
157
+
158
+ ## Development
159
+
160
+ See our full development guide and coding standards in [CONTRIBUTING.md](./docs/contributing.md)
@@ -0,0 +1,104 @@
1
+ # 🔥 Matchbox DB
2
+
3
+ Record matching is a chore. Matchbox is a match pipeline orchestration tool that aims to:
4
+
5
+ * Make matching an iterative, collaborative, measurable problem
6
+ * Compose sources, dedupers and linkers and make the results very easy to query
7
+ * Allow organisations to know they have matching records without having to share the data
8
+ * Allow matching pipelines to run iteratively
9
+ * Support batch and real-time matching
10
+
11
+ Matchbox doesn't store raw data, instead indexing the data in your warehouse and leaving permissioning at the level of the user, service or pipeline.
12
+
13
+ ## Installation
14
+ To install the matchbox client:
15
+ ```
16
+ pip install "matchbox-db"
17
+ ```
18
+
19
+ To install the full package, including the server features:
20
+
21
+ ```
22
+ pip install "matchbox-db[server]"
23
+ ```
24
+
25
+ ## Running the server locally
26
+
27
+ To run the server locally, run:
28
+
29
+ ```bash
30
+ docker compose up --build
31
+ ```
32
+
33
+ ## Running the server locally with Datadog (monitoring) integration
34
+
35
+ 1. Run:
36
+
37
+ ```
38
+ cp ./environments/datadog-agent-private-sample.env ./environments/.datadog-agent-private.env
39
+ ```
40
+
41
+ 2. Populate the newly-created ` ./environments/.datadog-agent-private.env` with a Datadog API key.
42
+
43
+
44
+ 3. Run the server using:
45
+
46
+ ```bash
47
+ docker compose --profile monitoring up --build
48
+ ```
49
+
50
+
51
+ ## Use cases
52
+
53
+ ### Data architects and engineers
54
+
55
+ * Reconcile entities across disparate datasets
56
+ * Rationalise about the quality of different entity matching pipelines and serve up the best
57
+ * Run matching pipelines without recomputing them every time
58
+ * Lay the foundation for the nouns of a semantic layer
59
+
60
+ ### Data analysts and scientists
61
+
62
+ * Use your team's best matching methods when retrieving entities, always
63
+ * Measurably improve methodologies when they don't work for you
64
+ * When you link new datasets, allow others to use your work easily and securely
65
+
66
+ ### Service owners
67
+
68
+ * Understand the broader business entities in your service, not just what you have
69
+ * Enrich other services with data generated in yours without giving away any permissioning powers
70
+ * Empower your users to label matched entities and let other services use that information
71
+
72
+ ## Structure
73
+
74
+ > [!CAUTION]
75
+ > Some of the below is aspirational. Matchbox is in alpha and under heavy construction.
76
+
77
+ The project is loosely formed into a client/server structure.
78
+
79
+ ### Server
80
+
81
+ The parts of matchbox intended for deployment. Allows different backends as long as they can meet the standards of the adapter and tests.
82
+
83
+ ### Client
84
+
85
+ The parts of matchbox intended for users and services to call a matchbox server, and to insert matched data in the right structure.
86
+
87
+ If the dataset isn't already in matchbox, it'll need to be indexed.
88
+
89
+ Pipelines using this part of matchbox will:
90
+
91
+ 1. Use `matchbox.query()` to retrieve source data from the perspective of a particular resolution point
92
+ 2. Use `matchbox.process()` to clean the data with standardised processes
93
+ 3. Use `matchbox.make_model()` with `matchbox.dedupers` and `matchbox.linkers` to create a new model
94
+ 4. Generate probabilistic model outputs using `model.run()`
95
+ 5. Upload the probabilites to matchbox with `results.to_matchbox()`
96
+ 6. Label data, or use existing data, to decide the probability threshold that you're willing to consider "truth" for your new model
97
+ 7. Use `model.roc_curve()` and other tools to make your decision
98
+ 8. Update `model.truth` to codify it
99
+
100
+ With the truth threshold set to `1.0` by default, deterministic methodologies are ready for others to use from step five!
101
+
102
+ ## Development
103
+
104
+ See our full development guide and coding standards in [CONTRIBUTING.md](./docs/contributing.md)
@@ -0,0 +1,130 @@
1
+ [project]
2
+ name = "matchbox-db"
3
+ version = "0.2.2"
4
+ description = "A framework for orchestrating and comparing data linking and deduplication methodologies."
5
+ authors = [{ name="Department for Business and Trade" }]
6
+ license = {file = "LICENSE"}
7
+ readme = "README.md"
8
+ requires-python = ">=3.11,<3.14"
9
+ dependencies = [
10
+ "click>=8.1.7",
11
+ "connectorx>=0.3.3",
12
+ "duckdb>=1.1.1",
13
+ "faker>=36.1.1",
14
+ "frozendict>=2.4.6",
15
+ "httpx>=0.28.0",
16
+ "matplotlib>=3.9.2",
17
+ "pandas>=2.2.3",
18
+ "psycopg2>=2.9.10",
19
+ "pyarrow>=17.0.0",
20
+ "pydantic-settings>=2.5.2",
21
+ "pydantic>=2.9.2",
22
+ "rustworkx>=0.15.1",
23
+ "splink>=4.0.5,<4.1.0",
24
+ "sqlalchemy>=2.0.35",
25
+ "rich>=13.9.4",
26
+ ]
27
+
28
+ [project.optional-dependencies]
29
+ server = [
30
+ "boto3>=1.35.99",
31
+ "ddtrace>=3.2.1",
32
+ "fastapi[standard]>=0.115.0,<0.116.0",
33
+ "pg-bulk-ingest>=0.0.54",
34
+ "python-multipart>=0.0.18",
35
+ "tomli>=2.0.1",
36
+ ]
37
+
38
+ [dependency-groups]
39
+ dev = [
40
+ "docker>=7.1.0",
41
+ "griffe-inherited-docstrings>=1.1.1",
42
+ "ipykernel>=6.29.5",
43
+ "ipywidgets>=8.1.5",
44
+ "mkdocs>=1.6.1",
45
+ "mkdocs-autorefs>=1.3.0",
46
+ "mkdocs-material>=9.5.50",
47
+ "mkdocstrings[python]>=0.27.0",
48
+ "moto[s3]>=5.0.26",
49
+ "pre-commit>=3.8.0",
50
+ "pytest>=8.3.3",
51
+ "pytest-asyncio>=0.25.2",
52
+ "pytest-cov>=5.0.0",
53
+ "pytest-env>=1.1.5",
54
+ "respx>=0.22.0",
55
+ "ruff>=0.9.0",
56
+ "snakeviz>=2.2.2",
57
+ "tomli-w>=1.1.0",
58
+ ]
59
+ typing = [
60
+ "boto3-stubs[s3]>=1.35.99",
61
+ "polars>=1.11.0",
62
+ "pyarrow-stubs>=17.16",
63
+ ]
64
+
65
+ [project.urls]
66
+ "Documentation" = "https://uktrade.github.io/matchbox/"
67
+ "Repository" = "https://github.com/uktrade/matchbox.git"
68
+
69
+ [build-system]
70
+ requires = ["setuptools>=42"]
71
+ build-backend = "setuptools.build_meta"
72
+
73
+ [tool.uv]
74
+ default-groups = ["dev", "typing"]
75
+ package = true
76
+ upgrade-package = ["ruff"]
77
+
78
+ [tool.ruff]
79
+ exclude = [
80
+ "*.ipynb"
81
+ ]
82
+ line-length = 88
83
+ indent-width = 4
84
+ target-version = "py311"
85
+ src = ["src"]
86
+
87
+ [tool.ruff.lint]
88
+ select = [
89
+ "E",
90
+ "F",
91
+ "I",
92
+ "B",
93
+ "D"
94
+ ]
95
+ ignore = []
96
+ fixable = ["ALL"]
97
+ unfixable = []
98
+ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
99
+
100
+ [tool.ruff.lint.pydocstyle]
101
+ convention = "google"
102
+
103
+ [tool.ruff.lint.per-file-ignores]
104
+ "**/{test,docs}/*" = ["D"]
105
+
106
+ [tool.ruff.format]
107
+ quote-style = "double"
108
+ indent-style = "space"
109
+ skip-magic-trailing-comma = false
110
+ line-ending = "auto"
111
+ docstring-code-format = true
112
+
113
+ [tool.pytest.ini_options]
114
+ testpaths = ["test"]
115
+ pythonpath = ["."]
116
+ addopts = "--cov=matchbox test/ --log-disable=pg_bulk_ingest"
117
+ norecursedirs = "src"
118
+ log_cli = false # Set to true to enable logs and individual tests
119
+ log_cli_level = "ERROR" # Set to "INFO" to see more detailed logging
120
+ log_cli_format = "%(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s)"
121
+ log_cli_date_format = "%X"
122
+ asyncio_mode = "strict"
123
+ asyncio_default_fixture_loop_scope = "function"
124
+ filterwarnings = [
125
+ 'ignore:.*__fields.*:pydantic.PydanticDeprecatedSince20:unittest.mock',
126
+ 'ignore:.*__fields_set__.*:pydantic.PydanticDeprecatedSince20:unittest.mock'
127
+ ]
128
+ markers = [
129
+ "docker: marks tests that require resources in Docker to be available",
130
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,13 @@
1
+ """Matchbox."""
2
+
3
+ from matchbox.common.exceptions import MatchboxClientSettingsException
4
+ from matchbox.common.logging import logger
5
+
6
+ try:
7
+ # Environment variables must be loaded first for other imports to work
8
+ from matchbox.client import * # noqa: E402, F403
9
+ except MatchboxClientSettingsException:
10
+ logger.warning(
11
+ "Impossible to initialise client. "
12
+ "Please ignore if running in server mode. Otherwise, check your .env file.",
13
+ )
@@ -0,0 +1,9 @@
1
+ """All client-side functionalities of Matchbox."""
2
+
3
+ from matchbox.client.helpers.cleaner import process
4
+ from matchbox.client.helpers.index import index
5
+ from matchbox.client.helpers.selector import match, query
6
+ from matchbox.client.models.models import make_model
7
+ from matchbox.client.visualisation import draw_resolution_graph
8
+
9
+ __all__ = ("process", "index", "match", "query", "make_model", "draw_resolution_graph")