From faab0a864d5230bcb8d076e2bc5c728381fe1023 Mon Sep 17 00:00:00 2001
From: megalinter-bot <129584137+megalinter-bot@users.noreply.github.com>
Date: Mon, 3 Jun 2024 14:42:21 +0000
Subject: [PATCH 01/16] style: apply automated linter fixes
---
src/safeds/exceptions/__init__.py | 2 +-
src/safeds/exceptions/_ml.py | 4 +++-
.../ml/classical/classification/_baseline_classifier.py | 6 ++++--
src/safeds/ml/classical/regression/_baseline_regressor.py | 6 ++++--
.../ml/classical/classification/test_baseline_classifier.py | 2 +-
.../ml/classical/regression/test_baseline_regressor.py | 2 +-
6 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/src/safeds/exceptions/__init__.py b/src/safeds/exceptions/__init__.py
index 4c2241941..5cb3f6eaa 100644
--- a/src/safeds/exceptions/__init__.py
+++ b/src/safeds/exceptions/__init__.py
@@ -16,7 +16,6 @@
from ._ml import (
DatasetMissesDataError,
DatasetMissesFeaturesError,
- TargetDataMismatchError,
FeatureDataMismatchError,
InputSizeError,
InvalidModelStructureError,
@@ -24,6 +23,7 @@
ModelNotFittedError,
PlainTableError,
PredictionError,
+ TargetDataMismatchError,
)
diff --git a/src/safeds/exceptions/_ml.py b/src/safeds/exceptions/_ml.py
index f95360455..d07ae27ed 100644
--- a/src/safeds/exceptions/_ml.py
+++ b/src/safeds/exceptions/_ml.py
@@ -30,7 +30,9 @@ class TargetDataMismatchError(ValueError):
"""
def __init__(self, actual_target_name: str, missing_target_name: str):
- super().__init__(f"The provided target column '{actual_target_name}' does not match the target column of the training set '{missing_target_name}'.")
+ super().__init__(
+ f"The provided target column '{actual_target_name}' does not match the target column of the training set '{missing_target_name}'.",
+ )
class DatasetMissesDataError(ValueError):
diff --git a/src/safeds/ml/classical/classification/_baseline_classifier.py b/src/safeds/ml/classical/classification/_baseline_classifier.py
index 907b69b9d..4dbdecf80 100644
--- a/src/safeds/ml/classical/classification/_baseline_classifier.py
+++ b/src/safeds/ml/classical/classification/_baseline_classifier.py
@@ -6,9 +6,9 @@
from safeds.data.labeled.containers import TabularDataset
from safeds.exceptions import (
DatasetMissesDataError,
- TargetDataMismatchError,
FeatureDataMismatchError,
ModelNotFittedError,
+ TargetDataMismatchError,
)
from safeds.ml.classical.classification import (
AdaBoostClassifier,
@@ -140,7 +140,9 @@ def predict(self, test_data: TabularDataset) -> dict[str, float]:
if not self._feature_names == test_data.features.column_names:
raise FeatureDataMismatchError
if not self._target_name == test_data.target.name:
- raise TargetDataMismatchError(actual_target_name=test_data.target.name, missing_target_name=self._target_name)
+ raise TargetDataMismatchError(
+ actual_target_name=test_data.target.name, missing_target_name=self._target_name,
+ )
test_data_as_table = test_data.to_table()
if test_data_as_table.row_count == 0:
raise DatasetMissesDataError
diff --git a/src/safeds/ml/classical/regression/_baseline_regressor.py b/src/safeds/ml/classical/regression/_baseline_regressor.py
index 29e91ff7a..89511b3ee 100644
--- a/src/safeds/ml/classical/regression/_baseline_regressor.py
+++ b/src/safeds/ml/classical/regression/_baseline_regressor.py
@@ -6,9 +6,9 @@
from safeds.data.labeled.containers import TabularDataset
from safeds.exceptions import (
DatasetMissesDataError,
- TargetDataMismatchError,
FeatureDataMismatchError,
ModelNotFittedError,
+ TargetDataMismatchError,
)
from safeds.ml.classical.regression import (
AdaBoostRegressor,
@@ -149,7 +149,9 @@ def predict(self, test_data: TabularDataset) -> dict[str, float]:
if not self._feature_names == test_data.features.column_names:
raise FeatureDataMismatchError
if not self._target_name == test_data.target.name:
- raise TargetDataMismatchError(actual_target_name=test_data.target.name, missing_target_name=self._target_name)
+ raise TargetDataMismatchError(
+ actual_target_name=test_data.target.name, missing_target_name=self._target_name,
+ )
test_data_as_table = test_data.to_table()
if test_data_as_table.row_count == 0:
raise DatasetMissesDataError
diff --git a/tests/safeds/ml/classical/classification/test_baseline_classifier.py b/tests/safeds/ml/classical/classification/test_baseline_classifier.py
index b1d4d014e..f8c4f969c 100644
--- a/tests/safeds/ml/classical/classification/test_baseline_classifier.py
+++ b/tests/safeds/ml/classical/classification/test_baseline_classifier.py
@@ -3,9 +3,9 @@
from safeds.exceptions import (
ColumnTypeError,
DatasetMissesDataError,
- TargetDataMismatchError,
FeatureDataMismatchError,
ModelNotFittedError,
+ TargetDataMismatchError,
)
from safeds.ml.classical.classification import BaselineClassifier
diff --git a/tests/safeds/ml/classical/regression/test_baseline_regressor.py b/tests/safeds/ml/classical/regression/test_baseline_regressor.py
index 3b529e961..174f4c160 100644
--- a/tests/safeds/ml/classical/regression/test_baseline_regressor.py
+++ b/tests/safeds/ml/classical/regression/test_baseline_regressor.py
@@ -3,9 +3,9 @@
from safeds.exceptions import (
ColumnTypeError,
DatasetMissesDataError,
- TargetDataMismatchError,
FeatureDataMismatchError,
ModelNotFittedError,
+ TargetDataMismatchError,
)
from safeds.ml.classical.regression import BaselineRegressor
From abab90b3360a3233b0c179ff321d4f5b0c476a33 Mon Sep 17 00:00:00 2001
From: megalinter-bot <129584137+megalinter-bot@users.noreply.github.com>
Date: Mon, 3 Jun 2024 14:44:01 +0000
Subject: [PATCH 02/16] style: apply automated linter fixes
---
src/safeds/ml/classical/classification/_baseline_classifier.py | 3 ++-
src/safeds/ml/classical/regression/_baseline_regressor.py | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/safeds/ml/classical/classification/_baseline_classifier.py b/src/safeds/ml/classical/classification/_baseline_classifier.py
index 4dbdecf80..7b58d61e2 100644
--- a/src/safeds/ml/classical/classification/_baseline_classifier.py
+++ b/src/safeds/ml/classical/classification/_baseline_classifier.py
@@ -141,7 +141,8 @@ def predict(self, test_data: TabularDataset) -> dict[str, float]:
raise FeatureDataMismatchError
if not self._target_name == test_data.target.name:
raise TargetDataMismatchError(
- actual_target_name=test_data.target.name, missing_target_name=self._target_name,
+ actual_target_name=test_data.target.name,
+ missing_target_name=self._target_name,
)
test_data_as_table = test_data.to_table()
if test_data_as_table.row_count == 0:
diff --git a/src/safeds/ml/classical/regression/_baseline_regressor.py b/src/safeds/ml/classical/regression/_baseline_regressor.py
index 89511b3ee..4562ed122 100644
--- a/src/safeds/ml/classical/regression/_baseline_regressor.py
+++ b/src/safeds/ml/classical/regression/_baseline_regressor.py
@@ -150,7 +150,8 @@ def predict(self, test_data: TabularDataset) -> dict[str, float]:
raise FeatureDataMismatchError
if not self._target_name == test_data.target.name:
raise TargetDataMismatchError(
- actual_target_name=test_data.target.name, missing_target_name=self._target_name,
+ actual_target_name=test_data.target.name,
+ missing_target_name=self._target_name,
)
test_data_as_table = test_data.to_table()
if test_data_as_table.row_count == 0:
From bec707a3fcd97373d056eb027ef386fffd69c055 Mon Sep 17 00:00:00 2001
From: Lars Reimann
Date: Mon, 3 Jun 2024 18:44:43 +0200
Subject: [PATCH 03/16] ci: exclude two matrix configurations (#826)
### Summary of Changes
Don't run tests on Windows/MacOS and Python 3.11 to not overload the
cache.
---
.github/workflows/main.yml | 5 +++++
.github/workflows/pr.yml | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index c2744590a..75706511e 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -15,6 +15,11 @@ jobs:
python-version:
- "3.11"
- "3.12"
+ exclude:
+ - platform: "macos-latest"
+ python-version: "3.11"
+ - platform: "windows-latest"
+ python-version: "3.11"
uses: lars-reimann/.github/.github/workflows/poetry-codecov-reusable.yml@main
with:
working-directory: .
diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index 79f765b3b..31d6109a7 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -19,6 +19,11 @@ jobs:
python-version:
- "3.11"
- "3.12"
+ exclude:
+ - platform: "macos-latest"
+ python-version: "3.11"
+ - platform: "windows-latest"
+ python-version: "3.11"
uses: lars-reimann/.github/.github/workflows/poetry-codecov-reusable.yml@main
with:
working-directory: .
From 51c13aeda4a25d2f94fc93b61a152691a7e35655 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 7 Jun 2024 21:47:38 +0200
Subject: [PATCH 04/16] build(deps-dev): bump tornado from 6.4 to 6.4.1 (#828)
Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.4 to
6.4.1.
Changelog
Sourced from tornado's
changelog.
Release notes
.. toctree::
:maxdepth: 2
releases/v6.4.1
releases/v6.4.0
releases/v6.3.3
releases/v6.3.2
releases/v6.3.1
releases/v6.3.0
releases/v6.2.0
releases/v6.1.0
releases/v6.0.4
releases/v6.0.3
releases/v6.0.2
releases/v6.0.1
releases/v6.0.0
releases/v5.1.1
releases/v5.1.0
releases/v5.0.2
releases/v5.0.1
releases/v5.0.0
releases/v4.5.3
releases/v4.5.2
releases/v4.5.1
releases/v4.5.0
releases/v4.4.3
releases/v4.4.2
releases/v4.4.1
releases/v4.4.0
releases/v4.3.0
releases/v4.2.1
releases/v4.2.0
releases/v4.1.0
releases/v4.0.2
releases/v4.0.1
releases/v4.0.0
releases/v3.2.2
releases/v3.2.1
releases/v3.2.0
releases/v3.1.1
releases/v3.1.0
releases/v3.0.2
releases/v3.0.1
releases/v3.0.0
releases/v2.4.1
releases/v2.4.0
releases/v2.3.0
... (truncated)
Commits
2a0e1d1
Merge pull request #3388
from bdarnell/release-641
b7af4e8
Release notes and version bump for version 6.4.1
d65f6e7
Merge pull request #3387
from bdarnell/chunked-parsing
8d721a8
httputil: Only strip tabs and spaces from header values
7786f09
Merge pull request #3386
from bdarnell/curl-crlf
fb119c7
http1connection: Stricter handling of transfer-encoding
b0ffc58
curl_httpclient,http1connection: Prohibit CR and LF in headers
0efa9a4
Merge pull request #3385
from bdarnell/update-black
2757c6e
Merge pull request #3384
from tornadoweb/dependabot/pip/requests-2.32.2
291d1b6
*: Update black
- Additional commits viewable in compare
view
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tornado&package-manager=pip&previous-version=6.4&new-version=6.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/Safe-DS/Library/network/alerts).
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
poetry.lock | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index 5a2dace53..e37021f29 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -3558,22 +3558,22 @@ reference = "torch_cuda"
[[package]]
name = "tornado"
-version = "6.4"
+version = "6.4.1"
description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
optional = false
-python-versions = ">= 3.8"
-files = [
- {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"},
- {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"},
- {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"},
- {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"},
- {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"},
- {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"},
- {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"},
- {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"},
- {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"},
- {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"},
- {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"},
+python-versions = ">=3.8"
+files = [
+ {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"},
+ {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"},
+ {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"},
+ {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"},
+ {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"},
+ {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"},
+ {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"},
+ {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"},
+ {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"},
+ {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"},
+ {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"},
]
[[package]]
From 3c6232e243198118548a71ff6ba3132362b98b61 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 7 Jun 2024 22:00:41 +0200
Subject: [PATCH 05/16] build(deps): bump polars from 0.20.26 to 0.20.31 (#819)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [polars](https://github.com/pola-rs/polars) from 0.20.26 to
0.20.31.
Release notes
Sourced from polars's
releases.
Python Polars 0.20.31
⚠️ Deprecations
- Rename
dtypes
parameter to
schema_overrides
for
read_csv
/scan_csv
/read_csv_batched
(#16628)
- Deprecate
nulls_last
/maintain_order
/multithreaded
parameters for top_k
methods (#16597)
- Rename
SQLContext
"eager_execution" param to
"eager" (#16595)
- Rename
Series.equals
parameter strict
to
check_dtypes
and rename assertion utils parameter
check_dtype
to check_dtypes
(#16573)
- Add
DataFrame.serialize/deserialize
(#16545)
- Deprecate
str.explode
in favor of
str.split("").explode()
(#16508)
- Deprecate default coalesce behavior of left join (#16532)
🚀 Performance improvements
- make truncate 4x faster in simple cases (#16615)
- Cache arena's (and conversion) in SQL context (#16566)
- Partial schema cache. (#16549)
✨ Enhancements
- Support per-column
nulls_last
on sort operations (#16639)
- Initial support for SQL
ARRAY
literals and the
UNNEST
table function (#16330)
- Don't allow
struct.with_fields
in grouping (#16629)
- improve support for user-defined functions that return scalars (#16556)
- Add SQL support for
TRY_CAST
function (#16589)
- Add top-level
pl.sql
function (#16528)
- Expose temporal function expression ops to expr ir (#16546)
- Add
DataFrame.serialize/deserialize
(#16545)
- check if by column is sorted, rather than just checking sorted flag,
in
group_by_dynamic
, upsample
, and
rolling
(#16494)
🐞 Bug fixes
- Potentially deal with empty range (#16650)
- Use of SQL
ORDER BY
should not cause reordering of
SELECT
cols (#16579)
- ensure df in empty parquet (#16621)
- Fix Array constructor when inner type is another Array (#16622)
- Fix parsing of
shape
in Array
constructor
and deprecate width
parameter (#16567)
- Crash using empty
Series
in
LazyFrame.select()
(#16592)
- improve support for user-defined functions that return scalars (#16556)
- Resolve multiple SQL
JOIN
issues (#16507)
- Project last column if count query (#16569)
- Properly split struct columns (#16563)
- Ensure strict chunking in chunked partitioned group by (#16561)
- Error selecting columns after non-coalesced join (multiple join
keys) (#16559)
- Don't panic on hashing nested list types (#16555)
- Crash selecting columns after non-coalesced join (#16541)
- Fix group gather of single literal (#16539)
- throw an invalid operation exception on performing a
sum
over a list
of str
s (#16521)
- Fix
DataFrame.__getitem__
for empty list input -
df[[]]
(#16520)
- Fix issue in
DataFrame.__getitem__
with 2 column inputs
(#16517)
... (truncated)
Commits
318ec40
python polars 0.20.31 (#16652)
15803ce
docs(python): Overview of available SQL functions (#16268)
6c5140c
fix: Potentially deal with empty range (#16650)
a9badd6
docs(python): Update filter description to clarify that null evaluations
are ...
8710274
feat: Support per-column nulls_last
on sort operations (#16639)
4c80271
test: Add test for 16642 (#16646)
ae70fd4
feat(rust): Add split_at
method to arrow Array
(#16620)
5974ac7
depr(python): Rename dtypes
parameter to
schema_overrides
for read_csv
/...
4e95200
Revert "feat(python): Add replace_all
expression to
complement replace
" (...
1cafcbc
feat: Initial support for SQL ARRAY
literals and the
UNNEST
table functio...
- Additional commits viewable in compare
view
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=polars&package-manager=pip&previous-version=0.20.26&new-version=0.20.31)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
poetry.lock | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index e37021f29..d80c402ad 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -2175,17 +2175,17 @@ testing = ["pytest", "pytest-benchmark"]
[[package]]
name = "polars"
-version = "0.20.26"
+version = "0.20.31"
description = "Blazingly fast DataFrame library"
optional = false
python-versions = ">=3.8"
files = [
- {file = "polars-0.20.26-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:97d0e4b6ab6b47fa07798b447189ee9505d2085ec1a64a6aa8a65fdd429cd49f"},
- {file = "polars-0.20.26-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c270e366b4d8b672b204e7d48e39d255641d3d2b7bdc3a0ccd968cf53934657f"},
- {file = "polars-0.20.26-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db35d6eed508256a797c7f1b8e9dec4aae9c11b891797b2d38fac5627d072d34"},
- {file = "polars-0.20.26-cp38-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:25b00bd5cf44929722aa6389706559c5e8cedd6db2cfc38b27b706ed37e1b2af"},
- {file = "polars-0.20.26-cp38-abi3-win_amd64.whl", hash = "sha256:b22063acc815bc5c6d2e24292ff771ca0df306ecf97e8f6899924a1ec6d3f136"},
- {file = "polars-0.20.26.tar.gz", hash = "sha256:fa83d130562a5180a47f8763a7bb9f408dbbf51eafc1380e8a2951be8ce05a2c"},
+ {file = "polars-0.20.31-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:86454ade5ed302bbf87f145cfcb1b14f7a5765a9440e448659e1f3dba6ac4e79"},
+ {file = "polars-0.20.31-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:67f2fe842262b7e1b9371edad21b760f6734d28b74c78dda88dff1bf031b9499"},
+ {file = "polars-0.20.31-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24b82441f93409e0e8abd6f427b029db102f02b8de328cee9a680f84b84e3736"},
+ {file = "polars-0.20.31-cp38-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:87f43bce4d41abf8c8c5658d881e4b8378e5c61010a696bfea8b4106b908e916"},
+ {file = "polars-0.20.31-cp38-abi3-win_amd64.whl", hash = "sha256:2d7567c9fd9d3b9aa93387ca9880d9e8f7acea3c0a0555c03d8c0c2f0715d43c"},
+ {file = "polars-0.20.31.tar.gz", hash = "sha256:00f62dec6bf43a4e2a5db58b99bf0e79699fe761c80ae665868eaea5168f3bbb"},
]
[package.dependencies]
@@ -2194,7 +2194,7 @@ pyarrow = {version = ">=7.0.0", optional = true, markers = "extra == \"pyarrow\"
[package.extras]
adbc = ["adbc-driver-manager", "adbc-driver-sqlite"]
-all = ["polars[adbc,async,cloudpickle,connectorx,deltalake,fastexcel,fsspec,gevent,iceberg,numpy,pandas,plot,pyarrow,pydantic,sqlalchemy,timezone,torch,xlsx2csv,xlsxwriter]"]
+all = ["polars[adbc,async,cloudpickle,connectorx,deltalake,fastexcel,fsspec,gevent,iceberg,numpy,pandas,plot,pyarrow,pydantic,sqlalchemy,timezone,xlsx2csv,xlsxwriter]"]
async = ["nest-asyncio"]
cloudpickle = ["cloudpickle"]
connectorx = ["connectorx (>=0.3.2)"]
@@ -2213,7 +2213,6 @@ pydantic = ["pydantic"]
pyxlsb = ["pyxlsb (>=1.0)"]
sqlalchemy = ["pandas", "sqlalchemy"]
timezone = ["backports-zoneinfo", "tzdata"]
-torch = ["torch"]
xlsx2csv = ["xlsx2csv (>=0.8.0)"]
xlsxwriter = ["xlsxwriter"]
From 06eab77ac5d0512dff38cf4d8aa181dd0032fe63 Mon Sep 17 00:00:00 2001
From: Gerhardsa0 <113539440+Gerhardsa0@users.noreply.github.com>
Date: Tue, 11 Jun 2024 14:12:52 +0200
Subject: [PATCH 06/16] feat: add temporal operations (#832)
Closes #XYZ
### Summary of Changes
Added temporal operations to the temporal interface.
---------
Co-authored-by: megalinter-bot <129584137+megalinter-bot@users.noreply.github.com>
Co-authored-by: Lars Reimann
Co-authored-by: Simon Breuer <86068340+sibre28@users.noreply.github.com>
---
.../tabular/containers/_lazy_temporal_cell.py | 18 +++
.../data/tabular/containers/_temporal_cell.py | 151 +++++++++++++++++-
.../containers/_temporal_cell/test_century.py | 20 +++
.../containers/_temporal_cell/test_day.py | 20 +++
.../containers/_temporal_cell/test_month.py | 20 +++
.../containers/_temporal_cell/test_week.py | 20 +++
.../containers/_temporal_cell/test_weekday.py | 20 +++
.../containers/_temporal_cell/test_year.py | 20 +++
8 files changed, 284 insertions(+), 5 deletions(-)
create mode 100644 tests/safeds/data/tabular/containers/_temporal_cell/test_century.py
create mode 100644 tests/safeds/data/tabular/containers/_temporal_cell/test_day.py
create mode 100644 tests/safeds/data/tabular/containers/_temporal_cell/test_month.py
create mode 100644 tests/safeds/data/tabular/containers/_temporal_cell/test_week.py
create mode 100644 tests/safeds/data/tabular/containers/_temporal_cell/test_weekday.py
create mode 100644 tests/safeds/data/tabular/containers/_temporal_cell/test_year.py
diff --git a/src/safeds/data/tabular/containers/_lazy_temporal_cell.py b/src/safeds/data/tabular/containers/_lazy_temporal_cell.py
index 12619605c..180ecb58c 100644
--- a/src/safeds/data/tabular/containers/_lazy_temporal_cell.py
+++ b/src/safeds/data/tabular/containers/_lazy_temporal_cell.py
@@ -31,6 +31,24 @@ def __sizeof__(self) -> int:
# Temporal operations
# ------------------------------------------------------------------------------------------------------------------
+ def century(self) -> Cell[int]:
+ return _LazyCell(self._expression.dt.century())
+
+ def weekday(self) -> Cell[int]:
+ return _LazyCell(self._expression.dt.weekday())
+
+ def week(self) -> Cell[int]:
+ return _LazyCell(self._expression.dt.week())
+
+ def year(self) -> Cell[int]:
+ return _LazyCell(self._expression.dt.year())
+
+ def month(self) -> Cell[int]:
+ return _LazyCell(self._expression.dt.month())
+
+ def day(self) -> Cell[int]:
+ return _LazyCell(self._expression.dt.day())
+
def datetime_to_string(self, format_string: str = "%Y/%m/%d %H:%M:%S") -> Cell[str]:
if not _check_format_string(format_string):
raise ValueError("Invalid format string")
diff --git a/src/safeds/data/tabular/containers/_temporal_cell.py b/src/safeds/data/tabular/containers/_temporal_cell.py
index 85368bec4..e4a3dca59 100644
--- a/src/safeds/data/tabular/containers/_temporal_cell.py
+++ b/src/safeds/data/tabular/containers/_temporal_cell.py
@@ -9,12 +9,9 @@
class TemporalCell(ABC):
"""
- A class that contains temporal methods for a column.
+ Namespace for operations on temporal data.
- Parameters
- ----------
- column:
- The column to be operated on.
+ This class cannot be instantiated directly. It can only be accessed using the `dt` attribute of a cell.
Examples
--------
@@ -31,6 +28,150 @@ class TemporalCell(ABC):
+------------+
"""
+ @abstractmethod
+ def century(self) -> Cell[int]:
+ """
+ Get the century of the underlying date(time) data.
+
+ Returns
+ -------
+ A cell containing the century as integer.
+
+ Examples
+ --------
+ >>> from safeds.data.tabular.containers import Column
+ >>> import datetime
+ >>> column = Column("example", [datetime.date(2022, 1, 1)])
+ >>> column.transform(lambda cell: cell.dt.century())
+ +---------+
+ | example |
+ | --- |
+ | i32 |
+ +=========+
+ | 21 |
+ +---------+
+ """
+
+ @abstractmethod
+ def weekday(self) -> Cell[int]:
+ """
+ Get the weekday of the underlying date(time) data.
+
+ Returns
+ -------
+ A cell containing the weekday as integer.
+
+ Examples
+ --------
+ >>> from safeds.data.tabular.containers import Column
+ >>> import datetime
+ >>> column = Column("example", [datetime.date(2022, 1, 1)])
+ >>> column.transform(lambda cell: cell.dt.weekday())
+ +---------+
+ | example |
+ | --- |
+ | i8 |
+ +=========+
+ | 6 |
+ +---------+
+ """
+
+ @abstractmethod
+ def week(self) -> Cell[int]:
+ """
+ Get the week of the underlying date(time) data.
+
+ Returns
+ -------
+ A cell containing the week as integer.
+
+ Examples
+ --------
+ >>> from safeds.data.tabular.containers import Column
+ >>> import datetime
+ >>> column = Column("example", [datetime.date(2022, 1, 1)])
+ >>> column.transform(lambda cell: cell.dt.week())
+ +---------+
+ | example |
+ | --- |
+ | i8 |
+ +=========+
+ | 52 |
+ +---------+
+ """
+
+ @abstractmethod
+ def year(self) -> Cell[int]:
+ """
+ Get the year of the underlying date(time) data.
+
+ Returns
+ -------
+ A cell containing the year as integer.
+
+ Examples
+ --------
+ >>> from safeds.data.tabular.containers import Column
+ >>> import datetime
+ >>> column = Column("example", [datetime.date(2022, 1, 9)])
+ >>> column.transform(lambda cell: cell.dt.year())
+ +---------+
+ | example |
+ | --- |
+ | i32 |
+ +=========+
+ | 2022 |
+ +---------+
+ """
+
+ @abstractmethod
+ def month(self) -> Cell[int]:
+ """
+ Get the month of the underlying date(time) data.
+
+ Returns
+ -------
+ A cell containing the month as integer.
+
+ Examples
+ --------
+ >>> from safeds.data.tabular.containers import Column
+ >>> import datetime
+ >>> column = Column("example", [datetime.date(2022, 1, 9)])
+ >>> column.transform(lambda cell: cell.dt.month())
+ +---------+
+ | example |
+ | --- |
+ | i8 |
+ +=========+
+ | 1 |
+ +---------+
+ """
+
+ @abstractmethod
+ def day(self) -> Cell[int]:
+ """
+ Get the day of the underlying date(time) data.
+
+ Returns
+ -------
+ A cell containing the day as integer.
+
+ Examples
+ --------
+ >>> from safeds.data.tabular.containers import Column
+ >>> import datetime
+ >>> column = Column("example", [datetime.date(2022, 1, 9)])
+ >>> column.transform(lambda cell: cell.dt.day())
+ +---------+
+ | example |
+ | --- |
+ | i8 |
+ +=========+
+ | 9 |
+ +---------+
+ """
+
@abstractmethod
def datetime_to_string(self, format_string: str = "%Y/%m/%d %H:%M:%S") -> Cell[str]:
"""
diff --git a/tests/safeds/data/tabular/containers/_temporal_cell/test_century.py b/tests/safeds/data/tabular/containers/_temporal_cell/test_century.py
new file mode 100644
index 000000000..2d36808b6
--- /dev/null
+++ b/tests/safeds/data/tabular/containers/_temporal_cell/test_century.py
@@ -0,0 +1,20 @@
+import datetime
+
+import pytest
+
+from tests.helpers import assert_cell_operation_works
+
+
+@pytest.mark.parametrize(
+ ("expected", "input_date"),
+ [
+ (18, datetime.datetime(1800, 1, 9, 23, 29, 1, tzinfo=datetime.UTC)),
+ (21, datetime.date(2022, 1, 1)),
+ ],
+ ids=[
+ "ISO datetime",
+ "ISO date",
+ ],
+)
+def test_get_day(input_date: datetime.date, expected: bool) -> None:
+ assert_cell_operation_works(input_date, lambda cell: cell.dt.century(), expected)
diff --git a/tests/safeds/data/tabular/containers/_temporal_cell/test_day.py b/tests/safeds/data/tabular/containers/_temporal_cell/test_day.py
new file mode 100644
index 000000000..afa9c588b
--- /dev/null
+++ b/tests/safeds/data/tabular/containers/_temporal_cell/test_day.py
@@ -0,0 +1,20 @@
+import datetime
+
+import pytest
+
+from tests.helpers import assert_cell_operation_works
+
+
+@pytest.mark.parametrize(
+ ("expected", "input_date"),
+ [
+ (9, datetime.datetime(2022, 1, 9, 23, 29, 1, tzinfo=datetime.UTC)),
+ (1, datetime.date(2022, 1, 1)),
+ ],
+ ids=[
+ "ISO datetime",
+ "ISO date",
+ ],
+)
+def test_get_day(input_date: datetime.date, expected: bool) -> None:
+ assert_cell_operation_works(input_date, lambda cell: cell.dt.day(), expected)
diff --git a/tests/safeds/data/tabular/containers/_temporal_cell/test_month.py b/tests/safeds/data/tabular/containers/_temporal_cell/test_month.py
new file mode 100644
index 000000000..626dff546
--- /dev/null
+++ b/tests/safeds/data/tabular/containers/_temporal_cell/test_month.py
@@ -0,0 +1,20 @@
+import datetime
+
+import pytest
+
+from tests.helpers import assert_cell_operation_works
+
+
+@pytest.mark.parametrize(
+ ("expected", "input_date"),
+ [
+ (3, datetime.datetime(2022, 3, 9, 23, 29, 1, tzinfo=datetime.UTC)),
+ (1, datetime.date(2022, 1, 1)),
+ ],
+ ids=[
+ "ISO datetime",
+ "ISO date",
+ ],
+)
+def test_get_month(input_date: datetime.date, expected: bool) -> None:
+ assert_cell_operation_works(input_date, lambda cell: cell.dt.month(), expected)
diff --git a/tests/safeds/data/tabular/containers/_temporal_cell/test_week.py b/tests/safeds/data/tabular/containers/_temporal_cell/test_week.py
new file mode 100644
index 000000000..3a6c7fd60
--- /dev/null
+++ b/tests/safeds/data/tabular/containers/_temporal_cell/test_week.py
@@ -0,0 +1,20 @@
+import datetime
+
+import pytest
+
+from tests.helpers import assert_cell_operation_works
+
+
+@pytest.mark.parametrize(
+ ("expected", "input_date"),
+ [
+ (10, datetime.datetime(2023, 3, 9, 23, 29, 1, tzinfo=datetime.UTC)),
+ (52, datetime.date(2022, 1, 1)),
+ ],
+ ids=[
+ "ISO datetime",
+ "ISO date",
+ ],
+)
+def test_get_week(input_date: datetime.date, expected: bool) -> None:
+ assert_cell_operation_works(input_date, lambda cell: cell.dt.week(), expected)
diff --git a/tests/safeds/data/tabular/containers/_temporal_cell/test_weekday.py b/tests/safeds/data/tabular/containers/_temporal_cell/test_weekday.py
new file mode 100644
index 000000000..9db08b4fc
--- /dev/null
+++ b/tests/safeds/data/tabular/containers/_temporal_cell/test_weekday.py
@@ -0,0 +1,20 @@
+import datetime
+
+import pytest
+
+from tests.helpers import assert_cell_operation_works
+
+
+@pytest.mark.parametrize(
+ ("expected", "input_date"),
+ [
+ (4, datetime.datetime(2023, 3, 9, 23, 29, 1, tzinfo=datetime.UTC)),
+ (6, datetime.date(2022, 1, 1)),
+ ],
+ ids=[
+ "ISO datetime",
+ "ISO date",
+ ],
+)
+def test_get_weekday(input_date: datetime.date, expected: bool) -> None:
+ assert_cell_operation_works(input_date, lambda cell: cell.dt.weekday(), expected)
diff --git a/tests/safeds/data/tabular/containers/_temporal_cell/test_year.py b/tests/safeds/data/tabular/containers/_temporal_cell/test_year.py
new file mode 100644
index 000000000..e35810e52
--- /dev/null
+++ b/tests/safeds/data/tabular/containers/_temporal_cell/test_year.py
@@ -0,0 +1,20 @@
+import datetime
+
+import pytest
+
+from tests.helpers import assert_cell_operation_works
+
+
+@pytest.mark.parametrize(
+ ("expected", "input_date"),
+ [
+ (2023, datetime.datetime(2023, 3, 9, 23, 29, 1, tzinfo=datetime.UTC)),
+ (2022, datetime.date(2022, 1, 1)),
+ ],
+ ids=[
+ "ISO datetime",
+ "ISO date",
+ ],
+)
+def test_get_year(input_date: datetime.date, expected: bool) -> None:
+ assert_cell_operation_works(input_date, lambda cell: cell.dt.year(), expected)
From 487854cdd5d26f0995f89c0470425b618cb381ff Mon Sep 17 00:00:00 2001
From: Simon Breuer <86068340+sibre28@users.noreply.github.com>
Date: Tue, 11 Jun 2024 15:05:49 +0200
Subject: [PATCH 07/16] feat: add InvalidFitDataError (#824)
Closes #655
### Summary of Changes
Add InvalidFitDataError and tests
---------
Co-authored-by: megalinter-bot <129584137+megalinter-bot@users.noreply.github.com>
---
src/safeds/exceptions/__init__.py | 2 +
src/safeds/exceptions/_ml.py | 7 ++
.../nn/converters/_input_converter_table.py | 19 ++++
tests/safeds/ml/nn/test_model.py | 98 +++++++++++++++++++
4 files changed, 126 insertions(+)
diff --git a/src/safeds/exceptions/__init__.py b/src/safeds/exceptions/__init__.py
index 8f1e9de6d..2f84387c9 100644
--- a/src/safeds/exceptions/__init__.py
+++ b/src/safeds/exceptions/__init__.py
@@ -18,6 +18,7 @@
DatasetMissesFeaturesError,
FeatureDataMismatchError,
InputSizeError,
+ InvalidFitDataError,
InvalidModelStructureError,
LearningError,
ModelNotFittedError,
@@ -69,6 +70,7 @@ class OutOfBoundsError(SafeDsError):
"DatasetMissesDataError",
"DatasetMissesFeaturesError",
"FeatureDataMismatchError",
+ "InvalidFitDataError",
"InputSizeError",
"InvalidModelStructureError",
"LearningError",
diff --git a/src/safeds/exceptions/_ml.py b/src/safeds/exceptions/_ml.py
index d84395485..649ea0455 100644
--- a/src/safeds/exceptions/_ml.py
+++ b/src/safeds/exceptions/_ml.py
@@ -22,6 +22,13 @@ def __init__(self) -> None:
super().__init__("Dataset contains no rows")
+class InvalidFitDataError(Exception):
+ """Raised when a Neural Network is fitted on invalid data."""
+
+ def __init__(self, reason: str) -> None:
+ super().__init__(f"The given Fit Data is invalid:\n{reason}")
+
+
class LearningError(Exception):
"""
Raised when an error occurred while training a model.
diff --git a/src/safeds/ml/nn/converters/_input_converter_table.py b/src/safeds/ml/nn/converters/_input_converter_table.py
index 52d64ac01..7f26b39af 100644
--- a/src/safeds/ml/nn/converters/_input_converter_table.py
+++ b/src/safeds/ml/nn/converters/_input_converter_table.py
@@ -4,6 +4,7 @@
from safeds.data.labeled.containers import TabularDataset
from safeds.data.tabular.containers import Column, Table
+from safeds.exceptions import InvalidFitDataError
from ._input_converter import InputConversion
@@ -43,6 +44,24 @@ def _is_fit_data_valid(self, input_data: TabularDataset) -> bool:
self._feature_names = input_data.features.column_names
self._target_name = input_data.target.name
self._first = False
+
+ columns_with_missing_values = []
+ columns_with_non_numerical_data = []
+
+ for col in input_data.features.add_columns([input_data.target]).to_columns():
+ if col.missing_value_count() > 0:
+ columns_with_missing_values.append(col.name)
+ if not col.type.is_numeric:
+ columns_with_non_numerical_data.append(col.name)
+
+ reason = ""
+ if len(columns_with_missing_values) > 0:
+ reason += f"The following Columns contain missing values: {columns_with_missing_values}\n"
+ if len(columns_with_non_numerical_data) > 0:
+ reason += f"The following Columns contain non-numerical data: {columns_with_non_numerical_data}"
+ if reason != "":
+ raise InvalidFitDataError(reason)
+
return (sorted(input_data.features.column_names)).__eq__(sorted(self._feature_names))
def _is_predict_data_valid(self, input_data: Table) -> bool:
diff --git a/tests/safeds/ml/nn/test_model.py b/tests/safeds/ml/nn/test_model.py
index 5b8022a2c..0902d630d 100644
--- a/tests/safeds/ml/nn/test_model.py
+++ b/tests/safeds/ml/nn/test_model.py
@@ -1,4 +1,5 @@
import pickle
+import re
import pytest
from safeds.data.image.typing import ImageSize
@@ -6,6 +7,7 @@
from safeds.data.tabular.containers import Table
from safeds.exceptions import (
FeatureDataMismatchError,
+ InvalidFitDataError,
InvalidModelStructureError,
ModelNotFittedError,
OutOfBoundsError,
@@ -231,6 +233,54 @@ def test_should_raise_if_train_features_mismatch(self, device: Device) -> None:
):
learned_model.fit(Table.from_dict({"k": [0.1, 0, 0.2], "l": [0, 0.15, 0.5]}).to_tabular_dataset("k"))
+ @pytest.mark.parametrize(
+ ("table", "reason"),
+ [
+ (
+ Table.from_dict({"a": [1, 2, 3], "b": [1, 2, None], "c": [0, 15, 5]}).to_tabular_dataset("c"),
+ re.escape("The given Fit Data is invalid:\nThe following Columns contain missing values: ['b']\n"),
+ ),
+ (
+ Table.from_dict({"a": ["a", "b", "c"], "b": [1, 2, 3], "c": [0, 15, 5]}).to_tabular_dataset("c"),
+ re.escape("The given Fit Data is invalid:\nThe following Columns contain non-numerical data: ['a']"),
+ ),
+ (
+ Table.from_dict({"a": ["a", "b", "c"], "b": [1, 2, None], "c": [0, 15, 5]}).to_tabular_dataset("c"),
+ re.escape(
+ "The given Fit Data is invalid:\nThe following Columns contain missing values: ['b']\nThe following Columns contain non-numerical data: ['a']",
+ ),
+ ),
+ (
+ Table.from_dict({"a": [1, 2, 3], "b": [1, 2, 3], "c": [0, None, 5]}).to_tabular_dataset("c"),
+ re.escape(
+ "The given Fit Data is invalid:\nThe following Columns contain missing values: ['c']\n",
+ ),
+ ),
+ (
+ Table.from_dict({"a": [1, 2, 3], "b": [1, 2, 3], "c": ["a", "b", "a"]}).to_tabular_dataset("c"),
+ re.escape("The given Fit Data is invalid:\nThe following Columns contain non-numerical data: ['c']"),
+ ),
+ ],
+ ids=[
+ "missing value feature",
+ "non-numerical feature",
+ "missing value and non-numerical features",
+ "missing value target",
+ "non-numerical target",
+ ],
+ )
+ def test_should_catch_invalid_fit_data(self, device: Device, table: TabularDataset, reason: str) -> None:
+ configure_test_with_device(device)
+ model = NeuralNetworkClassifier(
+ InputConversionTable(),
+ [ForwardLayer(neuron_count=4), ForwardLayer(1)],
+ )
+ with pytest.raises(
+ InvalidFitDataError,
+ match=reason,
+ ):
+ model.fit(table)
+
# def test_should_raise_if_table_size_and_input_size_mismatch(self, device: Device) -> None:
# configure_test_with_device(device)
# model = NeuralNetworkClassifier(
@@ -609,6 +659,54 @@ def test_should_raise_if_train_features_mismatch(self, device: Device) -> None:
Table.from_dict({"k": [1, 0, 2], "l": [0, 15, 5]}).to_tabular_dataset("l"),
)
+ @pytest.mark.parametrize(
+ ("table", "reason"),
+ [
+ (
+ Table.from_dict({"a": [1, 2, 3], "b": [1, 2, None], "c": [0, 15, 5]}).to_tabular_dataset("c"),
+ re.escape("The given Fit Data is invalid:\nThe following Columns contain missing values: ['b']\n"),
+ ),
+ (
+ Table.from_dict({"a": ["a", "b", "c"], "b": [1, 2, 3], "c": [0, 15, 5]}).to_tabular_dataset("c"),
+ re.escape("The given Fit Data is invalid:\nThe following Columns contain non-numerical data: ['a']"),
+ ),
+ (
+ Table.from_dict({"a": ["a", "b", "c"], "b": [1, 2, None], "c": [0, 15, 5]}).to_tabular_dataset("c"),
+ re.escape(
+ "The given Fit Data is invalid:\nThe following Columns contain missing values: ['b']\nThe following Columns contain non-numerical data: ['a']",
+ ),
+ ),
+ (
+ Table.from_dict({"a": [1, 2, 3], "b": [1, 2, 3], "c": [0, None, 5]}).to_tabular_dataset("c"),
+ re.escape(
+ "The given Fit Data is invalid:\nThe following Columns contain missing values: ['c']\n",
+ ),
+ ),
+ (
+ Table.from_dict({"a": [1, 2, 3], "b": [1, 2, 3], "c": ["a", "b", "a"]}).to_tabular_dataset("c"),
+ re.escape("The given Fit Data is invalid:\nThe following Columns contain non-numerical data: ['c']"),
+ ),
+ ],
+ ids=[
+ "missing value feature",
+ "non-numerical feature",
+ "missing value and non-numerical features",
+ "missing value target",
+ "non-numerical target",
+ ],
+ )
+ def test_should_catch_invalid_fit_data(self, device: Device, table: TabularDataset, reason: str) -> None:
+ configure_test_with_device(device)
+ model = NeuralNetworkRegressor(
+ InputConversionTable(),
+ [ForwardLayer(neuron_count=4), ForwardLayer(1)],
+ )
+ with pytest.raises(
+ InvalidFitDataError,
+ match=reason,
+ ):
+ model.fit(table)
+
# def test_should_raise_if_table_size_and_input_size_mismatch(self, device: Device) -> None:
# configure_test_with_device(device)
# model = NeuralNetworkRegressor(
From e83140118e010ef78e67342602db55877b6bf74b Mon Sep 17 00:00:00 2001
From: Alexander <47296670+Marsmaennchen221@users.noreply.github.com>
Date: Fri, 14 Jun 2024 16:08:39 +0200
Subject: [PATCH 08/16] docs: added channel amount info to
`convert_to_grayscale` methods in `Image` and `ImageList` (#834)
Closes #833
### Summary of Changes
docs: added channel amount info to `convert_to_grayscale` methods in
`Image` and `ImageList`
---
src/safeds/data/image/containers/_image.py | 3 +++
src/safeds/data/image/containers/_image_list.py | 3 +++
2 files changed, 6 insertions(+)
diff --git a/src/safeds/data/image/containers/_image.py b/src/safeds/data/image/containers/_image.py
index c8a316812..b1ce3abd8 100644
--- a/src/safeds/data/image/containers/_image.py
+++ b/src/safeds/data/image/containers/_image.py
@@ -429,6 +429,9 @@ def convert_to_grayscale(self) -> Image:
"""
Return a new `Image` that is converted to grayscale.
+ The new image will have the same amount of channels as the original image.
+ If you want to change the amount of channels used, please use the method [change_channel][safeds.data.image.containers._image.Image.change_channel].
+
The original image is not modified.
Returns
diff --git a/src/safeds/data/image/containers/_image_list.py b/src/safeds/data/image/containers/_image_list.py
index 864a9cc54..5e648d209 100644
--- a/src/safeds/data/image/containers/_image_list.py
+++ b/src/safeds/data/image/containers/_image_list.py
@@ -876,6 +876,9 @@ def convert_to_grayscale(self) -> ImageList:
"""
Return a new `ImageList` with all images converted to grayscale.
+ The new image list will have the same amount of channels as the original image list.
+ If you want to change the amount of channels used, please use the method [change_channel][safeds.data.image.containers._image_list.ImageList.change_channel].
+
The original image list is not modified.
Returns
From c3d5ad4a8f398328227387db2c411b71b46e5fe1 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 17 Jun 2024 12:18:14 +0200
Subject: [PATCH 09/16] build(deps): bump matplotlib from 3.8.4 to 3.9.0 (#822)
Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.8.4
to 3.9.0.
Release notes
Sourced from matplotlib's
releases.
REL: 3.9.0
Highlights of this release include:
- Plotting and Annotation improvements
- Axes.inset_axes is no longer experimental
- Legend support for Boxplot
- Percent sign in pie labels auto-escaped with usetex=True
- hatch parameter for stackplot
- Add option to plot only one half of violin plot
- axhline and axhspan on polar axes
- Subplot titles can now be automatically aligned
- axisartist can now be used together with standard Formatters
- Toggle minorticks on Axis
- StrMethodFormatter now respects axes.unicode_minus
- Figure, Axes, and Legend Layout
- Subfigures now have controllable zorders
- Getters for xmargin, ymargin and zmargin
- Mathtext improvements
- mathtext documentation improvements
- mathtext spacing corrections
- Widget Improvements
- Check and Radio Button widgets support clearing
- 3D plotting improvements
- Setting 3D axis limits now set the limits exactly
- Other improvements
- New BackendRegistry for plotting backends
- Add widths, heights and angles setter to EllipseCollection
- image.interpolation_stage rcParam
- Arrow patch position is now modifiable
- NonUniformImage now has mouseover support
REL: v3.9.0rc2
This is the second release candidate for the meso release 3.9.0.
Commits
be56634
REL: v3.9.0
846ce8a
DOC: Finish documentation for 3.9.0
8604f67
Merge pull request #28206
from meeseeksmachine/auto-backport-of-pr-28205-on-v...
196c8db
TST: Followup corrections to #28205
d8f3016
Backport PR #28205:
TST: Fix tests with older versions of ipython
4db5ac9
Merge pull request #28203
from QuLogic/auto-backport-of-pr-28164-on-v3.9.x
ef1a2db
Merge pull request #28204
from meeseeksmachine/auto-backport-of-pr-28195-on-v...
e4384b8
Merge pull request #28191
from QuLogic/no-dev-theme
3b65546
Backport PR #28195:
TST: Prepare for pytest 9
1b526c3
Backport PR #28164:
CI: Ensure code coverage is always uploaded
- Additional commits viewable in compare
view
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=matplotlib&package-manager=pip&previous-version=3.8.4&new-version=3.9.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lars Reimann
---
package-lock.json | 1428 +++++++----------
poetry.lock | 64 +-
.../tabular/plotting/test_plot_lineplot.py | 4 +
3 files changed, 611 insertions(+), 885 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index cb2f96a6b..b653c966d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1055,12 +1055,12 @@
"dev": true
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -1607,9 +1607,9 @@
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -2457,9 +2457,9 @@
}
},
"node_modules/npm": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/npm/-/npm-10.5.0.tgz",
- "integrity": "sha512-Ejxwvfh9YnWVU2yA5FzoYLTW52vxHCz+MHrOFg9Cc8IFgF/6f5AGPAvb5WTay5DIUP1NIfN3VBZ0cLlGO0Ys+A==",
+ "version": "10.8.1",
+ "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.1.tgz",
+ "integrity": "sha512-Dp1C6SvSMYQI7YHq/y2l94uvI+59Eqbu1EpuKQHQ8p16txXRuRit5gH3Lnaagk2aXDIjg/Iru9pd05bnneKgdw==",
"bundleDependencies": [
"@isaacs/string-locale-compare",
"@npmcli/arborist",
@@ -2468,6 +2468,7 @@
"@npmcli/map-workspaces",
"@npmcli/package-json",
"@npmcli/promise-spawn",
+ "@npmcli/redact",
"@npmcli/run-script",
"@sigstore/tuf",
"abbrev",
@@ -2476,8 +2477,6 @@
"chalk",
"ci-info",
"cli-columns",
- "cli-table3",
- "columnify",
"fastest-levenshtein",
"fs-minipass",
"glob",
@@ -2513,7 +2512,6 @@
"npm-profile",
"npm-registry-fetch",
"npm-user-validate",
- "npmlog",
"p-map",
"pacote",
"parse-conflict-json",
@@ -2535,73 +2533,71 @@
"dev": true,
"dependencies": {
"@isaacs/string-locale-compare": "^1.1.0",
- "@npmcli/arborist": "^7.2.1",
- "@npmcli/config": "^8.0.2",
- "@npmcli/fs": "^3.1.0",
- "@npmcli/map-workspaces": "^3.0.4",
- "@npmcli/package-json": "^5.0.0",
- "@npmcli/promise-spawn": "^7.0.1",
- "@npmcli/run-script": "^7.0.4",
- "@sigstore/tuf": "^2.3.1",
+ "@npmcli/arborist": "^7.5.3",
+ "@npmcli/config": "^8.3.3",
+ "@npmcli/fs": "^3.1.1",
+ "@npmcli/map-workspaces": "^3.0.6",
+ "@npmcli/package-json": "^5.1.1",
+ "@npmcli/promise-spawn": "^7.0.2",
+ "@npmcli/redact": "^2.0.0",
+ "@npmcli/run-script": "^8.1.0",
+ "@sigstore/tuf": "^2.3.4",
"abbrev": "^2.0.0",
"archy": "~1.0.0",
- "cacache": "^18.0.2",
+ "cacache": "^18.0.3",
"chalk": "^5.3.0",
"ci-info": "^4.0.0",
"cli-columns": "^4.0.0",
- "cli-table3": "^0.6.3",
- "columnify": "^1.6.0",
"fastest-levenshtein": "^1.0.16",
"fs-minipass": "^3.0.3",
- "glob": "^10.3.10",
+ "glob": "^10.4.1",
"graceful-fs": "^4.2.11",
- "hosted-git-info": "^7.0.1",
- "ini": "^4.1.1",
- "init-package-json": "^6.0.0",
- "is-cidr": "^5.0.3",
- "json-parse-even-better-errors": "^3.0.1",
- "libnpmaccess": "^8.0.1",
- "libnpmdiff": "^6.0.3",
- "libnpmexec": "^7.0.4",
- "libnpmfund": "^5.0.1",
- "libnpmhook": "^10.0.0",
- "libnpmorg": "^6.0.1",
- "libnpmpack": "^6.0.3",
- "libnpmpublish": "^9.0.2",
- "libnpmsearch": "^7.0.0",
- "libnpmteam": "^6.0.0",
- "libnpmversion": "^5.0.1",
- "make-fetch-happen": "^13.0.0",
- "minimatch": "^9.0.3",
- "minipass": "^7.0.4",
+ "hosted-git-info": "^7.0.2",
+ "ini": "^4.1.3",
+ "init-package-json": "^6.0.3",
+ "is-cidr": "^5.1.0",
+ "json-parse-even-better-errors": "^3.0.2",
+ "libnpmaccess": "^8.0.6",
+ "libnpmdiff": "^6.1.3",
+ "libnpmexec": "^8.1.2",
+ "libnpmfund": "^5.0.11",
+ "libnpmhook": "^10.0.5",
+ "libnpmorg": "^6.0.6",
+ "libnpmpack": "^7.0.3",
+ "libnpmpublish": "^9.0.9",
+ "libnpmsearch": "^7.0.6",
+ "libnpmteam": "^6.0.5",
+ "libnpmversion": "^6.0.3",
+ "make-fetch-happen": "^13.0.1",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.1",
"minipass-pipeline": "^1.2.4",
"ms": "^2.1.2",
- "node-gyp": "^10.0.1",
- "nopt": "^7.2.0",
- "normalize-package-data": "^6.0.0",
+ "node-gyp": "^10.1.0",
+ "nopt": "^7.2.1",
+ "normalize-package-data": "^6.0.1",
"npm-audit-report": "^5.0.0",
"npm-install-checks": "^6.3.0",
- "npm-package-arg": "^11.0.1",
- "npm-pick-manifest": "^9.0.0",
- "npm-profile": "^9.0.0",
- "npm-registry-fetch": "^16.1.0",
- "npm-user-validate": "^2.0.0",
- "npmlog": "^7.0.1",
+ "npm-package-arg": "^11.0.2",
+ "npm-pick-manifest": "^9.0.1",
+ "npm-profile": "^10.0.0",
+ "npm-registry-fetch": "^17.0.1",
+ "npm-user-validate": "^2.0.1",
"p-map": "^4.0.0",
- "pacote": "^17.0.6",
+ "pacote": "^18.0.6",
"parse-conflict-json": "^3.0.1",
- "proc-log": "^3.0.0",
+ "proc-log": "^4.2.0",
"qrcode-terminal": "^0.12.0",
- "read": "^2.1.0",
- "semver": "^7.6.0",
- "spdx-expression-parse": "^3.0.1",
- "ssri": "^10.0.5",
+ "read": "^3.0.1",
+ "semver": "^7.6.2",
+ "spdx-expression-parse": "^4.0.0",
+ "ssri": "^10.0.6",
"supports-color": "^9.4.0",
- "tar": "^6.2.0",
+ "tar": "^6.2.1",
"text-table": "~0.2.0",
"tiny-relative-date": "^1.3.0",
"treeverse": "^3.0.0",
- "validate-npm-package-name": "^5.0.0",
+ "validate-npm-package-name": "^5.0.1",
"which": "^4.0.0",
"write-file-atomic": "^5.0.1"
},
@@ -2640,16 +2636,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/npm/node_modules/@colors/colors": {
- "version": "1.5.0",
- "dev": true,
- "inBundle": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">=0.1.90"
- }
- },
"node_modules/npm/node_modules/@isaacs/cliui": {
"version": "8.0.2",
"dev": true,
@@ -2724,7 +2710,7 @@
"license": "ISC"
},
"node_modules/npm/node_modules/@npmcli/agent": {
- "version": "2.2.1",
+ "version": "2.2.2",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -2733,49 +2719,51 @@
"http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.1",
"lru-cache": "^10.0.1",
- "socks-proxy-agent": "^8.0.1"
+ "socks-proxy-agent": "^8.0.3"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@npmcli/arborist": {
- "version": "7.4.0",
+ "version": "7.5.3",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"@isaacs/string-locale-compare": "^1.1.0",
- "@npmcli/fs": "^3.1.0",
- "@npmcli/installed-package-contents": "^2.0.2",
+ "@npmcli/fs": "^3.1.1",
+ "@npmcli/installed-package-contents": "^2.1.0",
"@npmcli/map-workspaces": "^3.0.2",
- "@npmcli/metavuln-calculator": "^7.0.0",
+ "@npmcli/metavuln-calculator": "^7.1.1",
"@npmcli/name-from-folder": "^2.0.0",
"@npmcli/node-gyp": "^3.0.0",
- "@npmcli/package-json": "^5.0.0",
+ "@npmcli/package-json": "^5.1.0",
"@npmcli/query": "^3.1.0",
- "@npmcli/run-script": "^7.0.2",
- "bin-links": "^4.0.1",
- "cacache": "^18.0.0",
+ "@npmcli/redact": "^2.0.0",
+ "@npmcli/run-script": "^8.1.0",
+ "bin-links": "^4.0.4",
+ "cacache": "^18.0.3",
"common-ancestor-path": "^1.0.1",
- "hosted-git-info": "^7.0.1",
- "json-parse-even-better-errors": "^3.0.0",
+ "hosted-git-info": "^7.0.2",
+ "json-parse-even-better-errors": "^3.0.2",
"json-stringify-nice": "^1.1.4",
- "minimatch": "^9.0.0",
- "nopt": "^7.0.0",
+ "lru-cache": "^10.2.2",
+ "minimatch": "^9.0.4",
+ "nopt": "^7.2.1",
"npm-install-checks": "^6.2.0",
- "npm-package-arg": "^11.0.1",
- "npm-pick-manifest": "^9.0.0",
- "npm-registry-fetch": "^16.0.0",
- "npmlog": "^7.0.1",
- "pacote": "^17.0.4",
+ "npm-package-arg": "^11.0.2",
+ "npm-pick-manifest": "^9.0.1",
+ "npm-registry-fetch": "^17.0.1",
+ "pacote": "^18.0.6",
"parse-conflict-json": "^3.0.0",
- "proc-log": "^3.0.0",
+ "proc-log": "^4.2.0",
+ "proggy": "^2.0.0",
"promise-all-reject-late": "^1.0.0",
"promise-call-limit": "^3.0.1",
"read-package-json-fast": "^3.0.2",
"semver": "^7.3.7",
- "ssri": "^10.0.5",
+ "ssri": "^10.0.6",
"treeverse": "^3.0.0",
"walk-up-path": "^3.0.1"
},
@@ -2787,16 +2775,16 @@
}
},
"node_modules/npm/node_modules/@npmcli/config": {
- "version": "8.2.0",
+ "version": "8.3.3",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"@npmcli/map-workspaces": "^3.0.2",
"ci-info": "^4.0.0",
- "ini": "^4.1.0",
- "nopt": "^7.0.0",
- "proc-log": "^3.0.0",
+ "ini": "^4.1.2",
+ "nopt": "^7.2.1",
+ "proc-log": "^4.2.0",
"read-package-json-fast": "^3.0.2",
"semver": "^7.3.5",
"walk-up-path": "^3.0.1"
@@ -2805,35 +2793,8 @@
"node": "^16.14.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/@npmcli/disparity-colors": {
- "version": "3.0.0",
- "dev": true,
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "ansi-styles": "^4.3.0"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/disparity-colors/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
"node_modules/npm/node_modules/@npmcli/fs": {
- "version": "3.1.0",
+ "version": "3.1.1",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -2845,7 +2806,7 @@
}
},
"node_modules/npm/node_modules/@npmcli/git": {
- "version": "5.0.4",
+ "version": "5.0.7",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -2853,7 +2814,7 @@
"@npmcli/promise-spawn": "^7.0.0",
"lru-cache": "^10.0.1",
"npm-pick-manifest": "^9.0.0",
- "proc-log": "^3.0.0",
+ "proc-log": "^4.0.0",
"promise-inflight": "^1.0.1",
"promise-retry": "^2.0.1",
"semver": "^7.3.5",
@@ -2864,7 +2825,7 @@
}
},
"node_modules/npm/node_modules/@npmcli/installed-package-contents": {
- "version": "2.0.2",
+ "version": "2.1.0",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -2873,14 +2834,14 @@
"npm-normalize-package-bin": "^3.0.0"
},
"bin": {
- "installed-package-contents": "lib/index.js"
+ "installed-package-contents": "bin/index.js"
},
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@npmcli/map-workspaces": {
- "version": "3.0.4",
+ "version": "3.0.6",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -2895,14 +2856,15 @@
}
},
"node_modules/npm/node_modules/@npmcli/metavuln-calculator": {
- "version": "7.0.0",
+ "version": "7.1.1",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"cacache": "^18.0.0",
"json-parse-even-better-errors": "^3.0.0",
- "pacote": "^17.0.0",
+ "pacote": "^18.0.0",
+ "proc-log": "^4.1.0",
"semver": "^7.3.5"
},
"engines": {
@@ -2928,7 +2890,7 @@
}
},
"node_modules/npm/node_modules/@npmcli/package-json": {
- "version": "5.0.0",
+ "version": "5.1.1",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -2938,7 +2900,7 @@
"hosted-git-info": "^7.0.0",
"json-parse-even-better-errors": "^3.0.0",
"normalize-package-data": "^6.0.0",
- "proc-log": "^3.0.0",
+ "proc-log": "^4.0.0",
"semver": "^7.5.3"
},
"engines": {
@@ -2946,7 +2908,7 @@
}
},
"node_modules/npm/node_modules/@npmcli/promise-spawn": {
- "version": "7.0.1",
+ "version": "7.0.2",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -2969,8 +2931,17 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/npm/node_modules/@npmcli/redact": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
"node_modules/npm/node_modules/@npmcli/run-script": {
- "version": "7.0.4",
+ "version": "8.1.0",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -2979,6 +2950,7 @@
"@npmcli/package-json": "^5.0.0",
"@npmcli/promise-spawn": "^7.0.0",
"node-gyp": "^10.0.0",
+ "proc-log": "^4.0.0",
"which": "^4.0.0"
},
"engines": {
@@ -2996,19 +2968,19 @@
}
},
"node_modules/npm/node_modules/@sigstore/bundle": {
- "version": "2.2.0",
+ "version": "2.3.2",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
- "@sigstore/protobuf-specs": "^0.3.0"
+ "@sigstore/protobuf-specs": "^0.3.2"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@sigstore/core": {
- "version": "1.0.0",
+ "version": "1.1.0",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
@@ -3017,51 +2989,53 @@
}
},
"node_modules/npm/node_modules/@sigstore/protobuf-specs": {
- "version": "0.3.0",
+ "version": "0.3.2",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@sigstore/sign": {
- "version": "2.2.3",
+ "version": "2.3.2",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
- "@sigstore/bundle": "^2.2.0",
+ "@sigstore/bundle": "^2.3.2",
"@sigstore/core": "^1.0.0",
- "@sigstore/protobuf-specs": "^0.3.0",
- "make-fetch-happen": "^13.0.0"
+ "@sigstore/protobuf-specs": "^0.3.2",
+ "make-fetch-happen": "^13.0.1",
+ "proc-log": "^4.2.0",
+ "promise-retry": "^2.0.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@sigstore/tuf": {
- "version": "2.3.1",
+ "version": "2.3.4",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
- "@sigstore/protobuf-specs": "^0.3.0",
- "tuf-js": "^2.2.0"
+ "@sigstore/protobuf-specs": "^0.3.2",
+ "tuf-js": "^2.2.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@sigstore/verify": {
- "version": "1.1.0",
+ "version": "1.2.1",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
- "@sigstore/bundle": "^2.2.0",
- "@sigstore/core": "^1.0.0",
- "@sigstore/protobuf-specs": "^0.3.0"
+ "@sigstore/bundle": "^2.3.2",
+ "@sigstore/core": "^1.1.0",
+ "@sigstore/protobuf-specs": "^0.3.2"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
@@ -3077,13 +3051,13 @@
}
},
"node_modules/npm/node_modules/@tufjs/models": {
- "version": "2.0.0",
+ "version": "2.0.1",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
"@tufjs/canonical-json": "2.0.0",
- "minimatch": "^9.0.3"
+ "minimatch": "^9.0.4"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
@@ -3099,7 +3073,7 @@
}
},
"node_modules/npm/node_modules/agent-base": {
- "version": "7.1.0",
+ "version": "7.1.1",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -3156,15 +3130,6 @@
"inBundle": true,
"license": "MIT"
},
- "node_modules/npm/node_modules/are-we-there-yet": {
- "version": "4.0.2",
- "dev": true,
- "inBundle": true,
- "license": "ISC",
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
"node_modules/npm/node_modules/balanced-match": {
"version": "1.0.2",
"dev": true,
@@ -3172,7 +3137,7 @@
"license": "MIT"
},
"node_modules/npm/node_modules/bin-links": {
- "version": "4.0.3",
+ "version": "4.0.4",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -3187,12 +3152,15 @@
}
},
"node_modules/npm/node_modules/binary-extensions": {
- "version": "2.2.0",
+ "version": "2.3.0",
"dev": true,
"inBundle": true,
"license": "MIT",
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/npm/node_modules/brace-expansion": {
@@ -3204,17 +3172,8 @@
"balanced-match": "^1.0.0"
}
},
- "node_modules/npm/node_modules/builtins": {
- "version": "5.0.1",
- "dev": true,
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "semver": "^7.0.0"
- }
- },
"node_modules/npm/node_modules/cacache": {
- "version": "18.0.2",
+ "version": "18.0.3",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -3273,7 +3232,7 @@
}
},
"node_modules/npm/node_modules/cidr-regex": {
- "version": "4.0.3",
+ "version": "4.1.1",
"dev": true,
"inBundle": true,
"license": "BSD-2-Clause",
@@ -3306,32 +3265,8 @@
"node": ">= 10"
}
},
- "node_modules/npm/node_modules/cli-table3": {
- "version": "0.6.3",
- "dev": true,
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "string-width": "^4.2.0"
- },
- "engines": {
- "node": "10.* || >= 12.*"
- },
- "optionalDependencies": {
- "@colors/colors": "1.5.0"
- }
- },
- "node_modules/npm/node_modules/clone": {
- "version": "1.0.4",
- "dev": true,
- "inBundle": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8"
- }
- },
"node_modules/npm/node_modules/cmd-shim": {
- "version": "6.0.2",
+ "version": "6.0.3",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -3357,40 +3292,12 @@
"inBundle": true,
"license": "MIT"
},
- "node_modules/npm/node_modules/color-support": {
- "version": "1.1.3",
- "dev": true,
- "inBundle": true,
- "license": "ISC",
- "bin": {
- "color-support": "bin.js"
- }
- },
- "node_modules/npm/node_modules/columnify": {
- "version": "1.6.0",
- "dev": true,
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "strip-ansi": "^6.0.1",
- "wcwidth": "^1.0.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
"node_modules/npm/node_modules/common-ancestor-path": {
"version": "1.0.1",
"dev": true,
"inBundle": true,
"license": "ISC"
},
- "node_modules/npm/node_modules/console-control-strings": {
- "version": "1.1.0",
- "dev": true,
- "inBundle": true,
- "license": "ISC"
- },
"node_modules/npm/node_modules/cross-spawn": {
"version": "7.0.3",
"dev": true,
@@ -3455,18 +3362,6 @@
"inBundle": true,
"license": "MIT"
},
- "node_modules/npm/node_modules/defaults": {
- "version": "1.0.4",
- "dev": true,
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "clone": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/npm/node_modules/diff": {
"version": "5.2.0",
"dev": true,
@@ -3565,42 +3460,23 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/npm/node_modules/gauge": {
- "version": "5.0.1",
- "dev": true,
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "aproba": "^1.0.3 || ^2.0.0",
- "color-support": "^1.1.3",
- "console-control-strings": "^1.1.0",
- "has-unicode": "^2.0.1",
- "signal-exit": "^4.0.1",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1",
- "wide-align": "^1.1.5"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
"node_modules/npm/node_modules/glob": {
- "version": "10.3.10",
+ "version": "10.4.1",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
- "minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -3612,14 +3488,8 @@
"inBundle": true,
"license": "ISC"
},
- "node_modules/npm/node_modules/has-unicode": {
- "version": "2.0.1",
- "dev": true,
- "inBundle": true,
- "license": "ISC"
- },
"node_modules/npm/node_modules/hasown": {
- "version": "2.0.1",
+ "version": "2.0.2",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -3631,7 +3501,7 @@
}
},
"node_modules/npm/node_modules/hosted-git-info": {
- "version": "7.0.1",
+ "version": "7.0.2",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -3688,7 +3558,7 @@
}
},
"node_modules/npm/node_modules/ignore-walk": {
- "version": "6.0.4",
+ "version": "6.0.5",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -3718,7 +3588,7 @@
}
},
"node_modules/npm/node_modules/ini": {
- "version": "4.1.1",
+ "version": "4.1.3",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -3727,15 +3597,15 @@
}
},
"node_modules/npm/node_modules/init-package-json": {
- "version": "6.0.0",
+ "version": "6.0.3",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
+ "@npmcli/package-json": "^5.0.0",
"npm-package-arg": "^11.0.0",
"promzard": "^1.0.0",
- "read": "^2.0.0",
- "read-package-json": "^7.0.0",
+ "read": "^3.0.1",
"semver": "^7.3.5",
"validate-npm-package-license": "^3.0.4",
"validate-npm-package-name": "^5.0.0"
@@ -3757,12 +3627,6 @@
"node": ">= 12"
}
},
- "node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": {
- "version": "1.1.3",
- "dev": true,
- "inBundle": true,
- "license": "BSD-3-Clause"
- },
"node_modules/npm/node_modules/ip-regex": {
"version": "5.0.0",
"dev": true,
@@ -3776,12 +3640,12 @@
}
},
"node_modules/npm/node_modules/is-cidr": {
- "version": "5.0.3",
+ "version": "5.1.0",
"dev": true,
"inBundle": true,
"license": "BSD-2-Clause",
"dependencies": {
- "cidr-regex": "4.0.3"
+ "cidr-regex": "^4.1.1"
},
"engines": {
"node": ">=14"
@@ -3821,7 +3685,7 @@
"license": "ISC"
},
"node_modules/npm/node_modules/jackspeak": {
- "version": "2.3.6",
+ "version": "3.1.2",
"dev": true,
"inBundle": true,
"license": "BlueOak-1.0.0",
@@ -3845,7 +3709,7 @@
"license": "MIT"
},
"node_modules/npm/node_modules/json-parse-even-better-errors": {
- "version": "3.0.1",
+ "version": "3.0.2",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -3884,52 +3748,50 @@
"license": "MIT"
},
"node_modules/npm/node_modules/libnpmaccess": {
- "version": "8.0.2",
+ "version": "8.0.6",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "npm-package-arg": "^11.0.1",
- "npm-registry-fetch": "^16.0.0"
+ "npm-package-arg": "^11.0.2",
+ "npm-registry-fetch": "^17.0.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmdiff": {
- "version": "6.0.7",
+ "version": "6.1.3",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^7.2.1",
- "@npmcli/disparity-colors": "^3.0.0",
- "@npmcli/installed-package-contents": "^2.0.2",
- "binary-extensions": "^2.2.0",
+ "@npmcli/arborist": "^7.5.3",
+ "@npmcli/installed-package-contents": "^2.1.0",
+ "binary-extensions": "^2.3.0",
"diff": "^5.1.0",
- "minimatch": "^9.0.0",
- "npm-package-arg": "^11.0.1",
- "pacote": "^17.0.4",
- "tar": "^6.2.0"
+ "minimatch": "^9.0.4",
+ "npm-package-arg": "^11.0.2",
+ "pacote": "^18.0.6",
+ "tar": "^6.2.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmexec": {
- "version": "7.0.8",
+ "version": "8.1.2",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^7.2.1",
- "@npmcli/run-script": "^7.0.2",
+ "@npmcli/arborist": "^7.5.3",
+ "@npmcli/run-script": "^8.1.0",
"ci-info": "^4.0.0",
- "npm-package-arg": "^11.0.1",
- "npmlog": "^7.0.1",
- "pacote": "^17.0.4",
- "proc-log": "^3.0.0",
- "read": "^2.0.0",
+ "npm-package-arg": "^11.0.2",
+ "pacote": "^18.0.6",
+ "proc-log": "^4.2.0",
+ "read": "^3.0.1",
"read-package-json-fast": "^3.0.2",
"semver": "^7.3.7",
"walk-up-path": "^3.0.1"
@@ -3939,112 +3801,112 @@
}
},
"node_modules/npm/node_modules/libnpmfund": {
- "version": "5.0.5",
+ "version": "5.0.11",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^7.2.1"
+ "@npmcli/arborist": "^7.5.3"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmhook": {
- "version": "10.0.1",
+ "version": "10.0.5",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"aproba": "^2.0.0",
- "npm-registry-fetch": "^16.0.0"
+ "npm-registry-fetch": "^17.0.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmorg": {
- "version": "6.0.2",
+ "version": "6.0.6",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"aproba": "^2.0.0",
- "npm-registry-fetch": "^16.0.0"
+ "npm-registry-fetch": "^17.0.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmpack": {
- "version": "6.0.7",
+ "version": "7.0.3",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^7.2.1",
- "@npmcli/run-script": "^7.0.2",
- "npm-package-arg": "^11.0.1",
- "pacote": "^17.0.4"
+ "@npmcli/arborist": "^7.5.3",
+ "@npmcli/run-script": "^8.1.0",
+ "npm-package-arg": "^11.0.2",
+ "pacote": "^18.0.6"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmpublish": {
- "version": "9.0.4",
+ "version": "9.0.9",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"ci-info": "^4.0.0",
- "normalize-package-data": "^6.0.0",
- "npm-package-arg": "^11.0.1",
- "npm-registry-fetch": "^16.0.0",
- "proc-log": "^3.0.0",
+ "normalize-package-data": "^6.0.1",
+ "npm-package-arg": "^11.0.2",
+ "npm-registry-fetch": "^17.0.1",
+ "proc-log": "^4.2.0",
"semver": "^7.3.7",
"sigstore": "^2.2.0",
- "ssri": "^10.0.5"
+ "ssri": "^10.0.6"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmsearch": {
- "version": "7.0.1",
+ "version": "7.0.6",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "npm-registry-fetch": "^16.0.0"
+ "npm-registry-fetch": "^17.0.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmteam": {
- "version": "6.0.1",
+ "version": "6.0.5",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"aproba": "^2.0.0",
- "npm-registry-fetch": "^16.0.0"
+ "npm-registry-fetch": "^17.0.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/libnpmversion": {
- "version": "5.0.2",
+ "version": "6.0.3",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/git": "^5.0.3",
- "@npmcli/run-script": "^7.0.2",
- "json-parse-even-better-errors": "^3.0.0",
- "proc-log": "^3.0.0",
+ "@npmcli/git": "^5.0.7",
+ "@npmcli/run-script": "^8.1.0",
+ "json-parse-even-better-errors": "^3.0.2",
+ "proc-log": "^4.2.0",
"semver": "^7.3.7"
},
"engines": {
@@ -4052,7 +3914,7 @@
}
},
"node_modules/npm/node_modules/lru-cache": {
- "version": "10.2.0",
+ "version": "10.2.2",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4061,7 +3923,7 @@
}
},
"node_modules/npm/node_modules/make-fetch-happen": {
- "version": "13.0.0",
+ "version": "13.0.1",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4075,6 +3937,7 @@
"minipass-flush": "^1.0.5",
"minipass-pipeline": "^1.2.4",
"negotiator": "^0.6.3",
+ "proc-log": "^4.2.0",
"promise-retry": "^2.0.1",
"ssri": "^10.0.0"
},
@@ -4083,7 +3946,7 @@
}
},
"node_modules/npm/node_modules/minimatch": {
- "version": "9.0.3",
+ "version": "9.0.4",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4098,7 +3961,7 @@
}
},
"node_modules/npm/node_modules/minipass": {
- "version": "7.0.4",
+ "version": "7.1.2",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4119,7 +3982,7 @@
}
},
"node_modules/npm/node_modules/minipass-fetch": {
- "version": "3.0.4",
+ "version": "3.0.5",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -4291,7 +4154,7 @@
}
},
"node_modules/npm/node_modules/node-gyp": {
- "version": "10.0.1",
+ "version": "10.1.0",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -4314,8 +4177,17 @@
"node": "^16.14.0 || >=18.0.0"
}
},
+ "node_modules/npm/node_modules/node-gyp/node_modules/proc-log": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
"node_modules/npm/node_modules/nopt": {
- "version": "7.2.0",
+ "version": "7.2.1",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4330,7 +4202,7 @@
}
},
"node_modules/npm/node_modules/normalize-package-data": {
- "version": "6.0.0",
+ "version": "6.0.1",
"dev": true,
"inBundle": true,
"license": "BSD-2-Clause",
@@ -4354,7 +4226,7 @@
}
},
"node_modules/npm/node_modules/npm-bundled": {
- "version": "3.0.0",
+ "version": "3.0.1",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4387,13 +4259,13 @@
}
},
"node_modules/npm/node_modules/npm-package-arg": {
- "version": "11.0.1",
+ "version": "11.0.2",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"hosted-git-info": "^7.0.0",
- "proc-log": "^3.0.0",
+ "proc-log": "^4.0.0",
"semver": "^7.3.5",
"validate-npm-package-name": "^5.0.0"
},
@@ -4414,7 +4286,7 @@
}
},
"node_modules/npm/node_modules/npm-pick-manifest": {
- "version": "9.0.0",
+ "version": "9.0.1",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4429,38 +4301,39 @@
}
},
"node_modules/npm/node_modules/npm-profile": {
- "version": "9.0.0",
+ "version": "10.0.0",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "npm-registry-fetch": "^16.0.0",
- "proc-log": "^3.0.0"
+ "npm-registry-fetch": "^17.0.1",
+ "proc-log": "^4.0.0"
},
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/npm/node_modules/npm-registry-fetch": {
- "version": "16.1.0",
+ "version": "17.0.1",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
+ "@npmcli/redact": "^2.0.0",
"make-fetch-happen": "^13.0.0",
"minipass": "^7.0.2",
"minipass-fetch": "^3.0.0",
"minipass-json-stream": "^1.0.1",
"minizlib": "^2.1.2",
"npm-package-arg": "^11.0.0",
- "proc-log": "^3.0.0"
+ "proc-log": "^4.0.0"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/npm-user-validate": {
- "version": "2.0.0",
+ "version": "2.0.1",
"dev": true,
"inBundle": true,
"license": "BSD-2-Clause",
@@ -4468,21 +4341,6 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/npmlog": {
- "version": "7.0.1",
- "dev": true,
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "are-we-there-yet": "^4.0.0",
- "console-control-strings": "^1.1.0",
- "gauge": "^5.0.0",
- "set-blocking": "^2.0.0"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
"node_modules/npm/node_modules/p-map": {
"version": "4.0.0",
"dev": true,
@@ -4499,32 +4357,31 @@
}
},
"node_modules/npm/node_modules/pacote": {
- "version": "17.0.6",
+ "version": "18.0.6",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"@npmcli/git": "^5.0.0",
"@npmcli/installed-package-contents": "^2.0.1",
+ "@npmcli/package-json": "^5.1.0",
"@npmcli/promise-spawn": "^7.0.0",
- "@npmcli/run-script": "^7.0.0",
+ "@npmcli/run-script": "^8.0.0",
"cacache": "^18.0.0",
"fs-minipass": "^3.0.0",
"minipass": "^7.0.2",
"npm-package-arg": "^11.0.0",
"npm-packlist": "^8.0.0",
"npm-pick-manifest": "^9.0.0",
- "npm-registry-fetch": "^16.0.0",
- "proc-log": "^3.0.0",
+ "npm-registry-fetch": "^17.0.0",
+ "proc-log": "^4.0.0",
"promise-retry": "^2.0.1",
- "read-package-json": "^7.0.0",
- "read-package-json-fast": "^3.0.0",
"sigstore": "^2.2.0",
"ssri": "^10.0.0",
"tar": "^6.1.11"
},
"bin": {
- "pacote": "lib/bin.js"
+ "pacote": "bin/index.js"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
@@ -4554,23 +4411,23 @@
}
},
"node_modules/npm/node_modules/path-scurry": {
- "version": "1.10.1",
+ "version": "1.11.1",
"dev": true,
"inBundle": true,
"license": "BlueOak-1.0.0",
"dependencies": {
- "lru-cache": "^9.1.1 || ^10.0.0",
+ "lru-cache": "^10.2.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/npm/node_modules/postcss-selector-parser": {
- "version": "6.0.15",
+ "version": "6.1.0",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -4583,7 +4440,16 @@
}
},
"node_modules/npm/node_modules/proc-log": {
- "version": "3.0.0",
+ "version": "4.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/proggy": {
+ "version": "2.0.0",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4629,12 +4495,12 @@
}
},
"node_modules/npm/node_modules/promzard": {
- "version": "1.0.0",
+ "version": "1.0.2",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "read": "^2.0.0"
+ "read": "^3.0.1"
},
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
@@ -4649,12 +4515,12 @@
}
},
"node_modules/npm/node_modules/read": {
- "version": "2.1.0",
+ "version": "3.0.1",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "mute-stream": "~1.0.0"
+ "mute-stream": "^1.0.0"
},
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
@@ -4669,21 +4535,6 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/read-package-json": {
- "version": "7.0.0",
- "dev": true,
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^10.2.2",
- "json-parse-even-better-errors": "^3.0.0",
- "normalize-package-data": "^6.0.0",
- "npm-normalize-package-bin": "^3.0.0"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
"node_modules/npm/node_modules/read-package-json-fast": {
"version": "3.0.2",
"dev": true,
@@ -4714,13 +4565,10 @@
"optional": true
},
"node_modules/npm/node_modules/semver": {
- "version": "7.6.0",
+ "version": "7.6.2",
"dev": true,
"inBundle": true,
"license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
"bin": {
"semver": "bin/semver.js"
},
@@ -4728,24 +4576,6 @@
"node": ">=10"
}
},
- "node_modules/npm/node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/npm/node_modules/set-blocking": {
- "version": "2.0.0",
- "dev": true,
- "inBundle": true,
- "license": "ISC"
- },
"node_modules/npm/node_modules/shebang-command": {
"version": "2.0.0",
"dev": true,
@@ -4780,17 +4610,17 @@
}
},
"node_modules/npm/node_modules/sigstore": {
- "version": "2.2.2",
+ "version": "2.3.1",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
- "@sigstore/bundle": "^2.2.0",
+ "@sigstore/bundle": "^2.3.2",
"@sigstore/core": "^1.0.0",
- "@sigstore/protobuf-specs": "^0.3.0",
- "@sigstore/sign": "^2.2.3",
- "@sigstore/tuf": "^2.3.1",
- "@sigstore/verify": "^1.1.0"
+ "@sigstore/protobuf-specs": "^0.3.2",
+ "@sigstore/sign": "^2.3.2",
+ "@sigstore/tuf": "^2.3.4",
+ "@sigstore/verify": "^1.2.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
@@ -4807,7 +4637,7 @@
}
},
"node_modules/npm/node_modules/socks": {
- "version": "2.8.0",
+ "version": "2.8.3",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -4816,17 +4646,17 @@
"smart-buffer": "^4.2.0"
},
"engines": {
- "node": ">= 16.0.0",
+ "node": ">= 10.0.0",
"npm": ">= 3.0.0"
}
},
"node_modules/npm/node_modules/socks-proxy-agent": {
- "version": "8.0.2",
+ "version": "8.0.3",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
- "agent-base": "^7.0.2",
+ "agent-base": "^7.1.1",
"debug": "^4.3.4",
"socks": "^2.7.1"
},
@@ -4844,6 +4674,16 @@
"spdx-license-ids": "^3.0.0"
}
},
+ "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
"node_modules/npm/node_modules/spdx-exceptions": {
"version": "2.5.0",
"dev": true,
@@ -4851,7 +4691,7 @@
"license": "CC-BY-3.0"
},
"node_modules/npm/node_modules/spdx-expression-parse": {
- "version": "3.0.1",
+ "version": "4.0.0",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -4861,13 +4701,19 @@
}
},
"node_modules/npm/node_modules/spdx-license-ids": {
- "version": "3.0.17",
+ "version": "3.0.18",
"dev": true,
"inBundle": true,
"license": "CC0-1.0"
},
+ "node_modules/npm/node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-3-Clause"
+ },
"node_modules/npm/node_modules/ssri": {
- "version": "10.0.5",
+ "version": "10.0.6",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4945,7 +4791,7 @@
}
},
"node_modules/npm/node_modules/tar": {
- "version": "6.2.0",
+ "version": "6.2.1",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -5016,14 +4862,14 @@
}
},
"node_modules/npm/node_modules/tuf-js": {
- "version": "2.2.0",
+ "version": "2.2.1",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
- "@tufjs/models": "2.0.0",
+ "@tufjs/models": "2.0.1",
"debug": "^4.3.4",
- "make-fetch-happen": "^13.0.0"
+ "make-fetch-happen": "^13.0.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
@@ -5069,14 +4915,21 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
"node_modules/npm/node_modules/validate-npm-package-name": {
- "version": "5.0.0",
+ "version": "5.0.1",
"dev": true,
"inBundle": true,
"license": "ISC",
- "dependencies": {
- "builtins": "^5.0.0"
- },
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
@@ -5087,15 +4940,6 @@
"inBundle": true,
"license": "ISC"
},
- "node_modules/npm/node_modules/wcwidth": {
- "version": "1.0.1",
- "dev": true,
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "defaults": "^1.0.3"
- }
- },
"node_modules/npm/node_modules/which": {
"version": "4.0.0",
"dev": true,
@@ -5120,15 +4964,6 @@
"node": ">=16"
}
},
- "node_modules/npm/node_modules/wide-align": {
- "version": "1.1.5",
- "dev": true,
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^1.0.2 || 2 || 3 || 4"
- }
- },
"node_modules/npm/node_modules/wrap-ansi": {
"version": "8.1.0",
"dev": true,
@@ -7382,12 +7217,12 @@
"dev": true
},
"braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"requires": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
}
},
"callsites": {
@@ -7777,9 +7612,9 @@
}
},
"fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"requires": {
"to-regex-range": "^5.0.1"
@@ -8405,89 +8240,81 @@
"dev": true
},
"npm": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/npm/-/npm-10.5.0.tgz",
- "integrity": "sha512-Ejxwvfh9YnWVU2yA5FzoYLTW52vxHCz+MHrOFg9Cc8IFgF/6f5AGPAvb5WTay5DIUP1NIfN3VBZ0cLlGO0Ys+A==",
+ "version": "10.8.1",
+ "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.1.tgz",
+ "integrity": "sha512-Dp1C6SvSMYQI7YHq/y2l94uvI+59Eqbu1EpuKQHQ8p16txXRuRit5gH3Lnaagk2aXDIjg/Iru9pd05bnneKgdw==",
"dev": true,
"requires": {
"@isaacs/string-locale-compare": "^1.1.0",
- "@npmcli/arborist": "^7.2.1",
- "@npmcli/config": "^8.0.2",
- "@npmcli/fs": "^3.1.0",
- "@npmcli/map-workspaces": "^3.0.4",
- "@npmcli/package-json": "^5.0.0",
- "@npmcli/promise-spawn": "^7.0.1",
- "@npmcli/run-script": "^7.0.4",
- "@sigstore/tuf": "^2.3.1",
+ "@npmcli/arborist": "^7.5.3",
+ "@npmcli/config": "^8.3.3",
+ "@npmcli/fs": "^3.1.1",
+ "@npmcli/map-workspaces": "^3.0.6",
+ "@npmcli/package-json": "^5.1.1",
+ "@npmcli/promise-spawn": "^7.0.2",
+ "@npmcli/redact": "^2.0.0",
+ "@npmcli/run-script": "^8.1.0",
+ "@sigstore/tuf": "^2.3.4",
"abbrev": "^2.0.0",
"archy": "~1.0.0",
- "cacache": "^18.0.2",
+ "cacache": "^18.0.3",
"chalk": "^5.3.0",
"ci-info": "^4.0.0",
"cli-columns": "^4.0.0",
- "cli-table3": "^0.6.3",
- "columnify": "^1.6.0",
"fastest-levenshtein": "^1.0.16",
"fs-minipass": "^3.0.3",
- "glob": "^10.3.10",
+ "glob": "^10.4.1",
"graceful-fs": "^4.2.11",
- "hosted-git-info": "^7.0.1",
- "ini": "^4.1.1",
- "init-package-json": "^6.0.0",
- "is-cidr": "^5.0.3",
- "json-parse-even-better-errors": "^3.0.1",
- "libnpmaccess": "^8.0.1",
- "libnpmdiff": "^6.0.3",
- "libnpmexec": "^7.0.4",
- "libnpmfund": "^5.0.1",
- "libnpmhook": "^10.0.0",
- "libnpmorg": "^6.0.1",
- "libnpmpack": "^6.0.3",
- "libnpmpublish": "^9.0.2",
- "libnpmsearch": "^7.0.0",
- "libnpmteam": "^6.0.0",
- "libnpmversion": "^5.0.1",
- "make-fetch-happen": "^13.0.0",
- "minimatch": "^9.0.3",
- "minipass": "^7.0.4",
+ "hosted-git-info": "^7.0.2",
+ "ini": "^4.1.3",
+ "init-package-json": "^6.0.3",
+ "is-cidr": "^5.1.0",
+ "json-parse-even-better-errors": "^3.0.2",
+ "libnpmaccess": "^8.0.6",
+ "libnpmdiff": "^6.1.3",
+ "libnpmexec": "^8.1.2",
+ "libnpmfund": "^5.0.11",
+ "libnpmhook": "^10.0.5",
+ "libnpmorg": "^6.0.6",
+ "libnpmpack": "^7.0.3",
+ "libnpmpublish": "^9.0.9",
+ "libnpmsearch": "^7.0.6",
+ "libnpmteam": "^6.0.5",
+ "libnpmversion": "^6.0.3",
+ "make-fetch-happen": "^13.0.1",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.1",
"minipass-pipeline": "^1.2.4",
"ms": "^2.1.2",
- "node-gyp": "^10.0.1",
- "nopt": "^7.2.0",
- "normalize-package-data": "^6.0.0",
+ "node-gyp": "^10.1.0",
+ "nopt": "^7.2.1",
+ "normalize-package-data": "^6.0.1",
"npm-audit-report": "^5.0.0",
"npm-install-checks": "^6.3.0",
- "npm-package-arg": "^11.0.1",
- "npm-pick-manifest": "^9.0.0",
- "npm-profile": "^9.0.0",
- "npm-registry-fetch": "^16.1.0",
- "npm-user-validate": "^2.0.0",
- "npmlog": "^7.0.1",
+ "npm-package-arg": "^11.0.2",
+ "npm-pick-manifest": "^9.0.1",
+ "npm-profile": "^10.0.0",
+ "npm-registry-fetch": "^17.0.1",
+ "npm-user-validate": "^2.0.1",
"p-map": "^4.0.0",
- "pacote": "^17.0.6",
+ "pacote": "^18.0.6",
"parse-conflict-json": "^3.0.1",
- "proc-log": "^3.0.0",
+ "proc-log": "^4.2.0",
"qrcode-terminal": "^0.12.0",
- "read": "^2.1.0",
- "semver": "^7.6.0",
- "spdx-expression-parse": "^3.0.1",
- "ssri": "^10.0.5",
+ "read": "^3.0.1",
+ "semver": "^7.6.2",
+ "spdx-expression-parse": "^4.0.0",
+ "ssri": "^10.0.6",
"supports-color": "^9.4.0",
- "tar": "^6.2.0",
+ "tar": "^6.2.1",
"text-table": "~0.2.0",
"tiny-relative-date": "^1.3.0",
"treeverse": "^3.0.0",
- "validate-npm-package-name": "^5.0.0",
+ "validate-npm-package-name": "^5.0.1",
"which": "^4.0.0",
"write-file-atomic": "^5.0.1"
},
"dependencies": {
- "@colors/colors": {
- "version": "1.5.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
"@isaacs/cliui": {
"version": "8.0.2",
"bundled": true,
@@ -8537,7 +8364,7 @@
"dev": true
},
"@npmcli/agent": {
- "version": "2.2.1",
+ "version": "2.2.2",
"bundled": true,
"dev": true,
"requires": {
@@ -8545,84 +8372,68 @@
"http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.1",
"lru-cache": "^10.0.1",
- "socks-proxy-agent": "^8.0.1"
+ "socks-proxy-agent": "^8.0.3"
}
},
"@npmcli/arborist": {
- "version": "7.4.0",
+ "version": "7.5.3",
"bundled": true,
"dev": true,
"requires": {
"@isaacs/string-locale-compare": "^1.1.0",
- "@npmcli/fs": "^3.1.0",
- "@npmcli/installed-package-contents": "^2.0.2",
+ "@npmcli/fs": "^3.1.1",
+ "@npmcli/installed-package-contents": "^2.1.0",
"@npmcli/map-workspaces": "^3.0.2",
- "@npmcli/metavuln-calculator": "^7.0.0",
+ "@npmcli/metavuln-calculator": "^7.1.1",
"@npmcli/name-from-folder": "^2.0.0",
"@npmcli/node-gyp": "^3.0.0",
- "@npmcli/package-json": "^5.0.0",
+ "@npmcli/package-json": "^5.1.0",
"@npmcli/query": "^3.1.0",
- "@npmcli/run-script": "^7.0.2",
- "bin-links": "^4.0.1",
- "cacache": "^18.0.0",
+ "@npmcli/redact": "^2.0.0",
+ "@npmcli/run-script": "^8.1.0",
+ "bin-links": "^4.0.4",
+ "cacache": "^18.0.3",
"common-ancestor-path": "^1.0.1",
- "hosted-git-info": "^7.0.1",
- "json-parse-even-better-errors": "^3.0.0",
+ "hosted-git-info": "^7.0.2",
+ "json-parse-even-better-errors": "^3.0.2",
"json-stringify-nice": "^1.1.4",
- "minimatch": "^9.0.0",
- "nopt": "^7.0.0",
+ "lru-cache": "^10.2.2",
+ "minimatch": "^9.0.4",
+ "nopt": "^7.2.1",
"npm-install-checks": "^6.2.0",
- "npm-package-arg": "^11.0.1",
- "npm-pick-manifest": "^9.0.0",
- "npm-registry-fetch": "^16.0.0",
- "npmlog": "^7.0.1",
- "pacote": "^17.0.4",
+ "npm-package-arg": "^11.0.2",
+ "npm-pick-manifest": "^9.0.1",
+ "npm-registry-fetch": "^17.0.1",
+ "pacote": "^18.0.6",
"parse-conflict-json": "^3.0.0",
- "proc-log": "^3.0.0",
+ "proc-log": "^4.2.0",
+ "proggy": "^2.0.0",
"promise-all-reject-late": "^1.0.0",
"promise-call-limit": "^3.0.1",
"read-package-json-fast": "^3.0.2",
"semver": "^7.3.7",
- "ssri": "^10.0.5",
+ "ssri": "^10.0.6",
"treeverse": "^3.0.0",
"walk-up-path": "^3.0.1"
}
},
"@npmcli/config": {
- "version": "8.2.0",
+ "version": "8.3.3",
"bundled": true,
"dev": true,
"requires": {
"@npmcli/map-workspaces": "^3.0.2",
"ci-info": "^4.0.0",
- "ini": "^4.1.0",
- "nopt": "^7.0.0",
- "proc-log": "^3.0.0",
+ "ini": "^4.1.2",
+ "nopt": "^7.2.1",
+ "proc-log": "^4.2.0",
"read-package-json-fast": "^3.0.2",
"semver": "^7.3.5",
"walk-up-path": "^3.0.1"
}
},
- "@npmcli/disparity-colors": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "ansi-styles": "^4.3.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- }
- }
- },
"@npmcli/fs": {
- "version": "3.1.0",
+ "version": "3.1.1",
"bundled": true,
"dev": true,
"requires": {
@@ -8630,14 +8441,14 @@
}
},
"@npmcli/git": {
- "version": "5.0.4",
+ "version": "5.0.7",
"bundled": true,
"dev": true,
"requires": {
"@npmcli/promise-spawn": "^7.0.0",
"lru-cache": "^10.0.1",
"npm-pick-manifest": "^9.0.0",
- "proc-log": "^3.0.0",
+ "proc-log": "^4.0.0",
"promise-inflight": "^1.0.1",
"promise-retry": "^2.0.1",
"semver": "^7.3.5",
@@ -8645,7 +8456,7 @@
}
},
"@npmcli/installed-package-contents": {
- "version": "2.0.2",
+ "version": "2.1.0",
"bundled": true,
"dev": true,
"requires": {
@@ -8654,7 +8465,7 @@
}
},
"@npmcli/map-workspaces": {
- "version": "3.0.4",
+ "version": "3.0.6",
"bundled": true,
"dev": true,
"requires": {
@@ -8665,13 +8476,14 @@
}
},
"@npmcli/metavuln-calculator": {
- "version": "7.0.0",
+ "version": "7.1.1",
"bundled": true,
"dev": true,
"requires": {
"cacache": "^18.0.0",
"json-parse-even-better-errors": "^3.0.0",
- "pacote": "^17.0.0",
+ "pacote": "^18.0.0",
+ "proc-log": "^4.1.0",
"semver": "^7.3.5"
}
},
@@ -8686,7 +8498,7 @@
"dev": true
},
"@npmcli/package-json": {
- "version": "5.0.0",
+ "version": "5.1.1",
"bundled": true,
"dev": true,
"requires": {
@@ -8695,12 +8507,12 @@
"hosted-git-info": "^7.0.0",
"json-parse-even-better-errors": "^3.0.0",
"normalize-package-data": "^6.0.0",
- "proc-log": "^3.0.0",
+ "proc-log": "^4.0.0",
"semver": "^7.5.3"
}
},
"@npmcli/promise-spawn": {
- "version": "7.0.1",
+ "version": "7.0.2",
"bundled": true,
"dev": true,
"requires": {
@@ -8715,8 +8527,13 @@
"postcss-selector-parser": "^6.0.10"
}
},
+ "@npmcli/redact": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
"@npmcli/run-script": {
- "version": "7.0.4",
+ "version": "8.1.0",
"bundled": true,
"dev": true,
"requires": {
@@ -8724,6 +8541,7 @@
"@npmcli/package-json": "^5.0.0",
"@npmcli/promise-spawn": "^7.0.0",
"node-gyp": "^10.0.0",
+ "proc-log": "^4.0.0",
"which": "^4.0.0"
}
},
@@ -8734,51 +8552,53 @@
"optional": true
},
"@sigstore/bundle": {
- "version": "2.2.0",
+ "version": "2.3.2",
"bundled": true,
"dev": true,
"requires": {
- "@sigstore/protobuf-specs": "^0.3.0"
+ "@sigstore/protobuf-specs": "^0.3.2"
}
},
"@sigstore/core": {
- "version": "1.0.0",
+ "version": "1.1.0",
"bundled": true,
"dev": true
},
"@sigstore/protobuf-specs": {
- "version": "0.3.0",
+ "version": "0.3.2",
"bundled": true,
"dev": true
},
"@sigstore/sign": {
- "version": "2.2.3",
+ "version": "2.3.2",
"bundled": true,
"dev": true,
"requires": {
- "@sigstore/bundle": "^2.2.0",
+ "@sigstore/bundle": "^2.3.2",
"@sigstore/core": "^1.0.0",
- "@sigstore/protobuf-specs": "^0.3.0",
- "make-fetch-happen": "^13.0.0"
+ "@sigstore/protobuf-specs": "^0.3.2",
+ "make-fetch-happen": "^13.0.1",
+ "proc-log": "^4.2.0",
+ "promise-retry": "^2.0.1"
}
},
"@sigstore/tuf": {
- "version": "2.3.1",
+ "version": "2.3.4",
"bundled": true,
"dev": true,
"requires": {
- "@sigstore/protobuf-specs": "^0.3.0",
- "tuf-js": "^2.2.0"
+ "@sigstore/protobuf-specs": "^0.3.2",
+ "tuf-js": "^2.2.1"
}
},
"@sigstore/verify": {
- "version": "1.1.0",
+ "version": "1.2.1",
"bundled": true,
"dev": true,
"requires": {
- "@sigstore/bundle": "^2.2.0",
- "@sigstore/core": "^1.0.0",
- "@sigstore/protobuf-specs": "^0.3.0"
+ "@sigstore/bundle": "^2.3.2",
+ "@sigstore/core": "^1.1.0",
+ "@sigstore/protobuf-specs": "^0.3.2"
}
},
"@tufjs/canonical-json": {
@@ -8787,12 +8607,12 @@
"dev": true
},
"@tufjs/models": {
- "version": "2.0.0",
+ "version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"@tufjs/canonical-json": "2.0.0",
- "minimatch": "^9.0.3"
+ "minimatch": "^9.0.4"
}
},
"abbrev": {
@@ -8801,7 +8621,7 @@
"dev": true
},
"agent-base": {
- "version": "7.1.0",
+ "version": "7.1.1",
"bundled": true,
"dev": true,
"requires": {
@@ -8837,18 +8657,13 @@
"bundled": true,
"dev": true
},
- "are-we-there-yet": {
- "version": "4.0.2",
- "bundled": true,
- "dev": true
- },
"balanced-match": {
"version": "1.0.2",
"bundled": true,
"dev": true
},
"bin-links": {
- "version": "4.0.3",
+ "version": "4.0.4",
"bundled": true,
"dev": true,
"requires": {
@@ -8859,7 +8674,7 @@
}
},
"binary-extensions": {
- "version": "2.2.0",
+ "version": "2.3.0",
"bundled": true,
"dev": true
},
@@ -8871,16 +8686,8 @@
"balanced-match": "^1.0.0"
}
},
- "builtins": {
- "version": "5.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "semver": "^7.0.0"
- }
- },
"cacache": {
- "version": "18.0.2",
+ "version": "18.0.3",
"bundled": true,
"dev": true,
"requires": {
@@ -8914,7 +8721,7 @@
"dev": true
},
"cidr-regex": {
- "version": "4.0.3",
+ "version": "4.1.1",
"bundled": true,
"dev": true,
"requires": {
@@ -8935,22 +8742,8 @@
"strip-ansi": "^6.0.1"
}
},
- "cli-table3": {
- "version": "0.6.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "@colors/colors": "1.5.0",
- "string-width": "^4.2.0"
- }
- },
- "clone": {
- "version": "1.0.4",
- "bundled": true,
- "dev": true
- },
"cmd-shim": {
- "version": "6.0.2",
+ "version": "6.0.3",
"bundled": true,
"dev": true
},
@@ -8967,30 +8760,11 @@
"bundled": true,
"dev": true
},
- "color-support": {
- "version": "1.1.3",
- "bundled": true,
- "dev": true
- },
- "columnify": {
- "version": "1.6.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "strip-ansi": "^6.0.1",
- "wcwidth": "^1.0.0"
- }
- },
"common-ancestor-path": {
"version": "1.0.1",
"bundled": true,
"dev": true
},
- "console-control-strings": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true
- },
"cross-spawn": {
"version": "7.0.3",
"bundled": true,
@@ -9031,14 +8805,6 @@
}
}
},
- "defaults": {
- "version": "1.0.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "clone": "^1.0.2"
- }
- },
"diff": {
"version": "5.2.0",
"bundled": true,
@@ -9105,31 +8871,16 @@
"bundled": true,
"dev": true
},
- "gauge": {
- "version": "5.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "aproba": "^1.0.3 || ^2.0.0",
- "color-support": "^1.1.3",
- "console-control-strings": "^1.1.0",
- "has-unicode": "^2.0.1",
- "signal-exit": "^4.0.1",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1",
- "wide-align": "^1.1.5"
- }
- },
"glob": {
- "version": "10.3.10",
+ "version": "10.4.1",
"bundled": true,
"dev": true,
"requires": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
- "minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "path-scurry": "^1.11.1"
}
},
"graceful-fs": {
@@ -9137,13 +8888,8 @@
"bundled": true,
"dev": true
},
- "has-unicode": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true
- },
"hasown": {
- "version": "2.0.1",
+ "version": "2.0.2",
"bundled": true,
"dev": true,
"requires": {
@@ -9151,7 +8897,7 @@
}
},
"hosted-git-info": {
- "version": "7.0.1",
+ "version": "7.0.2",
"bundled": true,
"dev": true,
"requires": {
@@ -9191,7 +8937,7 @@
}
},
"ignore-walk": {
- "version": "6.0.4",
+ "version": "6.0.5",
"bundled": true,
"dev": true,
"requires": {
@@ -9209,19 +8955,19 @@
"dev": true
},
"ini": {
- "version": "4.1.1",
+ "version": "4.1.3",
"bundled": true,
"dev": true
},
"init-package-json": {
- "version": "6.0.0",
+ "version": "6.0.3",
"bundled": true,
"dev": true,
"requires": {
+ "@npmcli/package-json": "^5.0.0",
"npm-package-arg": "^11.0.0",
"promzard": "^1.0.0",
- "read": "^2.0.0",
- "read-package-json": "^7.0.0",
+ "read": "^3.0.1",
"semver": "^7.3.5",
"validate-npm-package-license": "^3.0.4",
"validate-npm-package-name": "^5.0.0"
@@ -9234,13 +8980,6 @@
"requires": {
"jsbn": "1.1.0",
"sprintf-js": "^1.1.3"
- },
- "dependencies": {
- "sprintf-js": {
- "version": "1.1.3",
- "bundled": true,
- "dev": true
- }
}
},
"ip-regex": {
@@ -9249,11 +8988,11 @@
"dev": true
},
"is-cidr": {
- "version": "5.0.3",
+ "version": "5.1.0",
"bundled": true,
"dev": true,
"requires": {
- "cidr-regex": "4.0.3"
+ "cidr-regex": "^4.1.1"
}
},
"is-core-module": {
@@ -9280,7 +9019,7 @@
"dev": true
},
"jackspeak": {
- "version": "2.3.6",
+ "version": "3.1.2",
"bundled": true,
"dev": true,
"requires": {
@@ -9294,7 +9033,7 @@
"dev": true
},
"json-parse-even-better-errors": {
- "version": "3.0.1",
+ "version": "3.0.2",
"bundled": true,
"dev": true
},
@@ -9319,136 +9058,134 @@
"dev": true
},
"libnpmaccess": {
- "version": "8.0.2",
+ "version": "8.0.6",
"bundled": true,
"dev": true,
"requires": {
- "npm-package-arg": "^11.0.1",
- "npm-registry-fetch": "^16.0.0"
+ "npm-package-arg": "^11.0.2",
+ "npm-registry-fetch": "^17.0.1"
}
},
"libnpmdiff": {
- "version": "6.0.7",
+ "version": "6.1.3",
"bundled": true,
"dev": true,
"requires": {
- "@npmcli/arborist": "^7.2.1",
- "@npmcli/disparity-colors": "^3.0.0",
- "@npmcli/installed-package-contents": "^2.0.2",
- "binary-extensions": "^2.2.0",
+ "@npmcli/arborist": "^7.5.3",
+ "@npmcli/installed-package-contents": "^2.1.0",
+ "binary-extensions": "^2.3.0",
"diff": "^5.1.0",
- "minimatch": "^9.0.0",
- "npm-package-arg": "^11.0.1",
- "pacote": "^17.0.4",
- "tar": "^6.2.0"
+ "minimatch": "^9.0.4",
+ "npm-package-arg": "^11.0.2",
+ "pacote": "^18.0.6",
+ "tar": "^6.2.1"
}
},
"libnpmexec": {
- "version": "7.0.8",
+ "version": "8.1.2",
"bundled": true,
"dev": true,
"requires": {
- "@npmcli/arborist": "^7.2.1",
- "@npmcli/run-script": "^7.0.2",
+ "@npmcli/arborist": "^7.5.3",
+ "@npmcli/run-script": "^8.1.0",
"ci-info": "^4.0.0",
- "npm-package-arg": "^11.0.1",
- "npmlog": "^7.0.1",
- "pacote": "^17.0.4",
- "proc-log": "^3.0.0",
- "read": "^2.0.0",
+ "npm-package-arg": "^11.0.2",
+ "pacote": "^18.0.6",
+ "proc-log": "^4.2.0",
+ "read": "^3.0.1",
"read-package-json-fast": "^3.0.2",
"semver": "^7.3.7",
"walk-up-path": "^3.0.1"
}
},
"libnpmfund": {
- "version": "5.0.5",
+ "version": "5.0.11",
"bundled": true,
"dev": true,
"requires": {
- "@npmcli/arborist": "^7.2.1"
+ "@npmcli/arborist": "^7.5.3"
}
},
"libnpmhook": {
- "version": "10.0.1",
+ "version": "10.0.5",
"bundled": true,
"dev": true,
"requires": {
"aproba": "^2.0.0",
- "npm-registry-fetch": "^16.0.0"
+ "npm-registry-fetch": "^17.0.1"
}
},
"libnpmorg": {
- "version": "6.0.2",
+ "version": "6.0.6",
"bundled": true,
"dev": true,
"requires": {
"aproba": "^2.0.0",
- "npm-registry-fetch": "^16.0.0"
+ "npm-registry-fetch": "^17.0.1"
}
},
"libnpmpack": {
- "version": "6.0.7",
+ "version": "7.0.3",
"bundled": true,
"dev": true,
"requires": {
- "@npmcli/arborist": "^7.2.1",
- "@npmcli/run-script": "^7.0.2",
- "npm-package-arg": "^11.0.1",
- "pacote": "^17.0.4"
+ "@npmcli/arborist": "^7.5.3",
+ "@npmcli/run-script": "^8.1.0",
+ "npm-package-arg": "^11.0.2",
+ "pacote": "^18.0.6"
}
},
"libnpmpublish": {
- "version": "9.0.4",
+ "version": "9.0.9",
"bundled": true,
"dev": true,
"requires": {
"ci-info": "^4.0.0",
- "normalize-package-data": "^6.0.0",
- "npm-package-arg": "^11.0.1",
- "npm-registry-fetch": "^16.0.0",
- "proc-log": "^3.0.0",
+ "normalize-package-data": "^6.0.1",
+ "npm-package-arg": "^11.0.2",
+ "npm-registry-fetch": "^17.0.1",
+ "proc-log": "^4.2.0",
"semver": "^7.3.7",
"sigstore": "^2.2.0",
- "ssri": "^10.0.5"
+ "ssri": "^10.0.6"
}
},
"libnpmsearch": {
- "version": "7.0.1",
+ "version": "7.0.6",
"bundled": true,
"dev": true,
"requires": {
- "npm-registry-fetch": "^16.0.0"
+ "npm-registry-fetch": "^17.0.1"
}
},
"libnpmteam": {
- "version": "6.0.1",
+ "version": "6.0.5",
"bundled": true,
"dev": true,
"requires": {
"aproba": "^2.0.0",
- "npm-registry-fetch": "^16.0.0"
+ "npm-registry-fetch": "^17.0.1"
}
},
"libnpmversion": {
- "version": "5.0.2",
+ "version": "6.0.3",
"bundled": true,
"dev": true,
"requires": {
- "@npmcli/git": "^5.0.3",
- "@npmcli/run-script": "^7.0.2",
- "json-parse-even-better-errors": "^3.0.0",
- "proc-log": "^3.0.0",
+ "@npmcli/git": "^5.0.7",
+ "@npmcli/run-script": "^8.1.0",
+ "json-parse-even-better-errors": "^3.0.2",
+ "proc-log": "^4.2.0",
"semver": "^7.3.7"
}
},
"lru-cache": {
- "version": "10.2.0",
+ "version": "10.2.2",
"bundled": true,
"dev": true
},
"make-fetch-happen": {
- "version": "13.0.0",
+ "version": "13.0.1",
"bundled": true,
"dev": true,
"requires": {
@@ -9461,12 +9198,13 @@
"minipass-flush": "^1.0.5",
"minipass-pipeline": "^1.2.4",
"negotiator": "^0.6.3",
+ "proc-log": "^4.2.0",
"promise-retry": "^2.0.1",
"ssri": "^10.0.0"
}
},
"minimatch": {
- "version": "9.0.3",
+ "version": "9.0.4",
"bundled": true,
"dev": true,
"requires": {
@@ -9474,7 +9212,7 @@
}
},
"minipass": {
- "version": "7.0.4",
+ "version": "7.1.2",
"bundled": true,
"dev": true
},
@@ -9487,7 +9225,7 @@
}
},
"minipass-fetch": {
- "version": "3.0.4",
+ "version": "3.0.5",
"bundled": true,
"dev": true,
"requires": {
@@ -9610,7 +9348,7 @@
"dev": true
},
"node-gyp": {
- "version": "10.0.1",
+ "version": "10.1.0",
"bundled": true,
"dev": true,
"requires": {
@@ -9624,10 +9362,17 @@
"semver": "^7.3.5",
"tar": "^6.1.2",
"which": "^4.0.0"
+ },
+ "dependencies": {
+ "proc-log": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ }
}
},
"nopt": {
- "version": "7.2.0",
+ "version": "7.2.1",
"bundled": true,
"dev": true,
"requires": {
@@ -9635,7 +9380,7 @@
}
},
"normalize-package-data": {
- "version": "6.0.0",
+ "version": "6.0.1",
"bundled": true,
"dev": true,
"requires": {
@@ -9651,7 +9396,7 @@
"dev": true
},
"npm-bundled": {
- "version": "3.0.0",
+ "version": "3.0.1",
"bundled": true,
"dev": true,
"requires": {
@@ -9672,12 +9417,12 @@
"dev": true
},
"npm-package-arg": {
- "version": "11.0.1",
+ "version": "11.0.2",
"bundled": true,
"dev": true,
"requires": {
"hosted-git-info": "^7.0.0",
- "proc-log": "^3.0.0",
+ "proc-log": "^4.0.0",
"semver": "^7.3.5",
"validate-npm-package-name": "^5.0.0"
}
@@ -9691,7 +9436,7 @@
}
},
"npm-pick-manifest": {
- "version": "9.0.0",
+ "version": "9.0.1",
"bundled": true,
"dev": true,
"requires": {
@@ -9702,44 +9447,34 @@
}
},
"npm-profile": {
- "version": "9.0.0",
+ "version": "10.0.0",
"bundled": true,
"dev": true,
"requires": {
- "npm-registry-fetch": "^16.0.0",
- "proc-log": "^3.0.0"
+ "npm-registry-fetch": "^17.0.1",
+ "proc-log": "^4.0.0"
}
},
"npm-registry-fetch": {
- "version": "16.1.0",
+ "version": "17.0.1",
"bundled": true,
"dev": true,
"requires": {
+ "@npmcli/redact": "^2.0.0",
"make-fetch-happen": "^13.0.0",
"minipass": "^7.0.2",
"minipass-fetch": "^3.0.0",
"minipass-json-stream": "^1.0.1",
"minizlib": "^2.1.2",
"npm-package-arg": "^11.0.0",
- "proc-log": "^3.0.0"
+ "proc-log": "^4.0.0"
}
},
"npm-user-validate": {
- "version": "2.0.0",
+ "version": "2.0.1",
"bundled": true,
"dev": true
},
- "npmlog": {
- "version": "7.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "are-we-there-yet": "^4.0.0",
- "console-control-strings": "^1.1.0",
- "gauge": "^5.0.0",
- "set-blocking": "^2.0.0"
- }
- },
"p-map": {
"version": "4.0.0",
"bundled": true,
@@ -9749,25 +9484,24 @@
}
},
"pacote": {
- "version": "17.0.6",
+ "version": "18.0.6",
"bundled": true,
"dev": true,
"requires": {
"@npmcli/git": "^5.0.0",
"@npmcli/installed-package-contents": "^2.0.1",
+ "@npmcli/package-json": "^5.1.0",
"@npmcli/promise-spawn": "^7.0.0",
- "@npmcli/run-script": "^7.0.0",
+ "@npmcli/run-script": "^8.0.0",
"cacache": "^18.0.0",
"fs-minipass": "^3.0.0",
"minipass": "^7.0.2",
"npm-package-arg": "^11.0.0",
"npm-packlist": "^8.0.0",
"npm-pick-manifest": "^9.0.0",
- "npm-registry-fetch": "^16.0.0",
- "proc-log": "^3.0.0",
+ "npm-registry-fetch": "^17.0.0",
+ "proc-log": "^4.0.0",
"promise-retry": "^2.0.1",
- "read-package-json": "^7.0.0",
- "read-package-json-fast": "^3.0.0",
"sigstore": "^2.2.0",
"ssri": "^10.0.0",
"tar": "^6.1.11"
@@ -9789,16 +9523,16 @@
"dev": true
},
"path-scurry": {
- "version": "1.10.1",
+ "version": "1.11.1",
"bundled": true,
"dev": true,
"requires": {
- "lru-cache": "^9.1.1 || ^10.0.0",
+ "lru-cache": "^10.2.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
}
},
"postcss-selector-parser": {
- "version": "6.0.15",
+ "version": "6.1.0",
"bundled": true,
"dev": true,
"requires": {
@@ -9807,7 +9541,12 @@
}
},
"proc-log": {
- "version": "3.0.0",
+ "version": "4.2.0",
+ "bundled": true,
+ "dev": true
+ },
+ "proggy": {
+ "version": "2.0.0",
"bundled": true,
"dev": true
},
@@ -9836,11 +9575,11 @@
}
},
"promzard": {
- "version": "1.0.0",
+ "version": "1.0.2",
"bundled": true,
"dev": true,
"requires": {
- "read": "^2.0.0"
+ "read": "^3.0.1"
}
},
"qrcode-terminal": {
@@ -9849,11 +9588,11 @@
"dev": true
},
"read": {
- "version": "2.1.0",
+ "version": "3.0.1",
"bundled": true,
"dev": true,
"requires": {
- "mute-stream": "~1.0.0"
+ "mute-stream": "^1.0.0"
}
},
"read-cmd-shim": {
@@ -9861,17 +9600,6 @@
"bundled": true,
"dev": true
},
- "read-package-json": {
- "version": "7.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "glob": "^10.2.2",
- "json-parse-even-better-errors": "^3.0.0",
- "normalize-package-data": "^6.0.0",
- "npm-normalize-package-bin": "^3.0.0"
- }
- },
"read-package-json-fast": {
"version": "3.0.2",
"bundled": true,
@@ -9893,25 +9621,7 @@
"optional": true
},
"semver": {
- "version": "7.6.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- }
- }
- },
- "set-blocking": {
- "version": "2.0.0",
+ "version": "7.6.2",
"bundled": true,
"dev": true
},
@@ -9934,16 +9644,16 @@
"dev": true
},
"sigstore": {
- "version": "2.2.2",
+ "version": "2.3.1",
"bundled": true,
"dev": true,
"requires": {
- "@sigstore/bundle": "^2.2.0",
+ "@sigstore/bundle": "^2.3.2",
"@sigstore/core": "^1.0.0",
- "@sigstore/protobuf-specs": "^0.3.0",
- "@sigstore/sign": "^2.2.3",
- "@sigstore/tuf": "^2.3.1",
- "@sigstore/verify": "^1.1.0"
+ "@sigstore/protobuf-specs": "^0.3.2",
+ "@sigstore/sign": "^2.3.2",
+ "@sigstore/tuf": "^2.3.4",
+ "@sigstore/verify": "^1.2.1"
}
},
"smart-buffer": {
@@ -9952,7 +9662,7 @@
"dev": true
},
"socks": {
- "version": "2.8.0",
+ "version": "2.8.3",
"bundled": true,
"dev": true,
"requires": {
@@ -9961,11 +9671,11 @@
}
},
"socks-proxy-agent": {
- "version": "8.0.2",
+ "version": "8.0.3",
"bundled": true,
"dev": true,
"requires": {
- "agent-base": "^7.0.2",
+ "agent-base": "^7.1.1",
"debug": "^4.3.4",
"socks": "^2.7.1"
}
@@ -9977,6 +9687,17 @@
"requires": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
+ },
+ "dependencies": {
+ "spdx-expression-parse": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ }
}
},
"spdx-exceptions": {
@@ -9985,7 +9706,7 @@
"dev": true
},
"spdx-expression-parse": {
- "version": "3.0.1",
+ "version": "4.0.0",
"bundled": true,
"dev": true,
"requires": {
@@ -9994,12 +9715,17 @@
}
},
"spdx-license-ids": {
- "version": "3.0.17",
+ "version": "3.0.18",
+ "bundled": true,
+ "dev": true
+ },
+ "sprintf-js": {
+ "version": "1.1.3",
"bundled": true,
"dev": true
},
"ssri": {
- "version": "10.0.5",
+ "version": "10.0.6",
"bundled": true,
"dev": true,
"requires": {
@@ -10048,7 +9774,7 @@
"dev": true
},
"tar": {
- "version": "6.2.0",
+ "version": "6.2.1",
"bundled": true,
"dev": true,
"requires": {
@@ -10101,13 +9827,13 @@
"dev": true
},
"tuf-js": {
- "version": "2.2.0",
+ "version": "2.2.1",
"bundled": true,
"dev": true,
"requires": {
- "@tufjs/models": "2.0.0",
+ "@tufjs/models": "2.0.1",
"debug": "^4.3.4",
- "make-fetch-happen": "^13.0.0"
+ "make-fetch-happen": "^13.0.1"
}
},
"unique-filename": {
@@ -10138,29 +9864,29 @@
"requires": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
+ },
+ "dependencies": {
+ "spdx-expression-parse": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ }
}
},
"validate-npm-package-name": {
- "version": "5.0.0",
+ "version": "5.0.1",
"bundled": true,
- "dev": true,
- "requires": {
- "builtins": "^5.0.0"
- }
+ "dev": true
},
"walk-up-path": {
"version": "3.0.1",
"bundled": true,
"dev": true
},
- "wcwidth": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "defaults": "^1.0.3"
- }
- },
"which": {
"version": "4.0.0",
"bundled": true,
@@ -10176,14 +9902,6 @@
}
}
},
- "wide-align": {
- "version": "1.1.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "string-width": "^1.0.2 || 2 || 3 || 4"
- }
- },
"wrap-ansi": {
"version": "8.1.0",
"bundled": true,
diff --git a/poetry.lock b/poetry.lock
index d80c402ad..9729761db 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1224,39 +1224,40 @@ files = [
[[package]]
name = "matplotlib"
-version = "3.8.4"
+version = "3.9.0"
description = "Python plotting package"
optional = false
python-versions = ">=3.9"
files = [
- {file = "matplotlib-3.8.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:abc9d838f93583650c35eca41cfcec65b2e7cb50fd486da6f0c49b5e1ed23014"},
- {file = "matplotlib-3.8.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f65c9f002d281a6e904976007b2d46a1ee2bcea3a68a8c12dda24709ddc9106"},
- {file = "matplotlib-3.8.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce1edd9f5383b504dbc26eeea404ed0a00656c526638129028b758fd43fc5f10"},
- {file = "matplotlib-3.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecd79298550cba13a43c340581a3ec9c707bd895a6a061a78fa2524660482fc0"},
- {file = "matplotlib-3.8.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:90df07db7b599fe7035d2f74ab7e438b656528c68ba6bb59b7dc46af39ee48ef"},
- {file = "matplotlib-3.8.4-cp310-cp310-win_amd64.whl", hash = "sha256:ac24233e8f2939ac4fd2919eed1e9c0871eac8057666070e94cbf0b33dd9c338"},
- {file = "matplotlib-3.8.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:72f9322712e4562e792b2961971891b9fbbb0e525011e09ea0d1f416c4645661"},
- {file = "matplotlib-3.8.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:232ce322bfd020a434caaffbd9a95333f7c2491e59cfc014041d95e38ab90d1c"},
- {file = "matplotlib-3.8.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6addbd5b488aedb7f9bc19f91cd87ea476206f45d7116fcfe3d31416702a82fa"},
- {file = "matplotlib-3.8.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc4ccdc64e3039fc303defd119658148f2349239871db72cd74e2eeaa9b80b71"},
- {file = "matplotlib-3.8.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b7a2a253d3b36d90c8993b4620183b55665a429da8357a4f621e78cd48b2b30b"},
- {file = "matplotlib-3.8.4-cp311-cp311-win_amd64.whl", hash = "sha256:8080d5081a86e690d7688ffa542532e87f224c38a6ed71f8fbed34dd1d9fedae"},
- {file = "matplotlib-3.8.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6485ac1f2e84676cff22e693eaa4fbed50ef5dc37173ce1f023daef4687df616"},
- {file = "matplotlib-3.8.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c89ee9314ef48c72fe92ce55c4e95f2f39d70208f9f1d9db4e64079420d8d732"},
- {file = "matplotlib-3.8.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50bac6e4d77e4262c4340d7a985c30912054745ec99756ce213bfbc3cb3808eb"},
- {file = "matplotlib-3.8.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f51c4c869d4b60d769f7b4406eec39596648d9d70246428745a681c327a8ad30"},
- {file = "matplotlib-3.8.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b12ba985837e4899b762b81f5b2845bd1a28f4fdd1a126d9ace64e9c4eb2fb25"},
- {file = "matplotlib-3.8.4-cp312-cp312-win_amd64.whl", hash = "sha256:7a6769f58ce51791b4cb8b4d7642489df347697cd3e23d88266aaaee93b41d9a"},
- {file = "matplotlib-3.8.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:843cbde2f0946dadd8c5c11c6d91847abd18ec76859dc319362a0964493f0ba6"},
- {file = "matplotlib-3.8.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c13f041a7178f9780fb61cc3a2b10423d5e125480e4be51beaf62b172413b67"},
- {file = "matplotlib-3.8.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb44f53af0a62dc80bba4443d9b27f2fde6acfdac281d95bc872dc148a6509cc"},
- {file = "matplotlib-3.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:606e3b90897554c989b1e38a258c626d46c873523de432b1462f295db13de6f9"},
- {file = "matplotlib-3.8.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9bb0189011785ea794ee827b68777db3ca3f93f3e339ea4d920315a0e5a78d54"},
- {file = "matplotlib-3.8.4-cp39-cp39-win_amd64.whl", hash = "sha256:6209e5c9aaccc056e63b547a8152661324404dd92340a6e479b3a7f24b42a5d0"},
- {file = "matplotlib-3.8.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c7064120a59ce6f64103c9cefba8ffe6fba87f2c61d67c401186423c9a20fd35"},
- {file = "matplotlib-3.8.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0e47eda4eb2614300fc7bb4657fced3e83d6334d03da2173b09e447418d499f"},
- {file = "matplotlib-3.8.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:493e9f6aa5819156b58fce42b296ea31969f2aab71c5b680b4ea7a3cb5c07d94"},
- {file = "matplotlib-3.8.4.tar.gz", hash = "sha256:8aac397d5e9ec158960e31c381c5ffc52ddd52bd9a47717e2a694038167dffea"},
+ {file = "matplotlib-3.9.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2bcee1dffaf60fe7656183ac2190bd630842ff87b3153afb3e384d966b57fe56"},
+ {file = "matplotlib-3.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3f988bafb0fa39d1074ddd5bacd958c853e11def40800c5824556eb630f94d3b"},
+ {file = "matplotlib-3.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe428e191ea016bb278758c8ee82a8129c51d81d8c4bc0846c09e7e8e9057241"},
+ {file = "matplotlib-3.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaf3978060a106fab40c328778b148f590e27f6fa3cd15a19d6892575bce387d"},
+ {file = "matplotlib-3.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2e7f03e5cbbfacdd48c8ea394d365d91ee8f3cae7e6ec611409927b5ed997ee4"},
+ {file = "matplotlib-3.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:13beb4840317d45ffd4183a778685e215939be7b08616f431c7795276e067463"},
+ {file = "matplotlib-3.9.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:063af8587fceeac13b0936c42a2b6c732c2ab1c98d38abc3337e430e1ff75e38"},
+ {file = "matplotlib-3.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9a2fa6d899e17ddca6d6526cf6e7ba677738bf2a6a9590d702c277204a7c6152"},
+ {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:550cdda3adbd596078cca7d13ed50b77879104e2e46392dcd7c75259d8f00e85"},
+ {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76cce0f31b351e3551d1f3779420cf8f6ec0d4a8cf9c0237a3b549fd28eb4abb"},
+ {file = "matplotlib-3.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c53aeb514ccbbcbab55a27f912d79ea30ab21ee0531ee2c09f13800efb272674"},
+ {file = "matplotlib-3.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5be985db2596d761cdf0c2eaf52396f26e6a64ab46bd8cd810c48972349d1be"},
+ {file = "matplotlib-3.9.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c79f3a585f1368da6049318bdf1f85568d8d04b2e89fc24b7e02cc9b62017382"},
+ {file = "matplotlib-3.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bdd1ecbe268eb3e7653e04f451635f0fb0f77f07fd070242b44c076c9106da84"},
+ {file = "matplotlib-3.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d38e85a1a6d732f645f1403ce5e6727fd9418cd4574521d5803d3d94911038e5"},
+ {file = "matplotlib-3.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a490715b3b9984fa609116481b22178348c1a220a4499cda79132000a79b4db"},
+ {file = "matplotlib-3.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8146ce83cbc5dc71c223a74a1996d446cd35cfb6a04b683e1446b7e6c73603b7"},
+ {file = "matplotlib-3.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:d91a4ffc587bacf5c4ce4ecfe4bcd23a4b675e76315f2866e588686cc97fccdf"},
+ {file = "matplotlib-3.9.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:616fabf4981a3b3c5a15cd95eba359c8489c4e20e03717aea42866d8d0465956"},
+ {file = "matplotlib-3.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cd53c79fd02f1c1808d2cfc87dd3cf4dbc63c5244a58ee7944497107469c8d8a"},
+ {file = "matplotlib-3.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06a478f0d67636554fa78558cfbcd7b9dba85b51f5c3b5a0c9be49010cf5f321"},
+ {file = "matplotlib-3.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81c40af649d19c85f8073e25e5806926986806fa6d54be506fbf02aef47d5a89"},
+ {file = "matplotlib-3.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52146fc3bd7813cc784562cb93a15788be0b2875c4655e2cc6ea646bfa30344b"},
+ {file = "matplotlib-3.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:0fc51eaa5262553868461c083d9adadb11a6017315f3a757fc45ec6ec5f02888"},
+ {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bd4f2831168afac55b881db82a7730992aa41c4f007f1913465fb182d6fb20c0"},
+ {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:290d304e59be2b33ef5c2d768d0237f5bd132986bdcc66f80bc9bcc300066a03"},
+ {file = "matplotlib-3.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff2e239c26be4f24bfa45860c20ffccd118d270c5b5d081fa4ea409b5469fcd"},
+ {file = "matplotlib-3.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:af4001b7cae70f7eaacfb063db605280058246de590fa7874f00f62259f2df7e"},
+ {file = "matplotlib-3.9.0.tar.gz", hash = "sha256:e6d29ea6c19e34b30fb7d88b7081f869a03014f66fe06d62cc77d5a6ea88ed7a"},
]
[package.dependencies]
@@ -1264,12 +1265,15 @@ contourpy = ">=1.0.1"
cycler = ">=0.10"
fonttools = ">=4.22.0"
kiwisolver = ">=1.3.1"
-numpy = ">=1.21"
+numpy = ">=1.23"
packaging = ">=20.0"
pillow = ">=8"
pyparsing = ">=2.3.1"
python-dateutil = ">=2.7"
+[package.extras]
+dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6)", "setuptools (>=64)", "setuptools_scm (>=7)"]
+
[[package]]
name = "matplotlib-inline"
version = "0.1.7"
diff --git a/tests/safeds/data/tabular/plotting/test_plot_lineplot.py b/tests/safeds/data/tabular/plotting/test_plot_lineplot.py
index 7ddcb04b8..5015abf4c 100644
--- a/tests/safeds/data/tabular/plotting/test_plot_lineplot.py
+++ b/tests/safeds/data/tabular/plotting/test_plot_lineplot.py
@@ -3,6 +3,8 @@
from safeds.exceptions import ColumnNotFoundError
from syrupy import SnapshotAssertion
+from tests.helpers import os_mac, skip_if_os
+
@pytest.mark.parametrize(
("table", "x_name", "y_names"),
@@ -29,6 +31,8 @@ def test_should_match_snapshot(
y_names: list[str],
snapshot_png_image: SnapshotAssertion,
) -> None:
+ skip_if_os([os_mac])
+
line_plot = table.plot.line_plot(x_name, y_names)
assert line_plot == snapshot_png_image
From f63f44437418893bc79968561f3b77f432b8070d Mon Sep 17 00:00:00 2001
From: Alexander <47296670+Marsmaennchen221@users.noreply.github.com>
Date: Mon, 17 Jun 2024 12:21:06 +0200
Subject: [PATCH 10/16] build(deps): Bump `pytorch` to 2.3.1 and `torchvision`
to 0.18.1 (#835)
### Summary of Changes
build(deps): Bump `pytorch` from 2.3.0 to 2.3.1
build(deps): Bump `torchvision` from 0.18.0 to 0.18.1
---
poetry.lock | 151 ++++++++++++++++++++++++++--------------------------
1 file changed, 75 insertions(+), 76 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index 9729761db..2a0e22ffd 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -2503,7 +2503,6 @@ files = [
{file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
{file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
{file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
- {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
{file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
{file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
{file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
@@ -3389,31 +3388,31 @@ testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests", "ruff"]
[[package]]
name = "torch"
-version = "2.3.0"
+version = "2.3.1"
description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
optional = false
python-versions = ">=3.8.0"
files = [
- {file = "torch-2.3.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:d8ea5a465dbfd8501f33c937d1f693176c9aef9d1c1b0ca1d44ed7b0a18c52ac"},
- {file = "torch-2.3.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:09c81c5859a5b819956c6925a405ef1cdda393c9d8a01ce3851453f699d3358c"},
- {file = "torch-2.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:1bf023aa20902586f614f7682fedfa463e773e26c58820b74158a72470259459"},
- {file = "torch-2.3.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:758ef938de87a2653bba74b91f703458c15569f1562bf4b6c63c62d9c5a0c1f5"},
- {file = "torch-2.3.0-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:493d54ee2f9df100b5ce1d18c96dbb8d14908721f76351e908c9d2622773a788"},
- {file = "torch-2.3.0-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:bce43af735c3da16cc14c7de2be7ad038e2fbf75654c2e274e575c6c05772ace"},
- {file = "torch-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:729804e97b7cf19ae9ab4181f91f5e612af07956f35c8b2c8e9d9f3596a8e877"},
- {file = "torch-2.3.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:d24e328226d8e2af7cf80fcb1d2f1d108e0de32777fab4aaa2b37b9765d8be73"},
- {file = "torch-2.3.0-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:b0de2bdc0486ea7b14fc47ff805172df44e421a7318b7c4d92ef589a75d27410"},
- {file = "torch-2.3.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:a306c87a3eead1ed47457822c01dfbd459fe2920f2d38cbdf90de18f23f72542"},
- {file = "torch-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:f9b98bf1a3c8af2d4c41f0bf1433920900896c446d1ddc128290ff146d1eb4bd"},
- {file = "torch-2.3.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:dca986214267b34065a79000cee54232e62b41dff1ec2cab9abc3fc8b3dee0ad"},
- {file = "torch-2.3.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:20572f426965dd8a04e92a473d7e445fa579e09943cc0354f3e6fef6130ce061"},
- {file = "torch-2.3.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:e65ba85ae292909cde0dde6369826d51165a3fc8823dc1854cd9432d7f79b932"},
- {file = "torch-2.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:5515503a193781fd1b3f5c474e89c9dfa2faaa782b2795cc4a7ab7e67de923f6"},
- {file = "torch-2.3.0-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:6ae9f64b09516baa4ef890af0672dc981c20b1f0d829ce115d4420a247e88fba"},
- {file = "torch-2.3.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:cd0dc498b961ab19cb3f8dbf0c6c50e244f2f37dbfa05754ab44ea057c944ef9"},
- {file = "torch-2.3.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:e05f836559251e4096f3786ee99f4a8cbe67bc7fbedba8ad5e799681e47c5e80"},
- {file = "torch-2.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:4fb27b35dbb32303c2927da86e27b54a92209ddfb7234afb1949ea2b3effffea"},
- {file = "torch-2.3.0-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:760f8bedff506ce9e6e103498f9b1e9e15809e008368594c3a66bf74a8a51380"},
+ {file = "torch-2.3.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:605a25b23944be5ab7c3467e843580e1d888b8066e5aaf17ff7bf9cc30001cc3"},
+ {file = "torch-2.3.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:f2357eb0965583a0954d6f9ad005bba0091f956aef879822274b1bcdb11bd308"},
+ {file = "torch-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:32b05fe0d1ada7f69c9f86c14ff69b0ef1957a5a54199bacba63d22d8fab720b"},
+ {file = "torch-2.3.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:7c09a94362778428484bcf995f6004b04952106aee0ef45ff0b4bab484f5498d"},
+ {file = "torch-2.3.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:b2ec81b61bb094ea4a9dee1cd3f7b76a44555375719ad29f05c0ca8ef596ad39"},
+ {file = "torch-2.3.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:490cc3d917d1fe0bd027057dfe9941dc1d6d8e3cae76140f5dd9a7e5bc7130ab"},
+ {file = "torch-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:5802530783bd465fe66c2df99123c9a54be06da118fbd785a25ab0a88123758a"},
+ {file = "torch-2.3.1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:a7dd4ed388ad1f3d502bf09453d5fe596c7b121de7e0cfaca1e2017782e9bbac"},
+ {file = "torch-2.3.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:a486c0b1976a118805fc7c9641d02df7afbb0c21e6b555d3bb985c9f9601b61a"},
+ {file = "torch-2.3.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:224259821fe3e4c6f7edf1528e4fe4ac779c77addaa74215eb0b63a5c474d66c"},
+ {file = "torch-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:e5fdccbf6f1334b2203a61a0e03821d5845f1421defe311dabeae2fc8fbeac2d"},
+ {file = "torch-2.3.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:3c333dc2ebc189561514eda06e81df22bf8fb64e2384746b2cb9f04f96d1d4c8"},
+ {file = "torch-2.3.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:07e9ba746832b8d069cacb45f312cadd8ad02b81ea527ec9766c0e7404bb3feb"},
+ {file = "torch-2.3.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:462d1c07dbf6bb5d9d2f3316fee73a24f3d12cd8dacf681ad46ef6418f7f6626"},
+ {file = "torch-2.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:ff60bf7ce3de1d43ad3f6969983f321a31f0a45df3690921720bcad6a8596cc4"},
+ {file = "torch-2.3.1-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:bee0bd33dc58aa8fc8a7527876e9b9a0e812ad08122054a5bff2ce5abf005b10"},
+ {file = "torch-2.3.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:aaa872abde9a3d4f91580f6396d54888620f4a0b92e3976a6034759df4b961ad"},
+ {file = "torch-2.3.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:3d7a7f7ef21a7520510553dc3938b0c57c116a7daee20736a9e25cbc0e832bdc"},
+ {file = "torch-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:4777f6cefa0c2b5fa87223c213e7b6f417cf254a45e5829be4ccd1b2a4ee1011"},
+ {file = "torch-2.3.1-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:2bb5af780c55be68fe100feb0528d2edebace1d55cb2e351de735809ba7391eb"},
]
[package.dependencies]
@@ -3434,7 +3433,7 @@ nvidia-cusparse-cu12 = {version = "12.1.0.106", markers = "platform_system == \"
nvidia-nccl-cu12 = {version = "2.20.5", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
nvidia-nvtx-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
sympy = "*"
-triton = {version = "2.3.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.12\""}
+triton = {version = "2.3.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.12\""}
typing-extensions = ">=4.8.0"
[package.extras]
@@ -3443,21 +3442,21 @@ optree = ["optree (>=0.9.1)"]
[[package]]
name = "torch"
-version = "2.3.0+cu121"
+version = "2.3.1+cu121"
description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
optional = false
python-versions = ">=3.8.0"
files = [
- {file = "torch-2.3.0+cu121-cp310-cp310-linux_x86_64.whl", hash = "sha256:0a12aa9aa6bc442dff8823ac8b48d991fd0771562eaa38593f9c8196d65f7007"},
- {file = "torch-2.3.0+cu121-cp310-cp310-win_amd64.whl", hash = "sha256:002027d18a9c054f08fe9cf7a729e041229e783e065a71349015dcccc9a7137e"},
- {file = "torch-2.3.0+cu121-cp311-cp311-linux_x86_64.whl", hash = "sha256:5df7e3cb3961018a891e4edef1e0bc1f3304a8d943f81b24a8c6bf687ca49a67"},
- {file = "torch-2.3.0+cu121-cp311-cp311-win_amd64.whl", hash = "sha256:f7876ec20b42dd569e7a11c5af36febccc03830f63dfdedbd4026506e086cab6"},
- {file = "torch-2.3.0+cu121-cp312-cp312-linux_x86_64.whl", hash = "sha256:f15b6f549eebc6e6b22b26754e4f1d7e4469bcd2d4ba1eaab57268ad80bcca96"},
- {file = "torch-2.3.0+cu121-cp312-cp312-win_amd64.whl", hash = "sha256:58ac08166e7a3665362960ff013edd06c90a0926de62de47a930c03563b0ac0f"},
- {file = "torch-2.3.0+cu121-cp38-cp38-linux_x86_64.whl", hash = "sha256:9598b959f564ee3ebe3603b0ba01d24174ca8016feca98104f0301f1490617ca"},
- {file = "torch-2.3.0+cu121-cp38-cp38-win_amd64.whl", hash = "sha256:d7620f3c92e33030274b7b369a93d13ec3b35c965e790d6df27fc6d964a4c829"},
- {file = "torch-2.3.0+cu121-cp39-cp39-linux_x86_64.whl", hash = "sha256:3cc15e4c2682a85518121a2050d6be7976d98fc4843bbc13b6f5bee275a1b6ee"},
- {file = "torch-2.3.0+cu121-cp39-cp39-win_amd64.whl", hash = "sha256:77b690e7e0fd472a5d0146394f74fac82ab1e10b822baa9b955dec0667fe83c6"},
+ {file = "torch-2.3.1+cu121-cp310-cp310-linux_x86_64.whl", hash = "sha256:f0deb5d2f932a68ed54625ba140eddbf2af22be978ee19b9b63c986add6425b2"},
+ {file = "torch-2.3.1+cu121-cp310-cp310-win_amd64.whl", hash = "sha256:bf1438aeb124fc36ae2d6b4b5c76d751d47a9fc3d7b15291b41f0caa8d5bf27b"},
+ {file = "torch-2.3.1+cu121-cp311-cp311-linux_x86_64.whl", hash = "sha256:925e34af0905062a48b4f82d0e6656341ad4d626834a6a8245ef4eaee5375c98"},
+ {file = "torch-2.3.1+cu121-cp311-cp311-win_amd64.whl", hash = "sha256:5a578516d0caf233993b3161d7dce1472bb917c59dd767c51921cd6696c3f3f7"},
+ {file = "torch-2.3.1+cu121-cp312-cp312-linux_x86_64.whl", hash = "sha256:b3c586f4ab25e83efffccfb97079e91325329bc228166555c4bb93957753d4ea"},
+ {file = "torch-2.3.1+cu121-cp312-cp312-win_amd64.whl", hash = "sha256:065a92a5ea2c89aad2bcd93e54c85c04a65c3e4a91cec2815e22c22706ec5183"},
+ {file = "torch-2.3.1+cu121-cp38-cp38-linux_x86_64.whl", hash = "sha256:4e410f342fd86c73bea0ed245509d5ff5e6877bda54b249f75a33d535c877f2f"},
+ {file = "torch-2.3.1+cu121-cp38-cp38-win_amd64.whl", hash = "sha256:c45c34c482fc20a32fa03511d3e66eb73d9dde0a1e6baffe9f8794d7d9cc6d04"},
+ {file = "torch-2.3.1+cu121-cp39-cp39-linux_x86_64.whl", hash = "sha256:dfea610362c0e2a5ff28d322d6aa65d65e03e1334996119a5a3770c7d1821ac4"},
+ {file = "torch-2.3.1+cu121-cp39-cp39-win_amd64.whl", hash = "sha256:b221b1534f1a20b5aab5fd547b782adaa0f1925d5421788e286eeaa0cbf6fd68"},
]
[package.dependencies]
@@ -3478,7 +3477,7 @@ nvidia-cusparse-cu12 = {version = "12.1.0.106", markers = "platform_system == \"
nvidia-nccl-cu12 = {version = "2.20.5", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
nvidia-nvtx-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
sympy = "*"
-triton = {version = "2.3.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.12\""}
+triton = {version = "2.3.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.12\""}
typing-extensions = ">=4.8.0"
[package.extras]
@@ -3492,64 +3491,64 @@ reference = "torch_cuda"
[[package]]
name = "torchvision"
-version = "0.18.0"
+version = "0.18.1"
description = "image and video datasets and models for torch deep learning"
optional = false
python-versions = ">=3.8"
files = [
- {file = "torchvision-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dd61628a3d189c6852a12dc5ed4cd2eece66d2d67f35a866cb16f1dcb06c8c62"},
- {file = "torchvision-0.18.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:493c45f9937dad37aa1b64b14da17c7a589c72b91adc4837d431009cfe29bd53"},
- {file = "torchvision-0.18.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:5337f6acfa1fe959d5cb340d01a00614d6b31ce7a4824ccb95435a85c5273b95"},
- {file = "torchvision-0.18.0-cp310-cp310-win_amd64.whl", hash = "sha256:bd8e6f3b5beb49965f15c461302488edfa3d8c2d01d3bb79b150d6fb62711e3a"},
- {file = "torchvision-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6896a52168befe1105fb3c9335287390ed227e71d1e4ec4d68b62e8a3099fc09"},
- {file = "torchvision-0.18.0-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:3d7955398d4ceaad77c487c2c44f6f7813112402c9bab8cd906d346005891048"},
- {file = "torchvision-0.18.0-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:e5a24d620cea14a4bb89f24aa2b506230c0a16a3ada57fc53ad80cfd256a2128"},
- {file = "torchvision-0.18.0-cp311-cp311-win_amd64.whl", hash = "sha256:6ad70ddfa879bda5ed886b2518fe562640e0059787cbd65cb2bffa7674541410"},
- {file = "torchvision-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:eb9d83c0e1dbb54ecb0fb04c87f786333e3a6fb8b9c400aca7c31081f9aa5707"},
- {file = "torchvision-0.18.0-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:b657d052d146f24cb3b2a78219bfc82ae70a9706671c50f632528907d10cccec"},
- {file = "torchvision-0.18.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:a964afbc7ddf50a46b941477f6c35729b416deedd139756befd488245e2e226d"},
- {file = "torchvision-0.18.0-cp312-cp312-win_amd64.whl", hash = "sha256:7c770f0f748e0b17f57c0297508d7254f686cdf03fc2e2949f422b20574f4c0f"},
- {file = "torchvision-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2115a1906c015f5da9ceedc40a983313b0fd6e2c8a17108a92991706f51f6987"},
- {file = "torchvision-0.18.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:6323f7e5423ff2594d5891863b919deb9d0de95f01c36bf26fbd879036b6ed08"},
- {file = "torchvision-0.18.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:925d0a82cccf6f986c18b29b4392a942db65cbdb73c13a129c8493822eb9e36f"},
- {file = "torchvision-0.18.0-cp38-cp38-win_amd64.whl", hash = "sha256:95b42d0dc599b47a01530c7439a5751e67e45b85e3a67113989cf7c7c70f2039"},
- {file = "torchvision-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:75e22ecf44a13b8f95b8ad421c0261282d859c61816badaca1959e073ccdd691"},
- {file = "torchvision-0.18.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:4c334b3e719ba0a9ba6e15d4aff1178f5e6d029174f346163fed525f0ccfffd3"},
- {file = "torchvision-0.18.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:36efd87001c6bee2383e043e46a025affb03179747c8f4777b9918527ffce756"},
- {file = "torchvision-0.18.0-cp39-cp39-win_amd64.whl", hash = "sha256:ccc292e093771d5baacf5535ac4416306b6b5f15676341cd4d010d8542eace25"},
+ {file = "torchvision-0.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3e694e54b0548dad99c12af6bf0c8e4f3350137d391dcd19af22a1c5f89322b3"},
+ {file = "torchvision-0.18.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:0b3bda0aa5b416eeb547143b8eeaf17720bdba9cf516dc991aacb81811aa96a5"},
+ {file = "torchvision-0.18.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:573ff523c739405edb085f65cb592f482d28a30e29b0be4c4ba08040b3ae785f"},
+ {file = "torchvision-0.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:ef7bbbc60b38e831a75e547c66ca1784f2ac27100f9e4ddbe9614cef6cbcd942"},
+ {file = "torchvision-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80b5d794dd0fdba787adc22f1a367a5ead452327686473cb260dd94364bc56a6"},
+ {file = "torchvision-0.18.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:9077cf590cdb3a5e8fdf5cdb71797f8c67713f974cf0228ecb17fcd670ab42f9"},
+ {file = "torchvision-0.18.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:ceb993a882f1ae7ae373ed39c28d7e3e802205b0e59a7ed84ef4028f0bba8d7f"},
+ {file = "torchvision-0.18.1-cp311-cp311-win_amd64.whl", hash = "sha256:52f7436140045dc2239cdc502aa76b2bd8bd676d64244ff154d304aa69852046"},
+ {file = "torchvision-0.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2be6f0bf7c455c89a51a1dbb6f668d36c6edc479f49ac912d745d10df5715657"},
+ {file = "torchvision-0.18.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:f118d887bfde3a948a41d56587525401e5cac1b7db2eaca203324d6ed2b1caca"},
+ {file = "torchvision-0.18.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:13d24d904f65e62d66a1e0c41faec630bc193867b8a4a01166769e8a8e8df8e9"},
+ {file = "torchvision-0.18.1-cp312-cp312-win_amd64.whl", hash = "sha256:ed6340b69a63a625e512a66127210d412551d9c5f2ad2978130c6a45bf56cd4a"},
+ {file = "torchvision-0.18.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b1c3864fa9378c88bce8ad0ef3599f4f25397897ce612e1c245c74b97092f35e"},
+ {file = "torchvision-0.18.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:02085a2ffc7461f5c0edb07d6f3455ee1806561f37736b903da820067eea58c7"},
+ {file = "torchvision-0.18.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:9726c316a2501df8503e5a5dc46a631afd4c515a958972e5b7f7b9c87d2125c0"},
+ {file = "torchvision-0.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:64a2662dbf30db9055d8b201d6e56f312a504e5ccd9d144c57c41622d3c524cb"},
+ {file = "torchvision-0.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:975b8594c0f5288875408acbb74946eea786c5b008d129c0d045d0ead23742bc"},
+ {file = "torchvision-0.18.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:da83c8bbd34d8bee48bfa1d1b40e0844bc3cba10ed825a5a8cbe3ce7b62264cd"},
+ {file = "torchvision-0.18.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:54bfcd352abb396d5c9c237d200167c178bd136051b138e1e8ef46ce367c2773"},
+ {file = "torchvision-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:5c8366a1aeee49e9ea9e64b30d199debdf06b1bd7610a76165eb5d7869c3bde5"},
]
[package.dependencies]
numpy = "*"
pillow = ">=5.3.0,<8.3.dev0 || >=8.4.dev0"
-torch = "2.3.0"
+torch = "2.3.1"
[package.extras]
scipy = ["scipy"]
[[package]]
name = "torchvision"
-version = "0.18.0+cu121"
+version = "0.18.1+cu121"
description = "image and video datasets and models for torch deep learning"
optional = false
python-versions = ">=3.8"
files = [
- {file = "torchvision-0.18.0+cu121-cp310-cp310-linux_x86_64.whl", hash = "sha256:13e1b48dc5ce41ccb8100ab3dd26fdf31d8f1e904ecf2865ac524493013d0df5"},
- {file = "torchvision-0.18.0+cu121-cp310-cp310-win_amd64.whl", hash = "sha256:4ab207a0f35c8c2a43da91f19ee9248520239633dc8e11a9e4a2e77b076bb9db"},
- {file = "torchvision-0.18.0+cu121-cp311-cp311-linux_x86_64.whl", hash = "sha256:1e516779520fc92157d6cb245ac0fd3f79872fe81c84b8593a8f2e998106f5b1"},
- {file = "torchvision-0.18.0+cu121-cp311-cp311-win_amd64.whl", hash = "sha256:3e5557512ec9a31a6ce33a1107827427ef50ad65e88cd35012161d7392ef144b"},
- {file = "torchvision-0.18.0+cu121-cp312-cp312-linux_x86_64.whl", hash = "sha256:700f6019bebee9e0ee8b0bcbdb1588809c94a2eb947a1fde2e06adc34b60da2a"},
- {file = "torchvision-0.18.0+cu121-cp312-cp312-win_amd64.whl", hash = "sha256:e09966baf7945085d7725ac7c944172c632516643d603bde5855f6b3cf68efcf"},
- {file = "torchvision-0.18.0+cu121-cp38-cp38-linux_x86_64.whl", hash = "sha256:c2483b2cc62278fbaa6b67d2a9d808d245044f8b64a821596eae68ec6a0d5ed0"},
- {file = "torchvision-0.18.0+cu121-cp38-cp38-win_amd64.whl", hash = "sha256:1d637b1428a076dfaff71ca0a5b8ef200b5b5ff7dfe2ed9359be0eff43734e5a"},
- {file = "torchvision-0.18.0+cu121-cp39-cp39-linux_x86_64.whl", hash = "sha256:1bfe0c67fd5461a3a593f8f17e1544f07a6bd6686e155200dd244947074fcd51"},
- {file = "torchvision-0.18.0+cu121-cp39-cp39-win_amd64.whl", hash = "sha256:611bb0b42c51de0c1bbcc8e90f88b4d48c8b99451bdb2e4761028b93cb086437"},
+ {file = "torchvision-0.18.1+cu121-cp310-cp310-linux_x86_64.whl", hash = "sha256:e95ba5a2c616939281e01babf11664d6d1725e81bba57ef81f81c3e57e4d4151"},
+ {file = "torchvision-0.18.1+cu121-cp310-cp310-win_amd64.whl", hash = "sha256:fc2daccb9d290118fd706f42c280f4dcb5e2eb1e7e37b614f490dd548defe5b5"},
+ {file = "torchvision-0.18.1+cu121-cp311-cp311-linux_x86_64.whl", hash = "sha256:2b2aec2c68e0ba17f9eed8921796fa2dbc7a493dea7a3b45d25c055ad4174868"},
+ {file = "torchvision-0.18.1+cu121-cp311-cp311-win_amd64.whl", hash = "sha256:d85e21c03ab40b3676caaca4ec951a1f3a74ddcac3e68521c81f1869eb53ebf9"},
+ {file = "torchvision-0.18.1+cu121-cp312-cp312-linux_x86_64.whl", hash = "sha256:ce8d5b992056f0640a39ef5734342e43ca4a801547de27fb8dbc3055d9345947"},
+ {file = "torchvision-0.18.1+cu121-cp312-cp312-win_amd64.whl", hash = "sha256:4ef51349a1be161a60a8ad7e6f575917b13628e8255353f79c6a2c4d1432040f"},
+ {file = "torchvision-0.18.1+cu121-cp38-cp38-linux_x86_64.whl", hash = "sha256:aee8961dcb8a418e92d06d4b3e9af52987293a48c14231c3c50c8eea3741e412"},
+ {file = "torchvision-0.18.1+cu121-cp38-cp38-win_amd64.whl", hash = "sha256:54b167a0f8c17b568c0d7191aec45f77f6af4d9b0b8549e1857b34babbc5d9a6"},
+ {file = "torchvision-0.18.1+cu121-cp39-cp39-linux_x86_64.whl", hash = "sha256:1ebf5dbbdf3af446c84e42baf2edbeb1bd6fb0cc9d3b4901af969c8391d14a5e"},
+ {file = "torchvision-0.18.1+cu121-cp39-cp39-win_amd64.whl", hash = "sha256:15c3684dd265add6614a42b734e1b5a346e5a03ffa2414d2869cc01f9204b465"},
]
[package.dependencies]
numpy = "*"
pillow = ">=5.3.0,<8.3.dev0 || >=8.4.dev0"
-torch = "2.3.0"
+torch = "2.3.1"
[package.extras]
scipy = ["scipy"]
@@ -3682,17 +3681,17 @@ vision = ["Pillow (>=10.0.1,<=15.0)"]
[[package]]
name = "triton"
-version = "2.3.0"
+version = "2.3.1"
description = "A language and compiler for custom Deep Learning operations"
optional = false
python-versions = "*"
files = [
- {file = "triton-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ce4b8ff70c48e47274c66f269cce8861cf1dc347ceeb7a67414ca151b1822d8"},
- {file = "triton-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c3d9607f85103afdb279938fc1dd2a66e4f5999a58eb48a346bd42738f986dd"},
- {file = "triton-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:218d742e67480d9581bafb73ed598416cc8a56f6316152e5562ee65e33de01c0"},
- {file = "triton-2.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:381ec6b3dac06922d3e4099cfc943ef032893b25415de295e82b1a82b0359d2c"},
- {file = "triton-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:038e06a09c06a164fef9c48de3af1e13a63dc1ba3c792871e61a8e79720ea440"},
- {file = "triton-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d8f636e0341ac348899a47a057c3daea99ea7db31528a225a3ba4ded28ccc65"},
+ {file = "triton-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c84595cbe5e546b1b290d2a58b1494df5a2ef066dd890655e5b8a8a92205c33"},
+ {file = "triton-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9d64ae33bcb3a7a18081e3a746e8cf87ca8623ca13d2c362413ce7a486f893e"},
+ {file = "triton-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaf80e8761a9e3498aa92e7bf83a085b31959c61f5e8ac14eedd018df6fccd10"},
+ {file = "triton-2.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b13bf35a2b659af7159bf78e92798dc62d877aa991de723937329e2d382f1991"},
+ {file = "triton-2.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63381e35ded3304704ea867ffde3b7cfc42c16a55b3062d41e017ef510433d66"},
+ {file = "triton-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d968264523c7a07911c8fb51b4e0d1b920204dae71491b1fe7b01b62a31e124"},
]
[package.dependencies]
From b81bcd6b43564c1470571ddc86b9c0c698e399e4 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 18 Jun 2024 09:51:29 +0200
Subject: [PATCH 11/16] fix(deps): bump urllib3 from 2.2.1 to 2.2.2 (#842)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.1 to 2.2.2.
Release notes
Sourced from urllib3's
releases.
2.2.2
🚀 urllib3 is fundraising for HTTP/2 support
urllib3
is raising ~$40,000 USD to release HTTP/2 support and ensure
long-term sustainable maintenance of the project after a sharp decline
in financial support for 2023. If your company or organization uses
Python and would benefit from HTTP/2 support in Requests, pip, cloud
SDKs, and thousands of other projects please consider contributing
financially to ensure HTTP/2 support is developed sustainably and
maintained for the long-haul.
Thank you for your support.
Changes
- Added the
Proxy-Authorization
header to the list of
headers to strip from requests when redirecting to a different host. As
before, different headers can be set via
Retry.remove_headers_on_redirect
.
- Allowed passing negative integers as
amt
to read
methods of http.client.HTTPResponse
as an alternative to
None
. (#3122)
- Fixed return types representing copying actions to use
typing.Self
. (#3363)
Full Changelog: https://github.com/urllib3/urllib3/compare/2.2.1...2.2.2
Changelog
Sourced from urllib3's
changelog.
2.2.2 (2024-06-17)
- Added the
Proxy-Authorization
header to the list of
headers to strip from requests when redirecting to a different host. As
before, different headers can be set via
Retry.remove_headers_on_redirect
.
- Allowed passing negative integers as
amt
to read
methods of http.client.HTTPResponse
as an alternative to
None
.
([#3122](https://github.com/urllib3/urllib3/issues/3122)
<https://github.com/urllib3/urllib3/issues/3122>
__)
- Fixed return types representing copying actions to use
typing.Self
.
([#3363](https://github.com/urllib3/urllib3/issues/3363)
<https://github.com/urllib3/urllib3/issues/3363>
__)
Commits
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=urllib3&package-manager=pip&previous-version=2.2.1&new-version=2.2.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/Safe-DS/Library/network/alerts).
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
poetry.lock | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index 2a0e22ffd..69e7784f0 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -2503,6 +2503,7 @@ files = [
{file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
{file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
{file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
+ {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
{file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
{file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
{file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
@@ -3726,13 +3727,13 @@ files = [
[[package]]
name = "urllib3"
-version = "2.2.1"
+version = "2.2.2"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
python-versions = ">=3.8"
files = [
- {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"},
- {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"},
+ {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"},
+ {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"},
]
[package.extras]
From 2b82db75ac4686611d6b4607c647a734a7e0616e Mon Sep 17 00:00:00 2001
From: Tellem <76844312+TellemHD@users.noreply.github.com>
Date: Fri, 21 Jun 2024 11:55:52 +0200
Subject: [PATCH 12/16] feat: reorders parameters of RangeScaler and makes them
keyword-only (#847)
Closes #809
### Summary of Changes
- reorders parameters of RangeScaler and makes them keyword-only
- updates a Tutorial in the Documentation
---------
Co-authored-by: megalinter-bot <129584137+megalinter-bot@users.noreply.github.com>
---
docs/tutorials/data_processing.ipynb | 774 +++++++++++++-----
.../tabular/transformation/_range_scaler.py | 8 +-
2 files changed, 586 insertions(+), 196 deletions(-)
diff --git a/docs/tutorials/data_processing.ipynb b/docs/tutorials/data_processing.ipynb
index eb32d7caf..e5803137f 100644
--- a/docs/tutorials/data_processing.ipynb
+++ b/docs/tutorials/data_processing.ipynb
@@ -2,6 +2,9 @@
"cells": [
{
"cell_type": "markdown",
+ "metadata": {
+ "collapsed": false
+ },
"source": [
"# Data Processing\n",
"\n",
@@ -13,480 +16,873 @@
" All operations on a Table
return a new Table
. The original Table
will not be changed.\n",
"
\n",
""
- ],
- "metadata": {
- "collapsed": false
- }
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {
+ "collapsed": false
+ },
"source": [
"### Create & Load data\n",
"\n",
"1. Load your data into a `Table`:"
- ],
- "metadata": {
- "collapsed": false
- }
+ ]
},
{
"cell_type": "code",
- "source": [
- "from safeds.data.tabular.containers import Table\n",
- "\n",
- "titanic = Table.from_csv_file(\"data/titanic.csv\")"
- ],
+ "execution_count": 1,
"metadata": {
- "collapsed": false,
"ExecuteTime": {
"end_time": "2024-05-24T11:02:33.418025600Z",
"start_time": "2024-05-24T11:02:33.358365Z"
- }
+ },
+ "collapsed": false
},
"outputs": [],
- "execution_count": 1
+ "source": [
+ "from safeds.data.tabular.containers import Table\n",
+ "\n",
+ "titanic = Table.from_csv_file(\"data/titanic.csv\")"
+ ]
},
{
"cell_type": "markdown",
- "source": [
- "2. Create a `Table` containing only the first 10 rows:"
- ],
"metadata": {
"collapsed": false
- }
+ },
+ "source": [
+ "2. Create a `Table` containing only the first 10 rows:"
+ ]
},
{
"cell_type": "code",
- "source": [
- "titanic_slice = titanic.slice_rows(length=10)\n",
- "\n",
- "titanic_slice # just to show the output"
- ],
+ "execution_count": 2,
"metadata": {
- "collapsed": false,
"ExecuteTime": {
"end_time": "2024-05-24T11:02:33.426370200Z",
"start_time": "2024-05-24T11:02:33.419030500Z"
- }
+ },
+ "collapsed": false
},
"outputs": [
{
"data": {
- "text/plain": "+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+\n| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n| --- | --- | --- | --- | | --- | --- | --- | --- |\n| i64 | str | str | f64 | | f64 | str | str | i64 |\n+==================================================================================================+\n| 0 | Abbing, Mr. Anthony | male | 42.00000 | … | 7.55000 | null | Southampton | 0 |\n| 1 | Abbott, Master. | male | 13.00000 | … | 20.25000 | null | Southampton | 0 |\n| | Eugene Joseph | | | | | | | |\n| 2 | Abbott, Mr. Rossmore | male | 16.00000 | … | 20.25000 | null | Southampton | 0 |\n| | Edward | | | | | | | |\n| 3 | Abbott, Mrs. Stanton | female | 35.00000 | … | 20.25000 | null | Southampton | 1 |\n| | (Rosa Hun… | | | | | | | |\n| 4 | Abelseth, Miss. | female | 16.00000 | … | 7.65000 | null | Southampton | 1 |\n| | Karen Marie | | | | | | | |\n| 5 | Abelseth, Mr. Olaus | male | 25.00000 | … | 7.65000 | F G63 | Southampton | 1 |\n| | Jorgensen | | | | | | | |\n| 6 | Abelson, Mr. Samuel | male | 30.00000 | … | 24.00000 | null | Cherbourg | 0 |\n| 7 | Abelson, Mrs. Samuel | female | 28.00000 | … | 24.00000 | null | Cherbourg | 1 |\n| | (Hannah W… | | | | | | | |\n| 8 | Abrahamsson, Mr. | male | 20.00000 | … | 7.92500 | null | Southampton | 1 |\n| | Abraham Augus… | | | | | | | |\n| 9 | Abrahim, Mrs. Joseph | female | 18.00000 | … | 7.22920 | null | Cherbourg | 1 |\n| | (Sophie H… | | | | | | | |\n+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+",
- "text/html": "\n
shape: (10, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | str | f64 | i64 | i64 | str | i64 | f64 | str | str | i64 |
0 | "Abbing, Mr. Anthony" | "male" | 42.0 | 0 | 0 | "C.A. 5547" | 3 | 7.55 | null | "Southampton" | 0 |
1 | "Abbott, Master. Eugene Joseph" | "male" | 13.0 | 0 | 2 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
2 | "Abbott, Mr. Rossmore Edward" | "male" | 16.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | "female" | 35.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 1 |
4 | "Abelseth, Miss. Karen Marie" | "female" | 16.0 | 0 | 0 | "348125" | 3 | 7.65 | null | "Southampton" | 1 |
5 | "Abelseth, Mr. Olaus Jorgensen" | "male" | 25.0 | 0 | 0 | "348122" | 3 | 7.65 | "F G63" | "Southampton" | 1 |
6 | "Abelson, Mr. Samuel" | "male" | 30.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | "Cherbourg" | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | "female" | 28.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | "Cherbourg" | 1 |
8 | "Abrahamsson, Mr. Abraham Augus… | "male" | 20.0 | 0 | 0 | "SOTON/O2 3101284" | 3 | 7.925 | null | "Southampton" | 1 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | "female" | 18.0 | 0 | 0 | "2657" | 3 | 7.2292 | null | "Cherbourg" | 1 |
"
+ "text/html": [
+ "\n",
+ "
shape: (10, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | str | f64 | i64 | i64 | str | i64 | f64 | str | str | i64 |
0 | "Abbing, Mr. Anthony" | "male" | 42.0 | 0 | 0 | "C.A. 5547" | 3 | 7.55 | null | "Southampton" | 0 |
1 | "Abbott, Master. Eugene Joseph" | "male" | 13.0 | 0 | 2 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
2 | "Abbott, Mr. Rossmore Edward" | "male" | 16.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | "female" | 35.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 1 |
4 | "Abelseth, Miss. Karen Marie" | "female" | 16.0 | 0 | 0 | "348125" | 3 | 7.65 | null | "Southampton" | 1 |
5 | "Abelseth, Mr. Olaus Jorgensen" | "male" | 25.0 | 0 | 0 | "348122" | 3 | 7.65 | "F G63" | "Southampton" | 1 |
6 | "Abelson, Mr. Samuel" | "male" | 30.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | "Cherbourg" | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | "female" | 28.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | "Cherbourg" | 1 |
8 | "Abrahamsson, Mr. Abraham Augus… | "male" | 20.0 | 0 | 0 | "SOTON/O2 3101284" | 3 | 7.925 | null | "Southampton" | 1 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | "female" | 18.0 | 0 | 0 | "2657" | 3 | 7.2292 | null | "Cherbourg" | 1 |
"
+ ],
+ "text/plain": [
+ "+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+\n",
+ "| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n",
+ "| --- | --- | --- | --- | | --- | --- | --- | --- |\n",
+ "| i64 | str | str | f64 | | f64 | str | str | i64 |\n",
+ "+==================================================================================================+\n",
+ "| 0 | Abbing, Mr. Anthony | male | 42.00000 | … | 7.55000 | null | Southampton | 0 |\n",
+ "| 1 | Abbott, Master. | male | 13.00000 | … | 20.25000 | null | Southampton | 0 |\n",
+ "| | Eugene Joseph | | | | | | | |\n",
+ "| 2 | Abbott, Mr. Rossmore | male | 16.00000 | … | 20.25000 | null | Southampton | 0 |\n",
+ "| | Edward | | | | | | | |\n",
+ "| 3 | Abbott, Mrs. Stanton | female | 35.00000 | … | 20.25000 | null | Southampton | 1 |\n",
+ "| | (Rosa Hun… | | | | | | | |\n",
+ "| 4 | Abelseth, Miss. | female | 16.00000 | … | 7.65000 | null | Southampton | 1 |\n",
+ "| | Karen Marie | | | | | | | |\n",
+ "| 5 | Abelseth, Mr. Olaus | male | 25.00000 | … | 7.65000 | F G63 | Southampton | 1 |\n",
+ "| | Jorgensen | | | | | | | |\n",
+ "| 6 | Abelson, Mr. Samuel | male | 30.00000 | … | 24.00000 | null | Cherbourg | 0 |\n",
+ "| 7 | Abelson, Mrs. Samuel | female | 28.00000 | … | 24.00000 | null | Cherbourg | 1 |\n",
+ "| | (Hannah W… | | | | | | | |\n",
+ "| 8 | Abrahamsson, Mr. | male | 20.00000 | … | 7.92500 | null | Southampton | 1 |\n",
+ "| | Abraham Augus… | | | | | | | |\n",
+ "| 9 | Abrahim, Mrs. Joseph | female | 18.00000 | … | 7.22920 | null | Cherbourg | 1 |\n",
+ "| | (Sophie H… | | | | | | | |\n",
+ "+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+"
+ ]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
- "execution_count": 2
+ "source": [
+ "titanic_slice = titanic.slice_rows(length=10)\n",
+ "\n",
+ "titanic_slice # just to show the output"
+ ]
},
{
"cell_type": "markdown",
- "source": [
- "3. Extract a `Column` from your `Table`:"
- ],
"metadata": {
"collapsed": false
- }
+ },
+ "source": [
+ "3. Extract a `Column` from your `Table`:"
+ ]
},
{
"cell_type": "code",
- "source": [
- "titanic_slice.get_column(\"name\")"
- ],
+ "execution_count": 3,
"metadata": {
- "collapsed": false,
"ExecuteTime": {
"end_time": "2024-05-24T11:02:33.431877400Z",
"start_time": "2024-05-24T11:02:33.426370200Z"
- }
+ },
+ "collapsed": false
},
"outputs": [
{
"data": {
- "text/plain": "+---------------------------------+\n| name |\n| --- |\n| str |\n+=================================+\n| Abbing, Mr. Anthony |\n| Abbott, Master. Eugene Joseph |\n| Abbott, Mr. Rossmore Edward |\n| Abbott, Mrs. Stanton (Rosa Hun… |\n| Abelseth, Miss. Karen Marie |\n| Abelseth, Mr. Olaus Jorgensen |\n| Abelson, Mr. Samuel |\n| Abelson, Mrs. Samuel (Hannah W… |\n| Abrahamsson, Mr. Abraham Augus… |\n| Abrahim, Mrs. Joseph (Sophie H… |\n+---------------------------------+",
- "text/html": "\n
shape: (10,)name |
---|
str |
"Abbing, Mr. Anthony" |
"Abbott, Master. Eugene Joseph" |
"Abbott, Mr. Rossmore Edward" |
"Abbott, Mrs. Stanton (Rosa Hun… |
"Abelseth, Miss. Karen Marie" |
"Abelseth, Mr. Olaus Jorgensen" |
"Abelson, Mr. Samuel" |
"Abelson, Mrs. Samuel (Hannah W… |
"Abrahamsson, Mr. Abraham Augus… |
"Abrahim, Mrs. Joseph (Sophie H… |
"
+ "text/html": [
+ "\n",
+ "
shape: (10,)name |
---|
str |
"Abbing, Mr. Anthony" |
"Abbott, Master. Eugene Joseph" |
"Abbott, Mr. Rossmore Edward" |
"Abbott, Mrs. Stanton (Rosa Hun… |
"Abelseth, Miss. Karen Marie" |
"Abelseth, Mr. Olaus Jorgensen" |
"Abelson, Mr. Samuel" |
"Abelson, Mrs. Samuel (Hannah W… |
"Abrahamsson, Mr. Abraham Augus… |
"Abrahim, Mrs. Joseph (Sophie H… |
"
+ ],
+ "text/plain": [
+ "+---------------------------------+\n",
+ "| name |\n",
+ "| --- |\n",
+ "| str |\n",
+ "+=================================+\n",
+ "| Abbing, Mr. Anthony |\n",
+ "| Abbott, Master. Eugene Joseph |\n",
+ "| Abbott, Mr. Rossmore Edward |\n",
+ "| Abbott, Mrs. Stanton (Rosa Hun… |\n",
+ "| Abelseth, Miss. Karen Marie |\n",
+ "| Abelseth, Mr. Olaus Jorgensen |\n",
+ "| Abelson, Mr. Samuel |\n",
+ "| Abelson, Mrs. Samuel (Hannah W… |\n",
+ "| Abrahamsson, Mr. Abraham Augus… |\n",
+ "| Abrahim, Mrs. Joseph (Sophie H… |\n",
+ "+---------------------------------+"
+ ]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
- "execution_count": 3
+ "source": [
+ "titanic_slice.get_column(\"name\")"
+ ]
},
{
"cell_type": "markdown",
- "source": [
- "4. Combine a list of `Column`s to a `Table` (make sure the `Column`s have the same amount of rows):"
- ],
"metadata": {
"collapsed": false
- }
+ },
+ "source": [
+ "4. Combine a list of `Column`s to a `Table` (make sure the `Column`s have the same amount of rows):"
+ ]
},
{
"cell_type": "code",
- "source": [
- "Table.from_columns([\n",
- " titanic_slice.get_column(\"name\"),\n",
- " titanic_slice.get_column(\"age\")\n",
- "])"
- ],
+ "execution_count": 4,
"metadata": {
- "collapsed": false,
"ExecuteTime": {
"end_time": "2024-05-24T11:02:33.436929600Z",
"start_time": "2024-05-24T11:02:33.430880700Z"
- }
+ },
+ "collapsed": false
},
"outputs": [
{
"data": {
- "text/plain": "+---------------------------------+----------+\n| name | age |\n| --- | --- |\n| str | f64 |\n+============================================+\n| Abbing, Mr. Anthony | 42.00000 |\n| Abbott, Master. Eugene Joseph | 13.00000 |\n| Abbott, Mr. Rossmore Edward | 16.00000 |\n| Abbott, Mrs. Stanton (Rosa Hun… | 35.00000 |\n| Abelseth, Miss. Karen Marie | 16.00000 |\n| Abelseth, Mr. Olaus Jorgensen | 25.00000 |\n| Abelson, Mr. Samuel | 30.00000 |\n| Abelson, Mrs. Samuel (Hannah W… | 28.00000 |\n| Abrahamsson, Mr. Abraham Augus… | 20.00000 |\n| Abrahim, Mrs. Joseph (Sophie H… | 18.00000 |\n+---------------------------------+----------+",
- "text/html": "\n
shape: (10, 2)name | age |
---|
str | f64 |
"Abbing, Mr. Anthony" | 42.0 |
"Abbott, Master. Eugene Joseph" | 13.0 |
"Abbott, Mr. Rossmore Edward" | 16.0 |
"Abbott, Mrs. Stanton (Rosa Hun… | 35.0 |
"Abelseth, Miss. Karen Marie" | 16.0 |
"Abelseth, Mr. Olaus Jorgensen" | 25.0 |
"Abelson, Mr. Samuel" | 30.0 |
"Abelson, Mrs. Samuel (Hannah W… | 28.0 |
"Abrahamsson, Mr. Abraham Augus… | 20.0 |
"Abrahim, Mrs. Joseph (Sophie H… | 18.0 |
"
+ "text/html": [
+ "\n",
+ "
shape: (10, 2)name | age |
---|
str | f64 |
"Abbing, Mr. Anthony" | 42.0 |
"Abbott, Master. Eugene Joseph" | 13.0 |
"Abbott, Mr. Rossmore Edward" | 16.0 |
"Abbott, Mrs. Stanton (Rosa Hun… | 35.0 |
"Abelseth, Miss. Karen Marie" | 16.0 |
"Abelseth, Mr. Olaus Jorgensen" | 25.0 |
"Abelson, Mr. Samuel" | 30.0 |
"Abelson, Mrs. Samuel (Hannah W… | 28.0 |
"Abrahamsson, Mr. Abraham Augus… | 20.0 |
"Abrahim, Mrs. Joseph (Sophie H… | 18.0 |
"
+ ],
+ "text/plain": [
+ "+---------------------------------+----------+\n",
+ "| name | age |\n",
+ "| --- | --- |\n",
+ "| str | f64 |\n",
+ "+============================================+\n",
+ "| Abbing, Mr. Anthony | 42.00000 |\n",
+ "| Abbott, Master. Eugene Joseph | 13.00000 |\n",
+ "| Abbott, Mr. Rossmore Edward | 16.00000 |\n",
+ "| Abbott, Mrs. Stanton (Rosa Hun… | 35.00000 |\n",
+ "| Abelseth, Miss. Karen Marie | 16.00000 |\n",
+ "| Abelseth, Mr. Olaus Jorgensen | 25.00000 |\n",
+ "| Abelson, Mr. Samuel | 30.00000 |\n",
+ "| Abelson, Mrs. Samuel (Hannah W… | 28.00000 |\n",
+ "| Abrahamsson, Mr. Abraham Augus… | 20.00000 |\n",
+ "| Abrahim, Mrs. Joseph (Sophie H… | 18.00000 |\n",
+ "+---------------------------------+----------+"
+ ]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
- "execution_count": 4
+ "source": [
+ "Table.from_columns([\n",
+ " titanic_slice.get_column(\"name\"),\n",
+ " titanic_slice.get_column(\"age\")\n",
+ "])"
+ ]
},
{
"cell_type": "markdown",
- "source": [
- "5. Drop columns from a `Table`:"
- ],
"metadata": {
"collapsed": false
- }
+ },
+ "source": [
+ "5. Drop columns from a `Table`:"
+ ]
},
{
"cell_type": "code",
- "source": [
- "titanic_slice.remove_columns([\n",
- " \"id\",\n",
- " \"name\",\n",
- " \"ticket\",\n",
- " \"cabin\",\n",
- " \"port_embarked\",\n",
- " \"survived\"\n",
- "])"
- ],
+ "execution_count": 5,
"metadata": {
- "collapsed": false,
"ExecuteTime": {
"end_time": "2024-05-24T11:02:33.457085600Z",
"start_time": "2024-05-24T11:02:33.436929600Z"
- }
+ },
+ "collapsed": false
},
"outputs": [
{
"data": {
- "text/plain": "+--------+----------+------------------+------------------+--------------+----------+\n| sex | age | siblings_spouses | parents_children | travel_class | fare |\n| --- | --- | --- | --- | --- | --- |\n| str | f64 | i64 | i64 | i64 | f64 |\n+===================================================================================+\n| male | 42.00000 | 0 | 0 | 3 | 7.55000 |\n| male | 13.00000 | 0 | 2 | 3 | 20.25000 |\n| male | 16.00000 | 1 | 1 | 3 | 20.25000 |\n| female | 35.00000 | 1 | 1 | 3 | 20.25000 |\n| female | 16.00000 | 0 | 0 | 3 | 7.65000 |\n| male | 25.00000 | 0 | 0 | 3 | 7.65000 |\n| male | 30.00000 | 1 | 0 | 2 | 24.00000 |\n| female | 28.00000 | 1 | 0 | 2 | 24.00000 |\n| male | 20.00000 | 0 | 0 | 3 | 7.92500 |\n| female | 18.00000 | 0 | 0 | 3 | 7.22920 |\n+--------+----------+------------------+------------------+--------------+----------+",
- "text/html": "\n
shape: (10, 6)sex | age | siblings_spouses | parents_children | travel_class | fare |
---|
str | f64 | i64 | i64 | i64 | f64 |
"male" | 42.0 | 0 | 0 | 3 | 7.55 |
"male" | 13.0 | 0 | 2 | 3 | 20.25 |
"male" | 16.0 | 1 | 1 | 3 | 20.25 |
"female" | 35.0 | 1 | 1 | 3 | 20.25 |
"female" | 16.0 | 0 | 0 | 3 | 7.65 |
"male" | 25.0 | 0 | 0 | 3 | 7.65 |
"male" | 30.0 | 1 | 0 | 2 | 24.0 |
"female" | 28.0 | 1 | 0 | 2 | 24.0 |
"male" | 20.0 | 0 | 0 | 3 | 7.925 |
"female" | 18.0 | 0 | 0 | 3 | 7.2292 |
"
+ "text/html": [
+ "\n",
+ "
shape: (10, 6)sex | age | siblings_spouses | parents_children | travel_class | fare |
---|
str | f64 | i64 | i64 | i64 | f64 |
"male" | 42.0 | 0 | 0 | 3 | 7.55 |
"male" | 13.0 | 0 | 2 | 3 | 20.25 |
"male" | 16.0 | 1 | 1 | 3 | 20.25 |
"female" | 35.0 | 1 | 1 | 3 | 20.25 |
"female" | 16.0 | 0 | 0 | 3 | 7.65 |
"male" | 25.0 | 0 | 0 | 3 | 7.65 |
"male" | 30.0 | 1 | 0 | 2 | 24.0 |
"female" | 28.0 | 1 | 0 | 2 | 24.0 |
"male" | 20.0 | 0 | 0 | 3 | 7.925 |
"female" | 18.0 | 0 | 0 | 3 | 7.2292 |
"
+ ],
+ "text/plain": [
+ "+--------+----------+------------------+------------------+--------------+----------+\n",
+ "| sex | age | siblings_spouses | parents_children | travel_class | fare |\n",
+ "| --- | --- | --- | --- | --- | --- |\n",
+ "| str | f64 | i64 | i64 | i64 | f64 |\n",
+ "+===================================================================================+\n",
+ "| male | 42.00000 | 0 | 0 | 3 | 7.55000 |\n",
+ "| male | 13.00000 | 0 | 2 | 3 | 20.25000 |\n",
+ "| male | 16.00000 | 1 | 1 | 3 | 20.25000 |\n",
+ "| female | 35.00000 | 1 | 1 | 3 | 20.25000 |\n",
+ "| female | 16.00000 | 0 | 0 | 3 | 7.65000 |\n",
+ "| male | 25.00000 | 0 | 0 | 3 | 7.65000 |\n",
+ "| male | 30.00000 | 1 | 0 | 2 | 24.00000 |\n",
+ "| female | 28.00000 | 1 | 0 | 2 | 24.00000 |\n",
+ "| male | 20.00000 | 0 | 0 | 3 | 7.92500 |\n",
+ "| female | 18.00000 | 0 | 0 | 3 | 7.22920 |\n",
+ "+--------+----------+------------------+------------------+--------------+----------+"
+ ]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
- "execution_count": 5
+ "source": [
+ "titanic_slice.remove_columns([\n",
+ " \"id\",\n",
+ " \"name\",\n",
+ " \"ticket\",\n",
+ " \"cabin\",\n",
+ " \"port_embarked\",\n",
+ " \"survived\"\n",
+ "])"
+ ]
},
{
"cell_type": "markdown",
- "source": [
- "6. Keep only specified columns of a `Table`:"
- ],
"metadata": {
"collapsed": false
- }
+ },
+ "source": [
+ "6. Keep only specified columns of a `Table`:"
+ ]
},
{
"cell_type": "code",
- "source": [
- "titanic_slice.remove_columns_except([\"name\", \"survived\"])"
- ],
+ "execution_count": 6,
"metadata": {
- "collapsed": false,
"ExecuteTime": {
"end_time": "2024-05-24T11:02:33.458084900Z",
"start_time": "2024-05-24T11:02:33.441438800Z"
- }
+ },
+ "collapsed": false
},
"outputs": [
{
"data": {
- "text/plain": "+---------------------------------+----------+\n| name | survived |\n| --- | --- |\n| str | i64 |\n+============================================+\n| Abbing, Mr. Anthony | 0 |\n| Abbott, Master. Eugene Joseph | 0 |\n| Abbott, Mr. Rossmore Edward | 0 |\n| Abbott, Mrs. Stanton (Rosa Hun… | 1 |\n| Abelseth, Miss. Karen Marie | 1 |\n| Abelseth, Mr. Olaus Jorgensen | 1 |\n| Abelson, Mr. Samuel | 0 |\n| Abelson, Mrs. Samuel (Hannah W… | 1 |\n| Abrahamsson, Mr. Abraham Augus… | 1 |\n| Abrahim, Mrs. Joseph (Sophie H… | 1 |\n+---------------------------------+----------+",
- "text/html": "\n
shape: (10, 2)name | survived |
---|
str | i64 |
"Abbing, Mr. Anthony" | 0 |
"Abbott, Master. Eugene Joseph" | 0 |
"Abbott, Mr. Rossmore Edward" | 0 |
"Abbott, Mrs. Stanton (Rosa Hun… | 1 |
"Abelseth, Miss. Karen Marie" | 1 |
"Abelseth, Mr. Olaus Jorgensen" | 1 |
"Abelson, Mr. Samuel" | 0 |
"Abelson, Mrs. Samuel (Hannah W… | 1 |
"Abrahamsson, Mr. Abraham Augus… | 1 |
"Abrahim, Mrs. Joseph (Sophie H… | 1 |
"
+ "text/html": [
+ "\n",
+ "
shape: (10, 2)name | survived |
---|
str | i64 |
"Abbing, Mr. Anthony" | 0 |
"Abbott, Master. Eugene Joseph" | 0 |
"Abbott, Mr. Rossmore Edward" | 0 |
"Abbott, Mrs. Stanton (Rosa Hun… | 1 |
"Abelseth, Miss. Karen Marie" | 1 |
"Abelseth, Mr. Olaus Jorgensen" | 1 |
"Abelson, Mr. Samuel" | 0 |
"Abelson, Mrs. Samuel (Hannah W… | 1 |
"Abrahamsson, Mr. Abraham Augus… | 1 |
"Abrahim, Mrs. Joseph (Sophie H… | 1 |
"
+ ],
+ "text/plain": [
+ "+---------------------------------+----------+\n",
+ "| name | survived |\n",
+ "| --- | --- |\n",
+ "| str | i64 |\n",
+ "+============================================+\n",
+ "| Abbing, Mr. Anthony | 0 |\n",
+ "| Abbott, Master. Eugene Joseph | 0 |\n",
+ "| Abbott, Mr. Rossmore Edward | 0 |\n",
+ "| Abbott, Mrs. Stanton (Rosa Hun… | 1 |\n",
+ "| Abelseth, Miss. Karen Marie | 1 |\n",
+ "| Abelseth, Mr. Olaus Jorgensen | 1 |\n",
+ "| Abelson, Mr. Samuel | 0 |\n",
+ "| Abelson, Mrs. Samuel (Hannah W… | 1 |\n",
+ "| Abrahamsson, Mr. Abraham Augus… | 1 |\n",
+ "| Abrahim, Mrs. Joseph (Sophie H… | 1 |\n",
+ "+---------------------------------+----------+"
+ ]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
- "execution_count": 6
+ "source": [
+ "titanic_slice.remove_columns_except([\"name\", \"survived\"])"
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {
+ "collapsed": false
+ },
"source": [
"## Process data\n",
"\n",
"1. Filter rows with a given query:"
- ],
- "metadata": {
- "collapsed": false
- }
+ ]
},
{
"cell_type": "code",
- "source": [
- "titanic.remove_rows(\n",
- " lambda row: row.get_value(\"age\") < 1\n",
- ")"
- ],
+ "execution_count": 7,
"metadata": {
- "collapsed": false,
"ExecuteTime": {
"end_time": "2024-05-24T11:02:33.502602800Z",
"start_time": "2024-05-24T11:02:33.446034800Z"
- }
+ },
+ "collapsed": false
},
"outputs": [
{
"data": {
- "text/plain": "+------+---------------------+--------+----------+---+----------+-------+---------------+----------+\n| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n| --- | --- | --- | --- | | --- | --- | --- | --- |\n| i64 | str | str | f64 | | f64 | str | str | i64 |\n+==================================================================================================+\n| 0 | Abbing, Mr. Anthony | male | 42.00000 | … | 7.55000 | null | Southampton | 0 |\n| 1 | Abbott, Master. | male | 13.00000 | … | 20.25000 | null | Southampton | 0 |\n| | Eugene Joseph | | | | | | | |\n| 2 | Abbott, Mr. | male | 16.00000 | … | 20.25000 | null | Southampton | 0 |\n| | Rossmore Edward | | | | | | | |\n| 3 | Abbott, Mrs. | female | 35.00000 | … | 20.25000 | null | Southampton | 1 |\n| | Stanton (Rosa Hun… | | | | | | | |\n| 4 | Abelseth, Miss. | female | 16.00000 | … | 7.65000 | null | Southampton | 1 |\n| | Karen Marie | | | | | | | |\n| … | … | … | … | … | … | … | … | … |\n| 1303 | Yrois, Miss. | female | 24.00000 | … | 13.00000 | null | Southampton | 0 |\n| | Henriette ('Mrs H… | | | | | | | |\n| 1304 | Zabour, Miss. | female | 14.50000 | … | 14.45420 | null | Cherbourg | 0 |\n| | Hileni | | | | | | | |\n| 1306 | Zakarian, Mr. | male | 26.50000 | … | 7.22500 | null | Cherbourg | 0 |\n| | Mapriededer | | | | | | | |\n| 1307 | Zakarian, Mr. Ortin | male | 27.00000 | … | 7.22500 | null | Cherbourg | 0 |\n| 1308 | Zimmerman, Mr. Leo | male | 29.00000 | … | 7.87500 | null | Southampton | 0 |\n+------+---------------------+--------+----------+---+----------+-------+---------------+----------+",
- "text/html": "\n
shape: (1_034, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | str | f64 | i64 | i64 | str | i64 | f64 | str | str | i64 |
0 | "Abbing, Mr. Anthony" | "male" | 42.0 | 0 | 0 | "C.A. 5547" | 3 | 7.55 | null | "Southampton" | 0 |
1 | "Abbott, Master. Eugene Joseph" | "male" | 13.0 | 0 | 2 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
2 | "Abbott, Mr. Rossmore Edward" | "male" | 16.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | "female" | 35.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 1 |
4 | "Abelseth, Miss. Karen Marie" | "female" | 16.0 | 0 | 0 | "348125" | 3 | 7.65 | null | "Southampton" | 1 |
… | … | … | … | … | … | … | … | … | … | … | … |
1303 | "Yrois, Miss. Henriette ('Mrs H… | "female" | 24.0 | 0 | 0 | "248747" | 2 | 13.0 | null | "Southampton" | 0 |
1304 | "Zabour, Miss. Hileni" | "female" | 14.5 | 1 | 0 | "2665" | 3 | 14.4542 | null | "Cherbourg" | 0 |
1306 | "Zakarian, Mr. Mapriededer" | "male" | 26.5 | 0 | 0 | "2656" | 3 | 7.225 | null | "Cherbourg" | 0 |
1307 | "Zakarian, Mr. Ortin" | "male" | 27.0 | 0 | 0 | "2670" | 3 | 7.225 | null | "Cherbourg" | 0 |
1308 | "Zimmerman, Mr. Leo" | "male" | 29.0 | 0 | 0 | "315082" | 3 | 7.875 | null | "Southampton" | 0 |
"
+ "text/html": [
+ "\n",
+ "
shape: (1_034, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | str | f64 | i64 | i64 | str | i64 | f64 | str | str | i64 |
0 | "Abbing, Mr. Anthony" | "male" | 42.0 | 0 | 0 | "C.A. 5547" | 3 | 7.55 | null | "Southampton" | 0 |
1 | "Abbott, Master. Eugene Joseph" | "male" | 13.0 | 0 | 2 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
2 | "Abbott, Mr. Rossmore Edward" | "male" | 16.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | "female" | 35.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 1 |
4 | "Abelseth, Miss. Karen Marie" | "female" | 16.0 | 0 | 0 | "348125" | 3 | 7.65 | null | "Southampton" | 1 |
… | … | … | … | … | … | … | … | … | … | … | … |
1303 | "Yrois, Miss. Henriette ('Mrs H… | "female" | 24.0 | 0 | 0 | "248747" | 2 | 13.0 | null | "Southampton" | 0 |
1304 | "Zabour, Miss. Hileni" | "female" | 14.5 | 1 | 0 | "2665" | 3 | 14.4542 | null | "Cherbourg" | 0 |
1306 | "Zakarian, Mr. Mapriededer" | "male" | 26.5 | 0 | 0 | "2656" | 3 | 7.225 | null | "Cherbourg" | 0 |
1307 | "Zakarian, Mr. Ortin" | "male" | 27.0 | 0 | 0 | "2670" | 3 | 7.225 | null | "Cherbourg" | 0 |
1308 | "Zimmerman, Mr. Leo" | "male" | 29.0 | 0 | 0 | "315082" | 3 | 7.875 | null | "Southampton" | 0 |
"
+ ],
+ "text/plain": [
+ "+------+---------------------+--------+----------+---+----------+-------+---------------+----------+\n",
+ "| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n",
+ "| --- | --- | --- | --- | | --- | --- | --- | --- |\n",
+ "| i64 | str | str | f64 | | f64 | str | str | i64 |\n",
+ "+==================================================================================================+\n",
+ "| 0 | Abbing, Mr. Anthony | male | 42.00000 | … | 7.55000 | null | Southampton | 0 |\n",
+ "| 1 | Abbott, Master. | male | 13.00000 | … | 20.25000 | null | Southampton | 0 |\n",
+ "| | Eugene Joseph | | | | | | | |\n",
+ "| 2 | Abbott, Mr. | male | 16.00000 | … | 20.25000 | null | Southampton | 0 |\n",
+ "| | Rossmore Edward | | | | | | | |\n",
+ "| 3 | Abbott, Mrs. | female | 35.00000 | … | 20.25000 | null | Southampton | 1 |\n",
+ "| | Stanton (Rosa Hun… | | | | | | | |\n",
+ "| 4 | Abelseth, Miss. | female | 16.00000 | … | 7.65000 | null | Southampton | 1 |\n",
+ "| | Karen Marie | | | | | | | |\n",
+ "| … | … | … | … | … | … | … | … | … |\n",
+ "| 1303 | Yrois, Miss. | female | 24.00000 | … | 13.00000 | null | Southampton | 0 |\n",
+ "| | Henriette ('Mrs H… | | | | | | | |\n",
+ "| 1304 | Zabour, Miss. | female | 14.50000 | … | 14.45420 | null | Cherbourg | 0 |\n",
+ "| | Hileni | | | | | | | |\n",
+ "| 1306 | Zakarian, Mr. | male | 26.50000 | … | 7.22500 | null | Cherbourg | 0 |\n",
+ "| | Mapriededer | | | | | | | |\n",
+ "| 1307 | Zakarian, Mr. Ortin | male | 27.00000 | … | 7.22500 | null | Cherbourg | 0 |\n",
+ "| 1308 | Zimmerman, Mr. Leo | male | 29.00000 | … | 7.87500 | null | Southampton | 0 |\n",
+ "+------+---------------------+--------+----------+---+----------+-------+---------------+----------+"
+ ]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
- "execution_count": 7
+ "source": [
+ "titanic.remove_rows(\n",
+ " lambda row: row.get_value(\"age\") < 1\n",
+ ")"
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {
+ "collapsed": false
+ },
"source": [
"## Transform table\n",
"1. Transform table using `Imputer`. `Imputer`s replace missing values with other values (e.g. a constant, the mean or the median of the column etc.) depending on the chosen startegy, for example, the following `Imputer` will replace missing values in the given columns of the table with the constant 0:"
- ],
- "metadata": {
- "collapsed": false
- }
+ ]
},
{
"cell_type": "code",
- "source": [
- "from safeds.data.tabular.transformation import SimpleImputer\n",
- "\n",
- "imputer = SimpleImputer(SimpleImputer.Strategy.constant(0), column_names=[\"age\", \"fare\", \"cabin\", \"port_embarked\"]).fit(titanic)\n",
- "imputer.transform(titanic_slice)"
- ],
+ "execution_count": 8,
"metadata": {
- "collapsed": false,
"ExecuteTime": {
"end_time": "2024-05-24T11:02:33.520628800Z",
"start_time": "2024-05-24T11:02:33.453086900Z"
- }
+ },
+ "collapsed": false
},
"outputs": [
{
"data": {
- "text/plain": "+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+\n| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n| --- | --- | --- | --- | | --- | --- | --- | --- |\n| i64 | str | str | f64 | | f64 | str | str | i64 |\n+==================================================================================================+\n| 0 | Abbing, Mr. Anthony | male | 42.00000 | … | 7.55000 | 0 | Southampton | 0 |\n| 1 | Abbott, Master. | male | 13.00000 | … | 20.25000 | 0 | Southampton | 0 |\n| | Eugene Joseph | | | | | | | |\n| 2 | Abbott, Mr. Rossmore | male | 16.00000 | … | 20.25000 | 0 | Southampton | 0 |\n| | Edward | | | | | | | |\n| 3 | Abbott, Mrs. Stanton | female | 35.00000 | … | 20.25000 | 0 | Southampton | 1 |\n| | (Rosa Hun… | | | | | | | |\n| 4 | Abelseth, Miss. | female | 16.00000 | … | 7.65000 | 0 | Southampton | 1 |\n| | Karen Marie | | | | | | | |\n| 5 | Abelseth, Mr. Olaus | male | 25.00000 | … | 7.65000 | F G63 | Southampton | 1 |\n| | Jorgensen | | | | | | | |\n| 6 | Abelson, Mr. Samuel | male | 30.00000 | … | 24.00000 | 0 | Cherbourg | 0 |\n| 7 | Abelson, Mrs. Samuel | female | 28.00000 | … | 24.00000 | 0 | Cherbourg | 1 |\n| | (Hannah W… | | | | | | | |\n| 8 | Abrahamsson, Mr. | male | 20.00000 | … | 7.92500 | 0 | Southampton | 1 |\n| | Abraham Augus… | | | | | | | |\n| 9 | Abrahim, Mrs. Joseph | female | 18.00000 | … | 7.22920 | 0 | Cherbourg | 1 |\n| | (Sophie H… | | | | | | | |\n+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+",
- "text/html": "\n
shape: (10, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | str | f64 | i64 | i64 | str | i64 | f64 | str | str | i64 |
0 | "Abbing, Mr. Anthony" | "male" | 42.0 | 0 | 0 | "C.A. 5547" | 3 | 7.55 | "0" | "Southampton" | 0 |
1 | "Abbott, Master. Eugene Joseph" | "male" | 13.0 | 0 | 2 | "C.A. 2673" | 3 | 20.25 | "0" | "Southampton" | 0 |
2 | "Abbott, Mr. Rossmore Edward" | "male" | 16.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | "0" | "Southampton" | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | "female" | 35.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | "0" | "Southampton" | 1 |
4 | "Abelseth, Miss. Karen Marie" | "female" | 16.0 | 0 | 0 | "348125" | 3 | 7.65 | "0" | "Southampton" | 1 |
5 | "Abelseth, Mr. Olaus Jorgensen" | "male" | 25.0 | 0 | 0 | "348122" | 3 | 7.65 | "F G63" | "Southampton" | 1 |
6 | "Abelson, Mr. Samuel" | "male" | 30.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | "0" | "Cherbourg" | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | "female" | 28.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | "0" | "Cherbourg" | 1 |
8 | "Abrahamsson, Mr. Abraham Augus… | "male" | 20.0 | 0 | 0 | "SOTON/O2 3101284" | 3 | 7.925 | "0" | "Southampton" | 1 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | "female" | 18.0 | 0 | 0 | "2657" | 3 | 7.2292 | "0" | "Cherbourg" | 1 |
"
+ "text/html": [
+ "\n",
+ "
shape: (10, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | str | f64 | i64 | i64 | str | i64 | f64 | str | str | i64 |
0 | "Abbing, Mr. Anthony" | "male" | 42.0 | 0 | 0 | "C.A. 5547" | 3 | 7.55 | "0" | "Southampton" | 0 |
1 | "Abbott, Master. Eugene Joseph" | "male" | 13.0 | 0 | 2 | "C.A. 2673" | 3 | 20.25 | "0" | "Southampton" | 0 |
2 | "Abbott, Mr. Rossmore Edward" | "male" | 16.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | "0" | "Southampton" | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | "female" | 35.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | "0" | "Southampton" | 1 |
4 | "Abelseth, Miss. Karen Marie" | "female" | 16.0 | 0 | 0 | "348125" | 3 | 7.65 | "0" | "Southampton" | 1 |
5 | "Abelseth, Mr. Olaus Jorgensen" | "male" | 25.0 | 0 | 0 | "348122" | 3 | 7.65 | "F G63" | "Southampton" | 1 |
6 | "Abelson, Mr. Samuel" | "male" | 30.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | "0" | "Cherbourg" | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | "female" | 28.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | "0" | "Cherbourg" | 1 |
8 | "Abrahamsson, Mr. Abraham Augus… | "male" | 20.0 | 0 | 0 | "SOTON/O2 3101284" | 3 | 7.925 | "0" | "Southampton" | 1 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | "female" | 18.0 | 0 | 0 | "2657" | 3 | 7.2292 | "0" | "Cherbourg" | 1 |
"
+ ],
+ "text/plain": [
+ "+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+\n",
+ "| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n",
+ "| --- | --- | --- | --- | | --- | --- | --- | --- |\n",
+ "| i64 | str | str | f64 | | f64 | str | str | i64 |\n",
+ "+==================================================================================================+\n",
+ "| 0 | Abbing, Mr. Anthony | male | 42.00000 | … | 7.55000 | 0 | Southampton | 0 |\n",
+ "| 1 | Abbott, Master. | male | 13.00000 | … | 20.25000 | 0 | Southampton | 0 |\n",
+ "| | Eugene Joseph | | | | | | | |\n",
+ "| 2 | Abbott, Mr. Rossmore | male | 16.00000 | … | 20.25000 | 0 | Southampton | 0 |\n",
+ "| | Edward | | | | | | | |\n",
+ "| 3 | Abbott, Mrs. Stanton | female | 35.00000 | … | 20.25000 | 0 | Southampton | 1 |\n",
+ "| | (Rosa Hun… | | | | | | | |\n",
+ "| 4 | Abelseth, Miss. | female | 16.00000 | … | 7.65000 | 0 | Southampton | 1 |\n",
+ "| | Karen Marie | | | | | | | |\n",
+ "| 5 | Abelseth, Mr. Olaus | male | 25.00000 | … | 7.65000 | F G63 | Southampton | 1 |\n",
+ "| | Jorgensen | | | | | | | |\n",
+ "| 6 | Abelson, Mr. Samuel | male | 30.00000 | … | 24.00000 | 0 | Cherbourg | 0 |\n",
+ "| 7 | Abelson, Mrs. Samuel | female | 28.00000 | … | 24.00000 | 0 | Cherbourg | 1 |\n",
+ "| | (Hannah W… | | | | | | | |\n",
+ "| 8 | Abrahamsson, Mr. | male | 20.00000 | … | 7.92500 | 0 | Southampton | 1 |\n",
+ "| | Abraham Augus… | | | | | | | |\n",
+ "| 9 | Abrahim, Mrs. Joseph | female | 18.00000 | … | 7.22920 | 0 | Cherbourg | 1 |\n",
+ "| | (Sophie H… | | | | | | | |\n",
+ "+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+"
+ ]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
- "execution_count": 8
+ "source": [
+ "from safeds.data.tabular.transformation import SimpleImputer\n",
+ "\n",
+ "imputer = SimpleImputer(SimpleImputer.Strategy.constant(0), column_names=[\"age\", \"fare\", \"cabin\", \"port_embarked\"]).fit(titanic)\n",
+ "imputer.transform(titanic_slice)"
+ ]
},
{
"cell_type": "markdown",
- "source": [
- "2. Transform table using `LabelEncoder`, this will encode categorical features in the chosen `Column`s as integers:"
- ],
"metadata": {
"collapsed": false
- }
+ },
+ "source": [
+ "2. Transform table using `LabelEncoder`, this will encode categorical features in the chosen `Column`s as integers:"
+ ]
},
{
"cell_type": "code",
- "source": [
- "from safeds.data.tabular.transformation import LabelEncoder\n",
- "\n",
- "encoder = LabelEncoder(column_names=[\"sex\", \"port_embarked\"]).fit(titanic)\n",
- "encoder.transform(titanic_slice)"
- ],
+ "execution_count": 9,
"metadata": {
- "collapsed": false,
"ExecuteTime": {
"end_time": "2024-05-24T11:02:33.584654300Z",
"start_time": "2024-05-24T11:02:33.461597400Z"
- }
+ },
+ "collapsed": false
},
"outputs": [
{
"data": {
- "text/plain": "+-----+-------------------------+-----+----------+---+----------+-------+---------------+----------+\n| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n| --- | --- | --- | --- | | --- | --- | --- | --- |\n| i64 | str | u32 | f64 | | f64 | str | u32 | i64 |\n+==================================================================================================+\n| 0 | Abbing, Mr. Anthony | 0 | 42.00000 | … | 7.55000 | null | 0 | 0 |\n| 1 | Abbott, Master. Eugene | 0 | 13.00000 | … | 20.25000 | null | 0 | 0 |\n| | Joseph | | | | | | | |\n| 2 | Abbott, Mr. Rossmore | 0 | 16.00000 | … | 20.25000 | null | 0 | 0 |\n| | Edward | | | | | | | |\n| 3 | Abbott, Mrs. Stanton | 1 | 35.00000 | … | 20.25000 | null | 0 | 1 |\n| | (Rosa Hun… | | | | | | | |\n| 4 | Abelseth, Miss. Karen | 1 | 16.00000 | … | 7.65000 | null | 0 | 1 |\n| | Marie | | | | | | | |\n| 5 | Abelseth, Mr. Olaus | 0 | 25.00000 | … | 7.65000 | F G63 | 0 | 1 |\n| | Jorgensen | | | | | | | |\n| 6 | Abelson, Mr. Samuel | 0 | 30.00000 | … | 24.00000 | null | 1 | 0 |\n| 7 | Abelson, Mrs. Samuel | 1 | 28.00000 | … | 24.00000 | null | 1 | 1 |\n| | (Hannah W… | | | | | | | |\n| 8 | Abrahamsson, Mr. | 0 | 20.00000 | … | 7.92500 | null | 0 | 1 |\n| | Abraham Augus… | | | | | | | |\n| 9 | Abrahim, Mrs. Joseph | 1 | 18.00000 | … | 7.22920 | null | 1 | 1 |\n| | (Sophie H… | | | | | | | |\n+-----+-------------------------+-----+----------+---+----------+-------+---------------+----------+",
- "text/html": "\n
shape: (10, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | u32 | f64 | i64 | i64 | str | i64 | f64 | str | u32 | i64 |
0 | "Abbing, Mr. Anthony" | 0 | 42.0 | 0 | 0 | "C.A. 5547" | 3 | 7.55 | null | 0 | 0 |
1 | "Abbott, Master. Eugene Joseph" | 0 | 13.0 | 0 | 2 | "C.A. 2673" | 3 | 20.25 | null | 0 | 0 |
2 | "Abbott, Mr. Rossmore Edward" | 0 | 16.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | 0 | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | 1 | 35.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | 0 | 1 |
4 | "Abelseth, Miss. Karen Marie" | 1 | 16.0 | 0 | 0 | "348125" | 3 | 7.65 | null | 0 | 1 |
5 | "Abelseth, Mr. Olaus Jorgensen" | 0 | 25.0 | 0 | 0 | "348122" | 3 | 7.65 | "F G63" | 0 | 1 |
6 | "Abelson, Mr. Samuel" | 0 | 30.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | 1 | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | 1 | 28.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | 1 | 1 |
8 | "Abrahamsson, Mr. Abraham Augus… | 0 | 20.0 | 0 | 0 | "SOTON/O2 3101284" | 3 | 7.925 | null | 0 | 1 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | 1 | 18.0 | 0 | 0 | "2657" | 3 | 7.2292 | null | 1 | 1 |
"
+ "text/html": [
+ "\n",
+ "
shape: (10, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | u32 | f64 | i64 | i64 | str | i64 | f64 | str | u32 | i64 |
0 | "Abbing, Mr. Anthony" | 0 | 42.0 | 0 | 0 | "C.A. 5547" | 3 | 7.55 | null | 0 | 0 |
1 | "Abbott, Master. Eugene Joseph" | 0 | 13.0 | 0 | 2 | "C.A. 2673" | 3 | 20.25 | null | 0 | 0 |
2 | "Abbott, Mr. Rossmore Edward" | 0 | 16.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | 0 | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | 1 | 35.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | 0 | 1 |
4 | "Abelseth, Miss. Karen Marie" | 1 | 16.0 | 0 | 0 | "348125" | 3 | 7.65 | null | 0 | 1 |
5 | "Abelseth, Mr. Olaus Jorgensen" | 0 | 25.0 | 0 | 0 | "348122" | 3 | 7.65 | "F G63" | 0 | 1 |
6 | "Abelson, Mr. Samuel" | 0 | 30.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | 1 | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | 1 | 28.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | 1 | 1 |
8 | "Abrahamsson, Mr. Abraham Augus… | 0 | 20.0 | 0 | 0 | "SOTON/O2 3101284" | 3 | 7.925 | null | 0 | 1 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | 1 | 18.0 | 0 | 0 | "2657" | 3 | 7.2292 | null | 1 | 1 |
"
+ ],
+ "text/plain": [
+ "+-----+-------------------------+-----+----------+---+----------+-------+---------------+----------+\n",
+ "| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n",
+ "| --- | --- | --- | --- | | --- | --- | --- | --- |\n",
+ "| i64 | str | u32 | f64 | | f64 | str | u32 | i64 |\n",
+ "+==================================================================================================+\n",
+ "| 0 | Abbing, Mr. Anthony | 0 | 42.00000 | … | 7.55000 | null | 0 | 0 |\n",
+ "| 1 | Abbott, Master. Eugene | 0 | 13.00000 | … | 20.25000 | null | 0 | 0 |\n",
+ "| | Joseph | | | | | | | |\n",
+ "| 2 | Abbott, Mr. Rossmore | 0 | 16.00000 | … | 20.25000 | null | 0 | 0 |\n",
+ "| | Edward | | | | | | | |\n",
+ "| 3 | Abbott, Mrs. Stanton | 1 | 35.00000 | … | 20.25000 | null | 0 | 1 |\n",
+ "| | (Rosa Hun… | | | | | | | |\n",
+ "| 4 | Abelseth, Miss. Karen | 1 | 16.00000 | … | 7.65000 | null | 0 | 1 |\n",
+ "| | Marie | | | | | | | |\n",
+ "| 5 | Abelseth, Mr. Olaus | 0 | 25.00000 | … | 7.65000 | F G63 | 0 | 1 |\n",
+ "| | Jorgensen | | | | | | | |\n",
+ "| 6 | Abelson, Mr. Samuel | 0 | 30.00000 | … | 24.00000 | null | 1 | 0 |\n",
+ "| 7 | Abelson, Mrs. Samuel | 1 | 28.00000 | … | 24.00000 | null | 1 | 1 |\n",
+ "| | (Hannah W… | | | | | | | |\n",
+ "| 8 | Abrahamsson, Mr. | 0 | 20.00000 | … | 7.92500 | null | 0 | 1 |\n",
+ "| | Abraham Augus… | | | | | | | |\n",
+ "| 9 | Abrahim, Mrs. Joseph | 1 | 18.00000 | … | 7.22920 | null | 1 | 1 |\n",
+ "| | (Sophie H… | | | | | | | |\n",
+ "+-----+-------------------------+-----+----------+---+----------+-------+---------------+----------+"
+ ]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
- "execution_count": 9
+ "source": [
+ "from safeds.data.tabular.transformation import LabelEncoder\n",
+ "\n",
+ "encoder = LabelEncoder(column_names=[\"sex\", \"port_embarked\"]).fit(titanic)\n",
+ "encoder.transform(titanic_slice)"
+ ]
},
{
"cell_type": "markdown",
- "source": [
- "3. Transform table using `OneHotEncoder`, this will create new `Column`s based on unique values in each chosen `Column`:\n"
- ],
"metadata": {
"collapsed": false
- }
+ },
+ "source": [
+ "3. Transform table using `OneHotEncoder`, this will create new `Column`s based on unique values in each chosen `Column`:\n"
+ ]
},
{
"cell_type": "code",
- "source": [
- "from safeds.data.tabular.transformation import OneHotEncoder\n",
- "\n",
- "encoder = OneHotEncoder(column_names=[\"sex\", \"port_embarked\"]).fit(titanic)\n",
- "encoder.transform(titanic_slice)"
- ],
+ "execution_count": 10,
"metadata": {
- "collapsed": false,
"ExecuteTime": {
"end_time": "2024-05-24T11:02:33.597162600Z",
"start_time": "2024-05-24T11:02:33.472105400Z"
- }
+ },
+ "collapsed": false
},
"outputs": [
{
"data": {
- "text/plain": "+-----+------------+----------+------------+---+------------+------------+------------+------------+\n| id | name | age | siblings_s | … | sex__femal | port_embar | port_embar | port_embar |\n| --- | --- | --- | pouses | | e | ked__South | ked__Cherb | ked__Queen |\n| i64 | str | f64 | --- | | --- | ampton | ourg | stown |\n| | | | i64 | | u8 | --- | --- | --- |\n| | | | | | | u8 | u8 | u8 |\n+==================================================================================================+\n| 0 | Abbing, | 42.00000 | 0 | … | 0 | 1 | 0 | 0 |\n| | Mr. | | | | | | | |\n| | Anthony | | | | | | | |\n| 1 | Abbott, | 13.00000 | 0 | … | 0 | 1 | 0 | 0 |\n| | Master. | | | | | | | |\n| | Eugene | | | | | | | |\n| | Joseph | | | | | | | |\n| 2 | Abbott, | 16.00000 | 1 | … | 0 | 1 | 0 | 0 |\n| | Mr. | | | | | | | |\n| | Rossmore | | | | | | | |\n| | Edward | | | | | | | |\n| 3 | Abbott, | 35.00000 | 1 | … | 1 | 1 | 0 | 0 |\n| | Mrs. | | | | | | | |\n| | Stanton | | | | | | | |\n| | (Rosa Hun… | | | | | | | |\n| 4 | Abelseth, | 16.00000 | 0 | … | 1 | 1 | 0 | 0 |\n| | Miss. | | | | | | | |\n| | Karen | | | | | | | |\n| | Marie | | | | | | | |\n| 5 | Abelseth, | 25.00000 | 0 | … | 0 | 1 | 0 | 0 |\n| | Mr. Olaus | | | | | | | |\n| | Jorgensen | | | | | | | |\n| 6 | Abelson, | 30.00000 | 1 | … | 0 | 0 | 1 | 0 |\n| | Mr. Samuel | | | | | | | |\n| 7 | Abelson, | 28.00000 | 1 | … | 1 | 0 | 1 | 0 |\n| | Mrs. | | | | | | | |\n| | Samuel | | | | | | | |\n| | (Hannah W… | | | | | | | |\n| 8 | Abrahamsso | 20.00000 | 0 | … | 0 | 1 | 0 | 0 |\n| | n, Mr. | | | | | | | |\n| | Abraham | | | | | | | |\n| | Augus… | | | | | | | |\n| 9 | Abrahim, | 18.00000 | 0 | … | 1 | 0 | 1 | 0 |\n| | Mrs. | | | | | | | |\n| | Joseph | | | | | | | |\n| | (Sophie H… | | | | | | | |\n+-----+------------+----------+------------+---+------------+------------+------------+------------+",
- "text/html": "\n
shape: (10, 15)id | name | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | survived | sex__male | sex__female | port_embarked__Southampton | port_embarked__Cherbourg | port_embarked__Queenstown |
---|
i64 | str | f64 | i64 | i64 | str | i64 | f64 | str | i64 | u8 | u8 | u8 | u8 | u8 |
0 | "Abbing, Mr. Anthony" | 42.0 | 0 | 0 | "C.A. 5547" | 3 | 7.55 | null | 0 | 1 | 0 | 1 | 0 | 0 |
1 | "Abbott, Master. Eugene Joseph" | 13.0 | 0 | 2 | "C.A. 2673" | 3 | 20.25 | null | 0 | 1 | 0 | 1 | 0 | 0 |
2 | "Abbott, Mr. Rossmore Edward" | 16.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | 0 | 1 | 0 | 1 | 0 | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | 35.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | 1 | 0 | 1 | 1 | 0 | 0 |
4 | "Abelseth, Miss. Karen Marie" | 16.0 | 0 | 0 | "348125" | 3 | 7.65 | null | 1 | 0 | 1 | 1 | 0 | 0 |
5 | "Abelseth, Mr. Olaus Jorgensen" | 25.0 | 0 | 0 | "348122" | 3 | 7.65 | "F G63" | 1 | 1 | 0 | 1 | 0 | 0 |
6 | "Abelson, Mr. Samuel" | 30.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | 0 | 1 | 0 | 0 | 1 | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | 28.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | 1 | 0 | 1 | 0 | 1 | 0 |
8 | "Abrahamsson, Mr. Abraham Augus… | 20.0 | 0 | 0 | "SOTON/O2 3101284" | 3 | 7.925 | null | 1 | 1 | 0 | 1 | 0 | 0 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | 18.0 | 0 | 0 | "2657" | 3 | 7.2292 | null | 1 | 0 | 1 | 0 | 1 | 0 |
"
+ "text/html": [
+ "\n",
+ "
shape: (10, 15)id | name | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | survived | sex__male | sex__female | port_embarked__Southampton | port_embarked__Cherbourg | port_embarked__Queenstown |
---|
i64 | str | f64 | i64 | i64 | str | i64 | f64 | str | i64 | u8 | u8 | u8 | u8 | u8 |
0 | "Abbing, Mr. Anthony" | 42.0 | 0 | 0 | "C.A. 5547" | 3 | 7.55 | null | 0 | 1 | 0 | 1 | 0 | 0 |
1 | "Abbott, Master. Eugene Joseph" | 13.0 | 0 | 2 | "C.A. 2673" | 3 | 20.25 | null | 0 | 1 | 0 | 1 | 0 | 0 |
2 | "Abbott, Mr. Rossmore Edward" | 16.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | 0 | 1 | 0 | 1 | 0 | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | 35.0 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | 1 | 0 | 1 | 1 | 0 | 0 |
4 | "Abelseth, Miss. Karen Marie" | 16.0 | 0 | 0 | "348125" | 3 | 7.65 | null | 1 | 0 | 1 | 1 | 0 | 0 |
5 | "Abelseth, Mr. Olaus Jorgensen" | 25.0 | 0 | 0 | "348122" | 3 | 7.65 | "F G63" | 1 | 1 | 0 | 1 | 0 | 0 |
6 | "Abelson, Mr. Samuel" | 30.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | 0 | 1 | 0 | 0 | 1 | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | 28.0 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | 1 | 0 | 1 | 0 | 1 | 0 |
8 | "Abrahamsson, Mr. Abraham Augus… | 20.0 | 0 | 0 | "SOTON/O2 3101284" | 3 | 7.925 | null | 1 | 1 | 0 | 1 | 0 | 0 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | 18.0 | 0 | 0 | "2657" | 3 | 7.2292 | null | 1 | 0 | 1 | 0 | 1 | 0 |
"
+ ],
+ "text/plain": [
+ "+-----+------------+----------+------------+---+------------+------------+------------+------------+\n",
+ "| id | name | age | siblings_s | … | sex__femal | port_embar | port_embar | port_embar |\n",
+ "| --- | --- | --- | pouses | | e | ked__South | ked__Cherb | ked__Queen |\n",
+ "| i64 | str | f64 | --- | | --- | ampton | ourg | stown |\n",
+ "| | | | i64 | | u8 | --- | --- | --- |\n",
+ "| | | | | | | u8 | u8 | u8 |\n",
+ "+==================================================================================================+\n",
+ "| 0 | Abbing, | 42.00000 | 0 | … | 0 | 1 | 0 | 0 |\n",
+ "| | Mr. | | | | | | | |\n",
+ "| | Anthony | | | | | | | |\n",
+ "| 1 | Abbott, | 13.00000 | 0 | … | 0 | 1 | 0 | 0 |\n",
+ "| | Master. | | | | | | | |\n",
+ "| | Eugene | | | | | | | |\n",
+ "| | Joseph | | | | | | | |\n",
+ "| 2 | Abbott, | 16.00000 | 1 | … | 0 | 1 | 0 | 0 |\n",
+ "| | Mr. | | | | | | | |\n",
+ "| | Rossmore | | | | | | | |\n",
+ "| | Edward | | | | | | | |\n",
+ "| 3 | Abbott, | 35.00000 | 1 | … | 1 | 1 | 0 | 0 |\n",
+ "| | Mrs. | | | | | | | |\n",
+ "| | Stanton | | | | | | | |\n",
+ "| | (Rosa Hun… | | | | | | | |\n",
+ "| 4 | Abelseth, | 16.00000 | 0 | … | 1 | 1 | 0 | 0 |\n",
+ "| | Miss. | | | | | | | |\n",
+ "| | Karen | | | | | | | |\n",
+ "| | Marie | | | | | | | |\n",
+ "| 5 | Abelseth, | 25.00000 | 0 | … | 0 | 1 | 0 | 0 |\n",
+ "| | Mr. Olaus | | | | | | | |\n",
+ "| | Jorgensen | | | | | | | |\n",
+ "| 6 | Abelson, | 30.00000 | 1 | … | 0 | 0 | 1 | 0 |\n",
+ "| | Mr. Samuel | | | | | | | |\n",
+ "| 7 | Abelson, | 28.00000 | 1 | … | 1 | 0 | 1 | 0 |\n",
+ "| | Mrs. | | | | | | | |\n",
+ "| | Samuel | | | | | | | |\n",
+ "| | (Hannah W… | | | | | | | |\n",
+ "| 8 | Abrahamsso | 20.00000 | 0 | … | 0 | 1 | 0 | 0 |\n",
+ "| | n, Mr. | | | | | | | |\n",
+ "| | Abraham | | | | | | | |\n",
+ "| | Augus… | | | | | | | |\n",
+ "| 9 | Abrahim, | 18.00000 | 0 | … | 1 | 0 | 1 | 0 |\n",
+ "| | Mrs. | | | | | | | |\n",
+ "| | Joseph | | | | | | | |\n",
+ "| | (Sophie H… | | | | | | | |\n",
+ "+-----+------------+----------+------------+---+------------+------------+------------+------------+"
+ ]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
- "execution_count": 10
+ "source": [
+ "from safeds.data.tabular.transformation import OneHotEncoder\n",
+ "\n",
+ "encoder = OneHotEncoder(column_names=[\"sex\", \"port_embarked\"]).fit(titanic)\n",
+ "encoder.transform(titanic_slice)"
+ ]
},
{
"cell_type": "markdown",
- "source": [
- " 4. Transform table using `RangeScaler`, this will scale the values in the chosen `Column`s to a given range:"
- ],
"metadata": {
"collapsed": false
- }
+ },
+ "source": [
+ " 4. Transform table using `RangeScaler`, this will scale the values in the chosen `Column`s to a given range:"
+ ]
},
{
"cell_type": "code",
- "source": [
- "from safeds.data.tabular.transformation import RangeScaler\n",
- "\n",
- "scaler = RangeScaler(0.0, 1.0, column_names=\"age\").fit(titanic)\n",
- "scaler.transform(titanic_slice)"
- ],
+ "execution_count": 11,
"metadata": {
- "collapsed": false,
"ExecuteTime": {
"end_time": "2024-05-24T11:02:33.599165800Z",
"start_time": "2024-05-24T11:02:33.479893800Z"
- }
+ },
+ "collapsed": false
},
"outputs": [
{
"data": {
- "text/plain": "+-----+-----------------------+--------+---------+---+----------+-------+---------------+----------+\n| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n| --- | --- | --- | --- | | --- | --- | --- | --- |\n| i64 | str | str | f64 | | f64 | str | str | i64 |\n+==================================================================================================+\n| 0 | Abbing, Mr. Anthony | male | 0.52401 | … | 7.55000 | null | Southampton | 0 |\n| 1 | Abbott, Master. | male | 0.16075 | … | 20.25000 | null | Southampton | 0 |\n| | Eugene Joseph | | | | | | | |\n| 2 | Abbott, Mr. Rossmore | male | 0.19833 | … | 20.25000 | null | Southampton | 0 |\n| | Edward | | | | | | | |\n| 3 | Abbott, Mrs. Stanton | female | 0.43633 | … | 20.25000 | null | Southampton | 1 |\n| | (Rosa Hun… | | | | | | | |\n| 4 | Abelseth, Miss. Karen | female | 0.19833 | … | 7.65000 | null | Southampton | 1 |\n| | Marie | | | | | | | |\n| 5 | Abelseth, Mr. Olaus | male | 0.31106 | … | 7.65000 | F G63 | Southampton | 1 |\n| | Jorgensen | | | | | | | |\n| 6 | Abelson, Mr. Samuel | male | 0.37369 | … | 24.00000 | null | Cherbourg | 0 |\n| 7 | Abelson, Mrs. Samuel | female | 0.34864 | … | 24.00000 | null | Cherbourg | 1 |\n| | (Hannah W… | | | | | | | |\n| 8 | Abrahamsson, Mr. | male | 0.24843 | … | 7.92500 | null | Southampton | 1 |\n| | Abraham Augus… | | | | | | | |\n| 9 | Abrahim, Mrs. Joseph | female | 0.22338 | … | 7.22920 | null | Cherbourg | 1 |\n| | (Sophie H… | | | | | | | |\n+-----+-----------------------+--------+---------+---+----------+-------+---------------+----------+",
- "text/html": "\n
shape: (10, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | str | f64 | i64 | i64 | str | i64 | f64 | str | str | i64 |
0 | "Abbing, Mr. Anthony" | "male" | 0.524008 | 0 | 0 | "C.A. 5547" | 3 | 7.55 | null | "Southampton" | 0 |
1 | "Abbott, Master. Eugene Joseph" | "male" | 0.160751 | 0 | 2 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
2 | "Abbott, Mr. Rossmore Edward" | "male" | 0.19833 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | "female" | 0.436325 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 1 |
4 | "Abelseth, Miss. Karen Marie" | "female" | 0.19833 | 0 | 0 | "348125" | 3 | 7.65 | null | "Southampton" | 1 |
5 | "Abelseth, Mr. Olaus Jorgensen" | "male" | 0.311064 | 0 | 0 | "348122" | 3 | 7.65 | "F G63" | "Southampton" | 1 |
6 | "Abelson, Mr. Samuel" | "male" | 0.373695 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | "Cherbourg" | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | "female" | 0.348643 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | "Cherbourg" | 1 |
8 | "Abrahamsson, Mr. Abraham Augus… | "male" | 0.248434 | 0 | 0 | "SOTON/O2 3101284" | 3 | 7.925 | null | "Southampton" | 1 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | "female" | 0.223382 | 0 | 0 | "2657" | 3 | 7.2292 | null | "Cherbourg" | 1 |
"
+ "text/html": [
+ "\n",
+ "
shape: (10, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | str | f64 | i64 | i64 | str | i64 | f64 | str | str | i64 |
0 | "Abbing, Mr. Anthony" | "male" | 0.524008 | 0 | 0 | "C.A. 5547" | 3 | 7.55 | null | "Southampton" | 0 |
1 | "Abbott, Master. Eugene Joseph" | "male" | 0.160751 | 0 | 2 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
2 | "Abbott, Mr. Rossmore Edward" | "male" | 0.19833 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | "female" | 0.436325 | 1 | 1 | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 1 |
4 | "Abelseth, Miss. Karen Marie" | "female" | 0.19833 | 0 | 0 | "348125" | 3 | 7.65 | null | "Southampton" | 1 |
5 | "Abelseth, Mr. Olaus Jorgensen" | "male" | 0.311064 | 0 | 0 | "348122" | 3 | 7.65 | "F G63" | "Southampton" | 1 |
6 | "Abelson, Mr. Samuel" | "male" | 0.373695 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | "Cherbourg" | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | "female" | 0.348643 | 1 | 0 | "P/PP 3381" | 2 | 24.0 | null | "Cherbourg" | 1 |
8 | "Abrahamsson, Mr. Abraham Augus… | "male" | 0.248434 | 0 | 0 | "SOTON/O2 3101284" | 3 | 7.925 | null | "Southampton" | 1 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | "female" | 0.223382 | 0 | 0 | "2657" | 3 | 7.2292 | null | "Cherbourg" | 1 |
"
+ ],
+ "text/plain": [
+ "+-----+-----------------------+--------+---------+---+----------+-------+---------------+----------+\n",
+ "| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n",
+ "| --- | --- | --- | --- | | --- | --- | --- | --- |\n",
+ "| i64 | str | str | f64 | | f64 | str | str | i64 |\n",
+ "+==================================================================================================+\n",
+ "| 0 | Abbing, Mr. Anthony | male | 0.52401 | … | 7.55000 | null | Southampton | 0 |\n",
+ "| 1 | Abbott, Master. | male | 0.16075 | … | 20.25000 | null | Southampton | 0 |\n",
+ "| | Eugene Joseph | | | | | | | |\n",
+ "| 2 | Abbott, Mr. Rossmore | male | 0.19833 | … | 20.25000 | null | Southampton | 0 |\n",
+ "| | Edward | | | | | | | |\n",
+ "| 3 | Abbott, Mrs. Stanton | female | 0.43633 | … | 20.25000 | null | Southampton | 1 |\n",
+ "| | (Rosa Hun… | | | | | | | |\n",
+ "| 4 | Abelseth, Miss. Karen | female | 0.19833 | … | 7.65000 | null | Southampton | 1 |\n",
+ "| | Marie | | | | | | | |\n",
+ "| 5 | Abelseth, Mr. Olaus | male | 0.31106 | … | 7.65000 | F G63 | Southampton | 1 |\n",
+ "| | Jorgensen | | | | | | | |\n",
+ "| 6 | Abelson, Mr. Samuel | male | 0.37369 | … | 24.00000 | null | Cherbourg | 0 |\n",
+ "| 7 | Abelson, Mrs. Samuel | female | 0.34864 | … | 24.00000 | null | Cherbourg | 1 |\n",
+ "| | (Hannah W… | | | | | | | |\n",
+ "| 8 | Abrahamsson, Mr. | male | 0.24843 | … | 7.92500 | null | Southampton | 1 |\n",
+ "| | Abraham Augus… | | | | | | | |\n",
+ "| 9 | Abrahim, Mrs. Joseph | female | 0.22338 | … | 7.22920 | null | Cherbourg | 1 |\n",
+ "| | (Sophie H… | | | | | | | |\n",
+ "+-----+-----------------------+--------+---------+---+----------+-------+---------------+----------+"
+ ]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
- "execution_count": 11
+ "source": [
+ "from safeds.data.tabular.transformation import RangeScaler\n",
+ "\n",
+ "scaler = RangeScaler(column_names=\"age\", min_=0.0, max_=1.0).fit(titanic)\n",
+ "scaler.transform(titanic_slice)"
+ ]
},
{
"cell_type": "markdown",
- "source": [
- "5. Transform table using `StandardScaler`, this will standardize values of chosen `Column`s:"
- ],
"metadata": {
"collapsed": false
- }
+ },
+ "source": [
+ "5. Transform table using `StandardScaler`, this will standardize values of chosen `Column`s:"
+ ]
},
{
"cell_type": "code",
- "source": [
- "from safeds.data.tabular.transformation import StandardScaler\n",
- "\n",
- "scaler = StandardScaler(column_names=[\"age\", \"travel_class\"]).fit(titanic)\n",
- "scaler.transform(titanic_slice)"
- ],
+ "execution_count": 12,
"metadata": {
- "collapsed": false,
"ExecuteTime": {
"end_time": "2024-05-24T11:02:33.604030100Z",
"start_time": "2024-05-24T11:02:33.486926500Z"
- }
+ },
+ "collapsed": false
},
"outputs": [
{
"data": {
- "text/plain": "+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+\n| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n| --- | --- | --- | --- | | --- | --- | --- | --- |\n| i64 | str | str | f64 | | f64 | str | str | i64 |\n+==================================================================================================+\n| 0 | Abbing, Mr. Anthony | male | 0.84120 | … | 7.55000 | null | Southampton | 0 |\n| 1 | Abbott, Master. | male | -1.17176 | … | 20.25000 | null | Southampton | 0 |\n| | Eugene Joseph | | | | | | | |\n| 2 | Abbott, Mr. Rossmore | male | -0.96353 | … | 20.25000 | null | Southampton | 0 |\n| | Edward | | | | | | | |\n| 3 | Abbott, Mrs. Stanton | female | 0.35531 | … | 20.25000 | null | Southampton | 1 |\n| | (Rosa Hun… | | | | | | | |\n| 4 | Abelseth, Miss. | female | -0.96353 | … | 7.65000 | null | Southampton | 1 |\n| | Karen Marie | | | | | | | |\n| 5 | Abelseth, Mr. Olaus | male | -0.33881 | … | 7.65000 | F G63 | Southampton | 1 |\n| | Jorgensen | | | | | | | |\n| 6 | Abelson, Mr. Samuel | male | 0.00825 | … | 24.00000 | null | Cherbourg | 0 |\n| 7 | Abelson, Mrs. Samuel | female | -0.13057 | … | 24.00000 | null | Cherbourg | 1 |\n| | (Hannah W… | | | | | | | |\n| 8 | Abrahamsson, Mr. | male | -0.68588 | … | 7.92500 | null | Southampton | 1 |\n| | Abraham Augus… | | | | | | | |\n| 9 | Abrahim, Mrs. Joseph | female | -0.82470 | … | 7.22920 | null | Cherbourg | 1 |\n| | (Sophie H… | | | | | | | |\n+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+",
- "text/html": "\n
shape: (10, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | str | f64 | i64 | i64 | str | f64 | f64 | str | str | i64 |
0 | "Abbing, Mr. Anthony" | "male" | 0.841202 | 0 | 0 | "C.A. 5547" | 0.841916 | 7.55 | null | "Southampton" | 0 |
1 | "Abbott, Master. Eugene Joseph" | "male" | -1.171763 | 0 | 2 | "C.A. 2673" | 0.841916 | 20.25 | null | "Southampton" | 0 |
2 | "Abbott, Mr. Rossmore Edward" | "male" | -0.963526 | 1 | 1 | "C.A. 2673" | 0.841916 | 20.25 | null | "Southampton" | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | "female" | 0.355314 | 1 | 1 | "C.A. 2673" | 0.841916 | 20.25 | null | "Southampton" | 1 |
4 | "Abelseth, Miss. Karen Marie" | "female" | -0.963526 | 0 | 0 | "348125" | 0.841916 | 7.65 | null | "Southampton" | 1 |
5 | "Abelseth, Mr. Olaus Jorgensen" | "male" | -0.338812 | 0 | 0 | "348122" | 0.841916 | 7.65 | "F G63" | "Southampton" | 1 |
6 | "Abelson, Mr. Samuel" | "male" | 0.008251 | 1 | 0 | "P/PP 3381" | -0.352091 | 24.0 | null | "Cherbourg" | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | "female" | -0.130574 | 1 | 0 | "P/PP 3381" | -0.352091 | 24.0 | null | "Cherbourg" | 1 |
8 | "Abrahamsson, Mr. Abraham Augus… | "male" | -0.685875 | 0 | 0 | "SOTON/O2 3101284" | 0.841916 | 7.925 | null | "Southampton" | 1 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | "female" | -0.8247 | 0 | 0 | "2657" | 0.841916 | 7.2292 | null | "Cherbourg" | 1 |
"
+ "text/html": [
+ "\n",
+ "
shape: (10, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | str | f64 | i64 | i64 | str | f64 | f64 | str | str | i64 |
0 | "Abbing, Mr. Anthony" | "male" | 0.841202 | 0 | 0 | "C.A. 5547" | 0.841916 | 7.55 | null | "Southampton" | 0 |
1 | "Abbott, Master. Eugene Joseph" | "male" | -1.171763 | 0 | 2 | "C.A. 2673" | 0.841916 | 20.25 | null | "Southampton" | 0 |
2 | "Abbott, Mr. Rossmore Edward" | "male" | -0.963526 | 1 | 1 | "C.A. 2673" | 0.841916 | 20.25 | null | "Southampton" | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | "female" | 0.355314 | 1 | 1 | "C.A. 2673" | 0.841916 | 20.25 | null | "Southampton" | 1 |
4 | "Abelseth, Miss. Karen Marie" | "female" | -0.963526 | 0 | 0 | "348125" | 0.841916 | 7.65 | null | "Southampton" | 1 |
5 | "Abelseth, Mr. Olaus Jorgensen" | "male" | -0.338812 | 0 | 0 | "348122" | 0.841916 | 7.65 | "F G63" | "Southampton" | 1 |
6 | "Abelson, Mr. Samuel" | "male" | 0.008251 | 1 | 0 | "P/PP 3381" | -0.352091 | 24.0 | null | "Cherbourg" | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | "female" | -0.130574 | 1 | 0 | "P/PP 3381" | -0.352091 | 24.0 | null | "Cherbourg" | 1 |
8 | "Abrahamsson, Mr. Abraham Augus… | "male" | -0.685875 | 0 | 0 | "SOTON/O2 3101284" | 0.841916 | 7.925 | null | "Southampton" | 1 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | "female" | -0.8247 | 0 | 0 | "2657" | 0.841916 | 7.2292 | null | "Cherbourg" | 1 |
"
+ ],
+ "text/plain": [
+ "+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+\n",
+ "| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n",
+ "| --- | --- | --- | --- | | --- | --- | --- | --- |\n",
+ "| i64 | str | str | f64 | | f64 | str | str | i64 |\n",
+ "+==================================================================================================+\n",
+ "| 0 | Abbing, Mr. Anthony | male | 0.84120 | … | 7.55000 | null | Southampton | 0 |\n",
+ "| 1 | Abbott, Master. | male | -1.17176 | … | 20.25000 | null | Southampton | 0 |\n",
+ "| | Eugene Joseph | | | | | | | |\n",
+ "| 2 | Abbott, Mr. Rossmore | male | -0.96353 | … | 20.25000 | null | Southampton | 0 |\n",
+ "| | Edward | | | | | | | |\n",
+ "| 3 | Abbott, Mrs. Stanton | female | 0.35531 | … | 20.25000 | null | Southampton | 1 |\n",
+ "| | (Rosa Hun… | | | | | | | |\n",
+ "| 4 | Abelseth, Miss. | female | -0.96353 | … | 7.65000 | null | Southampton | 1 |\n",
+ "| | Karen Marie | | | | | | | |\n",
+ "| 5 | Abelseth, Mr. Olaus | male | -0.33881 | … | 7.65000 | F G63 | Southampton | 1 |\n",
+ "| | Jorgensen | | | | | | | |\n",
+ "| 6 | Abelson, Mr. Samuel | male | 0.00825 | … | 24.00000 | null | Cherbourg | 0 |\n",
+ "| 7 | Abelson, Mrs. Samuel | female | -0.13057 | … | 24.00000 | null | Cherbourg | 1 |\n",
+ "| | (Hannah W… | | | | | | | |\n",
+ "| 8 | Abrahamsson, Mr. | male | -0.68588 | … | 7.92500 | null | Southampton | 1 |\n",
+ "| | Abraham Augus… | | | | | | | |\n",
+ "| 9 | Abrahim, Mrs. Joseph | female | -0.82470 | … | 7.22920 | null | Cherbourg | 1 |\n",
+ "| | (Sophie H… | | | | | | | |\n",
+ "+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+"
+ ]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
- "execution_count": 12
+ "source": [
+ "from safeds.data.tabular.transformation import StandardScaler\n",
+ "\n",
+ "scaler = StandardScaler(column_names=[\"age\", \"travel_class\"]).fit(titanic)\n",
+ "scaler.transform(titanic_slice)"
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {
+ "collapsed": false
+ },
"source": [
"## Transform column\n",
"\n",
"1. Transform values of \"parents_children\" `Column` into true or false, depending on whether passenger travelled with parents or children:"
- ],
- "metadata": {
- "collapsed": false
- }
+ ]
},
{
"cell_type": "code",
- "source": [
- "titanic_slice.transform_column(\"parents_children\", lambda cell: cell > 0)"
- ],
+ "execution_count": 13,
"metadata": {
- "collapsed": false,
"ExecuteTime": {
"end_time": "2024-05-24T11:02:33.615541800Z",
"start_time": "2024-05-24T11:02:33.494976800Z"
- }
+ },
+ "collapsed": false
},
"outputs": [
{
"data": {
- "text/plain": "+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+\n| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n| --- | --- | --- | --- | | --- | --- | --- | --- |\n| i64 | str | str | f64 | | f64 | str | str | i64 |\n+==================================================================================================+\n| 0 | Abbing, Mr. Anthony | male | 42.00000 | … | 7.55000 | null | Southampton | 0 |\n| 1 | Abbott, Master. | male | 13.00000 | … | 20.25000 | null | Southampton | 0 |\n| | Eugene Joseph | | | | | | | |\n| 2 | Abbott, Mr. Rossmore | male | 16.00000 | … | 20.25000 | null | Southampton | 0 |\n| | Edward | | | | | | | |\n| 3 | Abbott, Mrs. Stanton | female | 35.00000 | … | 20.25000 | null | Southampton | 1 |\n| | (Rosa Hun… | | | | | | | |\n| 4 | Abelseth, Miss. | female | 16.00000 | … | 7.65000 | null | Southampton | 1 |\n| | Karen Marie | | | | | | | |\n| 5 | Abelseth, Mr. Olaus | male | 25.00000 | … | 7.65000 | F G63 | Southampton | 1 |\n| | Jorgensen | | | | | | | |\n| 6 | Abelson, Mr. Samuel | male | 30.00000 | … | 24.00000 | null | Cherbourg | 0 |\n| 7 | Abelson, Mrs. Samuel | female | 28.00000 | … | 24.00000 | null | Cherbourg | 1 |\n| | (Hannah W… | | | | | | | |\n| 8 | Abrahamsson, Mr. | male | 20.00000 | … | 7.92500 | null | Southampton | 1 |\n| | Abraham Augus… | | | | | | | |\n| 9 | Abrahim, Mrs. Joseph | female | 18.00000 | … | 7.22920 | null | Cherbourg | 1 |\n| | (Sophie H… | | | | | | | |\n+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+",
- "text/html": "\n
shape: (10, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | str | f64 | i64 | bool | str | i64 | f64 | str | str | i64 |
0 | "Abbing, Mr. Anthony" | "male" | 42.0 | 0 | false | "C.A. 5547" | 3 | 7.55 | null | "Southampton" | 0 |
1 | "Abbott, Master. Eugene Joseph" | "male" | 13.0 | 0 | true | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
2 | "Abbott, Mr. Rossmore Edward" | "male" | 16.0 | 1 | true | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | "female" | 35.0 | 1 | true | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 1 |
4 | "Abelseth, Miss. Karen Marie" | "female" | 16.0 | 0 | false | "348125" | 3 | 7.65 | null | "Southampton" | 1 |
5 | "Abelseth, Mr. Olaus Jorgensen" | "male" | 25.0 | 0 | false | "348122" | 3 | 7.65 | "F G63" | "Southampton" | 1 |
6 | "Abelson, Mr. Samuel" | "male" | 30.0 | 1 | false | "P/PP 3381" | 2 | 24.0 | null | "Cherbourg" | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | "female" | 28.0 | 1 | false | "P/PP 3381" | 2 | 24.0 | null | "Cherbourg" | 1 |
8 | "Abrahamsson, Mr. Abraham Augus… | "male" | 20.0 | 0 | false | "SOTON/O2 3101284" | 3 | 7.925 | null | "Southampton" | 1 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | "female" | 18.0 | 0 | false | "2657" | 3 | 7.2292 | null | "Cherbourg" | 1 |
"
+ "text/html": [
+ "\n",
+ "
shape: (10, 12)id | name | sex | age | siblings_spouses | parents_children | ticket | travel_class | fare | cabin | port_embarked | survived |
---|
i64 | str | str | f64 | i64 | bool | str | i64 | f64 | str | str | i64 |
0 | "Abbing, Mr. Anthony" | "male" | 42.0 | 0 | false | "C.A. 5547" | 3 | 7.55 | null | "Southampton" | 0 |
1 | "Abbott, Master. Eugene Joseph" | "male" | 13.0 | 0 | true | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
2 | "Abbott, Mr. Rossmore Edward" | "male" | 16.0 | 1 | true | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 0 |
3 | "Abbott, Mrs. Stanton (Rosa Hun… | "female" | 35.0 | 1 | true | "C.A. 2673" | 3 | 20.25 | null | "Southampton" | 1 |
4 | "Abelseth, Miss. Karen Marie" | "female" | 16.0 | 0 | false | "348125" | 3 | 7.65 | null | "Southampton" | 1 |
5 | "Abelseth, Mr. Olaus Jorgensen" | "male" | 25.0 | 0 | false | "348122" | 3 | 7.65 | "F G63" | "Southampton" | 1 |
6 | "Abelson, Mr. Samuel" | "male" | 30.0 | 1 | false | "P/PP 3381" | 2 | 24.0 | null | "Cherbourg" | 0 |
7 | "Abelson, Mrs. Samuel (Hannah W… | "female" | 28.0 | 1 | false | "P/PP 3381" | 2 | 24.0 | null | "Cherbourg" | 1 |
8 | "Abrahamsson, Mr. Abraham Augus… | "male" | 20.0 | 0 | false | "SOTON/O2 3101284" | 3 | 7.925 | null | "Southampton" | 1 |
9 | "Abrahim, Mrs. Joseph (Sophie H… | "female" | 18.0 | 0 | false | "2657" | 3 | 7.2292 | null | "Cherbourg" | 1 |
"
+ ],
+ "text/plain": [
+ "+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+\n",
+ "| id | name | sex | age | … | fare | cabin | port_embarked | survived |\n",
+ "| --- | --- | --- | --- | | --- | --- | --- | --- |\n",
+ "| i64 | str | str | f64 | | f64 | str | str | i64 |\n",
+ "+==================================================================================================+\n",
+ "| 0 | Abbing, Mr. Anthony | male | 42.00000 | … | 7.55000 | null | Southampton | 0 |\n",
+ "| 1 | Abbott, Master. | male | 13.00000 | … | 20.25000 | null | Southampton | 0 |\n",
+ "| | Eugene Joseph | | | | | | | |\n",
+ "| 2 | Abbott, Mr. Rossmore | male | 16.00000 | … | 20.25000 | null | Southampton | 0 |\n",
+ "| | Edward | | | | | | | |\n",
+ "| 3 | Abbott, Mrs. Stanton | female | 35.00000 | … | 20.25000 | null | Southampton | 1 |\n",
+ "| | (Rosa Hun… | | | | | | | |\n",
+ "| 4 | Abelseth, Miss. | female | 16.00000 | … | 7.65000 | null | Southampton | 1 |\n",
+ "| | Karen Marie | | | | | | | |\n",
+ "| 5 | Abelseth, Mr. Olaus | male | 25.00000 | … | 7.65000 | F G63 | Southampton | 1 |\n",
+ "| | Jorgensen | | | | | | | |\n",
+ "| 6 | Abelson, Mr. Samuel | male | 30.00000 | … | 24.00000 | null | Cherbourg | 0 |\n",
+ "| 7 | Abelson, Mrs. Samuel | female | 28.00000 | … | 24.00000 | null | Cherbourg | 1 |\n",
+ "| | (Hannah W… | | | | | | | |\n",
+ "| 8 | Abrahamsson, Mr. | male | 20.00000 | … | 7.92500 | null | Southampton | 1 |\n",
+ "| | Abraham Augus… | | | | | | | |\n",
+ "| 9 | Abrahim, Mrs. Joseph | female | 18.00000 | … | 7.22920 | null | Cherbourg | 1 |\n",
+ "| | (Sophie H… | | | | | | | |\n",
+ "+-----+----------------------+--------+----------+---+----------+-------+---------------+----------+"
+ ]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
- "execution_count": 13
+ "source": [
+ "titanic_slice.transform_column(\"parents_children\", lambda cell: cell > 0)"
+ ]
}
],
"metadata": {
diff --git a/src/safeds/data/tabular/transformation/_range_scaler.py b/src/safeds/data/tabular/transformation/_range_scaler.py
index c54b60dc8..3a93be88b 100644
--- a/src/safeds/data/tabular/transformation/_range_scaler.py
+++ b/src/safeds/data/tabular/transformation/_range_scaler.py
@@ -37,13 +37,7 @@ class RangeScaler(InvertibleTableTransformer):
# Dunder methods
# ------------------------------------------------------------------------------------------------------------------
- def __init__(
- self,
- min_: float = 0.0,
- max_: float = 1.0,
- *,
- column_names: str | list[str] | None = None,
- ) -> None:
+ def __init__(self, *, column_names: str | list[str] | None = None, min_: float = 0.0, max_: float = 1.0) -> None:
super().__init__(column_names)
if min_ >= max_:
From abcf68a4cf13c4d067dfbb46c69958e0c169e9cc Mon Sep 17 00:00:00 2001
From: Gerhardsa0 <113539440+Gerhardsa0@users.noreply.github.com>
Date: Fri, 21 Jun 2024 13:14:06 +0200
Subject: [PATCH 13/16] feat: add moving average plot (#836)
Closes #XYZ
### Summary of Changes
added moving average plot
---------
Co-authored-by: megalinter-bot <129584137+megalinter-bot@users.noreply.github.com>
---
docs/tutorials/data_visualization.ipynb | 72 ++++++------
.../data/tabular/plotting/_table_plotter.py | 75 +++++++++++++
...st_should_match_snapshot[date grouped].png | Bin 0 -> 23768 bytes
.../test_should_match_snapshot[date].png | Bin 0 -> 22747 bytes
.../test_should_match_snapshot[numerical].png | Bin 0 -> 15697 bytes
.../plotting/test_moving_average_plot.py | 104 ++++++++++++++++++
6 files changed, 217 insertions(+), 34 deletions(-)
create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot[date grouped].png
create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot[date].png
create mode 100644 tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot[numerical].png
create mode 100644 tests/safeds/data/tabular/plotting/test_moving_average_plot.py
diff --git a/docs/tutorials/data_visualization.ipynb b/docs/tutorials/data_visualization.ipynb
index 73e97b861..edc2d7b32 100644
--- a/docs/tutorials/data_visualization.ipynb
+++ b/docs/tutorials/data_visualization.ipynb
@@ -25,8 +25,8 @@
"metadata": {
"collapsed": false,
"ExecuteTime": {
- "end_time": "2024-05-24T11:02:35.238409500Z",
- "start_time": "2024-05-24T11:02:35.164169700Z"
+ "end_time": "2024-06-20T18:48:39.232324800Z",
+ "start_time": "2024-06-20T18:48:39.160577Z"
}
},
"outputs": [],
@@ -49,8 +49,8 @@
"metadata": {
"collapsed": false,
"ExecuteTime": {
- "end_time": "2024-05-24T11:02:35.250954600Z",
- "start_time": "2024-05-24T11:02:35.232426Z"
+ "end_time": "2024-06-20T18:48:39.242848700Z",
+ "start_time": "2024-06-20T18:48:39.232324800Z"
}
},
"outputs": [
@@ -85,8 +85,8 @@
"metadata": {
"collapsed": false,
"ExecuteTime": {
- "end_time": "2024-05-24T11:02:35.251956200Z",
- "start_time": "2024-05-24T11:02:35.240927200Z"
+ "end_time": "2024-06-20T18:48:39.243853500Z",
+ "start_time": "2024-06-20T18:48:39.241097400Z"
}
},
"outputs": [],
@@ -115,14 +115,14 @@
"metadata": {
"collapsed": false,
"ExecuteTime": {
- "end_time": "2024-05-24T11:02:38.570910500Z",
- "start_time": "2024-05-24T11:02:35.242438900Z"
+ "end_time": "2024-06-20T18:48:42.497644100Z",
+ "start_time": "2024-06-20T18:48:39.243853500Z"
}
},
"outputs": [
{
"data": {
- "text/plain": "",
+ "text/plain": "",
"image/png": "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"
},
"execution_count": 4,
@@ -166,15 +166,15 @@
"metadata": {
"collapsed": false,
"ExecuteTime": {
- "end_time": "2024-05-24T11:02:38.796294400Z",
- "start_time": "2024-05-24T11:02:38.569407500Z"
+ "end_time": "2024-06-20T18:48:42.586133100Z",
+ "start_time": "2024-06-20T18:48:42.497644100Z"
}
},
"outputs": [
{
"data": {
- "text/plain": "",
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAABn8ElEQVR4nO3dd3yV9fn/8dfZ2QHChrA3AQdajCIOENyAWK2j1mptbdFWqFZRQYaKtXXV1lFrHd9Kbe1PQKSKyKyzilIII0BkypSRQMY5577vz++Pk0TCkJFx1vv5ePCoOefknCt3T5J3Ptd1f26XMcYgIiIiIknDHe0CRERERKRhKQCKiIiIJBkFQBEREZEkowAoIiIikmQUAEVERESSjAKgiIiISJJRABQRERFJMgqAIiIiIklGAVBEREQkySgAioiIiCQZBUARERGRJKMAKCIiIpJkFABFREREkow32gVEg+M4bNmyhczMTFwuV7TLERERETkuxhj27dtH69atcbuPfz0vKQPgli1byM3NjXYZIiIiIrWyadMm2rZte9yfl5QBMDMzE4gctKysrChXIyIiInJ8SkpKyM3Nrc40xyspA2BV2zcrK0sBUEREROLWiY6y6SQQERERkSSjACgiIiKSZBQARURERJKMAqCIiIhIklEAFBEREUkyCoAiIiIiSUYBUERERCTJKACKiIiIJBkFQBEREZEkowAoIiIikmQUAEVERESSjAKgiIiISJJRABQRERFJMgqAIiIiIkkm5gLghAkTcLlcNf716NGj+v5zzz33kPtvvfXWKFYsIiIix8tyHCzHRLuMpOWNdgGH07t3b95///3qj73emmXecsstTJo0qfrjtLS0BqtNRERETpwxhqDtUBq2SfW48fpjMookvJg86l6vl5YtWx7x/rS0tO+8X0RERGKPYwzlYZsyy8YYwBPtipJXzLWAAdasWUPr1q3p1KkT1113HRs3bqxx/2uvvUbTpk3Jy8tj7NixlJWVfefzBYNBSkpKavwTERGRhhN2HPYFLcrDNn6PG7cr2hUlt5hbAezfvz8vv/wy3bt3Z+vWrUycOJGzzz6bgoICMjMzufbaa2nfvj2tW7dm6dKl3H333RQWFvLmm28e8TmnTJnCxIkTG/CrEBEREfi25VsWtnEM+L1uXC6lv2hzGWNiegJz7969tG/fnscff5ybb775kPvnzZvHoEGDWLt2LZ07dz7scwSDQYLBYPXHJSUl5ObmUlxcTFZWVr3VLiIiksyqWr7llo3b7cLn/rbxGLRs0rwe0jQDeEJKSkrIzs4+4SwT80e9UaNGdOvW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IVAOtWbNGoYOHcrIkSOZNm0aK1euZOnSpbz44ovRLi1uuFwu0tPT6dGjBz6fj0ceeYQ5c+ZU3ydH9/zzzzNkyBCefPJJ0tPTef3113n66af5v//7P0Dfw9/lm2++4frrr+emm27in//8J2+++SYtW7akvLy8+jHqhny3VatWkZ+fz759+8jJyeGDDz7g2muv5cknn4x2aXGjoKCAAQMG8MUXX7Bjxw4eeughnnnmGYLBYP11Q0yc2rJli+nXr5+56667qm9buXKl6dWrl5kxY0YUK4svGzZsMN26dTMfffRR9W379u0z//znP0337t3N97///ShWF9vKysrMz372M3PzzTebYDBoLMsyxhjz3HPPmd69e5uKigrjOE6Uq4wPU6dONY888oj59NNPzdChQ82QIUPMl19+aX7729+aDRs2RLu8mHfllVeap556yhhjzBlnnGHOPvts07lzZ9O5c2fTv39/Y9u2Mcbo/XgYixcvNj169DBr166tvu3HP/6xueKKK8y1115rfv7zn1ffXnUcpabRo0ebESNGVH+8YcMGM2XKFONyucwjjzwSxcriw6ZNm0yvXr3MPffcU33byy+/bBo3bmzWrVtXb68bt8tkS5YswefzcfPNN1ff1qNHD7xeL+vWrYtiZfElMzOTcDjMRx99VH1bRkYGl19+Offeey+FhYU8//zzUawwdtm2TSgUYsCAAfj9fjweDwAtW7Zk9+7dhEKhKFcYPzIzM3nrrbf43ve+x1133UV6ejqXXnop99xzT/V1Lo1mAo/IsiyWLFnCc889R1ZWFtOmTePTTz/ltddeo6SkhOHDhwNaUT2c9PR0ysrK+Nvf/oZlWUyePJn/+7//o2vXrjRv3px58+Zx9tlnA5oJPBxjDOvXr8fv91ff1q5dO26//XYee+wxxo0bx0svvRTFCmObMYZ58+bRs2dPfvazn1WvNF9zzTW0atWK9evX19trx+27uV+/fvz85z+ne/fuAITDYQCaNm1a/d9ydGlpaQwcOJD333+fZcuWVd8eCAS48sor6dChAwsWLIhegTEsIyODhx56iBtvvBH4dgC6ZcuW5OTkkJGRUf0Ld9WqVdEqMy5069at+vgNGjSIffv2sWfPHvr378+aNWsAhZfDqfplMWLECDZt2sSbb77JGWecQU5ODjk5OfTv358HHniAoqIi/WF8BK1ateIHP/gBL7zwAhdffDGTJk3iH//4B4888ghPPPEEzz77LGvXrmXhwoXRLjUmuVwuBg4cyP/+9z9WrlxZfXt6ejo33ngjo0aN4oUXXmDLli1RrDJ2uVwuWrZsyYABA+jQoUP1HxmO41BWVsa2bdvq7bXjNgA2b96cG264AYgcKJ/PB0QCzb59+6of99RTT9UINlJTIBDgzjvv5Msvv+TBBx+ssYVEWloa55xzDqtXr9aZrUfQqlUrIPIerFoBdByHkpKS6mN233338atf/Yri4uKo1RnrunTpQiAQYNOmTdxwww2sWLGC3//+97Rs2ZIxY8awaNGiaJcYk6p+WZx77rmEw2Hef//9Q4Jeq1atsG1bq1dHkJWVxf33389//vMf7r//fnr06MHAgQNr3J+RkUFmZmYUq4xtp512GpmZmbz88sts3ry5+vbGjRtzySWXUFBQwNatW6NYYWwbMmQId9xxB/BtpyMQCNC4cePqbAPw97//nc8//7zOXjchfiK43e7qg1a1FQzA+PHjGT16tH7wfQfHccjLy2PGjBnMmjWLe+65h/nz51ffv2rVKtq2bYvXG/cnjNerA99joVCIffv24fV6eeCBB3j00Ud56KGHyM7OjmKFscsYg2VZGGPIz89nwYIFzJo1i5///OfccsstdOrUiQ4dOkS7zJhljKFdu3b8+c9/5uSTT2bWrFlMmTIFiOytOHfuXHJycsjKyopypbErMzOTjh070qZNGwKBQI2VrBkzZpCRkUGbNm2iWGFsGzBgANdccw3/+Mc/+POf/8xXX31VfV+fPn1o165djX0+5ciq8kvVyXGpqakAjB07lp///Oc0bty47l7LJMhgjWVZeL1eBg8ezLBhwzDGcPfdd/Phhx9y6qmnRru8qHMcB2NM9SpV1W1utxvbtvF4PCxevJif/OQn1bd16NCB+fPns2jRIk466aQoVh9933X8DvbJJ5/wy1/+knPOOYenn36aDz/8kH79+jVkuTHnWI7fa6+9xtNPP82f/vSnGsertLSU9PT0Bq03Fn3XMaz639WrV3Pffffx6aefYlkWXbt2paCggLlz53LyySdHr/gYcCzvwR07dnDJJZfQuHFjGjduTEZGBtOmTWPevHlJf/yO5MBj+PDDD/Pqq6/Sr18/brzxRrp06cKzzz7L3//+dz777DNatmwZ5WrjRzgc5qSTTuLhhx+moKCAhx9+mEWLFnHaaafV2WskTACsctVVV/HWW2/h8/mYN28ep59+erRLiroVK1bw8MMPs23bNrp27cqll17KJZdcAlAd/qr+d+PGjSxevJh58+aRm5vL5ZdfTo8ePaL8FUTXsRy/A3300UcMGDCAxo0bM2fOnKT/A+RYj184HKa0tJRGjRoB2nvtQMdyDKt+Ee/atYvNmzfzzjvv0K5dO/r370/nzp2j/BVE17Ecv6r328qVK/nDH/7A+vXrad++Pb/61a/o2bNnlL+C6Dvcz7oqB4bAV155henTp/PWW2/Ru3dvSkpKmDZtGqecckpDlhuTvusYHsyyLM455xz27NnD+vXr6zz8QYwHwLVr1/Lqq68SCoVo06YNt99+e/V9Vd+sB/+S+OEPf8jUqVNZunQpvXv3jkbZMaWwsJD+/ftz0UUX0aFDB9555x18Ph8DBgzgiSeeACItS7/fr1+4h3E8x6/K+vXrueqqq3j55Zfp1atXtEqPCcdy/ILBYPWZvqBNiw92Iu9B+dbxHL+q9155eTmpqamEw+EaM1jJavXq1cycOZNrr722eu75YFVdOIis2q9btw63201OTg4tWrRoyHJj0rEcwwN/B5eXlzN48GBWr17N3Llz6du3b90XVW8bzNRSQUGBycrKMkOHDjXnnHOOyc7ONvn5+WbevHkmHA4bY2ruyVReXm6MMaawsFD7hlVyHMfce++95qqrrqq+raSkxDz44IPm5JNPNrfcckuNx0+fPt1s3769ocuMWcd7/GbMmGG2bt1qjDGmoqKiQWuNRSdy/Hbs2NHQZcY0HcPaqe3PQO2baMyaNWtMkyZNjMvlMmPHjjU7d+485DE6Tt/tRI/hK6+8YgoLC+utrpgMgBUVFWbYsGHV35yhUMhs377d9OvXz5x66qlm5syZNcLfmDFjzJgxY6pDoHzrxhtvNAMHDqxxW0lJifn9739vTjvtNDNlyhRjjDFvv/22adu2rbnvvvu02ekBjvf43XvvvcayLP1ArKT3X+3pGNaOjt+J279/v7npppvMjTfeaP70pz8Zl8tl7rrrrsMGGGOMefTRR82kSZMauMrYdiLHcMKECQ1SW0z2WQKBAPv3769eJnW5XDRv3pxFixaRnp7O+PHja2xX0rZtW15++eUa278kO1PZ2T/11FOxbZvCwsLq+zIzM7nppps45ZRTmDlzJqFQiEsuuYSbbrqJm266Se03Tvz43XzzzXg8nqRvpev9V3s6hrWj41d7brebfv36ceGFF/KLX/yC119/nd///vc8+uijfPPNNzUeu3v3bhYvXsysWbPYvXt3lCqOPSdyDN955x127dpV/8U1SMw8TrZtm/POO6/GZciCwaAxJtLq7dChg7n66qtrfM6ePXsassS4sXbtWtO0aVNz0003mX379hljvl1q3rhxo3G5XGbmzJnRLDGm6fjVjo5f7ekY1o6OX+3s37+/xsevv/66cblc5s477zTffPONMcYYy7LMnj17zK5du8yWLVuiUWZMi9VjGHMBsOobc968eSY9Pd08/vjj1feVlZUZY4yZOXOmadOmjVm1apVabcdg3rx5JhAImFGjRtVYdt66das56aSTalwHWA6l41c7On61p2NYOzp+tXfgaMvf//736lbm119/be644w4zfPhwzT4fRawdw5jb3beqdXbaaadxxx138PTTT+Pz+bjtttuqN0RMSUkhJSWlxqW25MjOO+883njjDb7//e+zdetWrrrqKvr27curr77Kjh07yM3NjXaJMU3Hr3Z0/GpPx7B2dPxqr2qrHMdx+MEPfoDL5eKHP/whb731FkVFRfz3v/+tcTa/HCrWjmFMbgNTdTp5UVERzzzzDFOnTuUnP/kJd911F5Zl8cQTTzB9+nQWLFhATk5OtMuNG1988QVjxoxh/fr1eL1ePB4Pr7/+uvZnOkY6frWj41d7Ooa1o+NXe1WRweVyMWjQIJYsWcKCBQvo06dPlCuLH7FyDGMuAFZtlLh+/Xo+++wz+vfvz8yZM7nvvvvIysoiKyuLXbt2MWvWrKTfYPdElJSUsHv3bvbt20erVq1o2rRptEuKKzp+taPjV3s6hrWj41d7tm1z11138eSTT7JkyZL62aMuwcXCMYypAFi18rd+/Xq6du3KtddeyyuvvALAli1bWLRoERkZGfTt25d27dpFuVoREZHkY9s2L7/8Mv369dMl8k5QLBzDmAmAB4a/U089lREjRvDcc8/h8/l0ZQAREZEYYnTlqFqL9jGMiQB4cPi7/PLL+ctf/lJ9WRkRERERqTtRX1azbVvhT0RERKQBRT0AejweNmzYQO/evRk+fDgvvviiwp+IiIhIPYp6C9i2bX7605/icrl47rnnFP5ERERE6lnUAyDAnj17yM7O1okeIiIiIg0gJgKgiIiIiDQcLbmJiIiIJBkFQBEREZEkowAoIiIikmQUAEVERESSjAKgiIiISJJRABQRERFJMgqAIiIiIklGAVBEREQkySgAioiIiCQZBUARkXrSoUMHnnzyyXp9jQULFuByudi7d2+9vo6IJBZvtAsQEUlUn332Genp6dEuQ0TkEAqAIiLHKRQK4ff7j/q4Zs2aNUA1IiLHTy1gEUkK//rXv+jTpw+pqank5OQwePBgSktLOffcc7njjjtqPHb48OHceOON1R936NCByZMnc8MNN5CVlcVPf/pTzjzzTO6+++4an7dz5058Ph+LFi2q/ryqFvC1117L1VdfXePx4XCYpk2b8uqrrwLgOA5TpkyhY8eOpKamctJJJ/Gvf/2rxuf8+9//plu3bqSmpnLeeeexfv362h8cEUk6CoAikvC2bt3KNddcw0033cTKlStZsGABV1xxBcaYY36O3//+95x00kl8+eWXjBs3juuuu47XX3+9xnP84x//oHXr1px99tmHfP51113HzJkz2b9/f/Vts2fPpqysjBEjRgAwZcoUXn31VZ577jmWL1/O6NGjuf7661m4cCEAmzZt4oorruCyyy5jyZIl/OQnP+Gee+450cMiIklMLWARSXhbt27FsiyuuOIK2rdvD0CfPn2O6znOP/98fv3rX1d/fNVVV3HHHXfwwQcfVAe+qVOncs011+ByuQ75/KFDh5Kens60adP44Q9/WP34yy+/nMzMTILBIA8//DDvv/8++fn5AHTq1IkPPviA559/nnPOOYdnn32Wzp0789hjjwHQvXt3li1bxm9/+9vjPygiktS0AigiCe+kk05i0KBB9OnTh+9///u88MIL7Nmz57ie47TTTqvxcbNmzRgyZAivvfYaAOvWrePjjz/muuuuO+zne71errrqqurHl5aWMmPGjOrHr127lrKyMi644AIyMjKq/7366qsUFRUBsHLlSvr371/jeavCoojI8dAKoIgkPI/Hw5w5c/joo4947733ePrpp7nvvvv49NNPcbvdh7SCw+HwIc9xuLN5r7vuOn75y1/y9NNPM3XqVPr06fOdK4vXXXcd55xzDjt27GDOnDmkpqZy4YUXAlS3hmfNmkWbNm1qfF4gEDjur1lE5LtoBVBEkoLL5eKss85i4sSJfPnll/j9fqZNm0azZs3YunVr9eNs26agoOCYnnPYsGFUVFTw7rvvMnXq1COu/lU588wzyc3N5R//+AevvfYa3//+9/H5fAD06tWLQCDAxo0b6dKlS41/ubm5APTs2ZP//ve/NZ7zk08+OZ7DICICaAVQRJLAp59+yty5cxkyZAjNmzfn008/ZefOnfTs2ZP09HTGjBnDrFmz6Ny5M48//vgxb6qcnp7O8OHDGTduHCtXruSaa6456udce+21PPfcc6xevZr58+dX356Zmcmdd97J6NGjcRyHAQMGUFxczIcffkhWVhY/+tGPuPXWW3nssce46667+MlPfsLixYt5+eWXT/CoiEgyUwAUkYSXlZXFokWLePLJJykpKaF9+/Y89thjXHTRRYTDYf73v/9xww034PV6GT16NOedd94xP/d1113HxRdfzMCBA2nXrt0xPf6hhx6iffv2nHXWWTXumzx5Ms2aNWPKlCl89dVXNGrUiFNPPZV7770XgHbt2vH//t//Y/To0Tz99NN873vf4+GHH+amm246vgMiIknPZY5nHwQRERERiXuaARQRERFJMgqAIiIiIklGAVBEREQkySgAioiIiCQZBUARERGRJKMAKCIiIpJkFABFREREkowCoIiIiEiSUQAUERERSTIKgCIiIiJJRgFQREREJMkoAIqIiIgkGQVAERERkSSjACgiIiKSZBQARURERJKMAqCIiIhIklEAFBEREUky/x8KcPzqA6iFXQAAAABJRU5ErkJggg=="
+ "text/plain": "",
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAABrbklEQVR4nO3deXxU5dn/8c+ZNXuAsEPYkSURF6iIIi4guIOitqK1VmurtVbg0SouIFRFbatYW/fn59JKbesjIFJ3RKqiIooQ9h2UVZYEMsnMnHPu3x9ZJAIK2Wb7vl+vvDQzk8mVwyT55lz3dR/LGGMQERERkZThiXUBIiIiItK4FABFREREUowCoIiIiEiKUQAUERERSTEKgCIiIiIpRgFQREREJMUoAIqIiIikGAVAERERkRSjACgiIiKSYhQARURERFKMAqCIiIhIilEAFBEREUkxCoAiIiIiKcYX6wJiwXVdNm/eTHZ2NpZlxbocERERkSNijGHv3r20bdsWj+fIz+elZADcvHkz+fn5sS5DREREpE42bdpE+/btj/jjUjIAZmdnAxUHLScnJ8bViIiIiByZkpIS8vPzqzPNkUrJAFjV9s3JyVEAFBERkYRV26VsGgIRERERSTEKgCIiIiIpRgFQREREJMWk5BpAERERiQ3HcYhGo7EuI+75/X68Xm+DPb8CoIiIiDQ4Ywxbt25lz549sS4lYTRp0oTWrVs3yJ7FCoAiIiLS4KrCX8uWLcnIyNCFGL6HMYZQKMT27dsBaNOmTb1/DgVAERERaVCO41SHv7y8vFiXkxDS09MB2L59Oy1btqz3drCGQERERKRBVa35y8jIiHEliaXqeDXEmkkFQBEREWkUavsemYY8XgqAIiIiIodgjOGXv/wlzZo1w7IsFi5cGOuS6oXWAIqIiIgcwhtvvMFzzz3HnDlz6NKlC82bN491SfVCAVBERETkENasWUObNm046aSTav0c0WgUv99fj1XVnVrAIiIiIgdx1VVXceONN7Jx40Ysy6JTp0688cYbDBw4kCZNmpCXl8d5553HmjVrqj9m/fr1WJbFP//5T0499VTS0tJ48cUXAXjmmWfo1asXaWlp9OzZk8ceeyxWX1p8BsCvv/6aK664gry8PNLT0zn66KP57LPPqu83xjB+/HjatGlDeno6Q4YMYdWqVTGsWERERJLNI488wqRJk2jfvj1btmxh/vz5lJaWMnbsWD777DPeffddPB4PF154Ia7r1vjY2267jZtuuolly5YxbNgwXnzxRcaPH8+9997LsmXLuO+++7jrrrt4/vnnY/K1xV0LePfu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aNWqVQwbNoyRI0cybdo0li1bxqJFi/jf//3fWJeWUCzLIjMzk549e+L3+7n//vt5++23q++T7/fkk08ydOhQpkyZQmZmJi+99BKPPvoof/vb3wB9D3+fb775hiuuuIKrr76af/3rX7zyyiu0bt2asrKy6seoG/L9li9fzoABA9i7dy95eXl88MEHjBo1iilTpsS6tIRRVFTEwIED+fzzz9m+fTv33nsvjz32GOFwuOE6ISaBbd682fTt29fccsst1bctW7bM9O7d28yYMSOGlSWODRs2mKOOOsp89NFH1bft3bvX/Otf/zI9evQwl1xySQyri2+hUMj86le/Mtdcc40Jh8PGtm1jjDFPPPGEKSgoMOXl5cZ13RhXmTimTp1q7r//fvPJJ5+YYcOGmaFDh5ovvvjCPPDAA2bDhg2xLi+uXXzxxeaRRx4xxhhz4oknmlNOOcV07drVdO3a1fTv3984jmOMMXo9HsSCBQtMz549zerVq6tv+/nPf24uuugiM2rUKHP99ddX3151HKWmMWPGmAsvvLD6/Q0bNpjJkycby7LM/fffH8PKEsOmTZtM7969zW233VZ923PPPWeaNm1q1q1b12CfN6FPkS1cuBC/388111xTfVvPnj3x+XysW7cuhpUljuzsbKLRKB999FH1bVlZWVxwwQXcfvvtrFixgieffDKGFcYvx3GIRCIMHDiQQCCA1+sFoHXr1uzatYtIJBLjChNLdnY2r776KieccAK33HILmZmZnHfeedx2223V17o0WhN4ULZts3DhQp544glycnKYNm0an3zyCS+++CIlJSWMGDEC0NnUg8nMzCQUCvH3v/8d27b5/e9/z9/+9je6d+9Oy5YtmT17NqeccgqgNYEHY4xh/fr1BAKB6ts6dOjAjTfeyJ/+9Cfuuusunn322RhWGN+MMcyePZtevXrxq1/9qvpM82WXXUabNm1Yv359g33uhH419+3bl+uvv54ePXoAEI1GAWjevHn1/8v3y8jIYNCgQbzzzjssXry4+vZgMMjFF19Mp06dmDNnTuwKjGNZWVnce++9XHXVVcC3C6Bbt25NXl4eWVlZ1b9wly9fHqsyE8ZRRx1VfQwHDx7M3r172b17N/3792fVqlWAAsx3Vf2yuPDCC9m0aROvvPIKJ554Inl5eeTl5dG/f38mTJjAmjVr9EfxIbRp04af/OQnPP3005xzzjlMmjSJf/7zn9x///08/PDDPP7446xevZr3338/1qXGJcuyGDRoEF9++SXLli2rvj0zM5OrrrqKG264gaeffprNmzfHsMr4ZVkWrVu3ZuDAgXTq1Kn6jwzXdQmFQmzdurXBPndCB8CWLVty5ZVXAhUHy+/3AxWhZu/evdWPe+SRR2qEG/lWMBjk5ptv5osvvuCee+6psYVERkYGp556KitXrtRk6yG0adMGqHj9VZ0BdF2XkpKS6mN2xx13cNNNN1FcXByzOhNBt27dCAaDbNq0iSuvvJKlS5fyxz/+kdatWzN27Fjmzp0b6xLjTtUvi9NOO41oNMo777xzQNBr06YNjuPo7NUh5OTkcOedd/Lf//6XO++8k549ezJo0KAa92dlZZGdnR3DKuNbv379yM7O5rnnnuOrr76qvr1p06ace+65FBUVsWXLlhhWGN+GDh3K6NGjgW+7HMFgkKZNm1bnGoB//OMffPbZZ/X2eZPmJ4LH46k+cFVbwQCMHz+eMWPG6IffIbiuS2FhITNmzGDWrFncdtttvPfee9X3L1++nPbt2+PzJcXAeIPZ//UViUTYu3cvPp+PCRMm8OCDD3LvvfeSm5sbwwrjmzEG27YxxjBgwADmzJnDrFmzuP7667n22mvp0qULnTp1inWZcckYQ4cOHXjqqac49thjmTVrFpMnTwYq9lV89913ycvLIycnJ8aVxq/s7Gw6d+5Mu3btCAaDNc5kzZgxg6ysLNq1axfDCuPbwIEDueyyy/jnP//JU089xdq1a6vvO/roo+nQoUONPT7l0KqyS9VgXHp6OgDjxo3j+uuvp2nTpvX3uUwSLaqxbRufz8eQIUMYPnw4xhhuvfVWPvzwQ44//vhYlxdTrutijKk+S1V1m8fjwXEcvF4vCxYs4Be/+EX1bZ06deK9995j7ty5HHPMMTGsPva+7/h918cff8xvf/tbTj31VB599FE+/PBD+vbt25jlxqXDOYYvvvgijz76KH/9619rHLPS0lIyMzMbtd54833Hr+q/K1eu5I477uCTTz7Btm26d+9OUVER7777Lscee2zsio8Dh/P62759O+eeey5NmzaladOmZGVlMW3aNGbPnp3yx+9Q9j+G9913Hy+88AJ9+/blqquuolu3bjz++OP84x//YP78+bRu3TrG1SaOaDTKMcccw3333UdRURH33Xcfc+fOpV+/fvX2OZIqAFa59NJLefXVV/H7/cyePZsf/ehHsS4pppYuXcp9993H1q1b6d69O+eddx7nnnsuQHX4q/rvxo0bWbBgAbNnzyY/P58LLriAnj17xvgriK3DOX77++ijjxg4cCBNmzbl7bffTvk/PuDwj2E0GqW0tJQmTZoA2n+tyuEcv6pfxDt37uSrr77i9ddfp0OHDvTv35+uXbvG+CuIrcM5flWvtWXLlvHnP/+Z9evX07FjR2666SZ69eoV468g9g72s67K/iHw+eefZ/r06bz66qsUFBRQUlLCtGnTOO644xqz3Lj0fcfwu2zb5tRTT2X37t2sX7++3sMfJEAAXL16NS+88AKRSIR27dpx4403Vt9X9Q373V8SP/3pT5k6dSqLFi2ioKAgFmXHjRUrVtC/f3/OPvtsOnXqxOuvv47f72fgwIE8/PDDQEXLMhAI6JftQRzJ8auyfv16Lr30Up577jl69+4dq9LjxuEcw3A4XD3pC9q4eH+1eQ3Kt47k+FW97srKykhPTycajdZYg5WqVq5cycyZMxk1alT1uufvqurAQcUZ+3Xr1uHxeMjLy6NVq1aNWW5cOpxjuP/v4LKyMoYMGcLKlSt599136dOnT/0X1WAbzNSDoqIik5OTY4YNG2ZOPfVUk5ubawYMGGBmz55totGoMabmvkxlZWXGGGNWrFihfcNMxZ5ft99+u7n00kurbyspKTH33HOPOfbYY821115b4/HTp08327Zta+wy49aRHr8ZM2aYLVu2GGOMKS8vb9Ra41VtjuH27dsbu8y4peNXN3X9Gah9E41ZtWqVadasmbEsy4wbN87s2LHjgMfoOH2/2h7D559/3qxYsaLB6orbAFheXm6GDx9e/Q0aiUTMtm3bTN++fc3xxx9vZs6cWSP8jR071owdO7Y6BEqFq666ygwaNKjGbSUlJeaPf/yj6devn5k8ebIxxpjXXnvNtG/f3txxxx3a7HQ/R3r8br/9dmPbtn4g7kevwbrR8asbHb/a27dvn7n66qvNVVddZf76178ay7LMLbfcctAAY4wxDz74oJk0aVIjVxnfanMM77777kapLW57LMFgkH379lWfKrUsi5YtWzJ37lwyMzMZP358jS1L2rdvz3PPPVdj+5dUZio7+8cffzyO47BixYrq+7Kzs7n66qs57rjjmDlzJpFIhHPPPZerr76aq6++Wq03an/8rrnmGrxer1rp6DVYVzp+daPjV3cej4e+ffty1lln8etf/5qXXnqJP/7xjzz44IN88803NR67a9cuFixYwKxZs9i1a1eMKo4/tTmGr7/+Ojt37mz44holZtaC4zjm9NNPr3EpsnA4bIypaPV26tTJ/PjHP67xMbt3727MEhPC6tWrTfPmzc3VV19t9u7da4z59lTzxo0bjWVZZubMmbEsMa7p+NWdjmHd6PjVjY5f3ezbt6/G+y+99JKxLMvcfPPN5ptvvjHGGGPbttm9e7fZuXOn2bx5cyzKjGvxegzjMgBWfXPOnj3bZGZmmoceeqj6vlAoZIwxZubMmaZdu3Zm+fLlarf9gNmzZ5tgMGhuuOGGGqedt2zZYo455pga1wGWA+n41Z2OYd3o+NWNjl/d7b+05R//+Ed1K/Prr782o0ePNiNGjNDa5x8Qb8cwLnf3rWqf9evXj9GjR/Poo4/i9/v5zW9+U70pYlpaGmlpaTUutyUHd/rpp/Pvf/+bSy65hC1btnDppZfSp08fXnjhBbZv305+fn6sS4xrOn51p2NYNzp+daPjV3dVW+W4rstPfvITLMvipz/9Ka+++ipr1qzh008/rTHJLweKt2MYt9vAVI2Ur1mzhscee4ypU6fyi1/8gltuuQXbtnn44YeZPn06c+bMIS8vL9blJoTPP/+csWPHsn79enw+H16vl5deekn7Mx0mHb+60zGsGx2/utHxq7uqyGBZFoMHD2bhwoXMmTOHo48+OsaVJY54OYZxGQCrNktcv3498+fPp3///sycOZM77riDnJwccnJy2LlzJ7NmzdImu0eopKSEXbt2sXfvXtq0aUPz5s1jXVJC0fGrOx3DutHxqxsdv7pzHIdbbrmFKVOmsHDhwobZoy7JxcMxjLsAWHXmb/369XTv3p1Ro0bx/PPPA7B582bmzp1LVlYWffr0oUOHDjGuVkREJLU4jsNzzz1H3759dYm8WoqHYxhXAXD/8Hf88cdz4YUX8sQTT+D3+3VlABERkThhdOWoOov1MYybAPjd8HfBBRfwzDPPVF9aRkRERETqR1ycUnMcR+FPREREpJHERQD0er1s2LCBgoICRowYwf/+7/8q/ImIiIg0kLhoATuOwy9/+Ussy+KJJ55Q+BMRERFpQHERAAF2795Nbm6uBj1EREREGljcBEARERERaRw63SYiIiKSYhQARURERFKMAqCIiIhIilEAFBEREUkxCoAiIiIiKUYBUERERCTFKACKiIiIpBgFQBEREZEUowAoIiIikmIUAEVEGkinTp2YMmVKg36OOXPmYFkWe/bsadDPIyLJxRfrAkREktX8+fPJzMyMdRkiIgdQABQROUKRSIRAIPCDj2vRokUjVCMicuTUAhaRlPDyyy9z9NFHk56eTl5eHkOGDKG0tJTTTjuN0aNH13jsiBEjuOqqq6rf79SpE7///e+58sorycnJ4Ze//CUnnXQSt956a42P27FjB36/n7lz51Z/XFULeNSoUfz4xz+u8fhoNErz5s154YUXAHBdl8mTJ9O5c2fS09M55phjePnll2t8zH/+8x+OOuoo0tPTOf3001m/fn3dD46IpBwFQBFJelu2bOGyyy7j6quvZtmyZcyZM4eLLroIY8xhP8cf//hHjjnmGL744gvuuusuLr/8cl566aUaz/HPf/6Ttm3bcsoppxzw8ZdffjkzZ85k37591be9+eabhEIhLrzwQgAmT57MCy+8wBNPPMGSJUsYM2YMV1xxBe+//z4AmzZt4qKLLuL8889n4cKF/OIXv+C2226r7WERkRSmFrCIJL0tW7Zg2zYXXXQRHTt2BODoo48+ouc444wz+J//+Z/q9y+99FJGjx7NBx98UB34pk6dymWXXYZlWQd8/LBhw8jMzGTatGn89Kc/rX78BRdcQHZ2NuFwmPvuu4933nmHAQMGANClSxc++OADnnzySU499VQef/xxunbtyp/+9CcAevToweLFi3nggQeO/KCISErTGUARSXrHHHMMgwcP5uijj+aSSy7h6aefZvfu3Uf0HP369avxfosWLRg6dCgvvvgiAOvWrWPevHlcfvnlB/14n8/HpZdeWv340tJSZsyYUf341atXEwqFOPPMM8nKyqp+e+GFF1izZg0Ay5Yto3///jWetyosiogcCZ0BFJGk5/V6efvtt/noo4946623ePTRR7njjjv45JNP8Hg8B7SCo9HoAc9xsGneyy+/nN/+9rc8+uijTJ06laOPPvp7zyxefvnlnHrqqWzfvp23336b9PR0zjrrLIDq1vCsWbNo165djY8LBoNH/DWLiHwfnQEUkZRgWRYnn3wyEydO5IsvviAQCDBt2jRatGjBli1bqh/nOA5FRUWH9ZzDhw+nvLycN954g6lTpx7y7F+Vk046ifz8fP75z3/y4osvcskll+D3+wHo3bs3wWCQjRs30q1btxpv+fn5APTq1YtPP/20xnN+/PHHR3IYREQAnQEUkRTwySef8O677zJ06FBatmzJJ598wo4dO+jVqxeZmZmMHTuWWbNm0bVrVx566KHD3lQ5MzOTESNGcNddd7Fs2TIuu+yyH/yYUaNG8cQTT7By5Uree++96tuzs7O5+eabGTNmDK7rMnDgQIqLi/nwww/JycnhZz/7Gddddx1/+tOfuOWWW/jFL37BggULeO6552p5VEQklSkAikjSy8nJYe7cuUyZMoWSkhI6duzIn/70J84++2yi0ShffvklV155JT6fjzFjxnD66acf9nNffvnlnHPOOQwaNIgOHToc1uPvvfdeOnbsyMknn1zjvt///ve0aNGCyZMns3btWpo0acLxxx/P7bffDkCHDh34v//7P8aMGcOjjz7KCSecwH333cfVV199ZAdERFKeZY5kHwQRERERSXhaAygiIiKSYhQARURERFKMAqCIiIhIilEAFBEREUkxCoAiIiIiKUYBUERERCTFKACKiIiIpBgFQBEREZEUowAoIiIikmIUAEVERERSjAKgiIiISIpRABQRERFJMQqAIiIiIilGAVBEREQkxSgAioiIiKQYBUARERGRFKMAKCIiIpJi/j9nrZk3A9FrCAAAAABJRU5ErkJggg=="
},
"execution_count": 5,
"metadata": {},
@@ -214,14 +214,14 @@
"metadata": {
"collapsed": false,
"ExecuteTime": {
- "end_time": "2024-05-24T11:02:38.865399800Z",
- "start_time": "2024-05-24T11:02:38.656409400Z"
+ "end_time": "2024-06-20T18:48:42.662529500Z",
+ "start_time": "2024-06-20T18:48:42.586133100Z"
}
},
"outputs": [
{
"data": {
- "text/plain": "",
+ "text/plain": "",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAsPUlEQVR4nO3de3TU9Z3/8dckmYQkkKEEzEWSEIkSrKFA2kIkKLCRLF5+pARbFGzqYdvfEYoNobLGIyiuEkG5WbkUl41HlLqFDdmKFdCsIqzhYoBdqUohErDmImCTAUImk2R+f/hj2hiEJN8hQ/g8H+dwwny+3/l+3/Ec5zz5zs3m8Xg8AgAAgDEC/D0AAAAAuhYBCAAAYBgCEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIYhAAEAAAxDAAIAABiGAAQAADAMAQgAAGAYAhAAAMAwBCAAAIBhCEAAAADDEIAAAACGIQABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQgJGOHz+uGTNmaNCgQQoNDVVkZKTuvfdeVVRUtNn3f//3f3X77bcrNDRU/fv319NPP63CwkLZbLY2+7/11lsaPXq0wsPD1atXL911113605/+1DW/FAC0U5C/BwAAf9i3b58++OADTZkyRf3791dFRYVWr16tMWPG6OOPP1ZYWJgk6YsvvtDYsWNls9mUn5+v8PBw/eu//qtCQkLaHHP9+vXKyclRZmamFi1apPr6eq1evVrp6ek6cOCABgwY0MW/JQBcnM3j8Xj8PQQAdLXz588rNDS01dru3buVlpamV155RQ888IAk6eGHH9aLL76o/fv3a+jQoZKkr776SjfeeKO++uorHTt2TAMGDNDZs2cVFxene++9V2vXrvUes6amRoMGDdKPf/zjVusA4E88BQzASH8ff263W6dPn1ZSUpJ69+6t/fv3e7dt3bpVaWlp3viTpD59+mjq1Kmtjvf222+rtrZW9913n06dOuX9ExgYqBEjRujdd9+94r8TALQXTwEDMNL58+dVUFCgwsJCffHFF/r7J0Pq6uq8fz9+/LjS0tLa3D8pKanV7SNHjkiSxo0bd9HzRURE+GJsAPAJAhCAkWbNmqXCwkLl5uYqLS1NDodDNptNU6ZMUUtLS4ePd+E+69evV3R0dJvtQUE83AK4evCIBMBImzZtUk5OjpYsWeJda2hoUG1tbav9EhISdPTo0Tb3/+bawIEDJUnXXXedMjIyfD8wAPgQrwEEYKTAwEB98z1wv/nNb9Tc3NxqLTMzU6WlpTp48KB37auvvtJrr73WZr+IiAgtXLhQbre7zflOnjzpu+EBwCKuAAIw0t13363169fL4XDo5ptvVmlpqd555x1FRka22m/u3Ll69dVXdccdd2jWrFnej4GJj4/XV199JZvNJunr1/itXr1aDzzwgIYPH64pU6aoX79+OnHihN58802NGjVKL774oj9+VQBogwAEYKQVK1YoMDBQr732mhoaGjRq1Ci98847yszMbLVfXFyc3n33XT388MNauHCh+vXrp5kzZyo8PFwPP/ywevTo4d33/vvvV2xsrJ599lk999xzcrlcuv766zV69Gg9+OCDXf0rAsC34nMAAaATcnNz9dvf/lZnz55VYGCgv8cBgA7hNYAAcBnnz59vdfv06dNav3690tPTiT8A3RJPAQPAZaSlpWnMmDEaPHiwampqtG7dOjmdTs2bN8/fowFApxCAAHAZd955pzZt2qS1a9fKZrNp+PDhWrdunW677TZ/jwYAncJrAAEAAAzDawABAAAMQwACAAAYplu8BrClpUWVlZXq1auX90NXAQAATOXxeHTmzBnFxsYqIKDj1/O6RQBWVlYqLi7O32MAAABcVT7//HP179+/w/frFgHYq1cvSV//khEREX6eBgAAwL+cTqfi4uK8jdRR3SIA//67NglAAACAr3X2pXG8CQQAAMAwBCAAAIBhCEAAAADDEIAAAACGIQABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhrEcgM3NzZo3b54SExMVGhqqgQMH6l/+5V/k8Xi8+3g8Hs2fP18xMTEKDQ1VRkaGjhw5YvXUANClmpub9d577+l3v/ud3nvvPTU3N/t7JADoFMsBuGjRIq1evVovvviiPvnkEy1atEiLFy/Wb37zG+8+ixcv1gsvvKA1a9Zoz549Cg8PV2ZmphoaGqyeHgC6RFFRkZKSkjR27Fjdf//9Gjt2rJKSklRUVOTv0QCgwywH4AcffKCJEyfqrrvu0oABAzR58mSNHz9ee/fulfT11b/ly5fr8ccf18SJEzVkyBC98sorqqysVHFxsdXTA8AVV1RUpMmTJyslJUWlpaU6c+aMSktLlZKSosmTJxOBALodywF46623qqSkRH/+858lSf/zP/+jXbt2acKECZKkY8eOqbq6WhkZGd77OBwOjRgxQqWlpVZPDwBXVHNzs+bMmaO7775bxcXFGjlypHr2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"
},
"execution_count": 6,
@@ -258,14 +258,14 @@
"metadata": {
"collapsed": false,
"ExecuteTime": {
- "end_time": "2024-05-24T11:02:39.414609500Z",
- "start_time": "2024-05-24T11:02:38.735053600Z"
+ "end_time": "2024-06-20T18:48:43.237603700Z",
+ "start_time": "2024-06-20T18:48:42.659478500Z"
}
},
"outputs": [
{
"data": {
- "text/plain": "",
+ "text/plain": "",
"image/png": "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Xq1atTRhwgSNHz9eS5cu1dGjR7Vr1y69/fbbWrp0aanjatSokZKTk7V79279+eefysrKUkxMjBYvXqx9+/bpl19+0Ycffig3Nzc1bNiwxGMNGTJEw4cP1+rVq5WcnKz4+Hh9+umnpY6nOO7u7hoxYoSeffZZffvtt+YcZ29fcqkxceJEbd26VWPGjDGP9lqzZk2BSWVQfigIUeHs7e21fPlyJSYm6vbbb9f48eP12muvmds9PDy0du1a7d69W61bt9YLL7ygKVOmSJL5uUI/Pz9t2bJFubm56tatm1q2bKlx48apdu3apUo+ACqGh4eHNm/erH/84x9q0qSJJk2apNmzZ6tHjx6F9h88eLAuXLigu+66S+Hh4XrmmWfM05KXhY4dOyo6Olpz5sxRq1attHHjRo0fP96cWxwcHHT69GkNHjxYTZo00cMPP6wePXpo2rRpJR47NzdX4eHhatasmbp3764mTZro3Xfftejz8ssv65lnnlHbtm2VmpqqtWvXmt/B1aZNG3366adavny5br/9dk2ZMkXTp0+3mNFw9uzZ8vf317333qtHH31UEyZMUI0aNczttWrV0quvvqp27drpzjvv1LFjx7R+/XrZ29vLzs5O69evV6dOnTRs2DA1adJEjzzyiH799Vd5e3vf0LUDVVlReadu3bqKiYnRihUr1Lx5c7388svmL6hLMmPGDE2ePFlRUVHmnPDll18qICCg1HH1799f3bt31/3336+6devq448/Vu3atbVo0SJ17NhRQUFB+uabb7R27Vp5eXmVeLz58+froYce0lNPPaXAwEA9+eSTFq92uFGvvfaa7r33XvXu3VshISG655571LZt2xL3CwoK0qZNm3To0CHde++9uuOOOzRlyhT5+fmVWWwonp1x9cMIQCX00UcfadiwYUpPTy/1OHgAKI0nn3xSBw8e1H//+99yO0d8fLzuv/9+/fXXXxbvPARgXZ07d1br1q01d+5ca4cCWA0PX6FS+uCDD9S4cWPdfPPN+umnnzRx4kQ9/PDDFIMAbtjrr7+url27qmbNmtqwYYOWLl1a4E4eAAC2grF1qJRSU1P12GOPqVmzZho/frzCwsK0cOFCa4cFoBr44Ycf1LVrV7Vs2VLR0dF666239MQTT5S4X48ePSymRb9yeemllyogcgAo3H//+98i89PVL58HrsaQUQAA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"
},
"execution_count": 7,
@@ -312,14 +312,14 @@
"metadata": {
"collapsed": false,
"ExecuteTime": {
- "end_time": "2024-05-24T11:02:39.517011500Z",
- "start_time": "2024-05-24T11:02:39.415608100Z"
+ "end_time": "2024-06-20T18:48:43.336423700Z",
+ "start_time": "2024-06-20T18:48:43.238602500Z"
}
},
"outputs": [
{
"data": {
- "text/plain": "",
+ "text/plain": "",
"image/png": "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kt555x1FRkbq008/VefOnbVx40bNmzdPK1asUJ06dSRJ06ZN06233qrJkycrOjpas2fPVlpammbNmqX8+fOrWrVqio+P1wsvvOAVFAEAAHB+V/wawO3btysxMVEtWrRwloWFhalevXpaunSpJGnp0qUqWrSoE/4kqUWLFgoICNCyZcucNo0bN1b+/PmdNq1atdKmTZt06NChsz53amqqkpOTvR4AAABud8UDYGJioiQpMjLSa3lkZKSzLjExUREREV7r8+XLp/DwcK82Z/sb2Z/jdBMmTFBYWJjzKFOmzN/vEAAAQC6Xp0cBDx8+XEeOHHEeu3bt8nVJAAAAPnfFA2BUVJQkae/evV7L9+7d66yLiorSvn37vNafPHlSSUlJXm3O9jeyP8fpgoODFRoa6vUAAABwuyseAGNiYhQVFaUFCxY4y5KTk7Vs2TLFxsZKkmJjY3X48GHFxcU5bb777jtlZmaqXr16TptFixYpPT3dafPNN9/o2muvVbFixa50NwAAAPKMyxIAjx07pvj4eMXHx0s6NfAjPj5eO3fulMfj0YABAzRu3DjNmTNH69atU7du3RQdHa0OHTpIkqpUqaLWrVurd+/eWr58uX788Uf1799fnTt3VnR0tCTpvvvuU/78+dWrVy8lJCToo48+0j//+U8NGjTocnQBAADANS7LNDArV65U06ZNnZ+zQln37t311ltvaciQITp+/Lj69Omjw4cPq2HDhpo3b54KFCjg/M7s2bPVv39/NW/eXAEBAerYsaNeeuklZ31YWJjmz5+vfv36qXbt2ipRooRGjRrFFDAAAACXyGNm5usickpycrLCwsJ05MiRK3o94KpVq1S7dm1FdZ+q4Khrrtjz/B2piVuU+PYAxcXFqVatWr4uBwAAXIK/m2ny9ChgAAAAnIkACAAA4DIEQAAAAJchAAIAALgMARAAAMBlCIAAAAAuQwAEAABwGQIgAACAyxAAAQAAXIYACAAA4DIEQAAAAJchAAIAALgMARAAAMBlCIAAAAAuQwAEAABwGQIgAACAyxAAAQAAXIYACAAA4DIEQAAAAJchAAIAALgMARAAAMBlCIAAAAAuQwAEAABwGQIgAACAyxAAAQAAXIYACAAA4DIEQAAAAJchAAIAALgMARAAAMBlCIAAAAAuQwAEAABwGQIgAACAyxAAAQAAXIYACAAA4DIE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b8eOHRYREWGDBw+2Dz74wF577TUrUqSINW/e3BYuXOi0y34asWXLlla0aFFbt26dL0o+rw0bNlixYsVs8ODB9u6779rkyZOtQIEC9vHHHzttsu/nkpOTbdSoURYZGelc6+yPVq9ebXfffbctXbrUwsLCrHv37k6QPXjwoG3bts169uxphQoVssqVK9t1113nl/s4s4vfjrKcPHnSuaTHH/cLvkQAvEL69u1rd911l5mZNWnSxBo3bmzt27e3unXrWs2aNW3mzJlO21tvvdU8Ho9ffzMZOXKkderUyfk5MzPTmjdvbvPnz7fFixc73/gzMjLso48+sjvvvNMiIiJs1apVvir5gn788UerUKGC13VI+/bts/79+9uNN95oU6ZMMbNT1zIOHz7cWrdubf3797eNGzf6quRzSkpKsrZt23pNjWJm1rp1a/vkk09s9uzZXh9QixcvNo/HY4UKFfLbHf3TTz9tHo/H/vWvf9mBAwesWbNmFhsba9dcc42VLVvWypcv77wWu3btsvHjx9stt9xia9as8XHlZ9erVy8nzGYFovfee8+KFy9uP/zwwxntk5KSbO/evZacnJyjdV6KDz74wG644QY7fvy4s2zHjh1WtWpVa9q0qdcX2pMnT9rQoUP99oM4KSnJWrVqZQMHDnSWHT9+3Nq1a+c1dVeWhQsX2r333muRkZF+vZ8zMzt69KjVrFnTdu/ebV9++aUVKlTI+vbtaz169LB//OMfZnYqSMXHx9vKlStt3759Pq743C51O0pLS7Nnn33WL79w+BoB8Ap566237LbbbrNXX33VbrnlFud01ObNm61fv37WtGlTJ3isXr3atm/f7sNqL2zgwIFWv35955Tv2LFjLSAgwKpWrWrVqlWza665xjldsG7dOnvggQf89vRBlri4OCtdurQtWrTIzMwZYXnw4EHr1auXxcbGeh15OXnypN9eEH348GGbMmWK1wfrM888YwEBAdakSROLioqyunXrOkcy9u7da7169bKEhARflXxR+vXrZ1dffbVde+211q5dO9u2bZsdOnTI9uzZY02bNrVq1ao5r9vevXtzxcjs7NavX2+VKlWyyZMnm9mfpxf98TTi2cycOdOuueYaZ47CrMtAduzYYeXLl/eah83s1Ohgfw3o27dvt1atWtlnn33mtXzIkCHWtm1bMzOvUdjLli2z5557zn7++eccrfNSZWRk2B9//GF16tRxzj7FxcVZ/vz5LSgoKNfP0Wh27u0oS27ZnnIaAfAK+fbbby0yMtIaNmxo999/v9e6pUuXWoECBZzgkRvMmDHD6tata40bN7aePXtaYGCgffLJJ3bw4EFbvXq1tWnTxnr06OF8EOSG6Sr2799vFSpUsD59+jjLsnYcBw4csOjoaBs+fLivyrtoWTu3rBGjZmYLFiywsLAw+/TTT+348eOWnp5usbGxdvfddzttsh+18TfZd+D9+vWzOnXqnPGFYtGiRRYeHn7WU9z+5nwfQEOGDLGIiIhcOTXFunXrLCgoyJnyxezP6a3Wrl1rQUFBfj0aO7uTJ096XZOY9R4cOXKktWvX7qy/kxv2c1keeugh+/DDD83MrFu3blaiRAkrWLCg9enTx44dO+bj6i5OXt2OfIVRwFdI8+bN9fjjj+vHH3/UmjVrvO6RW7lyZd1www25ahTSQw89pAcffFC33nqr0tPTNWDAAHXo0EHh4eGqUaOGSpYsqcTERBUoUECS/P7erGamEiVKaPr06Zo1a5aeffZZSacmCzUzFS9eXO3atdMvv/zi40ovLGvUYfYRohUrVtSKFSvUvn17BQcHK1++fGrcuLF+++03paWlSTo1WtZfZZ+09eWXX9bkyZMVExMj6c/RvmlpaSpRooSioqJ8VufFOtvI0KxZALp27aqSJUvqgw8+kJR7biuWmZmp6667Tk8++aRGjx6t//znP5L+vP/qtddeq5o1a/r9LABZAgMDdeONN0o61besEaUFCxZ0thlJGjp0qMaOHSvJ//dz0p/vp/DwcC1btkwPP/yw5s+fr0WLFunrr7/WzJkzNXTo0FzxvsuL25Ev+f+7Nxew/z+9RpbMzEwFBARo8ODBSklJ0ejRo/Xcc8+pW7duqlatmiZPnqy9e/eqbNmyPqz64mX1p0+fPpKkQYMGKTk52atNcHCwSpcurfT09Fxxd4ms+lq1aqV//vOfevTRR3XixAkNHTpURYoUkXTqTieRkZG+LPMvK1OmjPPvrFC7Z88e1a5dO1d8aEmn6s567zVp0sRZnvXaff311ypVqpTCw8N9VeLfkjVVRbVq1VSpUiW99dZbeuyxx/x+28mSVf+9996rXbt2aejQocrIyNDdd9+twMBABQYGKiQkJNe837LLfo/soKAgJwA+9dRTmjRpkn766SdflfaXNWjQQPfdd59KliypL7/80rmf8cKFC1WyZEm/ft+d/hmbXW7fjnwp922ZfuTw4cMqWrToGW+07DuPkSNHqlixYpoxY4Y+/vhjxcTEKCkpSZ999lmuOHIhefdHkooWLar58+drzpw5ioiI0Ny5c/Xvf/9bixcvVlBQkI+qvLBz7UT69OmjwoUL66GHHtLKlSsVHh6ukJAQzZ8/X8uWLfNBpReW9e32YndyI0eO1Lfffqvvv//+jNfT32R/nc5W66pVq/TBBx9o5syZWrRokYoVK5bTJV5QRkaGcwTpfLIC7sCBA3X//fdr7969ioiIyFUfXtdee60ee+wxBQcHq1u3blq6dKliYmK0bds2rV69WjNnzvR1iX9J1vswJSVFJUqU0JQpUzRlyhStXLlStWrV8nV5Xvbv3y8zU0RExBnrst5LdevWVb9+/XTfffepevXqzvpGjRrlWJ2XYvv27dq2bZuaN29+we0hL2xHPuGD0855wurVq61hw4bnvaA5+/UKW7ZsscWLF9vChQv9cn4yM7OtW7d6Td1wPs2bN7dSpUrZ1VdfbTVr1vTbkaRJSUm2efNm27lz5wXbrl+/3h555BHr0KGD9erVyy9HjWVdZH+xN2r/97//bffcc4+VKlXKL0cqbt++3V5//XX7v//7vzPu6HE2W7dutccff9yqVKnilyNJs98h4lzzf57tOqZDhw55/a4/yXqvZb33ztWv/fv32/vvv2833HCD1a9f35o1a+aXr9Hu3bsvaR88YcIE83g8VqxYMb+cpisuLs4iIyPPOgI2S9ZrlluuWcyap7R3797nfK1y23bkjwiAf0F8fLwFBQXZ4MGDz1iXNUr0XDtJf7VmzRorVaqU9erV65wX0WZmZnqNgl20aJGtXr3aby+6XbdundWqVcuqVatm+fLlc+63nH3Hcfqtg7IuYPfHHWVCQoJ17NjR2rZtazfffLN9+eWXduTIEa82p7/vEhIS7B//+IdfTl2zdu1aK168uNWvX98qVKhghQsXtgcffNBrh396f1JTU23Lli32+++/53S5F7RhwwYrUKCA13xk59sPnP7a+aONGzfa/fffb23atLHbbrvtrLduO31bOXbsmGVkZPjlIKNff/3VAgICrFmzZue89eHpI/0//fRTu+qqq/zyC2F8fLwVLlzYmf7pdBkZGbluBOy2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tm1ba9++vQUGBjqnSM3OnP7JzOypp56yG264wS/nNF2/fr2Fh4dbjx49bNy4cRYdHW2PPvqos/7HH3+0kiVLWqVKlZzLYMzMduzY4Zf77nNtQ+ca5PX777/bU089ZcWLF/fb99y5tqPsl+WkpKTY22+/beHh4XbVVVdZ5cqVrVy5cn45n2luRQA8i4MHD1rLli29dhpmpwZIZE1bkf3I0fz58+22226zqKgov31zrlmzxoKDg+3JJ580s1MfUHfddZfVqVPHaXPy5EmbPXu2RUdHW6lSpaxKlSp+vcH9+uuvds0119iQIUOcD6g33njDIiMj7ZdffnGWbdy40Zo1a2Yej8eqVatmlStX9stwsXLlSgsNDXVeow8++MDCwsJs8eLFZnbmNaXfffedPfroo1akSBG/nHD38OHDduutt9qAAQO8lrdq1cpmzpxpkyZNckJ4amqqLVmyxJ555hmbMWOGX34Qm5ktXrzYrrvuOvvll1+cZffcc4898cQTdv/999usWbOcScczMzPtv//9r5UrV86vj/yVLVvWhg8f7mwvvXv3thEjRpy1/dq1a23QoEFWtGhRv9yGkpOTrUWLFl5ztM6cOdO6devmHE3OyMiwV1999byT+PuLQ4cOnXcbeuGFF2zDhg3OnIuLFy+2bt26WXR0tF++PlnOtx116dLFZs2aZbt27TKzU9PxLFiwwL7//nu/PRCRWxEAzyIxMdFuvPFGW7RokZn9+W2+R48e1qVLF6+2mZmZtnnzZhs6dKhfHlHKsnz5chs5cqSZ/dmfn3/+2cLCws4YDLFjxw5bunSpX9+1JCMjw5577jlr3bq115GvrCOCp4+8TklJsU8//dQWL17sl306duyYFSpUyAYOHOi1vHnz5tasWbOzDiiaN2+e3XHHHX47VYWZ2YwZM2zJkiXOz88884zly5fPmjZtalWqVLGSJUvav/71Lx9WeGm++OILi4iIsK+++spSUlJs4sSJFhQUZI888oi1adPG6tata4888ojzgXzw4MEzjuD6i/T0dHv88cftwQcf9BrAkTXxc+vWre2pp55yvlz8/PPPNnr0aKtTp47fhqejR49a3bp1vS6R6N+/v1133XV29dVXW/v27e2tt97yYYWX7pVXXjnvNhQZGenM77dlyxb74IMP/HqaLjOzzz///LzbUZ06deyRRx5hkucrjAB4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"
},
"execution_count": 8,
@@ -355,14 +355,14 @@
"metadata": {
"collapsed": false,
"ExecuteTime": {
- "end_time": "2024-05-24T11:02:40.087544200Z",
- "start_time": "2024-05-24T11:02:39.513012300Z"
+ "end_time": "2024-06-20T18:48:43.660060600Z",
+ "start_time": "2024-06-20T18:48:43.327907Z"
}
},
"outputs": [
{
"data": {
- "text/plain": "",
+ "text/plain": "",
"image/png": "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q4bff/8dHTp0eKUyZ8yYgcmTJyvPExISGBQSERERERG9hGIbMvq8qlWronz58vj3338BADY2NoiOjtbKk56ejtjY2BzvO1Sr1TA1NdV6EBERERERUf6VSED433//4eHDh7C1tQUAuLq6Ii4uDoGBgUqe48ePQ6PRoFmzZiXRRCIiIiIiordeoQwZTUxMVK72AcDt27dx6dIlWFhYwMLCAvPnz0efPn1gY2ODmzdvYtq0aahevTo8PDwAAE5OTujUqRNGjhyJ9evXIy0tDT4+PvD09OQMo0REREREREWkUK4Qnj9/Hg0bNkTDhg0BAJMnT0bDhg0xZ84c6Orq4sqVK+jRowdq1qyJ4cOHo3Hjxvjjjz+gVquVMrZv347atWujQ4cO6NKlC1q2bIkNGzYURvOIiIiIiIgoG4VyhbBt27YQkRy3Hz58OM8yLCwssGPHjsJoDhEREREREeVDidxDSERERERERCWPASEREREREVEpxYCQiIiIiIiolGJASEREREREVEoxICQiIiIiIiqlGBASERERERGVUgwIiYiIiIiISikGhERERERERKUUA0IiKnU+/fRTqFQqTJw4UUlLTk6Gt7c3LC0tUbZsWfTp0wdRUVFarwsLC0PXrl1hZGQEKysrTJ06Fenp6cXceiIiIqLCw4CQiEqVc+fO4euvv8Y777yjlT5p0iT88ssv2LNnD06ePIn79++jd+/eyvaMjAx07doVqampOHPmDLZs2YLNmzdjzpw5xb0LRERERIWGASERlRqJiYnw8vLCN998g3Llyinp8fHx2LhxI1asWIH27dujcePG2LRpE86cOYO//voLAHDkyBEEBwdj27ZtaNCgATp37oyFCxdizZo1SE1NLaldIiIiIioQBoREVGp4e3uja9eucHNz00oPDAxEWlqaVnrt2rVRuXJlBAQEAAACAgJQr149WFtbK3k8PDyQkJCAoKCgbOtLSUlBQkKC1oOIiIjodaJX0g0gIioOO3fuxIULF3Du3Lks2yIjI1GmTBmYm5trpVtbWyMyMlLJ83wwmLk9c1t2fH19MX/+/EJoPREREVHR4BVCInrrhYeH46OPPsL27dthYGBQbPXOmDED8fHxyiM8PLzY6iYiIiLKDwaERPTWCwwMRHR0NBo1agQ9PT3o6enh5MmTWLVqFfT09GBtbY3U1FTExcVpvS4qKgo2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o8LCwmBubq4sDg4OFT8gIiIiokrEhJCIqIoEBgYiIyNDWRISEqq7SkREREQamBASUa1mZ2cHAEhOTtZYn5ycrGyzs7NDSkqKxvb8/HykpaVplCkuxsP7eJShoSHMzMw0FiIiIqKahAkhEdVqTk5OsLOzw759+5R1mZmZOHr0KNRqNQBArVYjPT0dkZGRSpn9+/ejsLAQXbt2VcocPHgQeXl5Spm9e/eiRYsWqFev3jM6GiIiIqLKxYSQiJ57WVlZiIqKQlRUFIAHA8lERUUhPj4eKpUKU6ZMwbx587B9+3ZER0dj9OjRsLe3x+DBgwEArVq1gqenJyZMmIBjx47hr7/+gp+fH0aMGAF7e3sAwNtvvw0DAwOMHz8eMTEx+Oabb/B///d/mDp1ajUdNREREVHFcdoJInrunThxAn379lVeFyVpY8aMwYYNGzB9+nTcvXsXPj4+SE9PR8+ePbFr1y4YGRkp79m0aRP8/PzQv39/6OjoYNiwYVi2bJmy3dzcHHv27IGvry86deoEa2trhISEcMoJIiIieq4xISSi516fPn0gIiVuV6lUCA0NRWhoaIllLC0tsXnz5lL307ZtW/z5559PXU8iIiKimoa3jBIREREREWkpJoRERERERERaigkhERERERGRlmJCSEREREREpKWYEBIREREREWkpJoRERERERERaqlISwhs3bmDkyJGwsrKCsbExXFxccOLECWW7iCAkJAQNGjSAsbEx3NzccPHiRY0YaWlp8Pb2hpmZGSwsLDB+/HhkZWVVRvWIiIiIiIioGBVOCP/55x/06NED+vr6+PXXXxEbG4vFixejXr16SpkFCxZg2bJlWLVqFY4ePQoTExN4eHggOztbKePt7Y2YmBjs3bsXO3bswMGDBznhMxERERERURWq8MT0n332GRwcHLB+/XplnZOTk/KziGDp0qUICgrCoEGDAABfffUVbG1t8eOPP2LEiBE4d+4cdu3ahePHj8PV1RUAsHz5crzyyitYtGgR7O3tK1pNIiIiIiIiekSFewi3b98OV1dXvPHGG7CxsUGHDh2wdu1aZfuVK1eQlJQENzc3ZZ25uTm6du2KiIgIAEBERAQsLCyUZBAA3NzcoKOjg6NHjxa735ycHGRmZmosREREREREVHYVTggvX76MlStXolmzZti9ezcmTpyIDz74ABs3bgQAJCUl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kZZiQkhERERERKSlmBASERERERFpKSaEREREREREWooJIRERERERkZZiQkhERERERKSlmBASERERERFpKSaEREREREREWooJIRERERERkZZiQkhERERERKSlmBASERERERFpKSaEREREREREWooJIRERERERkZZiQkhERERERKSl9Kq7AkREREREVPPEx8cjNTW1uquhtaytreHo6Fjl+2FCSEREREREGuLj49GiZStk379X3VXRWkbGdRB3/lyVJ4VMCImIiIiISENqaiqy79+D1cBp0LdyqO7qaJ282wm4vWMxUlNTmRASEREREVH10LdygKFd0+quBlUhDipDRERERESkpZgQEhERERERaSkmhERERERERFqq0hPCTz/9FCqVClOmTFHWZWdnw9fXF1ZWVqhbty6GDRuG5ORkjffFx8fDy8sLderUgY2NDQICApCfn1/Z1SMiLXXjxg2MHDkSVlZWMDY2houLC06cOKFsFxGEhISgQYMGMDY2hpubGy5evKgRIy0tDd7e3jAzM4OFhQXGjx+PrKysZ30oRERERJWmUhPC48ePY/Xq1Wjbtq3Gen9/f/z888/Ytm0bDhw4gMTERAwdOlTZXlBQAC8vL+Tm5uLw4cPYuHEjNmzYgJCQkMqsHhFpqX/++Qc9evSAvr4+fv31V8TGxmLx4sWoV6+eUmbBggVYtmwZVq1ahaNHj8LExAQeHh7Izs5Wynh7eyMmJgZ79+7Fjh07cPDgQfj4+FTHIRERERFVikpLCLOysuDt7Y21a9dqXGRlZGRg3bp1WLJkCfr164dOnTph/fr1OHz4MI4cOQIA2LNnD2JjY/H111+jffv2GDBgAObOnYvw8HDk5uZWVhWJSEt99tlncHBwwPr169GlSxc4OTnB3d0dTZo0AfCgd3Dp0qUICgrCoEGD0LZtW3z11VdITEzEjz/+CAA4d+4cdu3ahX//+9/o2rUrevbsieXLl2Pr1q1ITEysxqMjIiIienqVlhD6+vrCy8sLbm5uGusjIyORl5ensb5ly5ZwdHREREQEACAiIgIuLi6wtbVVynh4eCAzMxMxMTHF7i8nJweZmZkaCxFRcbZv3w5XV1e88cYbsLGxQYcOHbB27Vpl+5UrV5CUlKRxnjI3N0fXrl01zlMWFhZwdXVVyri5uUFHRwdHjx59dgdDREREVIkqJSHcunUrTp48ibCwsMe2JSUlwcDAABYWFhrrbW1tkZSUpJR5OBks2l60rThhYWEwNzdXFgcHTphJRMW7fPkyVq5ciWbNmmH37t2YOHEiPvjgA2zcuBHA/84zxZ2HHj5P2djYaGzX09ODpaVliecpfnFFRERENV2FE8KEhARMnjwZmzZtgpGRUWXUqUwCAwORkZGhLAkJCc9s30T0fCksLETHjh0xf/58dOjQAT4+PpgwYQJWrVpVpfvlF1dERERU01U4IYyMjERKSgo6duwIPT096Onp4cCBA1i2bBn09PRga2uL3NxcpKena7wvOTkZdnZ2AAA7O7vHRh0tel1U5lGGhoYwMzPTWIiIitOgQQM4OztrrGvVqhXi4+MB/O88U9x56OHzVEpKisb2/Px8pKWllXie4hdXREREVNNVOCHs378/oqOjERUVpSyurq7w9vZWftbX18e+ffuU98TFxSE+Ph5qtRoAoFarER0drXGxtXfvXpiZmT12EUdEVF49evRAXFycxroLFy6gUaNGAAAnJyfY2dlpnKcyMzNx9OhRjfNUeno6IiMjlTL79+9HYWEhunbtWux++cUVERER1XR6FQ1gamqKNm3aaKwzMTGBlZWVsn78+PGYOnUqLC0tYWZmhkmTJkGtVqNbt24AAHd3dzg7O2PUqFFYsGABkpKSEBQUBF9fXxgaGla0ikSk5fz9/dG9e3fMnz8fw4cPx7Fjx7BmzRqsWbMGAJS5U+fNm4dmzZrByckJwcHBsLe3x+DBgwE86FH09PRUbjXNy8uDn58fRowYAXt7+2o8OiIiIqKnV+GEsCw+//xz6OjoYNiwYcjJyYGHhwdWrFihbNfV1cWOHTswceJEqNVqmJiYYMyYMQgNDX0W1SOiWq5z58744YcfEBgYiNDQUDg5OWHp0qXw9vZWykyfPh13796Fj48P0tPT0bNnT+zatUvj2ehNmzbBz88P/fv3V85py5Ytq45DIiIiIqoUVZIQ/vHHHxqvjYyMEB4ejvDw8BLf06hRI+zcubMqqkNEhIEDB2LgwIElblepVAgNDS31iyhLS0ts3ry5KqpHREREVC0qbR5CIiIiIiIier4wISQiIiIiItJSTAiJiIiIaphPP/1UGfCqSHZ2Nnx9fWFlZYW6deti2LBhj02XEx8fDy8vL9SpUwc2NjYICAhAfn7+M649ET1PmBASERER1SDHjx/H6tWr0bZtW431/v7++Pnnn7Ft2zYcOHAAiYmJGDp0qLK9oKAAXl5eyM3NxeHDh7Fx40Zs2LABISEhz/oQiOg5woSQiIiIqIbIysqCt7c31q5di3r16inrMzIysG7dOixZsgT9+vVDp06dsH79ehw+fBhHjhwBAOzZswexsbH4+uuv0b59ewwYMABz585FeHg4cnNzq+uQiKiGY0JIREREVEP4+vrCy8sLbm5uGusjIyORl5ensb5ly5ZwdHREREQEACAiIgIuLi6wtbVVynh4eCAzMxMxMTHP5gCI6LnzTOYhJCIiIqLSbd26FSdPnsTx48cf25aUlAQDAwNYWFhorLe1tUVSUpJS5uFksGh70bbi5OTkICcnR3mdmZlZkUMgoucQewiJiIiIqllCQgImT56MTZs2wcjI6JntNywsDObm5sri4ODwzPZNRDUDE0IiIiKiahYZGYmUlBR07NgRenp60NPTw4EDB7Bs2TLo6enB1tYWubm5SE9P13hfcnIy7OzsAAB2dnaPjTpa9LqozKMCAwORkZGhLAkJCZV/cERUozEhJCIiIqpm/fv3R3R0NKKiopTF1dUV3t7eys/6+vrYt2+f8p64uDjEx8dDrVYDANRqNaKjo5GSkqKU2bt3L8zMzODs7Fzsfg0NDWFmZqaxEJF24TOERERERNXM1NQUbdq00VhnYmICKysrZf348eMxdepUWFpawszMDJMmTYJarUa3bt0AAO7u7nB2dsaoUaOwYMECJCUlISgoCL6+vjA0NHzmx0REzwcmhERERETPgc8//xw6OjoYNmwYcnJy4OHhgRUrVijbdXV1sWPHDkycOBFqtRomJiYYM2YMQkNDq7HWRFTTMSEkIiIiqoH++OMPjddGRkYIDw9HeHh4ie9p1KgRdu7cWcU1I6LaRGsTwvj4eKSmplZ3NZ45a2trODo6Vnc1iIiIiIioBtDKhDA+Ph4tWrZC9v171V2VZ87IuA7izp9jUkhERERERNqZEKampiL7/j1YDZwGfSvtmW8n73YCbu9YjNTUVCaERERERESknQlhEX0rBxjaNa3uahAREREREVULzkNIRERERESkpZgQEhERERERaSkmhERERERERFqKCSEREREREZGWYkJIRERERESkpZgQEhERERERaSkmhERERERERFqKCSEREREREZGWYkJIRERERESkpfSquwL0/IiPj0dqamp1V+OZs7a2hqOjY3VXgyrRp59+isDAQEyePBlLly4FAGRnZ2PatGnYunUrcnJy4OHhgRUrVsDW1lZ5X3x8PCZOnIjff/8ddevWxZgxYxAWFgY9PZ5KiYiI6PnEqxgqk/j4eLRo2QrZ9+9Vd1WeOSPjOog7f45JYS1x/PhxrF69Gm3bttVY7+/vj19++QXbtm2Dubk5/Pz8MHToUPz1118AgIKCAnh5ecHOzg6HDx/GzZs3MXr0aOjr62P+/PnVcShEREREFcaEkMokNTUV2ffvwWrgNOhbOVR3dZ6ZvNsJuL1jMVJTU5kQ1gJZWVnw9vbG2rVrMW/ePGV9RkYG1q1bh82bN6Nfv34AgPXr16NVq1Y4cuQIunXrhj179iA2Nha//fYbbG1t0b59e8ydOxczZszAnDlzYGBgUF2HRURERPTUmBBSuehbOcDQrml1V4Poqfj6+sLLywtubm4aCWFkZCTy8vLg5uamrGvZsiUcHR0RERGBbt26ISIiAi4uLhq3kHp4eGDixImIiYlBhw4dHttfTk4OcnJylNeZmZlVdGRERERET4cJIRFpha1bt+LkyZM4fvz4Y9uSkpJgYGAACwsLjfW2trZISkpSyjycDBZtL9pWnLCwMHz88ceVUHsiIiKiqsFRRomo1ktISMDkyZOxadMmGBkZPbP9BgYGIiMjQ1kSEhKe2b6JiIiIyoIJIRHVepGRkUhJSUHHjh2hp6cHPT09HDhwAMuWLYOenh5sbW2Rm5uL9PR0jfclJyfDzs4OAGBnZ4fk5OTHthdtK46hoSHMzMw0FiIiIqKahAkhEdV6/fv3R3R0NKKiopTF1dUV3t7eys/6+vrYt2+f8p64uDjEx8dDrVYDANRqNaKjo5GSkqKU2bt3L8zMzODs7PzMj4mIiIioMvAZQiKq9UxNTdGmTRuNdSYmJrCyslLWjx8/HlOnToWlpSXMzMwwadIkqNVqdOvWDQDg7u4OZ2dnjBo1CgsWLEBSUhKCgoLg6+sLQ0PDZ35MRERERJWBCSEREYDPP/8cOjo6GDZsmMbE9EV0dXWxY8cOTJw4EWq1GiYmJhgzZgxCQ0OrsdZEREREFcOEkIi00h9//KHx2sjICOHh4QgPDy/xPY0aNcLOnTuruGZEREREzw6fISQiIiIiItJSTAiJiIiIiIi0FBNCIiIiIiIiLcWEkIiIiIiISEsxISQiIiIiItJSTAiJiIiIiIi0FBNCIiIiIiIiLVXhhDAsLAydO3eGqakpbGxsMHjwYMTFxWmUyc7Ohq+vL6ysrFC3bl0MGzYMycnJGmXi4+Ph5eWFOnXqwMbGBgEBAcjPz69o9YiIiIiIiKgEFU4IDxw4AF9fXxw5cgR79+5FXl4e3N3dcffuXaWMv78/fv75Z2zbtg0HDhxAYmIihg4dqmwvKCiAl5cXcnNzcfjwYWzcuBEbNmxASEhIRatHREREREREJdCraIBdu3ZpvN6wYQNsbGwQGRmJXr16ISMjA+vWrcPmzZvRr18/AMD69evRqlUrHDlyBN26dcOePXsQGxuL3377Dba2tmjfvj3mzp2LGTNmYM6cOTAwMKhoNYmIiIiIiOgRlf4MYUZGBgDA0tISABAZGYm8vDy4ubkpZVq2bAlHR0dEREQAACIiIuDi4gJbW1uljIeHBzIzMxETE1PsfnJycpCZmamxEBERERERUdlVakJYWFiIKVOmoEePHmjTpg0AICkpCQYGBrCwsNAoa2tri6SkJKXMw8lg0faibcUJCwuDubm5sjg4OFTmoRAREREREdV6lZoQ+vr64uzZs9i6dWtlhi1WYGAgMjIylCUhIaHK90lERERERFSbVFpC6Ofnhx07duD3339Hw4YNlfV2dnbIzc1Fenq6Rvnk5GTY2dkpZR4ddbTodVGZRxkaGsLMzExjISIiInoecdR2IqouFU4IRQR+fn744YcfsH//fjg5OWls79SpE/T19bFv3z5lXVxcHOLj46FWqwEAarUa0dHRSElJUcrs3bsXZmZmcHZ2rmgViYiIiGo0jtpORNWlwqOM+vr6YvPmzfjpp59gamqqPPNnbm4OY2NjmJubY/z48Zg6dSosLS1hZmaGSZMmQa1Wo1u3bgAAd3d3ODs7Y9SoUViwYAGSkpIQFBQEX19fGBoaVrSKRERERDUaR20noupS4R7ClStXIiMjA3369EGDBg2U5ZtvvlHKfP755xg4cCCGDRuGXr16wc7ODt9//72yXVdXFzt27ICuri7UajVGjhyJ0aNHIzQ0tKLVIyIiInruPKtR24mIKtxDKCJPLGNkZITw8HCEh4eXWKZRo0bYuXNnRatDRERE9Fx7lqO25+TkICcnR3nNabyItE+lz0NIRERERE/vWY7azmm8iIgJIREREVEN8axHbec0XkTEhJCIiIiomlXXqO2cxouIKvwMIRERERFVDEdtJ6LqwoSQiIiIqJqtXLkSANCnTx+N9evXr8c777wD4MGo7To6Ohg2bBhycnLg4eGBFStWKGWLRm2fOHEi1Go1TExMMGbMGI7aTkSlYkJIREREVM04ajsRVRc+Q0hERERERKSlmBASUa0XFhaGzp07w9TUFDY2Nhg8eDDi4uI0ymRnZ8PX1xdWVlaoW7cuhg0b9thoffHx8fDy8kKdOnVgY2ODgIAA5OfnP8tDISIiIqpUTAiJqNY7cOAAfH19ceTIEezduxd5eXlwd3fH3bt3lTL+/v74+eefsW3bNhw4cACJiYkYOnSosr2goABeXl7Izc3F4cOHsXHjRmzYsAEhISHVcUhERERElYLPEBJRrbdr1y6N1xs2bICNjQ0iIyPRq1cvZGRkYN26ddi8eTP69esH4MFADq1atcKRI0fQrVs37NmzB7Gxsfjtt99ga2uL9u3bY+7cuZgxYwbmzJkDAwOD6jg0IiIiogphDyERaZ2MjAwAgKWlJQAgMjISeXl5cHNzU8q0bNkSjo6OiIiIAABERETAxcUFtra2ShkPDw9kZmYiJibmGdaeiIiIqPKwh5CItEphYSGmTJmCHj16oE2bNgCApKQkGBgYwMLCQqOsra2tMhdYUlKSRjJYtL1oW3FycnKQk5OjvM7MzKyswyAiIiKqFOwhJCKt4uvri7Nnz2Lr1q1Vvq+wsDCYm5sri4ODQ5Xvk4iIiKg8mBASkdbw8/PDjh078Pvvv6Nhw4bKejs7O+Tm5iI9PV2jfHJyMuzs7JQyj446WvS6qMyjAgMDkZGRoSwJCQmVeDREREREFceEkIhqPRGBn58ffvjhB+zfvx9OTk4a2zt16gR9fX3s27dPWRcXF4f4+Hio1WoAgFqtRnR0NFJSUpQye/fuhZmZGZydnYvdr6GhIczMzDQWIiIiopqEzxASUa3n6+uLzZs346effoKpqanyzJ+5uTmMjY1hbm6O8ePHY+rUqbC0tISZmRkmTZoEtVqNbt26AQDc3d3h7OyMUaNGYcGCBUhKSkJQUBB8fX1haGhYnYdHRERE9NSYEBJRrbdy5UoAQJ8+fTTWr1+/Hu+88w4A4PPPP4eOjg6GDRuGnJwceHh4YMWKFUpZXV1d7NixAxMnToRarYaJiQnGjBmD0NDQZ3UYRERERJWOCSER1Xoi8sQyRkZGCA8PR3h4eIllGjVqhJ07d1Zm1YiIiIiqFZ8hJCIiIiIi0lLsISQi0jLx8fFITU2tcBxra2s4OjpWQo2IiIioujAhJCLSIvHx8WjRshWy79+rcCwj4zqIO3+OSSEREdFzjAkhEZEWSU1NRfb9e7AaOA36Vg5PHSfvdgJu71iM1NRUJoRERETPMSaERERaSN/KAYZ2Tau7GkRERFTNOKgMERERERGRlmJCSEREREREpKWYEBIREREREWkpJoRERERERERaigkhERERERGRlmJCSEREREREpKWYEBIREREREWkpJoRERERERERaigkhERERERGRlmJCSEREREREpKWYEBIREREREWkpJoRERERERERaigkhERERERGRlmJCSEREREREpKWYEBIREREREWkpJoRERERERERaSq+6K0BERLVDfHw8UlNTKxzH2toajo6OlVAjIiIiehImhEREVGHx8fFo0bIVsu/fq3AsI+M6iDt/jkkhERHRM8CEkIiIKiw1NRXZ9+/BauA06Fs5PHWcvNsJuL1jMVJTU5kQEhERPQNMCImIqNLoWznA0K5pdVeDiIiIyogJIRERaSU+80hERFQDE8Lw8HAsXLgQSUlJaNeuHZYvX44uXbpUd7WIiADwHFVb8JlHqs14niKi8qhRCeE333yDqVOnYtWqVejatSuWLl0KDw8PxMXFwcbGprqrR0Rajueo2qMqn3lkzyNVJ56niKi8alRCuGTJEkyYMAFjx44FAKxatQq//PILvvzyS8ycObOaa0dE2o7nqOpRlQlWZT/zyJ7HZ6MyPhO1NeHmeYqIyqvGJIS5ubmIjIxEYGCgsk5HRwdubm6IiIh4rHxOTg5ycnKU1xkZGQCAzMzMJ+4rKyvrQYykSyjMza5o1Z8beWnXATw4/rK008PYZuVvs6L3AdrVbuVps6LtIlLl9aqo8p6jgJpxnnr09/G8xU1ISEAn187Iyb7/1DGLGBoZI/LEcTg4OFRZfa9evYrs+/dg1nkodM3rP3XcgoxbyDz+Pa5evQoLCwsAQFJSEpKSkp46ZhE7OzvY2dkpr6sqbmXFfjRuZX0mHv48lIbnqZJp4/+4mqSi1yhPwt9v9Xqm11NSQ9y4cUMAyOHDhzXWBwQESJcuXR4rP3v2bAHAhQuXWrAkJCQ8q1PNUyvvOUqE5ykuXGrTwvMUFy5cavrytOepGtNDWF6BgYGYOnWq8rqwsBBpaWmwsrKCSqWqxpqVLjMzEw4ODkhISICZmVl1V+e5wDYrv+elzUQEd+7cgb29fXVXpUpU9Xmqqn7PjMu4jPs/PE/VXs/L/0p6Otr0+63oearGJITW1tbQ1dVFcnKyxvrk5OTHbkEBAENDQxgaGmqsK7qt5nlgZmZW6z+clY1tVn7PQ5uZm5tXdxXKpLznKODZnaeq6vfMuIzLuA/wPFW7PQ//K+npacvvtyLnKZ1KrEeFGBgYoFOnTti3b5+yrrCwEPv27YNara7GmhER8RxFRDUfz1NE9DRqTA8hAEydOhVjxoyBq6srunTpgqVLl+Lu3bvKSFlERNWJ5ygiqul4niKi8qpRCeGbb76JW7duISQkBElJSWjfvj127doFW1vb6q5apTE0NMTs2bMfuz2DSsY2Kz+2WdWoaeeoqvo9My7jMu7zq6adp2oybf+s1Hb8/ZadSuQ5GEeZiIiIiIiIKl2NeYaQiIiIiIiIni0mhERERERERFqKCSEREREREZGWYkJIRERERESkpZgQEhERERERaSkmhFTtONAtUfGq4m+Df2/0LPHzRs9aYWEhCgoKqrsaRM8VJoSVgCee8rt79y7u3LmDzMxMqFSq6q7OcyEtLQ3nz5/HxYsXkZubW93VoSpSWFio/KxSqTReV0RWVpYSszKJSKXVsbR9VJYzZ87gyy+/RH5+fqXFBICEhAT89NNPWLduHTIyMio1dlXIzMxEdnZ2pcdNSUnBmTNncODAAQAPPm+V+fur7N8b1S6xsbEYPXo0PDw8MHHiRBw+fLi6q0SVjNfcVYMJYQVduHABS5cuxc2bN6u7Ks+N2NhYDB06FL1790arVq2wadMmAPwmuTRnz56Fm5sbhg8fDhcXFyxYsIAnxVro4sWL8Pf3x4gRIzB+/Hjk5uZCR0enwgnX6dOn4eHhgUuXLlVSTR+4cOECZs6ciTfeeANffvkl7t69Wylxk5OT8fvvv2PXrl24evVqpSXGp0+fRvv27XHlyhXo6elVQk0fiI6OxksvvYT58+fDx8cHnp6eyMnJqXDcyohRnJMnT+Lll1/GlStXKjVudHQ0+vfvj7feegvu7u6YMGECgIp/CREbGws/Pz8AgJ6eHs99VKy4uDh0794dBQUF6Ny5MyIiIjB58mQsW7asuqtGlYTX3FVI6KldvHhRLC0tRaVSSWBgoNy6dau6q1TjxcTEiJWVlfj7+8umTZtk6tSpoq+vL6dOnaruqtVYRW324YcfSkxMjCxatEhUKpXEx8dXd9WoEkVHR4u1tbWMGjVKRo4cKW3atBFXV1cpLCysUNyoqCgxMDCQwMBAZV1BQYGISIViR0dHS/369WXQoEEyZMgQUalU8vXXX1eoriIiZ86ckVatWomLi4s0bNhQWrRoISdPnqxw3NOnT4uxsbHMnDmzwrEedvXqVWnUqJGEhobK7du3JSUlRerWrSt79+6tUNzz58/LsGHD5NChQ5VU0weioqKkTp068sEHHzy2rSKfh4sXL4qNjY3MmTNHIiMj5ZtvvhEbGxu5cOFCRaorly5dkhdeeEFUKpW8/vrryvr8/PwKxaXapbCwUD766CMZPny4si4zM1PmzZsn7du3l88++6waa0eVgdfcVYsJ4VPKysqScePGyTvvvCPh4eGiUqkkICCAH9BS3L59W9zd3R+7EOnTp49MmjRJRCp2QVIb3bp1S3r16iWTJ09W1hUWFoqnp6ccPnxYTp06xcSwFrhx44a0b99epk+fLiIPfseRkZHSvHnzCiUW0dHRYmxsLEFBQcq67OxsSUxM1ChX3r+71NRU6dChgwQHByvr3n33XQkJCalwUmFnZyczZsyQ69evy19//SVvvPGGjBs3TnJycp469uXLl0WlUil/R4WFhbJo0SIZPXq0+Pv7y1dfffXUdf76669FrVZLenq6sm7AgAGyfv16WbBggZw4cULu379f7vo2atRI6tWrJwMHDpTDhw8/df0edubMGTEzM1OS4sLCQrlx44Zcu3ZNbt++LSL/+7KgvObNmyevvfaa8v6bN29Kv3795K+//pIdO3ZITk5OuWNmZmbKu+++K8OGDZPVq1eLk5OTDB48WNnOpJAe9s4770ivXr001mVmZsqiRYvE1dW1Ur6wourBa+6qV3n3zGgZHR0ddOrUCVZWVnjzzTdhbW2NESNGAACmT58Oa2vraq5hzZOXl4f09HS8/vrrAB48K6WjowMnJyekpaUBqPznm553KpUKnp6eSpsBwLx587B7924kJSUhNTUVrVu3RlBQEHr27FmNNaWKiIiIQJ06dTBx4kQAD37vzs7OKCwsxPXr158q5q1bt/D666+jRYsWmDt3LgDAx8cHZ8+exaVLl+Dp6YnJkyejU6dO5f67S09PR0FBATw9PZV19+/fR1RUFHr37o1+/frB3d0d3bt3L3PM7OxsLFq0CG5ubpg/fz50dHTwwgsv4ODBg9i4cSP09PSe+vyQlZUFQ0ND3L17F2lpaRg8eDDy8vJgY2ODxMREfPvttzh37hzmz59f7tg3btxAYmIi7t69C3NzcyxevBh79uyBvr4+zp49i//85z+YNm0axowZU6Z4OTk5+OSTT+Dq6goPDw989913CA0NRUhICNRqdbnrV+TOnTvo0qULmjdvjrCwMADAqFGjcPHiRcTHx6NBgwZYunQpevXqpZyby+Pvv/9GWlqa8r6NGzfi8OHD8PPzw7Vr19CsWTN88803aNSoUZljGhgYwNHRER4eHnj11VdRv359TJs2DUOGDMEPP/wAXV1dFBQUQFdXt1x1pdpFRKBSqdCxY0dcvHgRcXFxaNGiBQDA1NQU48aNQ1xcHFasWIEhQ4agTp061VxjKi9ecz8D1Z2RPs+ysrI0Xm/dulVUKpV8+OGHkpqaKiIPvm29fPlydVSvRnr49qHc3FwREQkKCpJRo0ZplLtz584zrVdNlpmZqfy8ZcsWUalU8s0338jt27flwIED0rlzZ5kzZ0411pAqKj4+XtasWaO8LvrbUKvVsmrVqqeKeevWLRk3bpz06dNH5s2bJy+99JIMGDBAFi5cKF9//bU0btxY+vbtK3FxcSJSvl7C06dPi66urqxcuVKuXLkiYWFhYmxsLDNmzJCPPvpIWrVqJd7e3vLPP/+UOeb9+/dl/vz5Eh4erlGf06dPS7NmzeT27dsaPULl7S08fvy4WFlZia6urrz++uuSkJAgIiJpaWmyaNEicXJykr/++qtMsW7duiVJSUki8qB318bGRpo3by5eXl5iYGAge/bsUXrKBg8eLL169ZK8vLwy1/Wnn36S1atXi4jIL7/8Ih4eHspdAY8qTzssW7ZMjIyMJDQ0VHr16iX9+/eXb775Rr766isZNWqU6OnpybFjx8oc72G//PKLGBoaioeHh4wcOVKMjIxk586dkpSUJHfu3JHGjRvL+PHjyxTr1q1bSi/2wz2Ld+/ele+++06cnJxk0KBByvr79+9LcnLyU9Wbao9Lly6JtbW1jBs3TrmGKPr7iI+PF5VKJb/++mt1VpEqgNfcVYsJYSXIz89XTjpFF+wBAQFy48YN8ff3l6FDh8rdu3eruZY1y8O3Jc2aNUs8PDyU1/Pnz5fFixeX6wJKW1y9elUiIyM11nl5ecmrr75aTTWip3XlyhWJiIh4bP3Dfxv9+vWThQsXKq9XrVpVrn92iYmJMmnSJLG3txd3d3eNi+br169LvXr1ZPbs2U9V/48//lj09PTEw8ND6tSpI9u3b1e27d69W1QqVZkTrCJXr15Vfi46p0ZHR4uTk5OkpqYq627cuPHEWJcuXZJffvlFY93x48fFy8tLdu/erbE+Li5OTExMZMuWLU+MGxMTIy4uLvL9998r627cuCFfffWVhIWFiZeXl+Tm5sq9e/dERGTdunXSunVr5ZbM0jz8u3840fv5558fSwpzcnLk2rVrT4wponlr5fLly0WlUknfvn01brdKTk6Wl19+WUaOHFmm23Nv3bql8cVdZmam7Ny5U4KDg2Xs2LEydepUpZ4iIpMnT5aXX375ibekPtq+RXUvet/9+/flv//9r8btoxMnTpQRI0ZIdnZ2mdqDaq/9+/eLoaGh+Pr6any+b968Ke3atau026+p+vCau2owIawkhYWFyj+srVu3ir6+vrRo0UL09PQ4YEoJiv6gZ82aJQMGDBARkeDgYFGpVBIVFVWdVXsuFBQUyP379+XNN9+UTz75pLqrQ+Vw+vRpsbW1lcmTJxfbs1F0LnnppZdkyZIlIiISEhIiKpVKzp07V2Lc5ORkOXz4sERGRioXQ4mJiRIaGiq//vqr8jdX9GXLgAEDZOTIkU+sb3Jyspw/f16OHj2qsf7cuXNy9uxZcXV1lRs3bkhubq4UFhbKhQsXxMXFRY4fP15q3Js3b8qRI0dkx44dGuuL6llQUCARERHSoEEDJfkICAgQCwsLuXfvXolJy6lTp0RHR0f+/e9/K+uK2jQpKUl5pq/o/QkJCeLq6ioHDhwotb5RUVFSt25dUalU8tJLLz22/wULFoi7u7vGuokTJ8orr7yiJIjFSU9Pl/T0dLl+/brG+qKeYhGR7du3i4eHhwwYMEAOHjwo77//vlhaWpbaDpmZmZKWliZXrlzRWP/999/L6tWrpaCgQOO9Q4YM0eh5K8mlS5fEyMhIfHx8NO5gKDJixAjx8fHRWPfWW2/J+PHjS33u70ntWyQ7O1u+++47adq0qdSvX18MDQ2fumeTap/t27eLoaGhDB06VLZu3SqxsbEyc+ZMadCggXJnAD3feM1d+ZgQVqLCwkLlH1i/fv3E0tJSzpw5U821qrmK/phnz54tPj4+snDhQjE0NHysB4xKFhwcLI6OjhUeyY+encuXL0uDBg1k+vTpJV4cF/V0qNVq2bBhgyxdulSMjY1L/ds4c+aMtG7dWpo3by6Ojo7yr3/9S7llMysr67Hek5ycHPH09Hzi6HunT5+WF198UVq1aiUqlUrc3d3l66+/Vs51J0+eFCsrK7l06ZLynqCgIGnVqpVyW2VJ9W3ZsqV07NhRVCqVDB06tMT9Ozg4SG5urgQHB4upqakcOXKkxLhRUVFiYmIi06ZNK3Z7cW1edJvro4PtPBrX2NhYPvroI/ntt9+kefPmsmvXLhH537ns6NGjoqurK1OnTpVvv/1WpkyZ8sT/A6dPn5auXbtKy5Yt5cUXX5Rp06Zp9IA+XN+ff/5ZBgwYIBYWFmJhYfFYgv6ws2fPyssvvywuLi7SuHFjCQsLK7Edin6X3t7eEhQUpPG/rDg7duwQExMTMTY2ltGjR0tWVpZG+VWrVknbtm1lw4YNEh0dLTNmzJD69etLbGxsiTFLa9/i6pKRkaH8nz179myJcUk7RUZGSu/evaVRo0bSpEkTad68eaWMVkw1B6+5KxcTwkqWn58v/v7+olKp5PTp09VdnefCvHnzRKVSibm5+RN7FOiBb7/9Vnx9fcXKyor/5J4z69atU3ph8vLyZMmSJTJ27FiZP3/+YyOKDhw4UCwsLKROnTql/m1cvHhR6tevLzNmzJC///5bFi5cKE2aNNH4NvzRi+qPPvpIHBwc5O+//y4xblJSkrz44osyffp0OXv2rJw5c0ZefvllUavVEhoaqsR87bXXxNTUVMaMGSNDhgwRGxubUr+ljY2NFSsrK5k1a5ZcvXpVoqKiRKVSFTvFwoULF6Rdu3Yybtw4MTAwkBMnTpQY99y5c2JmZiZ+fn4i8uB8vHnzZlm4cKEsWbLksZEujx07Jv/617+kXr16pd6VcPz4calTp47MmjVLRB6Mstq0adPHnom7d++e/Pvf/xYbGxtp3bq19O7du9QLlGvXromNjY0EBATIli1bZPXq1WJqair9+/fX6K18+DZLd3d3sbCwkOjo6BLjxsbGSr169SQgIED+85//yKJFi8TIyEi2bdumlHn485CZmSkhISFia2urPFNamlOnTsnw4cMlIiJCzM3NZcyYMUqCefv2bbl8+bKMGzdOTExMpGXLltKmTZtSPw9lbd8i+fn5yi3LvJuESpKRkSFXrlyRM2fOcDTKWorX3JWHCWEly8/Pl3//+9/ssi6H48ePi0qlkpiYmOquynPj7NmzMnz48FK/caeaaeLEicp8ar1795ZevXrJoEGDpHPnztKhQwdZu3atUvaVV14RlUr1xB6Q4OBgeeONN5TXhYWF0r9/f9mzZ48cOnRI6XEqKCiQb775RoYOHSo2NjZP/DLhr7/+kiZNmmg8q5aSkiJ+fn7SpUsXWbx4sYg8eB4xMDBQPD09xc/Pr9TbWtPS0sTLy0tjCggREU9PT/nhhx9k06ZNGknJoUOHRKVSiYmJyRPPq3PmzBGVSiXffvutpKamSr9+/UStVkvTpk3F0dFRGjdurNQtISFB5s+fLy+//PITLyTGjx+vJJlFydnXX38tVlZW8ueffxZ7jMnJycXeTvmwLVu2SLt27TSed7l27Zo4OztL3759Nb4EyM/PlxkzZjwxCUpLSxMPDw/x9/dX1t29e1cGDhyoMa1JkQMHDshbb70ltra2Zf5y6c6dO9KhQwe5ceOG7Ny5U0xMTGTixIkyduxYef/990XkQVIXFRUlJ06ckJSUlFLjlbd9c3Nz5ZNPPik1KSai2o/X3JWHCWEV4Fx65ffo6FH0ZA8/X0TPjw0bNsirr74qK1eulJdfflm5TfHixYvi6+srffv2VRKwU6dOPfb8V3H8/f2lW7duyi2ioaGhoqOjI87OztK6dWtp2rSp8uVBdHS0vPPOO2X6MiEyMlJeeOEFOXjwoIj879nD27dvy/jx40WtVmv0gOXn5z9x0JD09HRZvHixRlIzd+5c0dHRkd69e4udnZ107txZ6c1KTk6W8ePHl/kLI19fX3nxxRelRYsWMnDgQLl8+bL8888/kpiYKH379pXWrVsrx5GcnFyukVAfdvbsWWnevLksWrRIRP53C2Z5zv9r166Vpk2bKs80Ft3We+3aNWncuLHGnHsiD0YffVLyeuXKFfHw8JCffvpJY/306dPFy8tLRERjwK6jR4/Kp59+KufPny9TnQsKCuTevXvi6uqq9GhHRkaKgYGB6OvrV9qgHSW1bxH+nyUiEZ4LKgsTQiKiZ+i3334TW1tb6dmz52MDukRERIiRkZGSgJXVqlWrpHPnztKrVy8ZN26c6Orqyg8//CC3b9+WU6dOyYABA2Ts2LFK4lHWEXxv3bolTZo00RggpOjCPDU1Vezt7SUwMLDM9Sz6x/3wACv79u0Tc3Nz+fHHH+Xu3buSl5cnarVahg8frpQpy4hxDycMvr6+4urq+ljSe/DgQbG0tCz21tQn1bk406dPFxsbm6ee8iA6Olr09fWVKSZE/vdFz5kzZ0RfX79MI58+LD8/X+PZwqJ2CQ4OloEDBxb7nqcZ0fm9996TrVu3iojI6NGjxdraWurUqSM+Pj7l+oKvKtuXiIjKpnwzzxIRUYX0798f06ZNw19//YXTp0/j0qVLyraWLVuiXbt2MDQ0LFfM9957D++++y5eeeUV5OXlYcqUKRg8eDAsLS3Rvn171K9fH0lJSTAyMgIA6OnpPTGmiMDa2hrh4eH48ssv8cknnwAAdHV1ISKwsrLCwIEDceHChTLXs2hieWNjY2Vds2bNcPz4cQwaNAiGhobQ09NDr169cP36deTm5gJAmSaSLpqkHAC++OILLFq0CE5OTsqxAEBubi6sra1hZ2dX7jo/rLCwEMCDid3r16+PLVu2aOynLAoLC9GmTRt89NFHmD17Nr777jsAD343BQUFaNGiBTp06IC///67zDGBB+3QpUsXZR9Fk7bXqVNHaU8AmDFjBkJDQ5V9llXRMVpaWuLo0aP417/+hT179uDgwYPYvXs31q5dixkzZpS5LaqqfYmIqOzK/l+AiIjKRUQ0LngLCwuho6ODgIAAZGdnY/bs2fj0008xevRotG7dGosWLUJycjIcHR3LvI+imD4+PgCAqVOnIjMzU6OMoaEhXnjhBeTl5UFPT6/Yi/BHFZXx8PDA//3f/+GDDz7A/fv3MWPGDJiamgIAbt26BVtb2zLXtTgODg7Kz0XJZmJiIjp16lSuRKXo/UXt0bt378eOZffu3WjQoAEsLS0rVGcdnQffpbZu3RrNmzfHhg0bMHny5DK166Mx3nrrLSQkJGDGjBkoKCjA8OHDoaurC11dXRgbG5e7DYrbBwDo6+srCeGsWbOwcOFCHDly5Kljd+/eHW+//Tbq16+PnTt3olWrVgCAAwcOoH79+k9si0f/Noqrd0Xal4iIyo4JIRFRJUtPT4eFhcVjF7APX6AHBwejXr16WLVqFbZt2wYnJyekpaXhp59+KlcP1sMxAcDCwgJ79uzB9u3bYWNjgx07duC///0vDh06BH19/VJjlXSR7uPjg7p16+K9997DiRMnYGlpCWNjY+zZswdHjx59Ykyg+J6g4gQHB+O3337D77///tixlaXexb3n5MmT2LJlC9auXYuDBw+iXr16JcYqKChQetVKU5R4+vv7Y+TIkUhOToaNjU25k5YWLVpg8uTJMDQ0xOjRoxEREQEnJydcvnwZp06dwtq1a8sV71FFbZOdnQ1ra2ssXrwYixcvxokTJ9CxY8di33Pr1i2ICGxsbB7bVnR8nTt3hq+vL95++224uLgo21966aUS63LlyhVcvnwZ/fv3f2I7VVb7EhHRk6mE92AQEVWaqKgoTJo0CeHh4Wjbtm2xZR5OYP7++28kJSWhoKAAzZo1Q4MGDYp9z+XLl3H9+nX06tXriXVwc3NDbGwsjI2NYW5uji+//BLt27cvtuw///yD27dvw9DQUKO3rjgxMTFYvXo1EhISYGVlhSlTpqBNmzbFls3JyYGhoSFyc3NhYGDwxDp/99132LZtGw4ePIhffvkFHTp0KLbc1atXsXfvXujo6MDBwQHu7u6lxr18+TJWrFiBnTt3YsuWLWjXrl2x5VJTU2FtbQ2g5KSwuIQ5PT0d+fn5ynsfVXT8Re1RUuzU1FTs3bsXn332GYyNjVGnTh0sWbKkxPomJiZCpVKV+Hl51KeffoqPPvpI+cLA1dW12HInT57EK6+8gv/+97/o2bNnsWWKjiE/P7/MPZhnzpzBwIED4enpiY8//rjYej9N+xIRUSV4to8sEhHVXlFRUaKvry8BAQGPbSsafbOkyehLc/r0aWnQoIGMHz++xAE2CgsLNUb4PHjwoJw6darUATmio6OlY8eO0rp1a9HT05NVq1YpsYoU1bcodtGgJ6UNRBITEyPDhg0TLy8v6dOnj+zcuVMyMjI0yjzaDjExMfL++++XOmXFmTNnxMrKSrp16yZNmjSRunXryrvvvqsxofyjcXNycuTSpUty8+bNEuPGxsaKkZGRxrx3pf2eHj2Wkpw7d05GjhwpAwYMkFdffVVj+o4ij7ZjVlaWFBQUlDqQztWrV0VHR0f69eunMYn9wx4d7fXHH3+Uhg0bljpVQ1RUlNStW1eZEqS4mE8zot/ly5fF1tZWPvzwwxLLPNzeZW1fIiKqHEwIiYgqwdmzZ8XY2FhCQkJE5EFSVTRJd3FWrlxZ6iTrRS5fvix2dnYSEBBQ4sX4w0lFaYnPw+Li4qR+/foyffp0OXHihMyePVuMjY0lLS1Nqf/DoqOjlVFKi9te5Ny5c2JpaSl+fn6yZMkSee+990SlUsnUqVOLTfaio6OVUUdLSzLv3LkjarVaJk2apBznr7/+KpaWluLp6SmXLl3SKP/hhx8qo2CW5vr169KlSxfp2LGj2NvbFzui6sOmTJki77333hPb+cyZM1KvXj3x8fGRadOmSf/+/eW1115TEupH26+oDYoSudISr9OnT0ujRo2kfv36olarNRLiR993/fp1Jf7t27dLra+5ubnyZUZBQYFER0dLRESExpQfRfEDAgLkm2++KbUNinz55ZfKPJl5eXny6aefysSJE2XmzJkSGRmpUeeyti8REVUeJoRERBWUmpoqTZs2lQ4dOijrxo4dK506dZIGDRpIr1695NSpU8qFb3JysqhUKhk0aJAy91xJvvrqKxk6dKiIPOid+/TTT2XcuHESFBQk+/fv1yg7e/ZsGTdunPz999+lxiwsLBQ/Pz95/fXXlXU3b94ULy8viYuLk/Pnz0t6erqy7YsvvhADAwP55ZdfSo2bn58vY8eOlXfeeUdjvaenp9StW1cmTZqk0UsWHh4uBgYGsmPHjlLjiojcv39fOnbs+FiSFxcXJ9bW1jJ48GAlgbtz5468/fbbYmtrK3fu3Cm1HdatWydDhw6V33//XdavXy+2trYaSeGjSery5cvF3NxckpKSSox7+fJladasmcaUHAsXLpR3331XOZaHzZ07V1xcXMo0J2JhYaH8/fff8sorr8j58+fF2dlZevTooSR7D88nuGjRImnQoIHGXJHFycvLk5YtW4qJiYlkZ2dLQUGBvPbaa9KpUycxMTERR0dHmTNnjlK+rO1b5MMPP5TXXntNREReeuklUavV8uabb4qjo6P06NFDNm3apJT94osvnti+RERUuTjtBBFRBVlZWcHT0xMmJiaYM2cOunTpgps3b+K9997DihUrkJeXh8GDBytTCNjY2OD8+fP47LPPnjjFRGRkJO7fvw8AcHd3x/bt23H//n1s27YNwcHBWLVqlVK2Tp06+Ouvv2BiYlJqTJVKheTkZJiamiqDvqxZswZ79uzBG2+8gW7dumHKlCk4d+4cAMDX1xeenp5o2rRpqXELCwtx7do1vPjiiwCArKwsAECbNm2gVquxceNG7Ny5Uyn//vvvw9PTE82aNSs1LvDgubXk5GTExcUp6/Ly8tC8eXPs27cPe/fuRVhYGACgbt26+OKLLxAVFYW6deuW2g6vvfYa3n77bfTp0wcjRoxAWFgYfvrpJ2XU1qJpIIrayc/PD1evXi11dNXjx4+jY8eO8Pf3V9YlJSXh4MGDUKvV6N69O/bu3ascV9++faGrq4v09PQntoNKpcKLL76InJwc5OTk4IcffkBycjKGDRuGESNGYPbs2bh79y4A4O2330bz5s2fOG2Hnp4evvvuOxgbG+ONN95A7969kZ2djc8//xy7d+/GtGnTMHfuXCxevLhc7Vs0fcQLL7wAlUqFPXv2wNjYGDt27MDWrVsRExMDS0tLrFmzRvmM+/r64tq1axUevZaIiMqhujNSIqLn2cPPak2dOlVsbW3Fy8vrsR6O1q1by5gxY0TkyROBJyQkSGRkpIiIrF+/XoYOHSpbt24VNzc3Je7NmzdlzJgx4ubmJikpKcp7i275fJKPP/5YjI2NZcqUKTJu3DgxNDSUbdu2SUpKiuzYsUOcnJwkPDy8TLEenoh81KhR0qFDB6VdEhMTxcrKSo4dOyYhISFia2sraWlpjz3jVhaLFy+Whg0bys8//6ysK7oFc968edK1a1dJTU0td9yHb1m8c+eO0lM4YcIEZf1//vMfuXLlymPli5OXl6dxe+znn38u+vr6snTpUtm0aZO89957UqdOHY3evEd7DUuSn58v+fn50q9fP+WZz4yMDDE3NxcdHR3Zs2fPY+XLKiYmRkxMTKR9+/Yan9/s7GyZMmWKRk9kecTExIiBgYG4uLjIkCFDNOp048YN0dXVlV27dint+jTPKRIR0dPjtBNERE/h7t27KCwshIjAzMwMALB48WLY29vDyclJGbK/aETGli1bKj03pY3MGBMTgwEDBuCNN95Ax44d0bJlS0ycOBFXrlyBk5OT0nNiZ2eHwMBAtGrVCqdOnVJG27SwsChT/UNCQlBYWIisrCxcuXIFkydPxuuvvw4A8PLywooVK7B7925MnDix1KH+4+LiMG/ePHzyySdwdHTEmDFjEBQUhBdeeAHu7u747rvv8Pbbb6Nz584wNDTE+vXrkZKSUurUDwBw48YNxMbGIjExEd7e3tDT04OHhweOHTuGBQsWwMDAAO7u7spUGtbW1sjMzNSY9L44ly9fxvbt25GQkIDBgwfD1dVV4z1169bFsGHDAAAzZ86ESqVC3bp18fnnn+Pq1asAnjyFhp6eHlq2bAngwefk6tWr2L17N/r27QsAGDBgALZv3459+/ahRYsWAAAjI6NiY+Xm5iIvL0/p9S0aobRv377Izs4G8KDX0tDQEObm5pg/fz5atWqFhg0bapR/VHHt6+zsjNjYWOzfv19jrkZDQ0NlYvuiz3pJHm3f9u3bw9nZGUuWLMFHH32EunXr4p9//tEYNbRjx44aU0pwagkiomesujNSIqLnTUxMjLi7u0uHDh3E3t5evv76a41ej5ycHI3yhYWF8vrrr2sMOFOcqKgoqVOnjjg5OYmdnZ0yWMjq1atFT09P2rdvr/F8YGpqqnTv3l2OHz9ean0vX74sS5YskalTpxY70Mobb7why5cvF5H/9bgNHTpUAgMDS+2tiYqKEmNjY1GpVPLll1+KyIMe06ioKAkICBB/f39Zu3atUv7AgQPSvHlzuXr1aqn1PXPmjDRv3lw6duyo9FgV9aru27dPXnvtNencubNs2bJFqfP06dOld+/ekpmZWWpcGxsbGTBggLz44ovSuHFjOX36tEaZouO9c+eOrFu3TlQqlVhaWpY6ANDFixclODhYRo4cKWvWrHks1qMDyfz999/i6uoq+/btK7UdYmNjZcSIEdK5c2eZMGGCRl1Xr14tw4cPl1GjRomtra3ExMTI9evXlUF2SusZfLR9O3bsqNSxJD4+PjJ+/PjHPtuPxi2pfW/cuCEff/yx6Ovry9ixYyUqKkoSExNlzpw50qRJkxJHSyUioqrHhJCIqBxiYmLEyspK/P39ZdOmTTJ16lTR19eXU6dOFVs+Ly9PgoKCpEGDBnLx4sUS4xYlVx999JHcunVLWrduLXPnzpWCggJJT0+XBQsWiI6Ojrzzzjty8OBBSUpKkqCgIGncuHGpF9NnzpyRhg0bSv/+/aV79+6io6MjCxYs0CjzwQcfiL29vVy5ckXOnz8vH3/8sdSvX7/UKSCK6jt9+nT58MMP5aWXXlJGtCzy6G2h/v7+0r17d40Bax517tw5sba2lqCgILl27ZpcvnxZrK2tZfv27UqZiIgI+de//iV6enrSrl076datm9SrV6/E34HIg1tXW7VqJXPmzFGSJWdnZ1mxYkWJdR47dqzUrVtXY5TNRxVNCeLl5SWDBg0SXV1d5VZOkcenAxERmTVrlrRr105jdNBHnT17ViwtLWXs2LEyb948sbe3lw8++EDZ/tdff0n9+vWlefPmyu3FIiLXrl0r9XNWUvuWNLDPzZs3ZdasWWJlZVVqO5TUvg/fdpydnS0bN24US0tLadiwobRs2VIaNWokJ0+eLDEuERFVPSaERERldPv2bXF3d9e4MBcR6dOnjzIdwsM9anv27JFXX31V7OzsSr3oPX36tBgaGspHH30kIg+Sktdff11cXV2VMvn5+bJp0yaxt7eXBg0aSKtWrZ54MX316lVp2rSpTJ8+XUlK1q1bJ7a2tnLhwgVl3blz56Rfv36iUqmkdevW0rJly1KTqxMnToiZmZlS3y1btoi5ubkcOnRIRB5/RnL//v3ywQcfiKmpqURFRZUYNz09XV555RWZMmWKxnoPDw9Zu3atLFy4UElSc3Jy5PDhwzJ37lxZtWpVqUmQiMihQ4ekTZs2cuHCBWXdm2++KR9++KGMHDlSvvzyS4mPjxeRB7/D77//Xho1avTEnkFHR0cJDAxU2nLChAkSFBRUbPkzZ87I1KlTxcLCotT2zczMFDc3N435LNeuXSujR49WekALCgpk5cqVj/Vwluaff/4ptX2XLFkisbGxyhyIhw4dktGjR4u9vX2p9S0qW1L7ent7y5dffikJCQki8mAqjH379snvv//OnkEiohqACSERURklJSVJly5d5ODBgyLyv96ksWPHire3t0bZwsJCuXjxosyYMaPUnjYRkWPHjklwcLBGzPPnz4u5ufljA7tcu3ZNIiIi5MCBA6X2MBUUFMinn34qnp6eGj1yRT2GDw9oIvKg9+bHH3+UQ4cOlRo3KytLTExMxN/fX2N9//79pV+/fsUOmLNr1y4ZMmTIE6c/EBFZtWqVHD58WHk9d+5c0dPTk759+0qrVq2kfv368u233z4xzqN++eUXsbGxkV9//VWys7NlwYIFoq+vL5MmTZIBAwZI586dZdKkSUoydPv27cd6PB+Wl5cn06ZNk3fffVdjQJiiieg9PT1l1qxZSgJ8/vx5mT17tri6uj4xibtz54507txZ43ZbPz8/adOmjbz44osyaNAg2bBhQ7nbQERkxYoVpbavra2tMr/gpUuXZMuWLU+cxkRE5Oeffy61fV1dXWXSpEmcdJ6IqAZiQkhEVA4P94AUPXcVFBQko0aN0ihXlFiUZ5THIoWFhZKeni6DBw+W4cOHS15enuTn55d7ZM4DBw7IzJkzNdYVFBRI48aN5ffff1f2VV5Fo22K/O/41q5dq3H74qN1LWqPkhRXj4MHD0qTJk1k+/btyvtfe+01jZ7T8ujbt680aNBA+vfvL4aGhvLrr78q2z799FNxdHTUmCfxSS5evCh//PGH8nrevHmio6Mjvr6+8vHHH4u1tbUMGTJERB60x6VLlzRGhC1JUlKSNG/eXMaMGSPbt2+XkJAQqVOnjixbtkw2b94sI0eOlJdeeknjVtHSJCYmFpuMl6V9S/t8JCYmatxG2qdPn0ptXyIiejaYEBIRPYWHE55Zs2aJh4eH8nr+/PmyaNGiJ04v8STfffedqFQq5VbMsigpAS26sC8oKBAnJyeN6Ql+++03SU5OLnPc4pKEO3fuiIODg/j6+ha735JkZWVJZmZmsT1H169fV3qnitpy4cKF0rVr1ycOglJS3EOHDsmPP/4onTp1ktTUVCXu4cOHpWnTphIXF1dq3Nu3b0tsbOxjPaxXrlwRb29vjSToyJEjolKpNHrkSot77tw5Zf9//vmnNGvWTIYMGSJ2dnYak7dfuXJF6tSpo9GDWJLr16+LlZWVDBkyRI4dO/bYtpLat7TBYx6N+/Dx/fnnn/LTTz89dfsSEdGzx4npiYiego6OjjJZedFr4MF0DrNmzYKbm1up00uUxcCBA/Hyyy9j5cqVysTdpblw4QKWLl2KmzdvKuuK6qhSqZCfn4/79+9DV1dXmT7go48+wssvv4z8/Pwyx310WoCCggLUrVsXM2fOxK5duxAZGalsK20KgdjYWAwdOhS9e/dGq1atsGnTJo06v/DCC8ok90Vtef78ebRu3brccYuOr0ePHjA0NERubi6srKyUuN9//z0sLCxQv379EuOePXsWbm5uePPNN9G2bVvMmzcPBQUFAIDGjRtj+fLl8PT0hIigsLAQeXl5cHFxgb29fYkxH447fPhwtGnTBnPmzEHPnj1x5MgRbNiwAQ4ODnB0dATwYLJ3S0tLdOzYEebm5qXGBYCLFy8iIyMDGRkZ+OKLL3Dy5Ell2wsvvIBGjRoBeLx9iz7PZYm7atUqHD16FADQs2dP6Ojo4N69e+VuXyIiqh6ch5CI6CmJCFQqFfT09ODg4IBFixZhwYIFOHHiBNq1a1fh+AYGBujbty/CwsKQkZFR6hx7ly5dglqtxj///IPbt29j6tSpsLa21kicdHR0oKurCxGBnp4e5s6di2XLluHo0aMlJi0lxX1Y0Vx3Xbt2RXZ2No4ePYpOnTqVemyxsbHo1asXRo8eDVdXV0RGRmLs2LFo3bo12rdv/1j5vLw8hIaG4qeffsKff/5ZYrJdlrhqtRppaWno1asX+vTpg8TERPz444/Yt29fifMjxsbGok+fPhg7dizGjh2LX3/9FQEBARgzZgwcHBwA/G8OSJVKBZVKhV9++QX16tUrde6+kuKOHTsWjRo1QmpqKtLS0hAbG4uePXuioKAAS5YswdWrV9G1a9dS2xgA2rZti1deeQVeXl5YvXo1lixZgsDAQLRu3RqFhYXK766s7VtS3OXLl6Nu3bpo3bo1evbsCQB46aWX0Ldv3zK1LxERVaPq7J4kIqoN5s2bJyqVSszNzZ84J2BZFd1qmZaWJp06ddJ4bu9RWVlZMm7cOHnnnXckPDxcVCqVBAQEyK1bt4ot36FDB+ncubMYGBiUWt/yxhURGTNmjLRo0UJyc3NLvF20vKO1/vbbbzJs2DBp2LBhqaOqliVu0S2MMTEx0rdvX1Gr1fLGG2+UOqXCrVu3pFevXjJ58mRlXWFhoXh6esrhw4fl1KlTygilIg8GYwkKChJTU9NSB9J5UtzIyEj5559/lPkQO3XqJL1795YXXnihTFM15OfnS0pKijRv3lyuX78u33//vTKnYffu3WXYsGEi8mA03LK0b1nidu3aVd566y2JiYmR3r17l6l9iYioerGHkIiogjw8PBAcHIzDhw/D2dm5UmIW9exZWFjgwIEDMDExKbGsjo4OOnXqBCsrK7z55puwtrbGiBEjAADTp09XevQKCgqQkZGBy5cvIysrC6dOnYKLi0uF4wL/6y2dOHEiZs+eDX19/RLj5uXlIT09Ha+//jqAB7dB6ujowMnJCWlpaRrHLyJwcnKCi4sLPvnkE7Ro0aJCcYt6vpydnbF//37k5ORApVLBwMCgxLgqlQqenp5KXACYN28edu/ejaSkJKSmpqJ169YIDg5GgwYNMGvWLJw6dQoHDx4stX3LGjcoKAg7d+7Ezz//DCcnJwwZMgRNmjQpMW4RHR0d1K9fH507d8bZs2cxZMgQGBoaYsyYMcjJycGECRMAAE2aNEGbNm2e2L5liZudnY2JEyfC2dkZf/zxR5nal4iIqll1Z6RERLVBVlZWjdr/1q1bRaVSyYcffiipqaki8qB37NatW7Jr1y45e/ZspcUtKCgo09QEDyvraK1F+y/rCKtljfvwVBxlUTT/n8iDeRdVKpV88803cvv2bTlw4IB07txZPv74Y8nNzZU///yzzKNplhb3jz/+kM6dO8vs2bPLVddHjR49Whltdvz48VKvXj1xdnaWcePGKQPNlHcE2yfF/euvvypUZyIienbYQ0hEVAlK68F7lvsvKCiAjo4O3nzzTYgI3n77bahUKkyZMgWLFi3C1atX8fXXX6NOnTqVGvfatWv4z3/+A2Nj41IHfCnSrFkzAA968Yp6E0UEKSkpSpmwsDAYGhrigw8+KPMAPVUV19TUVPlZrVbjxIkT6NixIwCgV69esLGxwYkTJ6Cvr688Q1fRuL1794aNjY3GID3lIf+/17Zfv364cuUK3n//fezcuRORkZGIiopCQEAA9PX14eLiAiMjo0qNa2BggI4dO5YrLhERVQ8mhEREtUjRoDGFhYUYMWIEVCoVRo0ahe3bt+PSpUs4ceJEmZPBssb9+++/cfz48aeKWzRaa1ES+fBorfPmzcOpU6eearTWqooLAI0aNVJG5ywsLERubi7q1q2Ltm3bPlW8qopbdOxOTk4YO3YsbG1tsWPHDjg5OcHJyQkqlQrt2rUrd9JWVXGJiKh6qEQeGjediIhqBXlouon+/fsjKioKf/zxR6nPtFVX3KJn/ebMmYObN2+iWbNmCAoKwuHDh5XespoU91EhISHYuHEjfvvtN6WHsibFzcvLw3/+8x+4urqibdu2GolyRVRVXCIierbYQ0hEVAupVCoUFBQgICAAv//+O6KioiqcDFZV3KLeO319faxduxZmZmY4dOhQhZO2qopbZNu2bThw4AC2bt2KvXv3VloyWNlx9fX18c477yjtUVlJW1XFJSKiZ4sT0xMR1WKtW7fGyZMnK3w747OI6+HhAQA4fPgwXF1da3xcZ2dn3Lp1C3/++Sc6dOhQo+M+aaL5mhaXiIieHd4ySkRUi1XVbXxVFffu3btVMkBPVcXNy8srdYqNmhaXiIjoUUwIiYiIiIiItBTv9SAiIiIiItJSTAiJiIiIiIi0FBNCIiIiIiIiLcWEkIiIiIiISEsxISQiIiIiItJSTAiJiIiIiIi0FBNCIiIiIiIiLcWEkIiIiIiISEsxISQiIiIiItJSTAiJiIiIiIi0FBNCIiIiIiIiLcWEkIiIiIiISEsxISQiIiIiItJSTAiJiIiIiIi0FBNCIiIiIiIiLfX/APt9AVvuEFr4AAAAAElFTkSuQmCC"
},
"execution_count": 9,
@@ -405,19 +405,23 @@
"metadata": {
"collapsed": false,
"ExecuteTime": {
- "end_time": "2024-05-24T11:02:40.169174900Z",
- "start_time": "2024-05-24T11:02:39.926927500Z"
+ "end_time": "2024-06-20T18:48:43.776868800Z",
+ "start_time": "2024-06-20T18:48:43.661565100Z"
}
},
"outputs": [
{
- "data": {
- "text/plain": "",
- "image/png": "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PHiQGQwGNm3aNHb99deziIgINnbsWPbXv/5V3PaVV15hK1asYM888wwrLS3tw1ZLc/jwYabRaNiqVasYY6a/jXPmzGF5eXniNleuXGFr1qxhISEhLCMjw6/6bsOGDWzChAkW6WpmzJjBNmzYwN566y22a9cu8XV/6zvGGJs8eTL79a9/zRgzBX+MMbZ8+XI2a9YslpeXx1577TXGmGkFsKePLSACwHfffZfNmjWL7d69m33wwQds4MCBFkGg+QRtxkwLI2pqanz+m1CwuHr1KnvttdfYpk2bGGOm0Vp7QSBjjJ0/f559/fXXbNu2bezSpUt90VzJKisr2Q033MC++eYbxti1ifY//elP2bx58xhjzGJhi8D6376qtraWrVmzRhwNY4yxZ599lnEcx0aNGsXS0tLYrbfeyk6cOMFKS0vZ+++/zzZt2uRXI+7CTWjevHliLrXPPvuMJSQksIiICItAgjH/6buKigp2xx13sPz8fPbRRx+xW2+9lU2ePJk99thj7KGHHmKDBw9mP//5z1lrays7fPiw3/VdZWUlS0xMZF9++SVbsmQJmzZtGjt8+DDbtm0be/zxx1lycjJ79913+7qZPfL999+zp59+mjF27XorLS1l0dHR7NVXX7XY1h/77o033mAZGRlisPrcc88xjuNYYWEhy8/PZ0lJSezNN9/s41bKx/M8a2trYzfddBNbsGCBOGf40qVLLD09nf2///f/2Pz589lNN93ktTYFRADY1tbGPv74Y8aYaSL2v/71L5sgUJgI669JMAOdMEFbsGnTJsZxHFu2bJk4iqnX6/1mArPAPDgSrsGnnnqKLViwwGI788Uh/nSNNjc3i/9fmID+/vvvs7q6OrZ7926Wn5/PVq9e3YctdI97772XrVixgjHG2P33389iY2NZdnY2+9nPfiYuDGHMv/ruypUr7N5772VhYWFsypQprLa2VvzZ22+/zaKjo9knn3zShy3sOZ7n2d13380efvhhdtttt1kkQr548SKbP38+W7hwIdPr9WIQ5U99Z47nedbY2ChOQRCOyV++jFg7d+4cGz9+PBsyZAibPXs24ziOffTRR4zneVZVVcV++ctfsgkTJrCamhq/7Lv//e9/TKFQsJtvvpktWLCAabVa9vOf/5wxZlq0FBkZyUpKSsQFH548Nr8PAO1d5O3t7Wzz5s02QeCbb75p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"
- },
- "execution_count": 10,
- "metadata": {},
- "output_type": "execute_result"
+ "ename": "ValueError",
+ "evalue": "there are missing values in column 'fare', use transformation to fill missing values or drop the missing values",
+ "output_type": "error",
+ "traceback": [
+ "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
+ "\u001B[1;31mValueError\u001B[0m Traceback (most recent call last)",
+ "Cell \u001B[1;32mIn[10], line 1\u001B[0m\n\u001B[1;32m----> 1\u001B[0m \u001B[43mtitanic_numerical\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mplot\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mscatter_plot\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mage\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mfare\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\n",
+ "File \u001B[1;32m~\\PycharmProjects\\Library\\src\\safeds\\data\\tabular\\plotting\\_table_plotter.py:323\u001B[0m, in \u001B[0;36mTablePlotter.scatter_plot\u001B[1;34m(self, x_name, y_names)\u001B[0m\n\u001B[0;32m 289\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mscatter_plot\u001B[39m(\u001B[38;5;28mself\u001B[39m, x_name: \u001B[38;5;28mstr\u001B[39m, y_names: \u001B[38;5;28mlist\u001B[39m[\u001B[38;5;28mstr\u001B[39m]) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m Image:\n\u001B[0;32m 290\u001B[0m \u001B[38;5;250m \u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m 291\u001B[0m \u001B[38;5;124;03m Create a scatter plot for two columns in the table.\u001B[39;00m\n\u001B[0;32m 292\u001B[0m \n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 321\u001B[0m \u001B[38;5;124;03m >>> image = table.plot.scatter_plot(\"a\", [\"b\"])\u001B[39;00m\n\u001B[0;32m 322\u001B[0m \u001B[38;5;124;03m \"\"\"\u001B[39;00m\n\u001B[1;32m--> 323\u001B[0m \u001B[43m_plot_validation\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_table\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mx_name\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43my_names\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 325\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mmatplotlib\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mpyplot\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m \u001B[38;5;21;01mplt\u001B[39;00m\n\u001B[0;32m 327\u001B[0m fig, ax \u001B[38;5;241m=\u001B[39m plt\u001B[38;5;241m.\u001B[39msubplots()\n",
+ "File \u001B[1;32m~\\PycharmProjects\\Library\\src\\safeds\\data\\tabular\\plotting\\_table_plotter.py:437\u001B[0m, in \u001B[0;36m_plot_validation\u001B[1;34m(table, x_name, y_names)\u001B[0m\n\u001B[0;32m 435\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m name \u001B[38;5;129;01min\u001B[39;00m y_names:\n\u001B[0;32m 436\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m table\u001B[38;5;241m.\u001B[39mget_column(name)\u001B[38;5;241m.\u001B[39mmissing_value_count() \u001B[38;5;241m>\u001B[39m\u001B[38;5;241m=\u001B[39m \u001B[38;5;241m1\u001B[39m:\n\u001B[1;32m--> 437\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\n\u001B[0;32m 438\u001B[0m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mthere are missing values in column \u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mname\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m, use transformation to fill missing values \u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[0;32m 439\u001B[0m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mor drop the missing values\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[0;32m 440\u001B[0m )\n\u001B[0;32m 441\u001B[0m y_names\u001B[38;5;241m.\u001B[39mremove(x_name)\n",
+ "\u001B[1;31mValueError\u001B[0m: there are missing values in column 'fare', use transformation to fill missing values or drop the missing values"
+ ]
}
],
"execution_count": 10
diff --git a/src/safeds/data/tabular/plotting/_table_plotter.py b/src/safeds/data/tabular/plotting/_table_plotter.py
index 7d1cca2e6..bc5907c62 100644
--- a/src/safeds/data/tabular/plotting/_table_plotter.py
+++ b/src/safeds/data/tabular/plotting/_table_plotter.py
@@ -353,6 +353,81 @@ def scatter_plot(self, x_name: str, y_names: list[str]) -> Image:
return _figure_to_image(fig)
+ def moving_average_plot(self, x_name: str, y_name: str, window_size: int) -> Image:
+ """
+ Create a moving average plot for the y column and plot it by the x column in the table.
+
+ Parameters
+ ----------
+ x_name:
+ The name of the column to be plotted on the x-axis.
+ y_name:
+ The name of the column to be plotted on the y-axis.
+
+ Returns
+ -------
+ plot:
+ The plot as an image.
+
+ Raises
+ ------
+ ColumnNotFoundError
+ If a column does not exist.
+ TypeError
+ If a column is not numeric.
+
+ Examples
+ --------
+ >>> from safeds.data.tabular.containers import Table
+ >>> table = Table(
+ ... {
+ ... "a": [1, 2, 3, 4, 5],
+ ... "b": [2, 3, 4, 5, 6],
+ ... }
+ ... )
+ >>> image = table.plot.moving_average_plot("a", "b", window_size = 2)
+ """
+ import matplotlib.pyplot as plt
+ import numpy as np
+ import polars as pl
+
+ _plot_validation(self._table, x_name, [y_name])
+ for name in [x_name, y_name]:
+ if self._table.get_column(name).missing_value_count() >= 1:
+ raise ValueError(
+ f"there are missing values in column '{name}', use transformation to fill missing values "
+ f"or drop the missing values. For a moving average no missing values are allowed.",
+ )
+
+ # Calculate the moving average
+ mean_col = pl.col(y_name).mean().alias(y_name)
+ grouped = self._table._lazy_frame.sort(x_name).group_by(x_name).agg(mean_col).collect()
+ data = grouped
+ moving_average = data.select([pl.col(y_name).rolling_mean(window_size).alias("moving_average")])
+ # set up the arrays for plotting
+ y_data_with_nan = moving_average["moving_average"].to_numpy()
+ nan_mask = ~np.isnan(y_data_with_nan)
+ y_data = y_data_with_nan[nan_mask]
+ x_data = data[x_name].to_numpy()[nan_mask]
+ fig, ax = plt.subplots()
+ ax.plot(x_data, y_data, label="moving average")
+ ax.set(
+ xlabel=x_name,
+ ylabel=y_name,
+ )
+ ax.legend()
+ if self._table.get_column(x_name).is_temporal:
+ ax.set_xticks(x_data) # Set x-ticks to the x data points
+ ax.set_xticks(ax.get_xticks())
+ ax.set_xticklabels(
+ ax.get_xticklabels(),
+ rotation=45,
+ horizontalalignment="right",
+ ) # rotate the labels of the x Axis to prevent the chance of overlapping of the labels
+ fig.tight_layout()
+
+ return _figure_to_image(fig)
+
def _plot_validation(table: Table, x_name: str, y_names: list[str]) -> None:
y_names.append(x_name)
diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot[date grouped].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot[date grouped].png
new file mode 100644
index 0000000000000000000000000000000000000000..58d065e37481a38f5e5328ad24aa76feb64a4445
GIT binary patch
literal 23768
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
B48i~a
literal 0
HcmV?d00001
diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot[date].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot[date].png
new file mode 100644
index 0000000000000000000000000000000000000000..c0946d1ecc5452a91e1532bd3f1d67d828941b1f
GIT binary patch
literal 22747
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
literal 0
HcmV?d00001
diff --git a/tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot[numerical].png b/tests/safeds/data/tabular/plotting/__snapshots__/test_moving_average_plot/test_should_match_snapshot[numerical].png
new file mode 100644
index 0000000000000000000000000000000000000000..6cd1556c5fc17ccb45a7f4ad6c6b1c7b3caf082b
GIT binary patch
literal 15697
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