howso-engine 68.2.0__tar.gz → 69.0.0__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.
- {howso_engine-68.2.0 → howso_engine-69.0.0}/LICENSE-3RD-PARTY.txt +34 -34
- {howso_engine-68.2.0/howso_engine.egg-info → howso_engine-69.0.0}/PKG-INFO +2 -2
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/base.py +64 -9
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/schemas/group_reaction.py +1 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/direct/client.py +33 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/engine/trainee.py +35 -23
- howso_engine-69.0.0/howso/howso-engine/howso.caml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/howso-engine/migrations/migrations.caml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/howso-engine/version.json +4 -4
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/scikit/scikit.py +6 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/progress.py +15 -61
- {howso_engine-68.2.0 → howso_engine-69.0.0/howso_engine.egg-info}/PKG-INFO +2 -2
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso_engine.egg-info/requires.txt +1 -1
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso_engine.egg-info/scm_file_list.json +1 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/pyproject.toml +1 -1
- {howso_engine-68.2.0 → howso_engine-69.0.0}/requirements-3.11-dev.txt +9 -7
- {howso_engine-68.2.0 → howso_engine-69.0.0}/requirements-3.11.txt +6 -4
- {howso_engine-68.2.0 → howso_engine-69.0.0}/requirements-3.12-dev.txt +9 -7
- {howso_engine-68.2.0 → howso_engine-69.0.0}/requirements-3.12.txt +6 -4
- {howso_engine-68.2.0 → howso_engine-69.0.0}/requirements-3.13-dev.txt +9 -7
- {howso_engine-68.2.0 → howso_engine-69.0.0}/requirements-3.13.txt +6 -4
- {howso_engine-68.2.0 → howso_engine-69.0.0}/requirements-3.14-dev.txt +9 -7
- {howso_engine-68.2.0 → howso_engine-69.0.0}/requirements-3.14.txt +6 -4
- howso_engine-69.0.0/version.json +5 -0
- howso_engine-68.2.0/howso/howso-engine/howso.caml +0 -0
- howso_engine-68.2.0/version.json +0 -5
- {howso_engine-68.2.0 → howso_engine-69.0.0}/.coveragerc +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/.flake8 +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/.github/CODEOWNERS +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/.github/templates/version_summary.md +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/.github/workflows/build-pr.yml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/.github/workflows/build-release.yml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/.github/workflows/build.yml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/.github/workflows/rebuild-requirements.yml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/.github/workflows/version-update.yml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/.gitignore +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/.gitmodules +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/.pylintrc +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/CONTRIBUTING.md +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/LICENSE.txt +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/MANIFEST.in +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/Makefile +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/README.md +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/bin/build.sh +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/config/latest-mt-debug-howso.yml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/config/latest-mt-howso.yml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/config/latest-mt-noavx-traces-howso.yml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/config/latest-mt-traces-howso.yml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/config/latest-st-debug-howso.yml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/config/latest-st-howso.yml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/config/latest-st-traces-howso.yml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/config/powershell/Download-Tzdata.ps1 +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/config/powershell/Helper-Functions.ps1 +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/hatch.toml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/__main__.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/__init__.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/api.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/cache.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/client.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/configuration.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/exceptions.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/feature_flags.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/pandas/__init__.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/pandas/client.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/protocols.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/schemas/__init__.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/schemas/aggregate_reaction.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/schemas/base.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/schemas/project.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/schemas/reaction.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/schemas/session.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/schemas/trainee.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/schemas/version.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/client/typing.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/direct/__init__.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/direct/_utilities.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/direct/schemas/__init__.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/direct/schemas/trainee.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/engine/__init__.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/engine/client.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/engine/project.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/engine/session.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/scikit/__init__.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/__init__.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/decorators.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/fanout_features.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/feature_attributes/__init__.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/feature_attributes/abstract_data.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/feature_attributes/base.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/feature_attributes/infer_feature_attributes.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/feature_attributes/pandas.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/feature_attributes/protocols.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/feature_attributes/relational.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/feature_attributes/serializers.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/feature_attributes/suggestions.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/feature_attributes/time_series.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/feature_attributes/warnings.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/features.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/installation_verification/__init__.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/installation_verification/__main__.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/installation_verification/_constants.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/installation_verification/_helpers.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/installation_verification/_output.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/installation_verification/_probes.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/installation_verification/_types.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/installation_verification/checks_cpu.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/installation_verification/checks_engine.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/installation_verification/checks_environment.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/installation_verification/checks_optional.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/installation_verification/main.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/installation_verification/registry.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/internals.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/json_wrapper.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/locale.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/monitors.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/posix.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/random.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/reaction.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/testing.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/tokenizing.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso/utilities/utilities.py +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso_engine.egg-info/SOURCES.txt +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso_engine.egg-info/dependency_links.txt +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso_engine.egg-info/entry_points.txt +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/howso_engine.egg-info/top_level.txt +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/pyrightconfig.json +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/ruff.toml +0 -0
- {howso_engine-68.2.0 → howso_engine-69.0.0}/setup.cfg +0 -0
|
@@ -4,7 +4,7 @@ MIT License
|
|
|
4
4
|
joke2k
|
|
5
5
|
https://github.com/joke2k/faker
|
|
6
6
|
Faker is a Python package that generates fake data for you.
|
|
7
|
-
/home/runner/.pyenv/versions/3.14.
|
|
7
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/faker-40.43.0.dist-info/licenses/LICENSE.txt
|
|
8
8
|
Copyright (c) 2012 Daniele Faraglia
|
|
9
9
|
|
|
10
10
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
@@ -32,7 +32,7 @@ MIT License
|
|
|
32
32
|
Kirill Simonov
|
|
33
33
|
https://pyyaml.org/
|
|
34
34
|
YAML parser and emitter for Python
|
|
35
|
-
/home/runner/.pyenv/versions/3.14.
|
|
35
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/pyyaml-6.0.3.dist-info/licenses/LICENSE
|
|
36
36
|
Copyright (c) 2017-2021 Ingy döt Net
|
|
37
37
|
Copyright (c) 2006-2016 Kirill Simonov
|
|
38
38
|
|
|
@@ -61,7 +61,7 @@ BSD-2-Clause
|
|
|
61
61
|
Georg Brandl <georg@python.org>
|
|
62
62
|
https://pygments.org
|
|
63
63
|
Pygments is a syntax highlighting package written in Python.
|
|
64
|
-
/home/runner/.pyenv/versions/3.14.
|
|
64
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/pygments-2.21.0.dist-info/licenses/LICENSE
|
|
65
65
|
Copyright (c) 2006-2022 by the respective authors (see AUTHORS file).
|
|
66
66
|
All rights reserved.
|
|
67
67
|
|
|
@@ -95,7 +95,7 @@ MIT
|
|
|
95
95
|
Filipe Laíns <lains@riseup.net>, Bernát Gábor <gaborjbernat@gmail.com>, layday <layday@protonmail.com>, Henry Schreiner <henryschreineriii@gmail.com>
|
|
96
96
|
https://build.pypa.io
|
|
97
97
|
A simple, correct Python build frontend
|
|
98
|
-
/home/runner/.pyenv/versions/3.14.
|
|
98
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/build-1.6.1.dist-info/licenses/LICENSE
|
|
99
99
|
Copyright © 2019 Filipe Laíns <filipe.lains@gmail.com>
|
|
100
100
|
|
|
101
101
|
Permission is hereby granted, free of charge, to any person obtaining a
|
|
@@ -119,12 +119,12 @@ DEALINGS IN THE SOFTWARE.
|
|
|
119
119
|
|
|
120
120
|
|
|
121
121
|
certifi
|
|
122
|
-
2026.10.
|
|
122
|
+
2026.10.23
|
|
123
123
|
Mozilla Public License 2.0 (MPL 2.0)
|
|
124
124
|
Kenneth Reitz
|
|
125
125
|
https://github.com/certifi/python-certifi
|
|
126
126
|
Python package for providing Mozilla's CA Bundle.
|
|
127
|
-
/home/runner/.pyenv/versions/3.14.
|
|
127
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/certifi-2026.10.23.dist-info/licenses/LICENSE
|
|
128
128
|
This package contains a modified version of ca-bundle.crt:
|
|
129
129
|
|
|
130
130
|
ca-bundle.crt -- Bundle of CA Root Certificates
|
|
@@ -153,7 +153,7 @@ MIT
|
|
|
153
153
|
"Ahmed R. TAHRI" <tahri.ahmed@proton.me>
|
|
154
154
|
https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md
|
|
155
155
|
The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet.
|
|
156
|
-
/home/runner/.pyenv/versions/3.14.
|
|
156
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/charset_normalizer-3.5.2.dist-info/licenses/LICENSE
|
|
157
157
|
MIT License
|
|
158
158
|
|
|
159
159
|
Copyright (c) 2025 TAHRI Ahmed R.
|
|
@@ -183,7 +183,7 @@ BSD-3-Clause
|
|
|
183
183
|
UNKNOWN
|
|
184
184
|
https://github.com/pallets/click/
|
|
185
185
|
Composable command line interface toolkit
|
|
186
|
-
/home/runner/.pyenv/versions/3.14.
|
|
186
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/click-8.5.0.dist-info/licenses/LICENSE.txt
|
|
187
187
|
Copyright 2014 Pallets
|
|
188
188
|
|
|
189
189
|
Redistribution and use in source and binary forms, with or without
|
|
@@ -220,7 +220,7 @@ BSD License
|
|
|
220
220
|
The cloudpickle developer team
|
|
221
221
|
https://github.com/cloudpipe/cloudpickle
|
|
222
222
|
Pickler class to extend the standard pickle.Pickler functionality
|
|
223
|
-
/home/runner/.pyenv/versions/3.14.
|
|
223
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/cloudpickle-3.1.2.dist-info/licenses/LICENSE
|
|
224
224
|
This module was extracted from the `cloud` package, developed by
|
|
225
225
|
PiCloud, Inc.
|
|
226
226
|
|
|
@@ -261,7 +261,7 @@ MIT
|
|
|
261
261
|
Jason Moiron <jmoiron@jmoiron.net>
|
|
262
262
|
https://github.com/python-humanize/humanize
|
|
263
263
|
Python humanize utilities
|
|
264
|
-
/home/runner/.pyenv/versions/3.14.
|
|
264
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/humanize-4.16.0.dist-info/licenses/LICENCE
|
|
265
265
|
Copyright (c) 2010-2020 Jason Moiron and Contributors
|
|
266
266
|
|
|
267
267
|
Permission is hereby granted, free of charge, to any person obtaining
|
|
@@ -290,7 +290,7 @@ BSD-3-Clause
|
|
|
290
290
|
Kim Davies <kim+pypi@gumleaf.org>
|
|
291
291
|
https://github.com/kjd/idna
|
|
292
292
|
Internationalized Domain Names in Applications (IDNA)
|
|
293
|
-
/home/runner/.pyenv/versions/3.14.
|
|
293
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/idna-3.20.dist-info/licenses/LICENSE.md
|
|
294
294
|
BSD 3-Clause License
|
|
295
295
|
|
|
296
296
|
Copyright (c) 2013-2026, Kim Davies and contributors.
|
|
@@ -330,7 +330,7 @@ BSD-3-Clause
|
|
|
330
330
|
Gael Varoquaux <gael.varoquaux@normalesup.org>
|
|
331
331
|
https://joblib.readthedocs.io
|
|
332
332
|
Lightweight pipelining with Python functions
|
|
333
|
-
/home/runner/.pyenv/versions/3.14.
|
|
333
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/joblib-1.6.0.dist-info/licenses/LICENSE.txt
|
|
334
334
|
BSD 3-Clause License
|
|
335
335
|
|
|
336
336
|
Copyright (c) 2008-2021, The joblib developers.
|
|
@@ -368,7 +368,7 @@ MIT License
|
|
|
368
368
|
Chris Sewell <chrisj_sewell@hotmail.com>
|
|
369
369
|
https://github.com/executablebooks/markdown-it-py
|
|
370
370
|
Python port of markdown-it. Markdown parsing, done right!
|
|
371
|
-
/home/runner/.pyenv/versions/3.14.
|
|
371
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/markdown_it_py-4.2.0.dist-info/licenses/LICENSE
|
|
372
372
|
MIT License
|
|
373
373
|
|
|
374
374
|
Copyright (c) 2020 ExecutableBookProject
|
|
@@ -398,7 +398,7 @@ MIT License
|
|
|
398
398
|
Taneli Hukkinen <hukkin@users.noreply.github.com>
|
|
399
399
|
https://github.com/executablebooks/mdurl
|
|
400
400
|
Markdown URL utilities
|
|
401
|
-
/home/runner/.pyenv/versions/3.14.
|
|
401
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/mdurl-0.1.2.dist-info/LICENSE
|
|
402
402
|
Copyright (c) 2015 Vitaly Puzrin, Alex Kocharin.
|
|
403
403
|
Copyright (c) 2021 Taneli Hukkinen
|
|
404
404
|
|
|
@@ -453,7 +453,7 @@ MIT License
|
|
|
453
453
|
Hajime Senuma <hajime.senuma@gmail.com>
|
|
454
454
|
https://pypi.org/project/mmh3/
|
|
455
455
|
Python extension for MurmurHash (MurmurHash3), a set of fast and robust hash functions.
|
|
456
|
-
/home/runner/.pyenv/versions/3.14.
|
|
456
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/mmh3-5.3.1.dist-info/licenses/LICENSE
|
|
457
457
|
MIT License
|
|
458
458
|
|
|
459
459
|
Copyright (c) 2011-2026 Hajime Senuma
|
|
@@ -482,7 +482,7 @@ BSD-3-Clause AND 0BSD AND MIT AND Zlib AND CC0-1.0
|
|
|
482
482
|
Travis E. Oliphant et al.
|
|
483
483
|
https://numpy.org
|
|
484
484
|
Fundamental package for array computing in Python
|
|
485
|
-
/home/runner/.pyenv/versions/3.14.
|
|
485
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/numpy-2.4.6.dist-info/licenses/LICENSE.txt
|
|
486
486
|
Copyright (c) 2005-2025, NumPy Developers.
|
|
487
487
|
All rights reserved.
|
|
488
488
|
|
|
@@ -1426,7 +1426,7 @@ Apache-2.0 OR BSD-2-Clause
|
|
|
1426
1426
|
Donald Stufft <donald@stufft.io>
|
|
1427
1427
|
https://github.com/pypa/packaging
|
|
1428
1428
|
Core utilities for Python packages
|
|
1429
|
-
/home/runner/.pyenv/versions/3.14.
|
|
1429
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/packaging-26.3.dist-info/licenses/LICENSE
|
|
1430
1430
|
This software is made available under the terms of *either* of the licenses
|
|
1431
1431
|
found in LICENSE.APACHE or LICENSE.BSD. Contributions to this software is made
|
|
1432
1432
|
under the terms of *both* these licenses.
|
|
@@ -1438,7 +1438,7 @@ BSD License
|
|
|
1438
1438
|
The Pandas Development Team <pandas-dev@python.org>
|
|
1439
1439
|
https://pandas.pydata.org
|
|
1440
1440
|
Powerful data structures for data analysis, time series, and statistics
|
|
1441
|
-
/home/runner/.pyenv/versions/3.14.
|
|
1441
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/pandas-2.3.3.dist-info/LICENSE
|
|
1442
1442
|
BSD 3-Clause License
|
|
1443
1443
|
|
|
1444
1444
|
Copyright (c) 2008-2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
|
|
@@ -2696,7 +2696,7 @@ BSD License
|
|
|
2696
2696
|
Vincent Driessen <me@nvie.com>
|
|
2697
2697
|
https://github.com/jazzband/pip-tools/
|
|
2698
2698
|
pip-tools keeps your pinned dependencies fresh.
|
|
2699
|
-
/home/runner/.pyenv/versions/3.14.
|
|
2699
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/pip_tools-7.4.1.dist-info/LICENSE
|
|
2700
2700
|
BSD 3-Clause License
|
|
2701
2701
|
|
|
2702
2702
|
Copyright (c). All rights reserved.
|
|
@@ -2733,7 +2733,7 @@ BSD-3-Clause
|
|
|
2733
2733
|
Giampaolo Rodola
|
|
2734
2734
|
https://github.com/giampaolo/psutil
|
|
2735
2735
|
Cross-platform lib for process and system monitoring.
|
|
2736
|
-
/home/runner/.pyenv/versions/3.14.
|
|
2736
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/psutil-7.2.2.dist-info/LICENSE
|
|
2737
2737
|
BSD 3-Clause License
|
|
2738
2738
|
|
|
2739
2739
|
Copyright (c) 2009, Jay Loden, Dave Daeschler, Giampaolo Rodola
|
|
@@ -2771,7 +2771,7 @@ MIT
|
|
|
2771
2771
|
Thomas Kluyver <thomas@kluyver.me.uk>
|
|
2772
2772
|
https://github.com/pypa/pyproject-hooks
|
|
2773
2773
|
Wrappers to call pyproject.toml-based build backend hooks.
|
|
2774
|
-
/home/runner/.pyenv/versions/3.14.
|
|
2774
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/pyproject_hooks-1.3.3.dist-info/licenses/LICENSE
|
|
2775
2775
|
The MIT License (MIT)
|
|
2776
2776
|
|
|
2777
2777
|
Copyright (c) 2017 Thomas Kluyver
|
|
@@ -2796,12 +2796,12 @@ THE SOFTWARE.
|
|
|
2796
2796
|
|
|
2797
2797
|
|
|
2798
2798
|
python-dateutil
|
|
2799
|
-
|
|
2799
|
+
3.0.0
|
|
2800
2800
|
Apache Software License; BSD License
|
|
2801
2801
|
Gustavo Niemeyer
|
|
2802
2802
|
https://github.com/dateutil/dateutil
|
|
2803
2803
|
Extensions to the standard Python datetime module
|
|
2804
|
-
/home/runner/.pyenv/versions/3.14.
|
|
2804
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/python_dateutil-3.0.0.dist-info/licenses/LICENSE
|
|
2805
2805
|
Copyright 2017- Paul Ganssle <paul@ganssle.io>
|
|
2806
2806
|
Copyright 2017- dateutil contributors (see AUTHORS file)
|
|
2807
2807
|
|
|
@@ -2863,7 +2863,7 @@ MIT License
|
|
|
2863
2863
|
Stuart Bishop
|
|
2864
2864
|
http://pythonhosted.org/pytz
|
|
2865
2865
|
World timezone definitions, modern and historical
|
|
2866
|
-
/home/runner/.pyenv/versions/3.14.
|
|
2866
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/pytz-2026.5.dist-info/LICENSE.txt
|
|
2867
2867
|
Copyright (c) 2003-2019 Stuart Bishop <stuart@stuartbishop.net>
|
|
2868
2868
|
|
|
2869
2869
|
Permission is hereby granted, free of charge, to any person obtaining a
|
|
@@ -2891,7 +2891,7 @@ Apache-2.0 AND CNRI-Python
|
|
|
2891
2891
|
Matthew Barnett <regex@mrabarnett.plus.com>
|
|
2892
2892
|
https://github.com/mrabarnett/mrab-regex
|
|
2893
2893
|
Alternative regular expression module, to replace re.
|
|
2894
|
-
/home/runner/.pyenv/versions/3.14.
|
|
2894
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/regex-2026.9.29.dist-info/licenses/LICENSE.txt
|
|
2895
2895
|
This work was derived from the 're' module of CPython 2.6 and CPython 3.1,
|
|
2896
2896
|
copyright (c) 1998-2001 by Secret Labs AB and licensed under CNRI's Python 1.6
|
|
2897
2897
|
license.
|
|
@@ -3108,7 +3108,7 @@ Apache Software License
|
|
|
3108
3108
|
Kenneth Reitz <me@kennethreitz.org>
|
|
3109
3109
|
https://github.com/psf/requests
|
|
3110
3110
|
Python HTTP for Humans.
|
|
3111
|
-
/home/runner/.pyenv/versions/3.14.
|
|
3111
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/requests-2.34.2.dist-info/licenses/LICENSE
|
|
3112
3112
|
|
|
3113
3113
|
Apache License
|
|
3114
3114
|
Version 2.0, January 2004
|
|
@@ -3292,7 +3292,7 @@ MIT License
|
|
|
3292
3292
|
Will McGugan
|
|
3293
3293
|
https://github.com/Textualize/rich
|
|
3294
3294
|
Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal
|
|
3295
|
-
/home/runner/.pyenv/versions/3.14.
|
|
3295
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/rich-15.0.0.dist-info/licenses/LICENSE
|
|
3296
3296
|
Copyright (c) 2020 Will McGugan
|
|
3297
3297
|
|
|
3298
3298
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
@@ -3320,7 +3320,7 @@ MIT License
|
|
|
3320
3320
|
UNKNOWN
|
|
3321
3321
|
https://github.com/hplt-project/sacremoses
|
|
3322
3322
|
SacreMoses
|
|
3323
|
-
/home/runner/.pyenv/versions/3.14.
|
|
3323
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/sacremoses-0.2.0.dist-info/licenses/LICENSE
|
|
3324
3324
|
MIT License
|
|
3325
3325
|
|
|
3326
3326
|
Copyright (c) 2020 alvations
|
|
@@ -3350,7 +3350,7 @@ BSD License
|
|
|
3350
3350
|
Raphaël Barrois
|
|
3351
3351
|
https://github.com/rbarrois/python-semanticversion
|
|
3352
3352
|
A library implementing the 'SemVer' scheme.
|
|
3353
|
-
/home/runner/.pyenv/versions/3.14.
|
|
3353
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/semantic_version-2.10.0.dist-info/LICENSE
|
|
3354
3354
|
Copyright (c) The python-semanticversion project
|
|
3355
3355
|
All rights reserved.
|
|
3356
3356
|
|
|
@@ -3381,7 +3381,7 @@ MIT License
|
|
|
3381
3381
|
Benjamin Peterson
|
|
3382
3382
|
https://github.com/benjaminp/six
|
|
3383
3383
|
Python 2 and 3 compatibility utilities
|
|
3384
|
-
/home/runner/.pyenv/versions/3.14.
|
|
3384
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/six-1.17.0.dist-info/LICENSE
|
|
3385
3385
|
Copyright (c) 2010-2024 Benjamin Peterson
|
|
3386
3386
|
|
|
3387
3387
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
@@ -3408,7 +3408,7 @@ MPL-2.0 AND MIT
|
|
|
3408
3408
|
UNKNOWN
|
|
3409
3409
|
https://tqdm.github.io
|
|
3410
3410
|
Fast, Extensible Progress Meter
|
|
3411
|
-
/home/runner/.pyenv/versions/3.14.
|
|
3411
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/tqdm-4.70.1.dist-info/licenses/LICENCE
|
|
3412
3412
|
`tqdm` is a product of collaborative work.
|
|
3413
3413
|
Unless otherwise stated, all authors (see commit logs) retain copyright
|
|
3414
3414
|
for their respective work, and release the work under the MIT licence
|
|
@@ -3466,7 +3466,7 @@ PSF-2.0
|
|
|
3466
3466
|
"Guido van Rossum, Jukka Lehtosalo, Łukasz Langa, Michael Lee" <levkivskyi@gmail.com>
|
|
3467
3467
|
https://github.com/python/typing_extensions
|
|
3468
3468
|
Backported and Experimental Type Hints for Python 3.9+
|
|
3469
|
-
/home/runner/.pyenv/versions/3.14.
|
|
3469
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/typing_extensions-4.16.0.dist-info/licenses/LICENSE
|
|
3470
3470
|
A. HISTORY OF THE SOFTWARE
|
|
3471
3471
|
==========================
|
|
3472
3472
|
|
|
@@ -3754,7 +3754,7 @@ Apache-2.0
|
|
|
3754
3754
|
Python Software Foundation
|
|
3755
3755
|
https://github.com/python/tzdata
|
|
3756
3756
|
Provider of IANA time zone data
|
|
3757
|
-
/home/runner/.pyenv/versions/3.14.
|
|
3757
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/tzdata-2026.5.dist-info/licenses/LICENSE
|
|
3758
3758
|
Apache Software License 2.0
|
|
3759
3759
|
|
|
3760
3760
|
Copyright (c) 2020, Paul Ganssle (Google)
|
|
@@ -3779,7 +3779,7 @@ MIT
|
|
|
3779
3779
|
Andrey Petrov <andrey.petrov@shazow.net>
|
|
3780
3780
|
https://github.com/urllib3/urllib3/blob/main/CHANGES.rst
|
|
3781
3781
|
HTTP library with thread-safe connection pooling, file post, and more.
|
|
3782
|
-
/home/runner/.pyenv/versions/3.14.
|
|
3782
|
+
/home/runner/.pyenv/versions/3.14.9/lib/python3.14/site-packages/urllib3-2.8.0.dist-info/licenses/LICENSE.txt
|
|
3783
3783
|
MIT License
|
|
3784
3784
|
|
|
3785
3785
|
Copyright (c) 2008-2020 Andrey Petrov and contributors.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: howso-engine
|
|
3
|
-
Version:
|
|
3
|
+
Version: 69.0.0
|
|
4
4
|
Summary: The Howso Engine™ is a natively and fully explainable ML engine, serving as an alternative to black box AI neural networks.
|
|
5
5
|
Author: Howso Incorporated
|
|
6
6
|
Author-email: support@howso.com
|
|
@@ -705,7 +705,7 @@ Requires-Dist: sacremoses
|
|
|
705
705
|
Requires-Dist: semantic-version~=2.0
|
|
706
706
|
Requires-Dist: typing-extensions~=4.9
|
|
707
707
|
Requires-Dist: urllib3>=2.6.3
|
|
708
|
-
Requires-Dist: amalgam-lang==
|
|
708
|
+
Requires-Dist: amalgam-lang==37.0.0
|
|
709
709
|
Provides-Extra: dev
|
|
710
710
|
Requires-Dist: dill~=0.0; extra == "dev"
|
|
711
711
|
Requires-Dist: flake8-docstrings; extra == "dev"
|
|
@@ -73,6 +73,13 @@ if TYPE_CHECKING:
|
|
|
73
73
|
from .configuration import HowsoConfiguration
|
|
74
74
|
|
|
75
75
|
|
|
76
|
+
def _is_multithreaded_library_type(library_type: str | None) -> bool:
|
|
77
|
+
"""Report whether a Trainee runtime ``library_type`` names a multi-threaded build."""
|
|
78
|
+
if not isinstance(library_type, str):
|
|
79
|
+
return False
|
|
80
|
+
return "mt" in library_type.strip().split("-")
|
|
81
|
+
|
|
82
|
+
|
|
76
83
|
class AbstractHowsoClient(ABC):
|
|
77
84
|
"""The base definition of the Howso client interface."""
|
|
78
85
|
|
|
@@ -464,6 +471,37 @@ class AbstractHowsoClient(ABC):
|
|
|
464
471
|
"""
|
|
465
472
|
return None
|
|
466
473
|
|
|
474
|
+
def is_multithreaded(self, trainee_id: str) -> bool:
|
|
475
|
+
"""
|
|
476
|
+
Report whether a Trainee's engine runs on a multi-threaded Amalgam build.
|
|
477
|
+
|
|
478
|
+
A multi-threaded build tolerates concurrent calls into one engine: it
|
|
479
|
+
can be polled for progress while it works and can serve requests from
|
|
480
|
+
several threads at once. A single-threaded build, including the OpenMP
|
|
481
|
+
build, does neither safely.
|
|
482
|
+
|
|
483
|
+
The answer is a snapshot. A client whose Trainees can change library
|
|
484
|
+
type may answer differently on a later call.
|
|
485
|
+
|
|
486
|
+
This implementation reads ``library_type`` from
|
|
487
|
+
:meth:`get_trainee_runtime` and reports True only for the ``mt``
|
|
488
|
+
library type. Clients that can identify their build more directly
|
|
489
|
+
override it.
|
|
490
|
+
|
|
491
|
+
Parameters
|
|
492
|
+
----------
|
|
493
|
+
trainee_id : str
|
|
494
|
+
The identifier of the Trainee.
|
|
495
|
+
|
|
496
|
+
Returns
|
|
497
|
+
-------
|
|
498
|
+
bool
|
|
499
|
+
True when the build is confirmed multi-threaded; False for a
|
|
500
|
+
single-threaded build or an unrecognized library type.
|
|
501
|
+
"""
|
|
502
|
+
runtime = self.get_trainee_runtime(trainee_id)
|
|
503
|
+
return _is_multithreaded_library_type(runtime.get("library_type"))
|
|
504
|
+
|
|
467
505
|
@abstractmethod
|
|
468
506
|
def query_trainees(self, search_terms: str | None = None) -> list[dict]:
|
|
469
507
|
"""Query accessible Trainees."""
|
|
@@ -2227,6 +2265,12 @@ class AbstractHowsoClient(ABC):
|
|
|
2227
2265
|
'num_most_similar_cases' is not specified) relevant number of
|
|
2228
2266
|
similar cases, which will first include the influential cases.
|
|
2229
2267
|
Uses only the context features of the reacted case.
|
|
2268
|
+
- most_similar_cases_features : list of str, optional
|
|
2269
|
+
A list of feature names to output values for when outputting
|
|
2270
|
+
most similar, influential, or boundary cases. If an empty list,
|
|
2271
|
+
only the distance and session information of each case is
|
|
2272
|
+
output. If unspecified, outputs all context and action
|
|
2273
|
+
features.
|
|
2230
2274
|
- num_boundary_cases : int, optional
|
|
2231
2275
|
Outputs this manually specified number of boundary cases.
|
|
2232
2276
|
- num_most_similar_cases : int, optional
|
|
@@ -4433,6 +4477,7 @@ class AbstractHowsoClient(ABC):
|
|
|
4433
4477
|
features: Collection[str] | None = None,
|
|
4434
4478
|
filter_fanout_values: bool = False,
|
|
4435
4479
|
group_id_features: Collection[str] | None = None,
|
|
4480
|
+
isolation_distance_contributions: bool = False,
|
|
4436
4481
|
kl_divergence_addition: bool = False,
|
|
4437
4482
|
kl_divergence_removal: bool = False,
|
|
4438
4483
|
new_cases: TabularData3D | None = None,
|
|
@@ -4455,7 +4500,7 @@ class AbstractHowsoClient(ABC):
|
|
|
4455
4500
|
action_features : list of str, optional
|
|
4456
4501
|
A list of features whose values should be predicted for
|
|
4457
4502
|
each group. Each group of cases gets a single action value for each
|
|
4458
|
-
feature.
|
|
4503
|
+
feature. Predictions are made holding out the rest of the group.
|
|
4459
4504
|
case_indices : list of lists of lists of tuples of {str, int}, optional
|
|
4460
4505
|
A list of lists of case indices tuples containing the session ID and
|
|
4461
4506
|
the session training indices that uniquely identify trained cases.
|
|
@@ -4504,7 +4549,8 @@ class AbstractHowsoClient(ABC):
|
|
|
4504
4549
|
predicted for each group.
|
|
4505
4550
|
distance_contributions : bool, default False
|
|
4506
4551
|
Calculate and output the average distance contribution for each group
|
|
4507
|
-
holding out rest of the group.
|
|
4552
|
+
without holding out the rest of the group. Each case is only held out
|
|
4553
|
+
of its own query.
|
|
4508
4554
|
familiarity_conviction_addition : bool, default False
|
|
4509
4555
|
Calculate and output familiarity conviction of adding the
|
|
4510
4556
|
specified cases.
|
|
@@ -4518,11 +4564,18 @@ class AbstractHowsoClient(ABC):
|
|
|
4518
4564
|
holding out other cases that have the same fanned out values
|
|
4519
4565
|
duplicated. Only used when predicting the given ``action_features``.
|
|
4520
4566
|
group_id_features : Collection of str, optional
|
|
4521
|
-
List of feature names whose values
|
|
4522
|
-
|
|
4523
|
-
|
|
4524
|
-
|
|
4525
|
-
``
|
|
4567
|
+
List of feature names whose values identify trained cases that
|
|
4568
|
+
belong to the same group as the given ``new_cases``. These trained
|
|
4569
|
+
cases are held out along with the group, but only in computations
|
|
4570
|
+
that hold out the group: ``isolation_distance_contributions``,
|
|
4571
|
+
``residual_contributions``, ``similarity_conviction``, and
|
|
4572
|
+
predictions of ``action_features``. They are not held out for
|
|
4573
|
+
``distance_contributions``. Each group is assumed to have a single
|
|
4574
|
+
value for each of these features. Ignored if ``new_cases`` is not
|
|
4575
|
+
specified.
|
|
4576
|
+
isolation_distance_contributions : bool, default False
|
|
4577
|
+
Calculate and output the average distance contribution for each group
|
|
4578
|
+
holding out the rest of the group.
|
|
4526
4579
|
kl_divergence_addition : bool, default False
|
|
4527
4580
|
Calculate and output KL divergence of adding the
|
|
4528
4581
|
specified cases.
|
|
@@ -4548,10 +4601,11 @@ class AbstractHowsoClient(ABC):
|
|
|
4548
4601
|
p_value_of_removal : bool, default False
|
|
4549
4602
|
If true will output p value of removal.
|
|
4550
4603
|
residual_contributions : bool, default False
|
|
4551
|
-
Calculate and output mean residual contribution for each group's cases
|
|
4604
|
+
Calculate and output mean residual contribution for each group's cases
|
|
4605
|
+
holding out the rest of the group.
|
|
4552
4606
|
similarity_conviction : bool, default False
|
|
4553
4607
|
If true will output the mean similarity conviction of the group's
|
|
4554
|
-
cases.
|
|
4608
|
+
cases holding out the rest of the group.
|
|
4555
4609
|
task_id : str, optional
|
|
4556
4610
|
If provided, should be a short, unique identifier that can be used
|
|
4557
4611
|
with ``get_progress`` if concurrent progress updates are desired.
|
|
@@ -4611,6 +4665,7 @@ class AbstractHowsoClient(ABC):
|
|
|
4611
4665
|
"features": features,
|
|
4612
4666
|
"filter_fanout_values": filter_fanout_values,
|
|
4613
4667
|
"group_id_features": group_id_features,
|
|
4668
|
+
"isolation_distance_contributions": isolation_distance_contributions,
|
|
4614
4669
|
"kl_divergence_addition": kl_divergence_addition,
|
|
4615
4670
|
"kl_divergence_removal": kl_divergence_removal,
|
|
4616
4671
|
"new_cases": serialized_cases,
|
|
@@ -22,6 +22,7 @@ import warnings
|
|
|
22
22
|
from amalgam.api import Amalgam
|
|
23
23
|
import certifi
|
|
24
24
|
from packaging.version import parse as parse_version
|
|
25
|
+
from typing_extensions import override
|
|
25
26
|
import urllib3
|
|
26
27
|
from urllib3.util import Retry, Timeout
|
|
27
28
|
|
|
@@ -85,6 +86,13 @@ def squelch_logs(log_level: int) -> Generator[None, None, None]:
|
|
|
85
86
|
logging.disable(_old_level)
|
|
86
87
|
|
|
87
88
|
|
|
89
|
+
def _is_multithreaded_concurrency(concurrency: bytes | str) -> bool:
|
|
90
|
+
"""Report whether an Amalgam concurrency type string names a multi-threaded build."""
|
|
91
|
+
if isinstance(concurrency, bytes):
|
|
92
|
+
concurrency = concurrency.decode("utf-8", errors="replace")
|
|
93
|
+
return concurrency.strip().startswith("MultiThreaded")
|
|
94
|
+
|
|
95
|
+
|
|
88
96
|
class HowsoDirectClient(AbstractHowsoClient):
|
|
89
97
|
"""
|
|
90
98
|
The direct Howso client.
|
|
@@ -254,6 +262,7 @@ class HowsoDirectClient(AbstractHowsoClient):
|
|
|
254
262
|
UnsupportedArgumentWarning, stacklevel=2)
|
|
255
263
|
amlg_params = {k: v for k, v in amlg_params.items() if k in allowed_amlg_params}
|
|
256
264
|
self.amlg = Amalgam(**amlg_params) # pyright: ignore[reportArgumentType]
|
|
265
|
+
self._multithreaded = _is_multithreaded_concurrency(self.amlg.get_concurrency_type_string())
|
|
257
266
|
if gc_params:
|
|
258
267
|
self.set_garbage_collection_params(gc_params)
|
|
259
268
|
|
|
@@ -1437,6 +1446,30 @@ class HowsoDirectClient(AbstractHowsoClient):
|
|
|
1437
1446
|
versions=TraineeVersion(trainee=trainee_version, amalgam=amlg_version)
|
|
1438
1447
|
)
|
|
1439
1448
|
|
|
1449
|
+
@override
|
|
1450
|
+
def is_multithreaded(self, trainee_id: str) -> bool:
|
|
1451
|
+
"""
|
|
1452
|
+
Report whether this client's Amalgam library is a multi-threaded build.
|
|
1453
|
+
|
|
1454
|
+
The in-process library reports its own concurrency type, which this
|
|
1455
|
+
client reads once when it loads the library. That is a property of the
|
|
1456
|
+
process, so every Trainee on this client gets the same answer and
|
|
1457
|
+
``trainee_id`` is not consulted. ``library_type`` from
|
|
1458
|
+
:meth:`get_trainee_runtime` is derived from the library filename and
|
|
1459
|
+
reports ``mt`` for a path carrying no postfix, so it is not used here.
|
|
1460
|
+
|
|
1461
|
+
Parameters
|
|
1462
|
+
----------
|
|
1463
|
+
trainee_id : str
|
|
1464
|
+
The identifier of the Trainee. Not consulted.
|
|
1465
|
+
|
|
1466
|
+
Returns
|
|
1467
|
+
-------
|
|
1468
|
+
bool
|
|
1469
|
+
True when the loaded library is a multi-threaded build.
|
|
1470
|
+
"""
|
|
1471
|
+
return self._multithreaded
|
|
1472
|
+
|
|
1440
1473
|
def query_trainees(self, search_terms: str | None = None) -> list[dict[str, str]]:
|
|
1441
1474
|
"""
|
|
1442
1475
|
Query accessible Trainees.
|
|
@@ -149,8 +149,6 @@ class Trainee(BaseTrainee):
|
|
|
149
149
|
self._created: bool = False
|
|
150
150
|
self._updating: bool = False
|
|
151
151
|
self._was_saved: bool = False
|
|
152
|
-
# Must precede the client assignment that follows.
|
|
153
|
-
self._supports_engine_progress: bool | None = None # lazy loaded
|
|
154
152
|
# NOTE: self.client is a accessor property see setter and getter below.
|
|
155
153
|
self.client = client or get_client()
|
|
156
154
|
|
|
@@ -220,9 +218,6 @@ class Trainee(BaseTrainee):
|
|
|
220
218
|
if not isinstance(client, HowsoPandasClientMixin):
|
|
221
219
|
raise HowsoError("``client`` must be a HowsoPandasClient")
|
|
222
220
|
self._client = client
|
|
223
|
-
# Engine progress support is a property of the client and the Trainee
|
|
224
|
-
# it serves, so a new client invalidates the cached answer.
|
|
225
|
-
self._supports_engine_progress = None
|
|
226
221
|
|
|
227
222
|
@property
|
|
228
223
|
def supports_engine_progress(self) -> bool:
|
|
@@ -231,21 +226,21 @@ class Trainee(BaseTrainee):
|
|
|
231
226
|
|
|
232
227
|
Polling a single-threaded engine while it works terminates the
|
|
233
228
|
process, so :func:`~howso.utilities.engine_polling_supported` reports
|
|
234
|
-
support only for Trainees
|
|
235
|
-
|
|
236
|
-
|
|
229
|
+
support only for Trainees whose client confirms a multi-threaded build.
|
|
230
|
+
|
|
231
|
+
The answer is a snapshot taken on each access. A direct client's
|
|
232
|
+
library type is fixed for the life of the process and is read from the
|
|
233
|
+
in-process library; other clients may answer differently over the
|
|
234
|
+
life of a Trainee.
|
|
237
235
|
|
|
238
236
|
Returns
|
|
239
237
|
-------
|
|
240
238
|
bool
|
|
241
239
|
True only when engine progress polling is confirmed safe.
|
|
242
240
|
"""
|
|
243
|
-
if self.
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
return False
|
|
247
|
-
self._supports_engine_progress = engine_polling_supported(self.client, self.id)
|
|
248
|
-
return self._supports_engine_progress
|
|
241
|
+
if not self._created:
|
|
242
|
+
return False
|
|
243
|
+
return engine_polling_supported(self.client, self.id)
|
|
249
244
|
|
|
250
245
|
@property
|
|
251
246
|
def project(self) -> Project | None:
|
|
@@ -1759,6 +1754,12 @@ class Trainee(BaseTrainee):
|
|
|
1759
1754
|
'num_most_similar_cases' is not specified) relevant number of
|
|
1760
1755
|
similar cases, which will first include the influential cases.
|
|
1761
1756
|
Uses only the context features of the reacted case.
|
|
1757
|
+
- most_similar_cases_features : list of str, optional
|
|
1758
|
+
A list of feature names to output values for when outputting
|
|
1759
|
+
most similar, influential, or boundary cases. If an empty list,
|
|
1760
|
+
only the distance and session information of each case is
|
|
1761
|
+
output. If unspecified, outputs all context and action
|
|
1762
|
+
features.
|
|
1762
1763
|
- num_boundary_cases : int, optional
|
|
1763
1764
|
Outputs this manually specified number of boundary cases.
|
|
1764
1765
|
- num_most_similar_cases : int, optional
|
|
@@ -3415,6 +3416,7 @@ class Trainee(BaseTrainee):
|
|
|
3415
3416
|
features: Collection[str] | None = None,
|
|
3416
3417
|
filter_fanout_values: bool = False,
|
|
3417
3418
|
group_id_features: Collection[str] | None = None,
|
|
3419
|
+
isolation_distance_contributions: bool = False,
|
|
3418
3420
|
kl_divergence_addition: bool = False,
|
|
3419
3421
|
kl_divergence_removal: bool = False,
|
|
3420
3422
|
new_cases: TabularData3D | None = None,
|
|
@@ -3437,7 +3439,7 @@ class Trainee(BaseTrainee):
|
|
|
3437
3439
|
action_features : list of str, optional
|
|
3438
3440
|
A list of features whose values should be predicted for
|
|
3439
3441
|
each group. Each group of cases gets a single action value for each
|
|
3440
|
-
feature.
|
|
3442
|
+
feature. Predictions are made holding out the rest of the group.
|
|
3441
3443
|
case_indices : list of lists of lists of tuples of {str, int}, optional
|
|
3442
3444
|
A list of lists of case indices tuples containing the session ID and
|
|
3443
3445
|
the session training indices that uniquely identify trained cases.
|
|
@@ -3486,7 +3488,8 @@ class Trainee(BaseTrainee):
|
|
|
3486
3488
|
predicted for each group.
|
|
3487
3489
|
distance_contributions : bool, default False
|
|
3488
3490
|
Calculate and output the average distance contribution for each group
|
|
3489
|
-
holding out rest of the group.
|
|
3491
|
+
without holding out the rest of the group. Each case is only held out
|
|
3492
|
+
of its own query.
|
|
3490
3493
|
familiarity_conviction_addition : bool, default False
|
|
3491
3494
|
Calculate and output familiarity conviction of adding the
|
|
3492
3495
|
specified cases.
|
|
@@ -3500,11 +3503,18 @@ class Trainee(BaseTrainee):
|
|
|
3500
3503
|
holding out other cases that have the same fanned out values
|
|
3501
3504
|
duplicated. Only used when predicting the given ``action_features``.
|
|
3502
3505
|
group_id_features : Collection of str, optional
|
|
3503
|
-
List of feature names whose values
|
|
3504
|
-
|
|
3505
|
-
|
|
3506
|
-
|
|
3507
|
-
``
|
|
3506
|
+
List of feature names whose values identify trained cases that
|
|
3507
|
+
belong to the same group as the given ``new_cases``. These trained
|
|
3508
|
+
cases are held out along with the group, but only in computations
|
|
3509
|
+
that hold out the group: ``isolation_distance_contributions``,
|
|
3510
|
+
``residual_contributions``, ``similarity_conviction``, and
|
|
3511
|
+
predictions of ``action_features``. They are not held out for
|
|
3512
|
+
``distance_contributions``. Each group is assumed to have a single
|
|
3513
|
+
value for each of these features. Ignored if ``new_cases`` is not
|
|
3514
|
+
specified.
|
|
3515
|
+
isolation_distance_contributions : bool, default False
|
|
3516
|
+
Calculate and output the average distance contribution for each group
|
|
3517
|
+
holding out the rest of the group.
|
|
3508
3518
|
kl_divergence_addition : bool, default False
|
|
3509
3519
|
Calculate and output KL divergence of adding the
|
|
3510
3520
|
specified cases.
|
|
@@ -3535,10 +3545,11 @@ class Trainee(BaseTrainee):
|
|
|
3535
3545
|
p_value_of_removal : bool, default False
|
|
3536
3546
|
If true will output :math:`p` value of removal.
|
|
3537
3547
|
residual_contributions : bool, default False
|
|
3538
|
-
Calculate and output mean residual contribution for each group's cases
|
|
3548
|
+
Calculate and output mean residual contribution for each group's cases
|
|
3549
|
+
holding out the rest of the group.
|
|
3539
3550
|
similarity_conviction : bool, default False
|
|
3540
3551
|
If true will output the mean similarity conviction of the group's
|
|
3541
|
-
cases.
|
|
3552
|
+
cases holding out the rest of the group.
|
|
3542
3553
|
task_id : str, optional
|
|
3543
3554
|
If provided, should be a short, unique identifier that can be used
|
|
3544
3555
|
with ``get_progress`` if concurrent progress updates are desired.
|
|
@@ -3566,6 +3577,7 @@ class Trainee(BaseTrainee):
|
|
|
3566
3577
|
features=features,
|
|
3567
3578
|
filter_fanout_values=filter_fanout_values,
|
|
3568
3579
|
group_id_features=group_id_features,
|
|
3580
|
+
isolation_distance_contributions=isolation_distance_contributions,
|
|
3569
3581
|
distance_contributions=distance_contributions,
|
|
3570
3582
|
familiarity_conviction_addition=familiarity_conviction_addition,
|
|
3571
3583
|
familiarity_conviction_removal=familiarity_conviction_removal,
|
|
Binary file
|