From 5ab0fd1147c17ae97cc356ea9c0695a647d93930 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Sat, 14 Feb 2026 13:09:49 -0800 Subject: [PATCH 01/29] feat: forward batch_size parameter to PyArrow Scanner Add batch_size parameter to _task_to_record_batches, _record_batches_from_scan_tasks_and_deletes, ArrowScan.to_record_batches, and DataScan.to_arrow_batch_reader so users can control the number of rows per RecordBatch returned by PyArrow's Scanner. Closes partially #3036 Co-Authored-By: Claude Opus 4.6 --- mkdocs/docs/api.md | 16 + pyiceberg/io/pyarrow.py | 24 +- pyiceberg/table/__init__.py | 7 +- tests/io/test_pyarrow.py | 58 + vendor/fb303/FacebookService.py | 61 +- vendor/hive_metastore/ThriftHiveMetastore.py | 1337 +++++++----------- vendor/hive_metastore/ttypes.py | 626 ++++---- 7 files changed, 971 insertions(+), 1158 deletions(-) diff --git a/mkdocs/docs/api.md b/mkdocs/docs/api.md index 506547fcd6..dadaac93b4 100644 --- a/mkdocs/docs/api.md +++ b/mkdocs/docs/api.md @@ -355,6 +355,13 @@ for buf in tbl.scan().to_arrow_batch_reader(): print(f"Buffer contains {len(buf)} rows") ``` +You can control the number of rows per batch using the `batch_size` parameter: + +```python +for buf in tbl.scan().to_arrow_batch_reader(batch_size=1000): + print(f"Buffer contains {len(buf)} rows") +``` + To avoid any type inconsistencies during writing, you can convert the Iceberg table schema to Arrow: ```python @@ -1619,6 +1626,15 @@ table.scan( ).to_arrow_batch_reader() ``` +The `batch_size` parameter controls the maximum number of rows per RecordBatch (default is PyArrow's 131,072 rows): + +```python +table.scan( + row_filter=GreaterThanOrEqual("trip_distance", 10.0), + selected_fields=("VendorID", "tpep_pickup_datetime", "tpep_dropoff_datetime"), +).to_arrow_batch_reader(batch_size=1000) +``` + ### Pandas diff --git a/pyiceberg/io/pyarrow.py b/pyiceberg/io/pyarrow.py index a120c3b776..e7c0da5262 100644 --- a/pyiceberg/io/pyarrow.py +++ b/pyiceberg/io/pyarrow.py @@ -1581,6 +1581,7 @@ def _task_to_record_batches( partition_spec: PartitionSpec | None = None, format_version: TableVersion = TableProperties.DEFAULT_FORMAT_VERSION, downcast_ns_timestamp_to_us: bool | None = None, + batch_size: int | None = None, ) -> Iterator[pa.RecordBatch]: arrow_format = _get_file_format(task.file.file_format, pre_buffer=True, buffer_size=(ONE_MEGABYTE * 8)) with io.new_input(task.file.file_path).open() as fin: @@ -1612,14 +1613,18 @@ def _task_to_record_batches( file_project_schema = prune_columns(file_schema, projected_field_ids, select_full_types=False) - fragment_scanner = ds.Scanner.from_fragment( - fragment=fragment, - schema=physical_schema, + scanner_kwargs: dict[str, Any] = { + "fragment": fragment, + "schema": physical_schema, # This will push down the query to Arrow. # But in case there are positional deletes, we have to apply them first - filter=pyarrow_filter if not positional_deletes else None, - columns=[col.name for col in file_project_schema.columns], - ) + "filter": pyarrow_filter if not positional_deletes else None, + "columns": [col.name for col in file_project_schema.columns], + } + if batch_size is not None: + scanner_kwargs["batch_size"] = batch_size + + fragment_scanner = ds.Scanner.from_fragment(**scanner_kwargs) next_index = 0 batches = fragment_scanner.to_batches() @@ -1756,7 +1761,7 @@ def to_table(self, tasks: Iterable[FileScanTask]) -> pa.Table: return result - def to_record_batches(self, tasks: Iterable[FileScanTask]) -> Iterator[pa.RecordBatch]: + def to_record_batches(self, tasks: Iterable[FileScanTask], batch_size: int | None = None) -> Iterator[pa.RecordBatch]: """Scan the Iceberg table and return an Iterator[pa.RecordBatch]. Returns an Iterator of pa.RecordBatch with data from the Iceberg table @@ -1783,7 +1788,7 @@ def batches_for_task(task: FileScanTask) -> list[pa.RecordBatch]: # Materialize the iterator here to ensure execution happens within the executor. # Otherwise, the iterator would be lazily consumed later (in the main thread), # defeating the purpose of using executor.map. - return list(self._record_batches_from_scan_tasks_and_deletes([task], deletes_per_file)) + return list(self._record_batches_from_scan_tasks_and_deletes([task], deletes_per_file, batch_size)) limit_reached = False for batches in executor.map(batches_for_task, tasks): @@ -1803,7 +1808,7 @@ def batches_for_task(task: FileScanTask) -> list[pa.RecordBatch]: break def _record_batches_from_scan_tasks_and_deletes( - self, tasks: Iterable[FileScanTask], deletes_per_file: dict[str, list[ChunkedArray]] + self, tasks: Iterable[FileScanTask], deletes_per_file: dict[str, list[ChunkedArray]], batch_size: int | None = None ) -> Iterator[pa.RecordBatch]: total_row_count = 0 for task in tasks: @@ -1822,6 +1827,7 @@ def _record_batches_from_scan_tasks_and_deletes( self._table_metadata.specs().get(task.file.spec_id), self._table_metadata.format_version, self._downcast_ns_timestamp_to_us, + batch_size, ) for batch in batches: if self._limit is not None: diff --git a/pyiceberg/table/__init__.py b/pyiceberg/table/__init__.py index cc0d9ff341..63fd1509e4 100644 --- a/pyiceberg/table/__init__.py +++ b/pyiceberg/table/__init__.py @@ -2157,13 +2157,16 @@ def to_arrow(self) -> pa.Table: self.table_metadata, self.io, self.projection(), self.row_filter, self.case_sensitive, self.limit ).to_table(self.plan_files()) - def to_arrow_batch_reader(self) -> pa.RecordBatchReader: + def to_arrow_batch_reader(self, batch_size: int | None = None) -> pa.RecordBatchReader: """Return an Arrow RecordBatchReader from this DataScan. For large results, using a RecordBatchReader requires less memory than loading an Arrow Table for the same DataScan, because a RecordBatch is read one at a time. + Args: + batch_size: The number of rows per batch. If None, PyArrow's default is used. + Returns: pa.RecordBatchReader: Arrow RecordBatchReader from the Iceberg table's DataScan which can be used to read a stream of record batches one by one. @@ -2175,7 +2178,7 @@ def to_arrow_batch_reader(self) -> pa.RecordBatchReader: target_schema = schema_to_pyarrow(self.projection()) batches = ArrowScan( self.table_metadata, self.io, self.projection(), self.row_filter, self.case_sensitive, self.limit - ).to_record_batches(self.plan_files()) + ).to_record_batches(self.plan_files(), batch_size=batch_size) return pa.RecordBatchReader.from_batches( target_schema, diff --git a/tests/io/test_pyarrow.py b/tests/io/test_pyarrow.py index 04bc3ecfac..fb03f785c6 100644 --- a/tests/io/test_pyarrow.py +++ b/tests/io/test_pyarrow.py @@ -3048,6 +3048,64 @@ def _expected_batch(unit: str) -> pa.RecordBatch: assert _expected_batch("ns" if format_version > 2 else "us").equals(actual_result) +def test_task_to_record_batches_with_batch_size(tmpdir: str) -> None: + """Test that batch_size controls the number of rows per batch.""" + num_rows = 1000 + arrow_table = pa.table( + {"col": pa.array(range(num_rows))}, + schema=pa.schema([pa.field("col", pa.int64(), nullable=False, metadata={PYARROW_PARQUET_FIELD_ID_KEY: "1"})]), + ) + data_file = _write_table_to_data_file(f"{tmpdir}/test_batch_size.parquet", arrow_table.schema, arrow_table) + table_schema = Schema(NestedField(1, "col", LongType(), required=True)) + + batches = list( + _task_to_record_batches( + PyArrowFileIO(), + FileScanTask(data_file), + bound_row_filter=AlwaysTrue(), + projected_schema=table_schema, + table_schema=table_schema, + projected_field_ids={1}, + positional_deletes=None, + case_sensitive=True, + batch_size=100, + ) + ) + + assert len(batches) > 1 + for batch in batches: + assert len(batch) <= 100 + assert sum(len(b) for b in batches) == num_rows + + +def test_task_to_record_batches_default_batch_size(tmpdir: str) -> None: + """Test that batch_size=None uses PyArrow default (single batch for small files).""" + num_rows = 100 + arrow_table = pa.table( + {"col": pa.array(range(num_rows))}, + schema=pa.schema([pa.field("col", pa.int64(), nullable=False, metadata={PYARROW_PARQUET_FIELD_ID_KEY: "1"})]), + ) + data_file = _write_table_to_data_file(f"{tmpdir}/test_default_batch_size.parquet", arrow_table.schema, arrow_table) + table_schema = Schema(NestedField(1, "col", LongType(), required=True)) + + batches = list( + _task_to_record_batches( + PyArrowFileIO(), + FileScanTask(data_file), + bound_row_filter=AlwaysTrue(), + projected_schema=table_schema, + table_schema=table_schema, + projected_field_ids={1}, + positional_deletes=None, + case_sensitive=True, + ) + ) + + # With default batch_size, a small file should produce a single batch + assert len(batches) == 1 + assert len(batches[0]) == num_rows + + def test_parse_location_defaults() -> None: """Test that parse_location uses defaults.""" diff --git a/vendor/fb303/FacebookService.py b/vendor/fb303/FacebookService.py index c46b0a82a2..7115e8a0d8 100644 --- a/vendor/fb303/FacebookService.py +++ b/vendor/fb303/FacebookService.py @@ -50,21 +50,18 @@ def getName(self): Returns a descriptive name of the service """ - pass def getVersion(self): """ Returns the version of the service """ - pass def getStatus(self): """ Gets the status of this service """ - pass def getStatusDetails(self): """ @@ -72,14 +69,12 @@ def getStatusDetails(self): the dead or warning state, or what is being started or stopped. """ - pass def getCounters(self): """ Gets the counters for this service """ - pass def getCounter(self, key): """ @@ -89,7 +84,6 @@ def getCounter(self, key): - key """ - pass def setOption(self, key, value): """ @@ -100,7 +94,6 @@ def setOption(self, key, value): - value """ - pass def getOption(self, key): """ @@ -110,14 +103,12 @@ def getOption(self, key): - key """ - pass def getOptions(self): """ Gets all options """ - pass def getCpuProfile(self, profileDurationInSec): """ @@ -128,28 +119,24 @@ def getCpuProfile(self, profileDurationInSec): - profileDurationInSec """ - pass def aliveSince(self): """ Returns the unix time that the server has been running since """ - pass def reinitialize(self): """ Tell the server to reload its configuration, reopen log files, etc """ - pass def shutdown(self): """ Suggest a shutdown to the server """ - pass class Client(Iface): @@ -890,7 +877,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -958,7 +945,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1011,7 +998,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1079,7 +1066,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1132,7 +1119,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1198,7 +1185,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1251,7 +1238,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1319,7 +1306,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1372,7 +1359,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1452,7 +1439,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1528,7 +1515,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1603,7 +1590,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1693,7 +1680,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1754,7 +1741,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1822,7 +1809,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1899,7 +1886,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1952,7 +1939,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2036,7 +2023,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2110,7 +2097,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2187,7 +2174,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2240,7 +2227,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2306,7 +2293,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2359,7 +2346,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2404,7 +2391,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): diff --git a/vendor/hive_metastore/ThriftHiveMetastore.py b/vendor/hive_metastore/ThriftHiveMetastore.py index 4d25c087c7..92ba9eaeae 100644 --- a/vendor/hive_metastore/ThriftHiveMetastore.py +++ b/vendor/hive_metastore/ThriftHiveMetastore.py @@ -52,7 +52,6 @@ def getMetaConf(self, key): - key """ - pass def setMetaConf(self, key, value): """ @@ -61,7 +60,6 @@ def setMetaConf(self, key, value): - value """ - pass def create_catalog(self, catalog): """ @@ -69,7 +67,6 @@ def create_catalog(self, catalog): - catalog """ - pass def alter_catalog(self, rqst): """ @@ -77,7 +74,6 @@ def alter_catalog(self, rqst): - rqst """ - pass def get_catalog(self, catName): """ @@ -85,7 +81,6 @@ def get_catalog(self, catName): - catName """ - pass def get_catalogs(self): pass @@ -96,7 +91,6 @@ def drop_catalog(self, catName): - catName """ - pass def create_database(self, database): """ @@ -104,7 +98,6 @@ def create_database(self, database): - database """ - pass def get_database(self, name): """ @@ -112,7 +105,6 @@ def get_database(self, name): - name """ - pass def get_database_req(self, request): """ @@ -120,7 +112,6 @@ def get_database_req(self, request): - request """ - pass def drop_database(self, name, deleteData, cascade): """ @@ -130,7 +121,6 @@ def drop_database(self, name, deleteData, cascade): - cascade """ - pass def drop_database_req(self, req): """ @@ -138,7 +128,6 @@ def drop_database_req(self, req): - req """ - pass def get_databases(self, pattern): """ @@ -146,7 +135,6 @@ def get_databases(self, pattern): - pattern """ - pass def get_all_databases(self): pass @@ -158,7 +146,6 @@ def alter_database(self, dbname, db): - db """ - pass def create_dataconnector(self, connector): """ @@ -166,7 +153,6 @@ def create_dataconnector(self, connector): - connector """ - pass def get_dataconnector_req(self, request): """ @@ -174,7 +160,6 @@ def get_dataconnector_req(self, request): - request """ - pass def drop_dataconnector(self, name, ifNotExists, checkReferences): """ @@ -184,7 +169,6 @@ def drop_dataconnector(self, name, ifNotExists, checkReferences): - checkReferences """ - pass def get_dataconnectors(self): pass @@ -196,7 +180,6 @@ def alter_dataconnector(self, name, connector): - connector """ - pass def get_type(self, name): """ @@ -204,7 +187,6 @@ def get_type(self, name): - name """ - pass def create_type(self, type): """ @@ -212,7 +194,6 @@ def create_type(self, type): - type """ - pass def drop_type(self, type): """ @@ -220,7 +201,6 @@ def drop_type(self, type): - type """ - pass def get_type_all(self, name): """ @@ -228,7 +208,6 @@ def get_type_all(self, name): - name """ - pass def get_fields(self, db_name, table_name): """ @@ -237,7 +216,6 @@ def get_fields(self, db_name, table_name): - table_name """ - pass def get_fields_with_environment_context(self, db_name, table_name, environment_context): """ @@ -247,7 +225,6 @@ def get_fields_with_environment_context(self, db_name, table_name, environment_c - environment_context """ - pass def get_fields_req(self, req): """ @@ -255,7 +232,6 @@ def get_fields_req(self, req): - req """ - pass def get_schema(self, db_name, table_name): """ @@ -264,7 +240,6 @@ def get_schema(self, db_name, table_name): - table_name """ - pass def get_schema_with_environment_context(self, db_name, table_name, environment_context): """ @@ -274,7 +249,6 @@ def get_schema_with_environment_context(self, db_name, table_name, environment_c - environment_context """ - pass def get_schema_req(self, req): """ @@ -282,7 +256,6 @@ def get_schema_req(self, req): - req """ - pass def create_table(self, tbl): """ @@ -290,7 +263,6 @@ def create_table(self, tbl): - tbl """ - pass def create_table_with_environment_context(self, tbl, environment_context): """ @@ -299,7 +271,6 @@ def create_table_with_environment_context(self, tbl, environment_context): - environment_context """ - pass def create_table_with_constraints( self, tbl, primaryKeys, foreignKeys, uniqueConstraints, notNullConstraints, defaultConstraints, checkConstraints @@ -315,7 +286,6 @@ def create_table_with_constraints( - checkConstraints """ - pass def create_table_req(self, request): """ @@ -323,7 +293,6 @@ def create_table_req(self, request): - request """ - pass def drop_constraint(self, req): """ @@ -331,7 +300,6 @@ def drop_constraint(self, req): - req """ - pass def add_primary_key(self, req): """ @@ -339,7 +307,6 @@ def add_primary_key(self, req): - req """ - pass def add_foreign_key(self, req): """ @@ -347,7 +314,6 @@ def add_foreign_key(self, req): - req """ - pass def add_unique_constraint(self, req): """ @@ -355,7 +321,6 @@ def add_unique_constraint(self, req): - req """ - pass def add_not_null_constraint(self, req): """ @@ -363,7 +328,6 @@ def add_not_null_constraint(self, req): - req """ - pass def add_default_constraint(self, req): """ @@ -371,7 +335,6 @@ def add_default_constraint(self, req): - req """ - pass def add_check_constraint(self, req): """ @@ -379,7 +342,6 @@ def add_check_constraint(self, req): - req """ - pass def translate_table_dryrun(self, request): """ @@ -387,7 +349,6 @@ def translate_table_dryrun(self, request): - request """ - pass def drop_table(self, dbname, name, deleteData): """ @@ -397,7 +358,6 @@ def drop_table(self, dbname, name, deleteData): - deleteData """ - pass def drop_table_with_environment_context(self, dbname, name, deleteData, environment_context): """ @@ -408,7 +368,6 @@ def drop_table_with_environment_context(self, dbname, name, deleteData, environm - environment_context """ - pass def truncate_table(self, dbName, tableName, partNames): """ @@ -418,7 +377,6 @@ def truncate_table(self, dbName, tableName, partNames): - partNames """ - pass def truncate_table_req(self, req): """ @@ -426,7 +384,6 @@ def truncate_table_req(self, req): - req """ - pass def get_tables(self, db_name, pattern): """ @@ -435,7 +392,6 @@ def get_tables(self, db_name, pattern): - pattern """ - pass def get_tables_by_type(self, db_name, pattern, tableType): """ @@ -445,7 +401,6 @@ def get_tables_by_type(self, db_name, pattern, tableType): - tableType """ - pass def get_all_materialized_view_objects_for_rewriting(self): pass @@ -456,7 +411,6 @@ def get_materialized_views_for_rewriting(self, db_name): - db_name """ - pass def get_table_meta(self, db_patterns, tbl_patterns, tbl_types): """ @@ -466,7 +420,6 @@ def get_table_meta(self, db_patterns, tbl_patterns, tbl_types): - tbl_types """ - pass def get_all_tables(self, db_name): """ @@ -474,7 +427,6 @@ def get_all_tables(self, db_name): - db_name """ - pass def get_table(self, dbname, tbl_name): """ @@ -483,7 +435,6 @@ def get_table(self, dbname, tbl_name): - tbl_name """ - pass def get_table_objects_by_name(self, dbname, tbl_names): """ @@ -492,7 +443,6 @@ def get_table_objects_by_name(self, dbname, tbl_names): - tbl_names """ - pass def get_tables_ext(self, req): """ @@ -500,7 +450,6 @@ def get_tables_ext(self, req): - req """ - pass def get_table_req(self, req): """ @@ -508,7 +457,6 @@ def get_table_req(self, req): - req """ - pass def get_table_objects_by_name_req(self, req): """ @@ -516,7 +464,6 @@ def get_table_objects_by_name_req(self, req): - req """ - pass def get_materialization_invalidation_info(self, creation_metadata, validTxnList): """ @@ -525,7 +472,6 @@ def get_materialization_invalidation_info(self, creation_metadata, validTxnList) - validTxnList """ - pass def update_creation_metadata(self, catName, dbname, tbl_name, creation_metadata): """ @@ -536,7 +482,6 @@ def update_creation_metadata(self, catName, dbname, tbl_name, creation_metadata) - creation_metadata """ - pass def get_table_names_by_filter(self, dbname, filter, max_tables): """ @@ -546,7 +491,6 @@ def get_table_names_by_filter(self, dbname, filter, max_tables): - max_tables """ - pass def alter_table(self, dbname, tbl_name, new_tbl): """ @@ -556,7 +500,6 @@ def alter_table(self, dbname, tbl_name, new_tbl): - new_tbl """ - pass def alter_table_with_environment_context(self, dbname, tbl_name, new_tbl, environment_context): """ @@ -567,7 +510,6 @@ def alter_table_with_environment_context(self, dbname, tbl_name, new_tbl, enviro - environment_context """ - pass def alter_table_with_cascade(self, dbname, tbl_name, new_tbl, cascade): """ @@ -578,7 +520,6 @@ def alter_table_with_cascade(self, dbname, tbl_name, new_tbl, cascade): - cascade """ - pass def alter_table_req(self, req): """ @@ -586,7 +527,6 @@ def alter_table_req(self, req): - req """ - pass def add_partition(self, new_part): """ @@ -594,7 +534,6 @@ def add_partition(self, new_part): - new_part """ - pass def add_partition_with_environment_context(self, new_part, environment_context): """ @@ -603,7 +542,6 @@ def add_partition_with_environment_context(self, new_part, environment_context): - environment_context """ - pass def add_partitions(self, new_parts): """ @@ -611,7 +549,6 @@ def add_partitions(self, new_parts): - new_parts """ - pass def add_partitions_pspec(self, new_parts): """ @@ -619,7 +556,6 @@ def add_partitions_pspec(self, new_parts): - new_parts """ - pass def append_partition(self, db_name, tbl_name, part_vals): """ @@ -629,7 +565,6 @@ def append_partition(self, db_name, tbl_name, part_vals): - part_vals """ - pass def add_partitions_req(self, request): """ @@ -637,7 +572,6 @@ def add_partitions_req(self, request): - request """ - pass def append_partition_with_environment_context(self, db_name, tbl_name, part_vals, environment_context): """ @@ -648,7 +582,6 @@ def append_partition_with_environment_context(self, db_name, tbl_name, part_vals - environment_context """ - pass def append_partition_by_name(self, db_name, tbl_name, part_name): """ @@ -658,7 +591,6 @@ def append_partition_by_name(self, db_name, tbl_name, part_name): - part_name """ - pass def append_partition_by_name_with_environment_context(self, db_name, tbl_name, part_name, environment_context): """ @@ -669,7 +601,6 @@ def append_partition_by_name_with_environment_context(self, db_name, tbl_name, p - environment_context """ - pass def drop_partition(self, db_name, tbl_name, part_vals, deleteData): """ @@ -680,7 +611,6 @@ def drop_partition(self, db_name, tbl_name, part_vals, deleteData): - deleteData """ - pass def drop_partition_with_environment_context(self, db_name, tbl_name, part_vals, deleteData, environment_context): """ @@ -692,7 +622,6 @@ def drop_partition_with_environment_context(self, db_name, tbl_name, part_vals, - environment_context """ - pass def drop_partition_by_name(self, db_name, tbl_name, part_name, deleteData): """ @@ -703,7 +632,6 @@ def drop_partition_by_name(self, db_name, tbl_name, part_name, deleteData): - deleteData """ - pass def drop_partition_by_name_with_environment_context(self, db_name, tbl_name, part_name, deleteData, environment_context): """ @@ -715,7 +643,6 @@ def drop_partition_by_name_with_environment_context(self, db_name, tbl_name, par - environment_context """ - pass def drop_partitions_req(self, req): """ @@ -723,7 +650,6 @@ def drop_partitions_req(self, req): - req """ - pass def get_partition(self, db_name, tbl_name, part_vals): """ @@ -733,7 +659,6 @@ def get_partition(self, db_name, tbl_name, part_vals): - part_vals """ - pass def get_partition_req(self, req): """ @@ -741,7 +666,6 @@ def get_partition_req(self, req): - req """ - pass def exchange_partition(self, partitionSpecs, source_db, source_table_name, dest_db, dest_table_name): """ @@ -753,7 +677,6 @@ def exchange_partition(self, partitionSpecs, source_db, source_table_name, dest_ - dest_table_name """ - pass def exchange_partitions(self, partitionSpecs, source_db, source_table_name, dest_db, dest_table_name): """ @@ -765,7 +688,6 @@ def exchange_partitions(self, partitionSpecs, source_db, source_table_name, dest - dest_table_name """ - pass def get_partition_with_auth(self, db_name, tbl_name, part_vals, user_name, group_names): """ @@ -777,7 +699,6 @@ def get_partition_with_auth(self, db_name, tbl_name, part_vals, user_name, group - group_names """ - pass def get_partition_by_name(self, db_name, tbl_name, part_name): """ @@ -787,7 +708,6 @@ def get_partition_by_name(self, db_name, tbl_name, part_name): - part_name """ - pass def get_partitions(self, db_name, tbl_name, max_parts): """ @@ -797,7 +717,6 @@ def get_partitions(self, db_name, tbl_name, max_parts): - max_parts """ - pass def get_partitions_req(self, req): """ @@ -805,7 +724,6 @@ def get_partitions_req(self, req): - req """ - pass def get_partitions_with_auth(self, db_name, tbl_name, max_parts, user_name, group_names): """ @@ -817,7 +735,6 @@ def get_partitions_with_auth(self, db_name, tbl_name, max_parts, user_name, grou - group_names """ - pass def get_partitions_pspec(self, db_name, tbl_name, max_parts): """ @@ -827,7 +744,6 @@ def get_partitions_pspec(self, db_name, tbl_name, max_parts): - max_parts """ - pass def get_partition_names(self, db_name, tbl_name, max_parts): """ @@ -837,7 +753,6 @@ def get_partition_names(self, db_name, tbl_name, max_parts): - max_parts """ - pass def get_partition_values(self, request): """ @@ -845,7 +760,6 @@ def get_partition_values(self, request): - request """ - pass def get_partitions_ps(self, db_name, tbl_name, part_vals, max_parts): """ @@ -856,7 +770,6 @@ def get_partitions_ps(self, db_name, tbl_name, part_vals, max_parts): - max_parts """ - pass def get_partitions_ps_with_auth(self, db_name, tbl_name, part_vals, max_parts, user_name, group_names): """ @@ -869,7 +782,6 @@ def get_partitions_ps_with_auth(self, db_name, tbl_name, part_vals, max_parts, u - group_names """ - pass def get_partitions_ps_with_auth_req(self, req): """ @@ -877,7 +789,6 @@ def get_partitions_ps_with_auth_req(self, req): - req """ - pass def get_partition_names_ps(self, db_name, tbl_name, part_vals, max_parts): """ @@ -888,7 +799,6 @@ def get_partition_names_ps(self, db_name, tbl_name, part_vals, max_parts): - max_parts """ - pass def get_partition_names_ps_req(self, req): """ @@ -896,7 +806,6 @@ def get_partition_names_ps_req(self, req): - req """ - pass def get_partition_names_req(self, req): """ @@ -904,7 +813,6 @@ def get_partition_names_req(self, req): - req """ - pass def get_partitions_by_filter(self, db_name, tbl_name, filter, max_parts): """ @@ -915,7 +823,6 @@ def get_partitions_by_filter(self, db_name, tbl_name, filter, max_parts): - max_parts """ - pass def get_part_specs_by_filter(self, db_name, tbl_name, filter, max_parts): """ @@ -926,7 +833,6 @@ def get_part_specs_by_filter(self, db_name, tbl_name, filter, max_parts): - max_parts """ - pass def get_partitions_by_expr(self, req): """ @@ -934,7 +840,6 @@ def get_partitions_by_expr(self, req): - req """ - pass def get_partitions_spec_by_expr(self, req): """ @@ -942,7 +847,6 @@ def get_partitions_spec_by_expr(self, req): - req """ - pass def get_num_partitions_by_filter(self, db_name, tbl_name, filter): """ @@ -952,7 +856,6 @@ def get_num_partitions_by_filter(self, db_name, tbl_name, filter): - filter """ - pass def get_partitions_by_names(self, db_name, tbl_name, names): """ @@ -962,7 +865,6 @@ def get_partitions_by_names(self, db_name, tbl_name, names): - names """ - pass def get_partitions_by_names_req(self, req): """ @@ -970,7 +872,6 @@ def get_partitions_by_names_req(self, req): - req """ - pass def alter_partition(self, db_name, tbl_name, new_part): """ @@ -980,7 +881,6 @@ def alter_partition(self, db_name, tbl_name, new_part): - new_part """ - pass def alter_partitions(self, db_name, tbl_name, new_parts): """ @@ -990,7 +890,6 @@ def alter_partitions(self, db_name, tbl_name, new_parts): - new_parts """ - pass def alter_partitions_with_environment_context(self, db_name, tbl_name, new_parts, environment_context): """ @@ -1001,7 +900,6 @@ def alter_partitions_with_environment_context(self, db_name, tbl_name, new_parts - environment_context """ - pass def alter_partitions_req(self, req): """ @@ -1009,7 +907,6 @@ def alter_partitions_req(self, req): - req """ - pass def alter_partition_with_environment_context(self, db_name, tbl_name, new_part, environment_context): """ @@ -1020,7 +917,6 @@ def alter_partition_with_environment_context(self, db_name, tbl_name, new_part, - environment_context """ - pass def rename_partition(self, db_name, tbl_name, part_vals, new_part): """ @@ -1031,7 +927,6 @@ def rename_partition(self, db_name, tbl_name, part_vals, new_part): - new_part """ - pass def rename_partition_req(self, req): """ @@ -1039,7 +934,6 @@ def rename_partition_req(self, req): - req """ - pass def partition_name_has_valid_characters(self, part_vals, throw_exception): """ @@ -1048,7 +942,6 @@ def partition_name_has_valid_characters(self, part_vals, throw_exception): - throw_exception """ - pass def get_config_value(self, name, defaultValue): """ @@ -1057,7 +950,6 @@ def get_config_value(self, name, defaultValue): - defaultValue """ - pass def partition_name_to_vals(self, part_name): """ @@ -1065,7 +957,6 @@ def partition_name_to_vals(self, part_name): - part_name """ - pass def partition_name_to_spec(self, part_name): """ @@ -1073,7 +964,6 @@ def partition_name_to_spec(self, part_name): - part_name """ - pass def markPartitionForEvent(self, db_name, tbl_name, part_vals, eventType): """ @@ -1084,7 +974,6 @@ def markPartitionForEvent(self, db_name, tbl_name, part_vals, eventType): - eventType """ - pass def isPartitionMarkedForEvent(self, db_name, tbl_name, part_vals, eventType): """ @@ -1095,7 +984,6 @@ def isPartitionMarkedForEvent(self, db_name, tbl_name, part_vals, eventType): - eventType """ - pass def get_primary_keys(self, request): """ @@ -1103,7 +991,6 @@ def get_primary_keys(self, request): - request """ - pass def get_foreign_keys(self, request): """ @@ -1111,7 +998,6 @@ def get_foreign_keys(self, request): - request """ - pass def get_unique_constraints(self, request): """ @@ -1119,7 +1005,6 @@ def get_unique_constraints(self, request): - request """ - pass def get_not_null_constraints(self, request): """ @@ -1127,7 +1012,6 @@ def get_not_null_constraints(self, request): - request """ - pass def get_default_constraints(self, request): """ @@ -1135,7 +1019,6 @@ def get_default_constraints(self, request): - request """ - pass def get_check_constraints(self, request): """ @@ -1143,7 +1026,6 @@ def get_check_constraints(self, request): - request """ - pass def get_all_table_constraints(self, request): """ @@ -1151,7 +1033,6 @@ def get_all_table_constraints(self, request): - request """ - pass def update_table_column_statistics(self, stats_obj): """ @@ -1159,7 +1040,6 @@ def update_table_column_statistics(self, stats_obj): - stats_obj """ - pass def update_partition_column_statistics(self, stats_obj): """ @@ -1167,7 +1047,6 @@ def update_partition_column_statistics(self, stats_obj): - stats_obj """ - pass def update_table_column_statistics_req(self, req): """ @@ -1175,7 +1054,6 @@ def update_table_column_statistics_req(self, req): - req """ - pass def update_partition_column_statistics_req(self, req): """ @@ -1183,7 +1061,6 @@ def update_partition_column_statistics_req(self, req): - req """ - pass def update_transaction_statistics(self, req): """ @@ -1191,7 +1068,6 @@ def update_transaction_statistics(self, req): - req """ - pass def get_table_column_statistics(self, db_name, tbl_name, col_name): """ @@ -1201,7 +1077,6 @@ def get_table_column_statistics(self, db_name, tbl_name, col_name): - col_name """ - pass def get_partition_column_statistics(self, db_name, tbl_name, part_name, col_name): """ @@ -1212,7 +1087,6 @@ def get_partition_column_statistics(self, db_name, tbl_name, part_name, col_name - col_name """ - pass def get_table_statistics_req(self, request): """ @@ -1220,7 +1094,6 @@ def get_table_statistics_req(self, request): - request """ - pass def get_partitions_statistics_req(self, request): """ @@ -1228,7 +1101,6 @@ def get_partitions_statistics_req(self, request): - request """ - pass def get_aggr_stats_for(self, request): """ @@ -1236,7 +1108,6 @@ def get_aggr_stats_for(self, request): - request """ - pass def set_aggr_stats_for(self, request): """ @@ -1244,7 +1115,6 @@ def set_aggr_stats_for(self, request): - request """ - pass def delete_partition_column_statistics(self, db_name, tbl_name, part_name, col_name, engine): """ @@ -1256,7 +1126,6 @@ def delete_partition_column_statistics(self, db_name, tbl_name, part_name, col_n - engine """ - pass def delete_table_column_statistics(self, db_name, tbl_name, col_name, engine): """ @@ -1267,7 +1136,6 @@ def delete_table_column_statistics(self, db_name, tbl_name, col_name, engine): - engine """ - pass def create_function(self, func): """ @@ -1275,7 +1143,6 @@ def create_function(self, func): - func """ - pass def drop_function(self, dbName, funcName): """ @@ -1284,7 +1151,6 @@ def drop_function(self, dbName, funcName): - funcName """ - pass def alter_function(self, dbName, funcName, newFunc): """ @@ -1294,7 +1160,6 @@ def alter_function(self, dbName, funcName, newFunc): - newFunc """ - pass def get_functions(self, dbName, pattern): """ @@ -1303,7 +1168,6 @@ def get_functions(self, dbName, pattern): - pattern """ - pass def get_function(self, dbName, funcName): """ @@ -1312,7 +1176,6 @@ def get_function(self, dbName, funcName): - funcName """ - pass def get_all_functions(self): pass @@ -1323,7 +1186,6 @@ def create_role(self, role): - role """ - pass def drop_role(self, role_name): """ @@ -1331,7 +1193,6 @@ def drop_role(self, role_name): - role_name """ - pass def get_role_names(self): pass @@ -1347,7 +1208,6 @@ def grant_role(self, role_name, principal_name, principal_type, grantor, grantor - grant_option """ - pass def revoke_role(self, role_name, principal_name, principal_type): """ @@ -1357,7 +1217,6 @@ def revoke_role(self, role_name, principal_name, principal_type): - principal_type """ - pass def list_roles(self, principal_name, principal_type): """ @@ -1366,7 +1225,6 @@ def list_roles(self, principal_name, principal_type): - principal_type """ - pass def grant_revoke_role(self, request): """ @@ -1374,7 +1232,6 @@ def grant_revoke_role(self, request): - request """ - pass def get_principals_in_role(self, request): """ @@ -1382,7 +1239,6 @@ def get_principals_in_role(self, request): - request """ - pass def get_role_grants_for_principal(self, request): """ @@ -1390,7 +1246,6 @@ def get_role_grants_for_principal(self, request): - request """ - pass def get_privilege_set(self, hiveObject, user_name, group_names): """ @@ -1400,7 +1255,6 @@ def get_privilege_set(self, hiveObject, user_name, group_names): - group_names """ - pass def list_privileges(self, principal_name, principal_type, hiveObject): """ @@ -1410,7 +1264,6 @@ def list_privileges(self, principal_name, principal_type, hiveObject): - hiveObject """ - pass def grant_privileges(self, privileges): """ @@ -1418,7 +1271,6 @@ def grant_privileges(self, privileges): - privileges """ - pass def revoke_privileges(self, privileges): """ @@ -1426,7 +1278,6 @@ def revoke_privileges(self, privileges): - privileges """ - pass def grant_revoke_privileges(self, request): """ @@ -1434,7 +1285,6 @@ def grant_revoke_privileges(self, request): - request """ - pass def refresh_privileges(self, objToRefresh, authorizer, grantRequest): """ @@ -1444,7 +1294,6 @@ def refresh_privileges(self, objToRefresh, authorizer, grantRequest): - grantRequest """ - pass def set_ugi(self, user_name, group_names): """ @@ -1453,7 +1302,6 @@ def set_ugi(self, user_name, group_names): - group_names """ - pass def get_delegation_token(self, token_owner, renewer_kerberos_principal_name): """ @@ -1462,7 +1310,6 @@ def get_delegation_token(self, token_owner, renewer_kerberos_principal_name): - renewer_kerberos_principal_name """ - pass def renew_delegation_token(self, token_str_form): """ @@ -1470,7 +1317,6 @@ def renew_delegation_token(self, token_str_form): - token_str_form """ - pass def cancel_delegation_token(self, token_str_form): """ @@ -1478,7 +1324,6 @@ def cancel_delegation_token(self, token_str_form): - token_str_form """ - pass def add_token(self, token_identifier, delegation_token): """ @@ -1487,7 +1332,6 @@ def add_token(self, token_identifier, delegation_token): - delegation_token """ - pass def remove_token(self, token_identifier): """ @@ -1495,7 +1339,6 @@ def remove_token(self, token_identifier): - token_identifier """ - pass def get_token(self, token_identifier): """ @@ -1503,7 +1346,6 @@ def get_token(self, token_identifier): - token_identifier """ - pass def get_all_token_identifiers(self): pass @@ -1514,7 +1356,6 @@ def add_master_key(self, key): - key """ - pass def update_master_key(self, seq_number, key): """ @@ -1523,7 +1364,6 @@ def update_master_key(self, seq_number, key): - key """ - pass def remove_master_key(self, key_seq): """ @@ -1531,7 +1371,6 @@ def remove_master_key(self, key_seq): - key_seq """ - pass def get_master_keys(self): pass @@ -1548,7 +1387,6 @@ def open_txns(self, rqst): - rqst """ - pass def abort_txn(self, rqst): """ @@ -1556,7 +1394,6 @@ def abort_txn(self, rqst): - rqst """ - pass def abort_txns(self, rqst): """ @@ -1564,7 +1401,6 @@ def abort_txns(self, rqst): - rqst """ - pass def commit_txn(self, rqst): """ @@ -1572,7 +1408,6 @@ def commit_txn(self, rqst): - rqst """ - pass def get_latest_txnid_in_conflict(self, txnId): """ @@ -1580,7 +1415,6 @@ def get_latest_txnid_in_conflict(self, txnId): - txnId """ - pass def repl_tbl_writeid_state(self, rqst): """ @@ -1588,7 +1422,6 @@ def repl_tbl_writeid_state(self, rqst): - rqst """ - pass def get_valid_write_ids(self, rqst): """ @@ -1596,7 +1429,6 @@ def get_valid_write_ids(self, rqst): - rqst """ - pass def allocate_table_write_ids(self, rqst): """ @@ -1604,7 +1436,6 @@ def allocate_table_write_ids(self, rqst): - rqst """ - pass def get_max_allocated_table_write_id(self, rqst): """ @@ -1612,7 +1443,6 @@ def get_max_allocated_table_write_id(self, rqst): - rqst """ - pass def seed_write_id(self, rqst): """ @@ -1620,7 +1450,6 @@ def seed_write_id(self, rqst): - rqst """ - pass def seed_txn_id(self, rqst): """ @@ -1628,7 +1457,6 @@ def seed_txn_id(self, rqst): - rqst """ - pass def lock(self, rqst): """ @@ -1636,7 +1464,6 @@ def lock(self, rqst): - rqst """ - pass def check_lock(self, rqst): """ @@ -1644,7 +1471,6 @@ def check_lock(self, rqst): - rqst """ - pass def unlock(self, rqst): """ @@ -1652,7 +1478,6 @@ def unlock(self, rqst): - rqst """ - pass def show_locks(self, rqst): """ @@ -1660,7 +1485,6 @@ def show_locks(self, rqst): - rqst """ - pass def heartbeat(self, ids): """ @@ -1668,7 +1492,6 @@ def heartbeat(self, ids): - ids """ - pass def heartbeat_txn_range(self, txns): """ @@ -1676,7 +1499,6 @@ def heartbeat_txn_range(self, txns): - txns """ - pass def compact(self, rqst): """ @@ -1684,7 +1506,6 @@ def compact(self, rqst): - rqst """ - pass def compact2(self, rqst): """ @@ -1692,7 +1513,6 @@ def compact2(self, rqst): - rqst """ - pass def show_compact(self, rqst): """ @@ -1700,7 +1520,6 @@ def show_compact(self, rqst): - rqst """ - pass def add_dynamic_partitions(self, rqst): """ @@ -1708,7 +1527,6 @@ def add_dynamic_partitions(self, rqst): - rqst """ - pass def find_next_compact(self, workerId): """ @@ -1716,7 +1534,6 @@ def find_next_compact(self, workerId): - workerId """ - pass def find_next_compact2(self, rqst): """ @@ -1724,7 +1541,6 @@ def find_next_compact2(self, rqst): - rqst """ - pass def update_compactor_state(self, cr, txn_id): """ @@ -1733,7 +1549,6 @@ def update_compactor_state(self, cr, txn_id): - txn_id """ - pass def find_columns_with_stats(self, cr): """ @@ -1741,7 +1556,6 @@ def find_columns_with_stats(self, cr): - cr """ - pass def mark_cleaned(self, cr): """ @@ -1749,7 +1563,6 @@ def mark_cleaned(self, cr): - cr """ - pass def mark_compacted(self, cr): """ @@ -1757,7 +1570,6 @@ def mark_compacted(self, cr): - cr """ - pass def mark_failed(self, cr): """ @@ -1765,7 +1577,6 @@ def mark_failed(self, cr): - cr """ - pass def mark_refused(self, cr): """ @@ -1773,7 +1584,6 @@ def mark_refused(self, cr): - cr """ - pass def update_compaction_metrics_data(self, data): """ @@ -1781,7 +1591,6 @@ def update_compaction_metrics_data(self, data): - data """ - pass def remove_compaction_metrics_data(self, request): """ @@ -1789,7 +1598,6 @@ def remove_compaction_metrics_data(self, request): - request """ - pass def set_hadoop_jobid(self, jobId, cq_id): """ @@ -1798,7 +1606,6 @@ def set_hadoop_jobid(self, jobId, cq_id): - cq_id """ - pass def get_latest_committed_compaction_info(self, rqst): """ @@ -1806,7 +1613,6 @@ def get_latest_committed_compaction_info(self, rqst): - rqst """ - pass def get_next_notification(self, rqst): """ @@ -1814,7 +1620,6 @@ def get_next_notification(self, rqst): - rqst """ - pass def get_current_notificationEventId(self): pass @@ -1825,7 +1630,6 @@ def get_notification_events_count(self, rqst): - rqst """ - pass def fire_listener_event(self, rqst): """ @@ -1833,7 +1637,6 @@ def fire_listener_event(self, rqst): - rqst """ - pass def flushCache(self): pass @@ -1844,7 +1647,6 @@ def add_write_notification_log(self, rqst): - rqst """ - pass def add_write_notification_log_in_batch(self, rqst): """ @@ -1852,7 +1654,6 @@ def add_write_notification_log_in_batch(self, rqst): - rqst """ - pass def cm_recycle(self, request): """ @@ -1860,7 +1661,6 @@ def cm_recycle(self, request): - request """ - pass def get_file_metadata_by_expr(self, req): """ @@ -1868,7 +1668,6 @@ def get_file_metadata_by_expr(self, req): - req """ - pass def get_file_metadata(self, req): """ @@ -1876,7 +1675,6 @@ def get_file_metadata(self, req): - req """ - pass def put_file_metadata(self, req): """ @@ -1884,7 +1682,6 @@ def put_file_metadata(self, req): - req """ - pass def clear_file_metadata(self, req): """ @@ -1892,7 +1689,6 @@ def clear_file_metadata(self, req): - req """ - pass def cache_file_metadata(self, req): """ @@ -1900,7 +1696,6 @@ def cache_file_metadata(self, req): - req """ - pass def get_metastore_db_uuid(self): pass @@ -1911,7 +1706,6 @@ def create_resource_plan(self, request): - request """ - pass def get_resource_plan(self, request): """ @@ -1919,7 +1713,6 @@ def get_resource_plan(self, request): - request """ - pass def get_active_resource_plan(self, request): """ @@ -1927,7 +1720,6 @@ def get_active_resource_plan(self, request): - request """ - pass def get_all_resource_plans(self, request): """ @@ -1935,7 +1727,6 @@ def get_all_resource_plans(self, request): - request """ - pass def alter_resource_plan(self, request): """ @@ -1943,7 +1734,6 @@ def alter_resource_plan(self, request): - request """ - pass def validate_resource_plan(self, request): """ @@ -1951,7 +1741,6 @@ def validate_resource_plan(self, request): - request """ - pass def drop_resource_plan(self, request): """ @@ -1959,7 +1748,6 @@ def drop_resource_plan(self, request): - request """ - pass def create_wm_trigger(self, request): """ @@ -1967,7 +1755,6 @@ def create_wm_trigger(self, request): - request """ - pass def alter_wm_trigger(self, request): """ @@ -1975,7 +1762,6 @@ def alter_wm_trigger(self, request): - request """ - pass def drop_wm_trigger(self, request): """ @@ -1983,7 +1769,6 @@ def drop_wm_trigger(self, request): - request """ - pass def get_triggers_for_resourceplan(self, request): """ @@ -1991,7 +1776,6 @@ def get_triggers_for_resourceplan(self, request): - request """ - pass def create_wm_pool(self, request): """ @@ -1999,7 +1783,6 @@ def create_wm_pool(self, request): - request """ - pass def alter_wm_pool(self, request): """ @@ -2007,7 +1790,6 @@ def alter_wm_pool(self, request): - request """ - pass def drop_wm_pool(self, request): """ @@ -2015,7 +1797,6 @@ def drop_wm_pool(self, request): - request """ - pass def create_or_update_wm_mapping(self, request): """ @@ -2023,7 +1804,6 @@ def create_or_update_wm_mapping(self, request): - request """ - pass def drop_wm_mapping(self, request): """ @@ -2031,7 +1811,6 @@ def drop_wm_mapping(self, request): - request """ - pass def create_or_drop_wm_trigger_to_pool_mapping(self, request): """ @@ -2039,7 +1818,6 @@ def create_or_drop_wm_trigger_to_pool_mapping(self, request): - request """ - pass def create_ischema(self, schema): """ @@ -2047,7 +1825,6 @@ def create_ischema(self, schema): - schema """ - pass def alter_ischema(self, rqst): """ @@ -2055,7 +1832,6 @@ def alter_ischema(self, rqst): - rqst """ - pass def get_ischema(self, name): """ @@ -2063,7 +1839,6 @@ def get_ischema(self, name): - name """ - pass def drop_ischema(self, name): """ @@ -2071,7 +1846,6 @@ def drop_ischema(self, name): - name """ - pass def add_schema_version(self, schemaVersion): """ @@ -2079,7 +1853,6 @@ def add_schema_version(self, schemaVersion): - schemaVersion """ - pass def get_schema_version(self, schemaVersion): """ @@ -2087,7 +1860,6 @@ def get_schema_version(self, schemaVersion): - schemaVersion """ - pass def get_schema_latest_version(self, schemaName): """ @@ -2095,7 +1867,6 @@ def get_schema_latest_version(self, schemaName): - schemaName """ - pass def get_schema_all_versions(self, schemaName): """ @@ -2103,7 +1874,6 @@ def get_schema_all_versions(self, schemaName): - schemaName """ - pass def drop_schema_version(self, schemaVersion): """ @@ -2111,7 +1881,6 @@ def drop_schema_version(self, schemaVersion): - schemaVersion """ - pass def get_schemas_by_cols(self, rqst): """ @@ -2119,7 +1888,6 @@ def get_schemas_by_cols(self, rqst): - rqst """ - pass def map_schema_version_to_serde(self, rqst): """ @@ -2127,7 +1895,6 @@ def map_schema_version_to_serde(self, rqst): - rqst """ - pass def set_schema_version_state(self, rqst): """ @@ -2135,7 +1902,6 @@ def set_schema_version_state(self, rqst): - rqst """ - pass def add_serde(self, serde): """ @@ -2143,7 +1909,6 @@ def add_serde(self, serde): - serde """ - pass def get_serde(self, rqst): """ @@ -2151,7 +1916,6 @@ def get_serde(self, rqst): - rqst """ - pass def get_lock_materialization_rebuild(self, dbName, tableName, txnId): """ @@ -2161,7 +1925,6 @@ def get_lock_materialization_rebuild(self, dbName, tableName, txnId): - txnId """ - pass def heartbeat_lock_materialization_rebuild(self, dbName, tableName, txnId): """ @@ -2171,7 +1934,6 @@ def heartbeat_lock_materialization_rebuild(self, dbName, tableName, txnId): - txnId """ - pass def add_runtime_stats(self, stat): """ @@ -2179,7 +1941,6 @@ def add_runtime_stats(self, stat): - stat """ - pass def get_runtime_stats(self, rqst): """ @@ -2187,7 +1948,6 @@ def get_runtime_stats(self, rqst): - rqst """ - pass def get_partitions_with_specs(self, request): """ @@ -2195,7 +1955,6 @@ def get_partitions_with_specs(self, request): - request """ - pass def scheduled_query_poll(self, request): """ @@ -2203,7 +1962,6 @@ def scheduled_query_poll(self, request): - request """ - pass def scheduled_query_maintenance(self, request): """ @@ -2211,7 +1969,6 @@ def scheduled_query_maintenance(self, request): - request """ - pass def scheduled_query_progress(self, info): """ @@ -2219,7 +1976,6 @@ def scheduled_query_progress(self, info): - info """ - pass def get_scheduled_query(self, scheduleKey): """ @@ -2227,7 +1983,6 @@ def get_scheduled_query(self, scheduleKey): - scheduleKey """ - pass def add_replication_metrics(self, replicationMetricList): """ @@ -2235,7 +1990,6 @@ def add_replication_metrics(self, replicationMetricList): - replicationMetricList """ - pass def get_replication_metrics(self, rqst): """ @@ -2243,7 +1997,6 @@ def get_replication_metrics(self, rqst): - rqst """ - pass def get_open_txns_req(self, getOpenTxnsRequest): """ @@ -2251,7 +2004,6 @@ def get_open_txns_req(self, getOpenTxnsRequest): - getOpenTxnsRequest """ - pass def create_stored_procedure(self, proc): """ @@ -2259,7 +2011,6 @@ def create_stored_procedure(self, proc): - proc """ - pass def get_stored_procedure(self, request): """ @@ -2267,7 +2018,6 @@ def get_stored_procedure(self, request): - request """ - pass def drop_stored_procedure(self, request): """ @@ -2275,7 +2025,6 @@ def drop_stored_procedure(self, request): - request """ - pass def get_all_stored_procedures(self, request): """ @@ -2283,7 +2032,6 @@ def get_all_stored_procedures(self, request): - request """ - pass def find_package(self, request): """ @@ -2291,7 +2039,6 @@ def find_package(self, request): - request """ - pass def add_package(self, request): """ @@ -2299,7 +2046,6 @@ def add_package(self, request): - request """ - pass def get_all_packages(self, request): """ @@ -2307,7 +2053,6 @@ def get_all_packages(self, request): - request """ - pass def drop_package(self, request): """ @@ -2315,7 +2060,6 @@ def drop_package(self, request): - request """ - pass def get_all_write_event_info(self, request): """ @@ -2323,7 +2067,6 @@ def get_all_write_event_info(self, request): - request """ - pass class Client(fb303.FacebookService.Client, Iface): @@ -20241,7 +19984,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20330,7 +20073,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20427,7 +20170,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20509,7 +20252,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20585,7 +20328,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20684,7 +20427,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20774,7 +20517,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20873,7 +20616,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20963,7 +20706,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21063,7 +20806,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21130,7 +20873,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21209,7 +20952,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21291,7 +21034,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21390,7 +21133,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21480,7 +21223,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21579,7 +21322,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21670,7 +21413,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21770,7 +21513,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21859,7 +21602,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21959,7 +21702,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22073,7 +21816,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22186,7 +21929,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22276,7 +22019,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22375,7 +22118,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22466,7 +22209,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22565,7 +22308,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22625,7 +22368,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22715,7 +22458,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22811,7 +22554,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22905,7 +22648,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22988,7 +22731,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23087,7 +22830,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23177,7 +22920,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23277,7 +23020,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23391,7 +23134,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23481,7 +23224,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23549,7 +23292,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23639,7 +23382,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23735,7 +23478,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23829,7 +23572,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23913,7 +23656,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24013,7 +23756,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24102,7 +23845,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24213,7 +23956,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24310,7 +24053,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24409,7 +24152,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24499,7 +24242,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24601,7 +24344,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24698,7 +24441,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24825,7 +24568,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24949,7 +24692,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25083,7 +24826,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25179,7 +24922,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25291,7 +25034,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25402,7 +25145,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25529,7 +25272,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25653,7 +25396,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25787,7 +25530,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25883,7 +25626,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25995,7 +25738,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26091,7 +25834,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26202,7 +25945,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26312,7 +26055,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26430,7 +26173,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26653,7 +26396,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26806,7 +26549,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26903,7 +26646,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27014,7 +26757,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27111,7 +26854,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27198,7 +26941,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27281,7 +27024,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27368,7 +27111,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27451,7 +27194,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27538,7 +27281,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27621,7 +27364,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27708,7 +27451,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27791,7 +27534,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27878,7 +27621,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27961,7 +27704,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28048,7 +27791,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28131,7 +27874,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28218,7 +27961,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28301,7 +28044,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28425,7 +28168,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28555,7 +28298,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28656,7 +28399,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28779,7 +28522,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28887,7 +28630,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29009,7 +28752,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29098,7 +28841,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29174,7 +28917,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29262,7 +29005,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29359,7 +29102,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29465,7 +29208,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29576,7 +29319,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29689,7 +29432,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29749,7 +29492,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29836,7 +29579,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29919,7 +29662,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30018,7 +29761,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30139,7 +29882,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30249,7 +29992,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30332,7 +30075,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30431,7 +30174,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30528,7 +30271,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30635,7 +30378,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30749,7 +30492,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30840,7 +30583,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30915,7 +30658,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31011,7 +30754,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31093,7 +30836,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31193,7 +30936,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31282,7 +31025,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31394,7 +31137,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31504,7 +31247,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31623,7 +31366,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31761,7 +31504,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31881,7 +31624,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31998,7 +31741,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32135,7 +31878,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32259,7 +32002,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32360,7 +32103,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32484,7 +32227,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32592,7 +32335,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32715,7 +32458,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32823,7 +32566,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32906,7 +32649,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33006,7 +32749,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33095,7 +32838,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33207,7 +32950,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33316,7 +33059,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33435,7 +33178,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33539,7 +33282,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33650,7 +33393,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33754,7 +33497,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33865,7 +33608,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34000,7 +33743,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34126,7 +33869,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34222,7 +33965,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34334,7 +34077,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34482,7 +34225,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34615,7 +34358,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34740,7 +34483,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34866,7 +34609,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35004,7 +34747,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35137,7 +34880,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35284,7 +35027,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35404,7 +35147,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35557,7 +35300,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35684,7 +35427,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35814,7 +35557,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35934,7 +35677,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36077,7 +35820,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36204,7 +35947,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36293,7 +36036,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36393,7 +36136,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36521,7 +36264,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36635,7 +36378,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36724,7 +36467,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36824,7 +36567,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36986,7 +36729,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37138,7 +36881,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37314,7 +37057,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37474,7 +37217,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37654,7 +37397,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37782,7 +37525,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37900,7 +37643,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38014,7 +37757,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38130,7 +37873,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38252,7 +37995,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38341,7 +38084,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38441,7 +38184,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38595,7 +38338,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38731,7 +38474,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38847,7 +38590,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38969,7 +38712,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39085,7 +38828,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39210,7 +38953,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39299,7 +39042,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39399,7 +39142,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39539,7 +39282,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39668,7 +39411,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39846,7 +39589,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39989,7 +39732,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40078,7 +39821,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40178,7 +39921,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40318,7 +40061,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40450,7 +40193,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40539,7 +40282,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40639,7 +40382,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40728,7 +40471,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40839,7 +40582,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40969,7 +40712,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41098,7 +40841,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41228,7 +40971,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41357,7 +41100,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41446,7 +41189,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41546,7 +41289,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41635,7 +41378,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41735,7 +41478,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41853,7 +41596,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41966,7 +41709,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42094,7 +41837,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42216,7 +41959,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42305,7 +42048,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42405,7 +42148,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42522,7 +42265,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42623,7 +42366,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42742,7 +42485,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42843,7 +42586,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42975,7 +42718,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43083,7 +42826,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43166,7 +42909,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43266,7 +43009,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43396,7 +43139,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43504,7 +43247,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43639,7 +43382,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43747,7 +43490,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43830,7 +43573,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43930,7 +43673,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44042,7 +43785,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44136,7 +43879,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44233,7 +43976,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44329,7 +44072,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44412,7 +44155,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44511,7 +44254,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44594,7 +44337,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44699,7 +44442,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44838,7 +44581,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44994,7 +44737,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45162,7 +44905,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45330,7 +45073,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45447,7 +45190,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45547,7 +45290,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45636,7 +45379,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45736,7 +45479,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45825,7 +45568,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45925,7 +45668,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46014,7 +45757,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46114,7 +45857,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46203,7 +45946,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46303,7 +46046,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46392,7 +46135,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46492,7 +46235,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46581,7 +46324,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46681,7 +46424,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46770,7 +46513,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46893,7 +46636,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46996,7 +46739,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47119,7 +46862,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47222,7 +46965,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47346,7 +47089,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47449,7 +47192,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47573,7 +47316,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47676,7 +47419,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47751,7 +47494,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47856,7 +47599,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47994,7 +47737,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48140,7 +47883,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48285,7 +48028,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48388,7 +48131,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48488,7 +48231,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48577,7 +48320,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48677,7 +48420,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48766,7 +48509,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48866,7 +48609,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48955,7 +48698,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49078,7 +48821,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49238,7 +48981,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49389,7 +49132,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49535,7 +49278,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49679,7 +49422,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49782,7 +49525,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49893,7 +49636,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50005,7 +49748,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50099,7 +49842,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50210,7 +49953,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50311,7 +50054,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50409,7 +50152,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50515,7 +50258,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50612,7 +50355,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50719,7 +50462,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50786,7 +50529,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50865,7 +50608,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50947,7 +50690,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51034,7 +50777,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51117,7 +50860,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51204,7 +50947,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51264,7 +51007,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51354,7 +51097,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51501,7 +51244,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51623,7 +51366,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51732,7 +51475,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51833,7 +51576,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51928,7 +51671,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52031,7 +51774,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52113,7 +51856,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52201,7 +51944,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52283,7 +52026,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52371,7 +52114,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52453,7 +52196,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52541,7 +52284,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52661,7 +52404,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52763,7 +52506,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52871,7 +52614,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52981,7 +52724,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53063,7 +52806,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53150,7 +52893,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53232,7 +52975,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53319,7 +53062,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53401,7 +53144,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53489,7 +53232,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53598,7 +53341,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53700,7 +53443,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53807,7 +53550,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53913,7 +53656,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54014,7 +53757,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54110,7 +53853,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54193,7 +53936,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54280,7 +54023,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54363,7 +54106,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54438,7 +54181,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54529,7 +54272,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54611,7 +54354,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54687,7 +54430,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54762,7 +54505,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54838,7 +54581,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54915,7 +54658,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54968,7 +54711,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55046,7 +54789,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55122,7 +54865,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55209,7 +54952,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55304,7 +55047,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55398,7 +55141,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55480,7 +55223,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55555,7 +55298,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55608,7 +55351,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55686,7 +55429,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55739,7 +55482,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55806,7 +55549,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55859,7 +55602,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55926,7 +55669,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56001,7 +55744,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56077,7 +55820,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56152,7 +55895,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56227,7 +55970,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56303,7 +56046,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56378,7 +56121,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56454,7 +56197,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56541,7 +56284,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56623,7 +56366,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56710,7 +56453,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56792,7 +56535,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56846,7 +56589,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56913,7 +56656,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57013,7 +56756,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57102,7 +56845,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57214,7 +56957,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57310,7 +57053,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57398,7 +57141,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57480,7 +57223,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57555,7 +57298,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57631,7 +57374,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57706,7 +57449,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57782,7 +57525,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57882,7 +57625,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57971,7 +57714,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58083,7 +57826,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58179,7 +57922,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58266,7 +58009,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58349,7 +58092,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58425,7 +58168,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58500,7 +58243,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58599,7 +58342,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58689,7 +58432,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58765,7 +58508,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58840,7 +58583,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58894,7 +58637,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58961,7 +58704,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59037,7 +58780,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59112,7 +58855,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59188,7 +58931,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59263,7 +59006,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59350,7 +59093,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59434,7 +59177,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59522,7 +59265,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59604,7 +59347,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59692,7 +59435,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59786,7 +59529,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59847,7 +59590,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59914,7 +59657,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60001,7 +59744,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60076,7 +59819,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60151,7 +59894,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60227,7 +59970,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60302,7 +60045,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60378,7 +60121,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60453,7 +60196,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60529,7 +60272,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60604,7 +60347,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60680,7 +60423,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60767,7 +60510,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60849,7 +60592,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60924,7 +60667,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61013,7 +60756,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61074,7 +60817,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61141,7 +60884,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61217,7 +60960,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61292,7 +61035,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61368,7 +61111,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61421,7 +61164,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61488,7 +61231,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61563,7 +61306,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61639,7 +61382,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61714,7 +61457,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61790,7 +61533,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61843,7 +61586,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61888,7 +61631,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61955,7 +61698,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62031,7 +61774,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62106,7 +61849,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62182,7 +61925,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62257,7 +62000,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62345,7 +62088,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62427,7 +62170,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62503,7 +62246,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62578,7 +62321,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62654,7 +62397,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62729,7 +62472,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62805,7 +62548,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62880,7 +62623,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62956,7 +62699,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63031,7 +62774,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63107,7 +62850,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63160,7 +62903,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63240,7 +62983,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63322,7 +63065,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63434,7 +63177,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63530,7 +63273,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63630,7 +63373,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63719,7 +63462,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63807,7 +63550,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63889,7 +63632,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63977,7 +63720,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64059,7 +63802,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64171,7 +63914,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64267,7 +64010,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64367,7 +64110,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64456,7 +64199,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64568,7 +64311,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64664,7 +64407,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64788,7 +64531,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64891,7 +64634,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65003,7 +64746,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65099,7 +64842,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65211,7 +64954,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65307,7 +65050,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65407,7 +65150,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65496,7 +65239,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65620,7 +65363,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65723,7 +65466,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65847,7 +65590,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65950,7 +65693,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66062,7 +65805,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66158,7 +65901,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66282,7 +66025,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66385,7 +66128,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66497,7 +66240,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66593,7 +66336,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66717,7 +66460,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66820,7 +66563,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66919,7 +66662,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67009,7 +66752,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67096,7 +66839,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67179,7 +66922,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67279,7 +67022,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67368,7 +67111,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67467,7 +67210,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67557,7 +67300,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67656,7 +67399,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67746,7 +67489,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67846,7 +67589,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67935,7 +67678,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68035,7 +67778,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68124,7 +67867,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68232,7 +67975,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68321,7 +68064,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68408,7 +68151,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68491,7 +68234,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68579,7 +68322,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68661,7 +68404,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68748,7 +68491,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68831,7 +68574,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68930,7 +68673,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69020,7 +68763,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69107,7 +68850,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69190,7 +68933,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69290,7 +69033,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69406,7 +69149,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69496,7 +69239,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69598,7 +69341,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69687,7 +69430,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69762,7 +69505,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69837,7 +69580,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69913,7 +69656,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70009,7 +69752,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70091,7 +69834,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70179,7 +69922,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70261,7 +70004,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70349,7 +70092,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70431,7 +70174,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70542,7 +70285,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70639,7 +70382,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70726,7 +70469,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70809,7 +70552,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70909,7 +70652,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70998,7 +70741,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71073,7 +70816,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71149,7 +70892,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71237,7 +70980,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71319,7 +71062,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71395,7 +71138,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71470,7 +71213,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71557,7 +71300,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71640,7 +71383,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71740,7 +71483,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71829,7 +71572,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71904,7 +71647,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71980,7 +71723,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72079,7 +71822,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72161,7 +71904,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72261,7 +72004,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72350,7 +72093,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72425,7 +72168,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72501,7 +72244,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72600,7 +72343,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72682,7 +72425,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72757,7 +72500,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72833,7 +72576,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72929,7 +72672,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): diff --git a/vendor/hive_metastore/ttypes.py b/vendor/hive_metastore/ttypes.py index dca7aaadc7..fd279207cb 100644 --- a/vendor/hive_metastore/ttypes.py +++ b/vendor/hive_metastore/ttypes.py @@ -643,7 +643,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -735,7 +735,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -815,7 +815,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -983,7 +983,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1231,7 +1231,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1399,7 +1399,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1555,7 +1555,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1725,7 +1725,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1895,7 +1895,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2071,7 +2071,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2184,7 +2184,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2326,7 +2326,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2440,7 +2440,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2556,7 +2556,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2627,7 +2627,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2782,7 +2782,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2869,7 +2869,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2931,7 +2931,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3076,7 +3076,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3117,7 +3117,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3207,7 +3207,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3347,7 +3347,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3427,7 +3427,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3500,7 +3500,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3566,7 +3566,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3639,7 +3639,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3779,7 +3779,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3841,7 +3841,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3945,7 +3945,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4008,7 +4008,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4085,7 +4085,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4149,7 +4149,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4212,7 +4212,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4286,7 +4286,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4350,7 +4350,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4591,7 +4591,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4753,7 +4753,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4829,7 +4829,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4973,7 +4973,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5223,7 +5223,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5394,7 +5394,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5498,7 +5498,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5612,7 +5612,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5726,7 +5726,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5844,7 +5844,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5948,7 +5948,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6026,7 +6026,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6142,7 +6142,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6206,7 +6206,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6322,7 +6322,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6386,7 +6386,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6502,7 +6502,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6656,7 +6656,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6753,7 +6753,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6889,7 +6889,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -7003,7 +7003,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -7097,7 +7097,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -7183,7 +7183,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -7640,7 +7640,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -7747,7 +7747,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -7993,7 +7993,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8148,7 +8148,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8232,7 +8232,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8303,7 +8303,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8459,7 +8459,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8558,7 +8558,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8685,7 +8685,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8749,7 +8749,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8850,7 +8850,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8972,7 +8972,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9045,7 +9045,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9191,7 +9191,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9264,7 +9264,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9388,7 +9388,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9461,7 +9461,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9585,7 +9585,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9658,7 +9658,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9782,7 +9782,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9855,7 +9855,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9979,7 +9979,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10052,7 +10052,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10176,7 +10176,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10241,7 +10241,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10353,7 +10353,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10426,7 +10426,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10499,7 +10499,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10572,7 +10572,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10645,7 +10645,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10718,7 +10718,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10791,7 +10791,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10878,7 +10878,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10965,7 +10965,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11143,7 +11143,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11228,7 +11228,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11327,7 +11327,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11491,7 +11491,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11669,7 +11669,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11752,7 +11752,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11911,7 +11911,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11982,7 +11982,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12058,7 +12058,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12153,7 +12153,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12325,7 +12325,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12529,7 +12529,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12605,7 +12605,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12678,7 +12678,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12886,7 +12886,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12972,7 +12972,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13146,7 +13146,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13222,7 +13222,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13399,7 +13399,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13573,7 +13573,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13660,7 +13660,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13772,7 +13772,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13928,7 +13928,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14000,7 +14000,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14090,7 +14090,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14162,7 +14162,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14258,7 +14258,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14412,7 +14412,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14544,7 +14544,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14650,7 +14650,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14799,7 +14799,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14953,7 +14953,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15055,7 +15055,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15183,7 +15183,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15256,7 +15256,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15334,7 +15334,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15471,7 +15471,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15544,7 +15544,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15626,7 +15626,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15690,7 +15690,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15786,7 +15786,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15850,7 +15850,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16008,7 +16008,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16163,7 +16163,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16255,7 +16255,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16343,7 +16343,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16407,7 +16407,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16523,7 +16523,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16791,7 +16791,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16862,7 +16862,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16936,7 +16936,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17014,7 +17014,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17108,7 +17108,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17290,7 +17290,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17556,7 +17556,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17619,7 +17619,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17771,7 +17771,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17834,7 +17834,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17944,7 +17944,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18052,7 +18052,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18093,7 +18093,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18403,7 +18403,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18476,7 +18476,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18594,7 +18594,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18667,7 +18667,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18745,7 +18745,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18893,7 +18893,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19023,7 +19023,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19123,7 +19123,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19289,7 +19289,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19362,7 +19362,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19426,7 +19426,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19544,7 +19544,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19608,7 +19608,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19768,7 +19768,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19852,7 +19852,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19997,7 +19997,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20067,7 +20067,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20216,7 +20216,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20257,7 +20257,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20378,7 +20378,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20419,7 +20419,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20493,7 +20493,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20582,7 +20582,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20692,7 +20692,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20780,7 +20780,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20852,7 +20852,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20893,7 +20893,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20999,7 +20999,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21040,7 +21040,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21112,7 +21112,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21176,7 +21176,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21284,7 +21284,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21355,7 +21355,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21427,7 +21427,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21533,7 +21533,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21732,7 +21732,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21809,7 +21809,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21991,7 +21991,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22064,7 +22064,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22226,7 +22226,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22352,7 +22352,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22468,7 +22468,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22626,7 +22626,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22706,7 +22706,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22747,7 +22747,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22873,7 +22873,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22951,7 +22951,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23069,7 +23069,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23209,7 +23209,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23343,7 +23343,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23489,7 +23489,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23625,7 +23625,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23763,7 +23763,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23859,7 +23859,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24010,7 +24010,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24087,7 +24087,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24128,7 +24128,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24192,7 +24192,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24255,7 +24255,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24333,7 +24333,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24396,7 +24396,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24460,7 +24460,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24531,7 +24531,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24658,7 +24658,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24721,7 +24721,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24799,7 +24799,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24897,7 +24897,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24975,7 +24975,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25016,7 +25016,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25079,7 +25079,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25120,7 +25120,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25183,7 +25183,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25224,7 +25224,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25316,7 +25316,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25357,7 +25357,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25435,7 +25435,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25506,7 +25506,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25569,7 +25569,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25610,7 +25610,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25687,7 +25687,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25728,7 +25728,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25820,7 +25820,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25861,7 +25861,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25936,7 +25936,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25977,7 +25977,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26040,7 +26040,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26081,7 +26081,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26199,7 +26199,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26240,7 +26240,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26408,7 +26408,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26500,7 +26500,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26576,7 +26576,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26765,7 +26765,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26840,7 +26840,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26932,7 +26932,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27003,7 +27003,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27080,7 +27080,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27155,7 +27155,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27219,7 +27219,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27309,7 +27309,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27387,7 +27387,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27629,7 +27629,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27860,7 +27860,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27923,7 +27923,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27989,7 +27989,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28055,7 +28055,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28137,7 +28137,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28240,7 +28240,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28371,7 +28371,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28450,7 +28450,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28558,7 +28558,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28716,7 +28716,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28757,7 +28757,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28932,7 +28932,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28973,7 +28973,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29161,7 +29161,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29202,7 +29202,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29288,7 +29288,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29359,7 +29359,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29579,7 +29579,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29714,7 +29714,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29787,7 +29787,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29922,7 +29922,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29995,7 +29995,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30143,7 +30143,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30208,7 +30208,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30342,7 +30342,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30415,7 +30415,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30573,7 +30573,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30649,7 +30649,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30845,7 +30845,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30918,7 +30918,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31054,7 +31054,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31127,7 +31127,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31215,7 +31215,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31285,7 +31285,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31383,7 +31383,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31463,7 +31463,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31583,7 +31583,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31717,7 +31717,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31815,7 +31815,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31913,7 +31913,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31993,7 +31993,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32127,7 +32127,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32219,7 +32219,7 @@ def validate(self): return def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32299,7 +32299,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32379,7 +32379,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32459,7 +32459,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32539,7 +32539,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32619,7 +32619,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32699,7 +32699,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32779,7 +32779,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32859,7 +32859,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32939,7 +32939,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33019,7 +33019,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33099,7 +33099,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33179,7 +33179,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33259,7 +33259,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33339,7 +33339,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33419,7 +33419,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] + L = [f"{key}={value!r}" for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): From c1ece14dd522740f0aab53dc1a5f5a37d70f0fc3 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Sat, 14 Feb 2026 18:27:33 -0800 Subject: [PATCH 02/29] style: fix ruff formatting in residual_evaluator lambda Co-Authored-By: Claude Opus 4.6 --- pyiceberg/table/__init__.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/pyiceberg/table/__init__.py b/pyiceberg/table/__init__.py index 63fd1509e4..164eba5d32 100644 --- a/pyiceberg/table/__init__.py +++ b/pyiceberg/table/__init__.py @@ -2002,13 +2002,11 @@ def _build_residual_evaluator(self, spec_id: int) -> Callable[[DataFile], Residu # The lambda created here is run in multiple threads. # So we avoid creating _EvaluatorExpression methods bound to a single # shared instance across multiple threads. - return lambda datafile: ( - residual_evaluator_of( - spec=spec, - expr=self.row_filter, - case_sensitive=self.case_sensitive, - schema=self.table_metadata.schema(), - ) + return lambda datafile: residual_evaluator_of( + spec=spec, + expr=self.row_filter, + case_sensitive=self.case_sensitive, + schema=self.table_metadata.schema(), ) @staticmethod From 70af67f0a56cdfda2f628533e83bf832685e706f Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Sat, 14 Feb 2026 18:28:46 -0800 Subject: [PATCH 03/29] chore: remove unintended vendor directory changes Co-Authored-By: Claude Opus 4.6 --- vendor/fb303/FacebookService.py | 61 +- vendor/hive_metastore/ThriftHiveMetastore.py | 1337 +++++++++++------- vendor/hive_metastore/ttypes.py | 626 ++++---- 3 files changed, 1147 insertions(+), 877 deletions(-) diff --git a/vendor/fb303/FacebookService.py b/vendor/fb303/FacebookService.py index 7115e8a0d8..c46b0a82a2 100644 --- a/vendor/fb303/FacebookService.py +++ b/vendor/fb303/FacebookService.py @@ -50,18 +50,21 @@ def getName(self): Returns a descriptive name of the service """ + pass def getVersion(self): """ Returns the version of the service """ + pass def getStatus(self): """ Gets the status of this service """ + pass def getStatusDetails(self): """ @@ -69,12 +72,14 @@ def getStatusDetails(self): the dead or warning state, or what is being started or stopped. """ + pass def getCounters(self): """ Gets the counters for this service """ + pass def getCounter(self, key): """ @@ -84,6 +89,7 @@ def getCounter(self, key): - key """ + pass def setOption(self, key, value): """ @@ -94,6 +100,7 @@ def setOption(self, key, value): - value """ + pass def getOption(self, key): """ @@ -103,12 +110,14 @@ def getOption(self, key): - key """ + pass def getOptions(self): """ Gets all options """ + pass def getCpuProfile(self, profileDurationInSec): """ @@ -119,24 +128,28 @@ def getCpuProfile(self, profileDurationInSec): - profileDurationInSec """ + pass def aliveSince(self): """ Returns the unix time that the server has been running since """ + pass def reinitialize(self): """ Tell the server to reload its configuration, reopen log files, etc """ + pass def shutdown(self): """ Suggest a shutdown to the server """ + pass class Client(Iface): @@ -877,7 +890,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -945,7 +958,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -998,7 +1011,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1066,7 +1079,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1119,7 +1132,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1185,7 +1198,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1238,7 +1251,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1306,7 +1319,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1359,7 +1372,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1439,7 +1452,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1515,7 +1528,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1590,7 +1603,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1680,7 +1693,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1741,7 +1754,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1809,7 +1822,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1886,7 +1899,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1939,7 +1952,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2023,7 +2036,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2097,7 +2110,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2174,7 +2187,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2227,7 +2240,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2293,7 +2306,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2346,7 +2359,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2391,7 +2404,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): diff --git a/vendor/hive_metastore/ThriftHiveMetastore.py b/vendor/hive_metastore/ThriftHiveMetastore.py index 92ba9eaeae..4d25c087c7 100644 --- a/vendor/hive_metastore/ThriftHiveMetastore.py +++ b/vendor/hive_metastore/ThriftHiveMetastore.py @@ -52,6 +52,7 @@ def getMetaConf(self, key): - key """ + pass def setMetaConf(self, key, value): """ @@ -60,6 +61,7 @@ def setMetaConf(self, key, value): - value """ + pass def create_catalog(self, catalog): """ @@ -67,6 +69,7 @@ def create_catalog(self, catalog): - catalog """ + pass def alter_catalog(self, rqst): """ @@ -74,6 +77,7 @@ def alter_catalog(self, rqst): - rqst """ + pass def get_catalog(self, catName): """ @@ -81,6 +85,7 @@ def get_catalog(self, catName): - catName """ + pass def get_catalogs(self): pass @@ -91,6 +96,7 @@ def drop_catalog(self, catName): - catName """ + pass def create_database(self, database): """ @@ -98,6 +104,7 @@ def create_database(self, database): - database """ + pass def get_database(self, name): """ @@ -105,6 +112,7 @@ def get_database(self, name): - name """ + pass def get_database_req(self, request): """ @@ -112,6 +120,7 @@ def get_database_req(self, request): - request """ + pass def drop_database(self, name, deleteData, cascade): """ @@ -121,6 +130,7 @@ def drop_database(self, name, deleteData, cascade): - cascade """ + pass def drop_database_req(self, req): """ @@ -128,6 +138,7 @@ def drop_database_req(self, req): - req """ + pass def get_databases(self, pattern): """ @@ -135,6 +146,7 @@ def get_databases(self, pattern): - pattern """ + pass def get_all_databases(self): pass @@ -146,6 +158,7 @@ def alter_database(self, dbname, db): - db """ + pass def create_dataconnector(self, connector): """ @@ -153,6 +166,7 @@ def create_dataconnector(self, connector): - connector """ + pass def get_dataconnector_req(self, request): """ @@ -160,6 +174,7 @@ def get_dataconnector_req(self, request): - request """ + pass def drop_dataconnector(self, name, ifNotExists, checkReferences): """ @@ -169,6 +184,7 @@ def drop_dataconnector(self, name, ifNotExists, checkReferences): - checkReferences """ + pass def get_dataconnectors(self): pass @@ -180,6 +196,7 @@ def alter_dataconnector(self, name, connector): - connector """ + pass def get_type(self, name): """ @@ -187,6 +204,7 @@ def get_type(self, name): - name """ + pass def create_type(self, type): """ @@ -194,6 +212,7 @@ def create_type(self, type): - type """ + pass def drop_type(self, type): """ @@ -201,6 +220,7 @@ def drop_type(self, type): - type """ + pass def get_type_all(self, name): """ @@ -208,6 +228,7 @@ def get_type_all(self, name): - name """ + pass def get_fields(self, db_name, table_name): """ @@ -216,6 +237,7 @@ def get_fields(self, db_name, table_name): - table_name """ + pass def get_fields_with_environment_context(self, db_name, table_name, environment_context): """ @@ -225,6 +247,7 @@ def get_fields_with_environment_context(self, db_name, table_name, environment_c - environment_context """ + pass def get_fields_req(self, req): """ @@ -232,6 +255,7 @@ def get_fields_req(self, req): - req """ + pass def get_schema(self, db_name, table_name): """ @@ -240,6 +264,7 @@ def get_schema(self, db_name, table_name): - table_name """ + pass def get_schema_with_environment_context(self, db_name, table_name, environment_context): """ @@ -249,6 +274,7 @@ def get_schema_with_environment_context(self, db_name, table_name, environment_c - environment_context """ + pass def get_schema_req(self, req): """ @@ -256,6 +282,7 @@ def get_schema_req(self, req): - req """ + pass def create_table(self, tbl): """ @@ -263,6 +290,7 @@ def create_table(self, tbl): - tbl """ + pass def create_table_with_environment_context(self, tbl, environment_context): """ @@ -271,6 +299,7 @@ def create_table_with_environment_context(self, tbl, environment_context): - environment_context """ + pass def create_table_with_constraints( self, tbl, primaryKeys, foreignKeys, uniqueConstraints, notNullConstraints, defaultConstraints, checkConstraints @@ -286,6 +315,7 @@ def create_table_with_constraints( - checkConstraints """ + pass def create_table_req(self, request): """ @@ -293,6 +323,7 @@ def create_table_req(self, request): - request """ + pass def drop_constraint(self, req): """ @@ -300,6 +331,7 @@ def drop_constraint(self, req): - req """ + pass def add_primary_key(self, req): """ @@ -307,6 +339,7 @@ def add_primary_key(self, req): - req """ + pass def add_foreign_key(self, req): """ @@ -314,6 +347,7 @@ def add_foreign_key(self, req): - req """ + pass def add_unique_constraint(self, req): """ @@ -321,6 +355,7 @@ def add_unique_constraint(self, req): - req """ + pass def add_not_null_constraint(self, req): """ @@ -328,6 +363,7 @@ def add_not_null_constraint(self, req): - req """ + pass def add_default_constraint(self, req): """ @@ -335,6 +371,7 @@ def add_default_constraint(self, req): - req """ + pass def add_check_constraint(self, req): """ @@ -342,6 +379,7 @@ def add_check_constraint(self, req): - req """ + pass def translate_table_dryrun(self, request): """ @@ -349,6 +387,7 @@ def translate_table_dryrun(self, request): - request """ + pass def drop_table(self, dbname, name, deleteData): """ @@ -358,6 +397,7 @@ def drop_table(self, dbname, name, deleteData): - deleteData """ + pass def drop_table_with_environment_context(self, dbname, name, deleteData, environment_context): """ @@ -368,6 +408,7 @@ def drop_table_with_environment_context(self, dbname, name, deleteData, environm - environment_context """ + pass def truncate_table(self, dbName, tableName, partNames): """ @@ -377,6 +418,7 @@ def truncate_table(self, dbName, tableName, partNames): - partNames """ + pass def truncate_table_req(self, req): """ @@ -384,6 +426,7 @@ def truncate_table_req(self, req): - req """ + pass def get_tables(self, db_name, pattern): """ @@ -392,6 +435,7 @@ def get_tables(self, db_name, pattern): - pattern """ + pass def get_tables_by_type(self, db_name, pattern, tableType): """ @@ -401,6 +445,7 @@ def get_tables_by_type(self, db_name, pattern, tableType): - tableType """ + pass def get_all_materialized_view_objects_for_rewriting(self): pass @@ -411,6 +456,7 @@ def get_materialized_views_for_rewriting(self, db_name): - db_name """ + pass def get_table_meta(self, db_patterns, tbl_patterns, tbl_types): """ @@ -420,6 +466,7 @@ def get_table_meta(self, db_patterns, tbl_patterns, tbl_types): - tbl_types """ + pass def get_all_tables(self, db_name): """ @@ -427,6 +474,7 @@ def get_all_tables(self, db_name): - db_name """ + pass def get_table(self, dbname, tbl_name): """ @@ -435,6 +483,7 @@ def get_table(self, dbname, tbl_name): - tbl_name """ + pass def get_table_objects_by_name(self, dbname, tbl_names): """ @@ -443,6 +492,7 @@ def get_table_objects_by_name(self, dbname, tbl_names): - tbl_names """ + pass def get_tables_ext(self, req): """ @@ -450,6 +500,7 @@ def get_tables_ext(self, req): - req """ + pass def get_table_req(self, req): """ @@ -457,6 +508,7 @@ def get_table_req(self, req): - req """ + pass def get_table_objects_by_name_req(self, req): """ @@ -464,6 +516,7 @@ def get_table_objects_by_name_req(self, req): - req """ + pass def get_materialization_invalidation_info(self, creation_metadata, validTxnList): """ @@ -472,6 +525,7 @@ def get_materialization_invalidation_info(self, creation_metadata, validTxnList) - validTxnList """ + pass def update_creation_metadata(self, catName, dbname, tbl_name, creation_metadata): """ @@ -482,6 +536,7 @@ def update_creation_metadata(self, catName, dbname, tbl_name, creation_metadata) - creation_metadata """ + pass def get_table_names_by_filter(self, dbname, filter, max_tables): """ @@ -491,6 +546,7 @@ def get_table_names_by_filter(self, dbname, filter, max_tables): - max_tables """ + pass def alter_table(self, dbname, tbl_name, new_tbl): """ @@ -500,6 +556,7 @@ def alter_table(self, dbname, tbl_name, new_tbl): - new_tbl """ + pass def alter_table_with_environment_context(self, dbname, tbl_name, new_tbl, environment_context): """ @@ -510,6 +567,7 @@ def alter_table_with_environment_context(self, dbname, tbl_name, new_tbl, enviro - environment_context """ + pass def alter_table_with_cascade(self, dbname, tbl_name, new_tbl, cascade): """ @@ -520,6 +578,7 @@ def alter_table_with_cascade(self, dbname, tbl_name, new_tbl, cascade): - cascade """ + pass def alter_table_req(self, req): """ @@ -527,6 +586,7 @@ def alter_table_req(self, req): - req """ + pass def add_partition(self, new_part): """ @@ -534,6 +594,7 @@ def add_partition(self, new_part): - new_part """ + pass def add_partition_with_environment_context(self, new_part, environment_context): """ @@ -542,6 +603,7 @@ def add_partition_with_environment_context(self, new_part, environment_context): - environment_context """ + pass def add_partitions(self, new_parts): """ @@ -549,6 +611,7 @@ def add_partitions(self, new_parts): - new_parts """ + pass def add_partitions_pspec(self, new_parts): """ @@ -556,6 +619,7 @@ def add_partitions_pspec(self, new_parts): - new_parts """ + pass def append_partition(self, db_name, tbl_name, part_vals): """ @@ -565,6 +629,7 @@ def append_partition(self, db_name, tbl_name, part_vals): - part_vals """ + pass def add_partitions_req(self, request): """ @@ -572,6 +637,7 @@ def add_partitions_req(self, request): - request """ + pass def append_partition_with_environment_context(self, db_name, tbl_name, part_vals, environment_context): """ @@ -582,6 +648,7 @@ def append_partition_with_environment_context(self, db_name, tbl_name, part_vals - environment_context """ + pass def append_partition_by_name(self, db_name, tbl_name, part_name): """ @@ -591,6 +658,7 @@ def append_partition_by_name(self, db_name, tbl_name, part_name): - part_name """ + pass def append_partition_by_name_with_environment_context(self, db_name, tbl_name, part_name, environment_context): """ @@ -601,6 +669,7 @@ def append_partition_by_name_with_environment_context(self, db_name, tbl_name, p - environment_context """ + pass def drop_partition(self, db_name, tbl_name, part_vals, deleteData): """ @@ -611,6 +680,7 @@ def drop_partition(self, db_name, tbl_name, part_vals, deleteData): - deleteData """ + pass def drop_partition_with_environment_context(self, db_name, tbl_name, part_vals, deleteData, environment_context): """ @@ -622,6 +692,7 @@ def drop_partition_with_environment_context(self, db_name, tbl_name, part_vals, - environment_context """ + pass def drop_partition_by_name(self, db_name, tbl_name, part_name, deleteData): """ @@ -632,6 +703,7 @@ def drop_partition_by_name(self, db_name, tbl_name, part_name, deleteData): - deleteData """ + pass def drop_partition_by_name_with_environment_context(self, db_name, tbl_name, part_name, deleteData, environment_context): """ @@ -643,6 +715,7 @@ def drop_partition_by_name_with_environment_context(self, db_name, tbl_name, par - environment_context """ + pass def drop_partitions_req(self, req): """ @@ -650,6 +723,7 @@ def drop_partitions_req(self, req): - req """ + pass def get_partition(self, db_name, tbl_name, part_vals): """ @@ -659,6 +733,7 @@ def get_partition(self, db_name, tbl_name, part_vals): - part_vals """ + pass def get_partition_req(self, req): """ @@ -666,6 +741,7 @@ def get_partition_req(self, req): - req """ + pass def exchange_partition(self, partitionSpecs, source_db, source_table_name, dest_db, dest_table_name): """ @@ -677,6 +753,7 @@ def exchange_partition(self, partitionSpecs, source_db, source_table_name, dest_ - dest_table_name """ + pass def exchange_partitions(self, partitionSpecs, source_db, source_table_name, dest_db, dest_table_name): """ @@ -688,6 +765,7 @@ def exchange_partitions(self, partitionSpecs, source_db, source_table_name, dest - dest_table_name """ + pass def get_partition_with_auth(self, db_name, tbl_name, part_vals, user_name, group_names): """ @@ -699,6 +777,7 @@ def get_partition_with_auth(self, db_name, tbl_name, part_vals, user_name, group - group_names """ + pass def get_partition_by_name(self, db_name, tbl_name, part_name): """ @@ -708,6 +787,7 @@ def get_partition_by_name(self, db_name, tbl_name, part_name): - part_name """ + pass def get_partitions(self, db_name, tbl_name, max_parts): """ @@ -717,6 +797,7 @@ def get_partitions(self, db_name, tbl_name, max_parts): - max_parts """ + pass def get_partitions_req(self, req): """ @@ -724,6 +805,7 @@ def get_partitions_req(self, req): - req """ + pass def get_partitions_with_auth(self, db_name, tbl_name, max_parts, user_name, group_names): """ @@ -735,6 +817,7 @@ def get_partitions_with_auth(self, db_name, tbl_name, max_parts, user_name, grou - group_names """ + pass def get_partitions_pspec(self, db_name, tbl_name, max_parts): """ @@ -744,6 +827,7 @@ def get_partitions_pspec(self, db_name, tbl_name, max_parts): - max_parts """ + pass def get_partition_names(self, db_name, tbl_name, max_parts): """ @@ -753,6 +837,7 @@ def get_partition_names(self, db_name, tbl_name, max_parts): - max_parts """ + pass def get_partition_values(self, request): """ @@ -760,6 +845,7 @@ def get_partition_values(self, request): - request """ + pass def get_partitions_ps(self, db_name, tbl_name, part_vals, max_parts): """ @@ -770,6 +856,7 @@ def get_partitions_ps(self, db_name, tbl_name, part_vals, max_parts): - max_parts """ + pass def get_partitions_ps_with_auth(self, db_name, tbl_name, part_vals, max_parts, user_name, group_names): """ @@ -782,6 +869,7 @@ def get_partitions_ps_with_auth(self, db_name, tbl_name, part_vals, max_parts, u - group_names """ + pass def get_partitions_ps_with_auth_req(self, req): """ @@ -789,6 +877,7 @@ def get_partitions_ps_with_auth_req(self, req): - req """ + pass def get_partition_names_ps(self, db_name, tbl_name, part_vals, max_parts): """ @@ -799,6 +888,7 @@ def get_partition_names_ps(self, db_name, tbl_name, part_vals, max_parts): - max_parts """ + pass def get_partition_names_ps_req(self, req): """ @@ -806,6 +896,7 @@ def get_partition_names_ps_req(self, req): - req """ + pass def get_partition_names_req(self, req): """ @@ -813,6 +904,7 @@ def get_partition_names_req(self, req): - req """ + pass def get_partitions_by_filter(self, db_name, tbl_name, filter, max_parts): """ @@ -823,6 +915,7 @@ def get_partitions_by_filter(self, db_name, tbl_name, filter, max_parts): - max_parts """ + pass def get_part_specs_by_filter(self, db_name, tbl_name, filter, max_parts): """ @@ -833,6 +926,7 @@ def get_part_specs_by_filter(self, db_name, tbl_name, filter, max_parts): - max_parts """ + pass def get_partitions_by_expr(self, req): """ @@ -840,6 +934,7 @@ def get_partitions_by_expr(self, req): - req """ + pass def get_partitions_spec_by_expr(self, req): """ @@ -847,6 +942,7 @@ def get_partitions_spec_by_expr(self, req): - req """ + pass def get_num_partitions_by_filter(self, db_name, tbl_name, filter): """ @@ -856,6 +952,7 @@ def get_num_partitions_by_filter(self, db_name, tbl_name, filter): - filter """ + pass def get_partitions_by_names(self, db_name, tbl_name, names): """ @@ -865,6 +962,7 @@ def get_partitions_by_names(self, db_name, tbl_name, names): - names """ + pass def get_partitions_by_names_req(self, req): """ @@ -872,6 +970,7 @@ def get_partitions_by_names_req(self, req): - req """ + pass def alter_partition(self, db_name, tbl_name, new_part): """ @@ -881,6 +980,7 @@ def alter_partition(self, db_name, tbl_name, new_part): - new_part """ + pass def alter_partitions(self, db_name, tbl_name, new_parts): """ @@ -890,6 +990,7 @@ def alter_partitions(self, db_name, tbl_name, new_parts): - new_parts """ + pass def alter_partitions_with_environment_context(self, db_name, tbl_name, new_parts, environment_context): """ @@ -900,6 +1001,7 @@ def alter_partitions_with_environment_context(self, db_name, tbl_name, new_parts - environment_context """ + pass def alter_partitions_req(self, req): """ @@ -907,6 +1009,7 @@ def alter_partitions_req(self, req): - req """ + pass def alter_partition_with_environment_context(self, db_name, tbl_name, new_part, environment_context): """ @@ -917,6 +1020,7 @@ def alter_partition_with_environment_context(self, db_name, tbl_name, new_part, - environment_context """ + pass def rename_partition(self, db_name, tbl_name, part_vals, new_part): """ @@ -927,6 +1031,7 @@ def rename_partition(self, db_name, tbl_name, part_vals, new_part): - new_part """ + pass def rename_partition_req(self, req): """ @@ -934,6 +1039,7 @@ def rename_partition_req(self, req): - req """ + pass def partition_name_has_valid_characters(self, part_vals, throw_exception): """ @@ -942,6 +1048,7 @@ def partition_name_has_valid_characters(self, part_vals, throw_exception): - throw_exception """ + pass def get_config_value(self, name, defaultValue): """ @@ -950,6 +1057,7 @@ def get_config_value(self, name, defaultValue): - defaultValue """ + pass def partition_name_to_vals(self, part_name): """ @@ -957,6 +1065,7 @@ def partition_name_to_vals(self, part_name): - part_name """ + pass def partition_name_to_spec(self, part_name): """ @@ -964,6 +1073,7 @@ def partition_name_to_spec(self, part_name): - part_name """ + pass def markPartitionForEvent(self, db_name, tbl_name, part_vals, eventType): """ @@ -974,6 +1084,7 @@ def markPartitionForEvent(self, db_name, tbl_name, part_vals, eventType): - eventType """ + pass def isPartitionMarkedForEvent(self, db_name, tbl_name, part_vals, eventType): """ @@ -984,6 +1095,7 @@ def isPartitionMarkedForEvent(self, db_name, tbl_name, part_vals, eventType): - eventType """ + pass def get_primary_keys(self, request): """ @@ -991,6 +1103,7 @@ def get_primary_keys(self, request): - request """ + pass def get_foreign_keys(self, request): """ @@ -998,6 +1111,7 @@ def get_foreign_keys(self, request): - request """ + pass def get_unique_constraints(self, request): """ @@ -1005,6 +1119,7 @@ def get_unique_constraints(self, request): - request """ + pass def get_not_null_constraints(self, request): """ @@ -1012,6 +1127,7 @@ def get_not_null_constraints(self, request): - request """ + pass def get_default_constraints(self, request): """ @@ -1019,6 +1135,7 @@ def get_default_constraints(self, request): - request """ + pass def get_check_constraints(self, request): """ @@ -1026,6 +1143,7 @@ def get_check_constraints(self, request): - request """ + pass def get_all_table_constraints(self, request): """ @@ -1033,6 +1151,7 @@ def get_all_table_constraints(self, request): - request """ + pass def update_table_column_statistics(self, stats_obj): """ @@ -1040,6 +1159,7 @@ def update_table_column_statistics(self, stats_obj): - stats_obj """ + pass def update_partition_column_statistics(self, stats_obj): """ @@ -1047,6 +1167,7 @@ def update_partition_column_statistics(self, stats_obj): - stats_obj """ + pass def update_table_column_statistics_req(self, req): """ @@ -1054,6 +1175,7 @@ def update_table_column_statistics_req(self, req): - req """ + pass def update_partition_column_statistics_req(self, req): """ @@ -1061,6 +1183,7 @@ def update_partition_column_statistics_req(self, req): - req """ + pass def update_transaction_statistics(self, req): """ @@ -1068,6 +1191,7 @@ def update_transaction_statistics(self, req): - req """ + pass def get_table_column_statistics(self, db_name, tbl_name, col_name): """ @@ -1077,6 +1201,7 @@ def get_table_column_statistics(self, db_name, tbl_name, col_name): - col_name """ + pass def get_partition_column_statistics(self, db_name, tbl_name, part_name, col_name): """ @@ -1087,6 +1212,7 @@ def get_partition_column_statistics(self, db_name, tbl_name, part_name, col_name - col_name """ + pass def get_table_statistics_req(self, request): """ @@ -1094,6 +1220,7 @@ def get_table_statistics_req(self, request): - request """ + pass def get_partitions_statistics_req(self, request): """ @@ -1101,6 +1228,7 @@ def get_partitions_statistics_req(self, request): - request """ + pass def get_aggr_stats_for(self, request): """ @@ -1108,6 +1236,7 @@ def get_aggr_stats_for(self, request): - request """ + pass def set_aggr_stats_for(self, request): """ @@ -1115,6 +1244,7 @@ def set_aggr_stats_for(self, request): - request """ + pass def delete_partition_column_statistics(self, db_name, tbl_name, part_name, col_name, engine): """ @@ -1126,6 +1256,7 @@ def delete_partition_column_statistics(self, db_name, tbl_name, part_name, col_n - engine """ + pass def delete_table_column_statistics(self, db_name, tbl_name, col_name, engine): """ @@ -1136,6 +1267,7 @@ def delete_table_column_statistics(self, db_name, tbl_name, col_name, engine): - engine """ + pass def create_function(self, func): """ @@ -1143,6 +1275,7 @@ def create_function(self, func): - func """ + pass def drop_function(self, dbName, funcName): """ @@ -1151,6 +1284,7 @@ def drop_function(self, dbName, funcName): - funcName """ + pass def alter_function(self, dbName, funcName, newFunc): """ @@ -1160,6 +1294,7 @@ def alter_function(self, dbName, funcName, newFunc): - newFunc """ + pass def get_functions(self, dbName, pattern): """ @@ -1168,6 +1303,7 @@ def get_functions(self, dbName, pattern): - pattern """ + pass def get_function(self, dbName, funcName): """ @@ -1176,6 +1312,7 @@ def get_function(self, dbName, funcName): - funcName """ + pass def get_all_functions(self): pass @@ -1186,6 +1323,7 @@ def create_role(self, role): - role """ + pass def drop_role(self, role_name): """ @@ -1193,6 +1331,7 @@ def drop_role(self, role_name): - role_name """ + pass def get_role_names(self): pass @@ -1208,6 +1347,7 @@ def grant_role(self, role_name, principal_name, principal_type, grantor, grantor - grant_option """ + pass def revoke_role(self, role_name, principal_name, principal_type): """ @@ -1217,6 +1357,7 @@ def revoke_role(self, role_name, principal_name, principal_type): - principal_type """ + pass def list_roles(self, principal_name, principal_type): """ @@ -1225,6 +1366,7 @@ def list_roles(self, principal_name, principal_type): - principal_type """ + pass def grant_revoke_role(self, request): """ @@ -1232,6 +1374,7 @@ def grant_revoke_role(self, request): - request """ + pass def get_principals_in_role(self, request): """ @@ -1239,6 +1382,7 @@ def get_principals_in_role(self, request): - request """ + pass def get_role_grants_for_principal(self, request): """ @@ -1246,6 +1390,7 @@ def get_role_grants_for_principal(self, request): - request """ + pass def get_privilege_set(self, hiveObject, user_name, group_names): """ @@ -1255,6 +1400,7 @@ def get_privilege_set(self, hiveObject, user_name, group_names): - group_names """ + pass def list_privileges(self, principal_name, principal_type, hiveObject): """ @@ -1264,6 +1410,7 @@ def list_privileges(self, principal_name, principal_type, hiveObject): - hiveObject """ + pass def grant_privileges(self, privileges): """ @@ -1271,6 +1418,7 @@ def grant_privileges(self, privileges): - privileges """ + pass def revoke_privileges(self, privileges): """ @@ -1278,6 +1426,7 @@ def revoke_privileges(self, privileges): - privileges """ + pass def grant_revoke_privileges(self, request): """ @@ -1285,6 +1434,7 @@ def grant_revoke_privileges(self, request): - request """ + pass def refresh_privileges(self, objToRefresh, authorizer, grantRequest): """ @@ -1294,6 +1444,7 @@ def refresh_privileges(self, objToRefresh, authorizer, grantRequest): - grantRequest """ + pass def set_ugi(self, user_name, group_names): """ @@ -1302,6 +1453,7 @@ def set_ugi(self, user_name, group_names): - group_names """ + pass def get_delegation_token(self, token_owner, renewer_kerberos_principal_name): """ @@ -1310,6 +1462,7 @@ def get_delegation_token(self, token_owner, renewer_kerberos_principal_name): - renewer_kerberos_principal_name """ + pass def renew_delegation_token(self, token_str_form): """ @@ -1317,6 +1470,7 @@ def renew_delegation_token(self, token_str_form): - token_str_form """ + pass def cancel_delegation_token(self, token_str_form): """ @@ -1324,6 +1478,7 @@ def cancel_delegation_token(self, token_str_form): - token_str_form """ + pass def add_token(self, token_identifier, delegation_token): """ @@ -1332,6 +1487,7 @@ def add_token(self, token_identifier, delegation_token): - delegation_token """ + pass def remove_token(self, token_identifier): """ @@ -1339,6 +1495,7 @@ def remove_token(self, token_identifier): - token_identifier """ + pass def get_token(self, token_identifier): """ @@ -1346,6 +1503,7 @@ def get_token(self, token_identifier): - token_identifier """ + pass def get_all_token_identifiers(self): pass @@ -1356,6 +1514,7 @@ def add_master_key(self, key): - key """ + pass def update_master_key(self, seq_number, key): """ @@ -1364,6 +1523,7 @@ def update_master_key(self, seq_number, key): - key """ + pass def remove_master_key(self, key_seq): """ @@ -1371,6 +1531,7 @@ def remove_master_key(self, key_seq): - key_seq """ + pass def get_master_keys(self): pass @@ -1387,6 +1548,7 @@ def open_txns(self, rqst): - rqst """ + pass def abort_txn(self, rqst): """ @@ -1394,6 +1556,7 @@ def abort_txn(self, rqst): - rqst """ + pass def abort_txns(self, rqst): """ @@ -1401,6 +1564,7 @@ def abort_txns(self, rqst): - rqst """ + pass def commit_txn(self, rqst): """ @@ -1408,6 +1572,7 @@ def commit_txn(self, rqst): - rqst """ + pass def get_latest_txnid_in_conflict(self, txnId): """ @@ -1415,6 +1580,7 @@ def get_latest_txnid_in_conflict(self, txnId): - txnId """ + pass def repl_tbl_writeid_state(self, rqst): """ @@ -1422,6 +1588,7 @@ def repl_tbl_writeid_state(self, rqst): - rqst """ + pass def get_valid_write_ids(self, rqst): """ @@ -1429,6 +1596,7 @@ def get_valid_write_ids(self, rqst): - rqst """ + pass def allocate_table_write_ids(self, rqst): """ @@ -1436,6 +1604,7 @@ def allocate_table_write_ids(self, rqst): - rqst """ + pass def get_max_allocated_table_write_id(self, rqst): """ @@ -1443,6 +1612,7 @@ def get_max_allocated_table_write_id(self, rqst): - rqst """ + pass def seed_write_id(self, rqst): """ @@ -1450,6 +1620,7 @@ def seed_write_id(self, rqst): - rqst """ + pass def seed_txn_id(self, rqst): """ @@ -1457,6 +1628,7 @@ def seed_txn_id(self, rqst): - rqst """ + pass def lock(self, rqst): """ @@ -1464,6 +1636,7 @@ def lock(self, rqst): - rqst """ + pass def check_lock(self, rqst): """ @@ -1471,6 +1644,7 @@ def check_lock(self, rqst): - rqst """ + pass def unlock(self, rqst): """ @@ -1478,6 +1652,7 @@ def unlock(self, rqst): - rqst """ + pass def show_locks(self, rqst): """ @@ -1485,6 +1660,7 @@ def show_locks(self, rqst): - rqst """ + pass def heartbeat(self, ids): """ @@ -1492,6 +1668,7 @@ def heartbeat(self, ids): - ids """ + pass def heartbeat_txn_range(self, txns): """ @@ -1499,6 +1676,7 @@ def heartbeat_txn_range(self, txns): - txns """ + pass def compact(self, rqst): """ @@ -1506,6 +1684,7 @@ def compact(self, rqst): - rqst """ + pass def compact2(self, rqst): """ @@ -1513,6 +1692,7 @@ def compact2(self, rqst): - rqst """ + pass def show_compact(self, rqst): """ @@ -1520,6 +1700,7 @@ def show_compact(self, rqst): - rqst """ + pass def add_dynamic_partitions(self, rqst): """ @@ -1527,6 +1708,7 @@ def add_dynamic_partitions(self, rqst): - rqst """ + pass def find_next_compact(self, workerId): """ @@ -1534,6 +1716,7 @@ def find_next_compact(self, workerId): - workerId """ + pass def find_next_compact2(self, rqst): """ @@ -1541,6 +1724,7 @@ def find_next_compact2(self, rqst): - rqst """ + pass def update_compactor_state(self, cr, txn_id): """ @@ -1549,6 +1733,7 @@ def update_compactor_state(self, cr, txn_id): - txn_id """ + pass def find_columns_with_stats(self, cr): """ @@ -1556,6 +1741,7 @@ def find_columns_with_stats(self, cr): - cr """ + pass def mark_cleaned(self, cr): """ @@ -1563,6 +1749,7 @@ def mark_cleaned(self, cr): - cr """ + pass def mark_compacted(self, cr): """ @@ -1570,6 +1757,7 @@ def mark_compacted(self, cr): - cr """ + pass def mark_failed(self, cr): """ @@ -1577,6 +1765,7 @@ def mark_failed(self, cr): - cr """ + pass def mark_refused(self, cr): """ @@ -1584,6 +1773,7 @@ def mark_refused(self, cr): - cr """ + pass def update_compaction_metrics_data(self, data): """ @@ -1591,6 +1781,7 @@ def update_compaction_metrics_data(self, data): - data """ + pass def remove_compaction_metrics_data(self, request): """ @@ -1598,6 +1789,7 @@ def remove_compaction_metrics_data(self, request): - request """ + pass def set_hadoop_jobid(self, jobId, cq_id): """ @@ -1606,6 +1798,7 @@ def set_hadoop_jobid(self, jobId, cq_id): - cq_id """ + pass def get_latest_committed_compaction_info(self, rqst): """ @@ -1613,6 +1806,7 @@ def get_latest_committed_compaction_info(self, rqst): - rqst """ + pass def get_next_notification(self, rqst): """ @@ -1620,6 +1814,7 @@ def get_next_notification(self, rqst): - rqst """ + pass def get_current_notificationEventId(self): pass @@ -1630,6 +1825,7 @@ def get_notification_events_count(self, rqst): - rqst """ + pass def fire_listener_event(self, rqst): """ @@ -1637,6 +1833,7 @@ def fire_listener_event(self, rqst): - rqst """ + pass def flushCache(self): pass @@ -1647,6 +1844,7 @@ def add_write_notification_log(self, rqst): - rqst """ + pass def add_write_notification_log_in_batch(self, rqst): """ @@ -1654,6 +1852,7 @@ def add_write_notification_log_in_batch(self, rqst): - rqst """ + pass def cm_recycle(self, request): """ @@ -1661,6 +1860,7 @@ def cm_recycle(self, request): - request """ + pass def get_file_metadata_by_expr(self, req): """ @@ -1668,6 +1868,7 @@ def get_file_metadata_by_expr(self, req): - req """ + pass def get_file_metadata(self, req): """ @@ -1675,6 +1876,7 @@ def get_file_metadata(self, req): - req """ + pass def put_file_metadata(self, req): """ @@ -1682,6 +1884,7 @@ def put_file_metadata(self, req): - req """ + pass def clear_file_metadata(self, req): """ @@ -1689,6 +1892,7 @@ def clear_file_metadata(self, req): - req """ + pass def cache_file_metadata(self, req): """ @@ -1696,6 +1900,7 @@ def cache_file_metadata(self, req): - req """ + pass def get_metastore_db_uuid(self): pass @@ -1706,6 +1911,7 @@ def create_resource_plan(self, request): - request """ + pass def get_resource_plan(self, request): """ @@ -1713,6 +1919,7 @@ def get_resource_plan(self, request): - request """ + pass def get_active_resource_plan(self, request): """ @@ -1720,6 +1927,7 @@ def get_active_resource_plan(self, request): - request """ + pass def get_all_resource_plans(self, request): """ @@ -1727,6 +1935,7 @@ def get_all_resource_plans(self, request): - request """ + pass def alter_resource_plan(self, request): """ @@ -1734,6 +1943,7 @@ def alter_resource_plan(self, request): - request """ + pass def validate_resource_plan(self, request): """ @@ -1741,6 +1951,7 @@ def validate_resource_plan(self, request): - request """ + pass def drop_resource_plan(self, request): """ @@ -1748,6 +1959,7 @@ def drop_resource_plan(self, request): - request """ + pass def create_wm_trigger(self, request): """ @@ -1755,6 +1967,7 @@ def create_wm_trigger(self, request): - request """ + pass def alter_wm_trigger(self, request): """ @@ -1762,6 +1975,7 @@ def alter_wm_trigger(self, request): - request """ + pass def drop_wm_trigger(self, request): """ @@ -1769,6 +1983,7 @@ def drop_wm_trigger(self, request): - request """ + pass def get_triggers_for_resourceplan(self, request): """ @@ -1776,6 +1991,7 @@ def get_triggers_for_resourceplan(self, request): - request """ + pass def create_wm_pool(self, request): """ @@ -1783,6 +1999,7 @@ def create_wm_pool(self, request): - request """ + pass def alter_wm_pool(self, request): """ @@ -1790,6 +2007,7 @@ def alter_wm_pool(self, request): - request """ + pass def drop_wm_pool(self, request): """ @@ -1797,6 +2015,7 @@ def drop_wm_pool(self, request): - request """ + pass def create_or_update_wm_mapping(self, request): """ @@ -1804,6 +2023,7 @@ def create_or_update_wm_mapping(self, request): - request """ + pass def drop_wm_mapping(self, request): """ @@ -1811,6 +2031,7 @@ def drop_wm_mapping(self, request): - request """ + pass def create_or_drop_wm_trigger_to_pool_mapping(self, request): """ @@ -1818,6 +2039,7 @@ def create_or_drop_wm_trigger_to_pool_mapping(self, request): - request """ + pass def create_ischema(self, schema): """ @@ -1825,6 +2047,7 @@ def create_ischema(self, schema): - schema """ + pass def alter_ischema(self, rqst): """ @@ -1832,6 +2055,7 @@ def alter_ischema(self, rqst): - rqst """ + pass def get_ischema(self, name): """ @@ -1839,6 +2063,7 @@ def get_ischema(self, name): - name """ + pass def drop_ischema(self, name): """ @@ -1846,6 +2071,7 @@ def drop_ischema(self, name): - name """ + pass def add_schema_version(self, schemaVersion): """ @@ -1853,6 +2079,7 @@ def add_schema_version(self, schemaVersion): - schemaVersion """ + pass def get_schema_version(self, schemaVersion): """ @@ -1860,6 +2087,7 @@ def get_schema_version(self, schemaVersion): - schemaVersion """ + pass def get_schema_latest_version(self, schemaName): """ @@ -1867,6 +2095,7 @@ def get_schema_latest_version(self, schemaName): - schemaName """ + pass def get_schema_all_versions(self, schemaName): """ @@ -1874,6 +2103,7 @@ def get_schema_all_versions(self, schemaName): - schemaName """ + pass def drop_schema_version(self, schemaVersion): """ @@ -1881,6 +2111,7 @@ def drop_schema_version(self, schemaVersion): - schemaVersion """ + pass def get_schemas_by_cols(self, rqst): """ @@ -1888,6 +2119,7 @@ def get_schemas_by_cols(self, rqst): - rqst """ + pass def map_schema_version_to_serde(self, rqst): """ @@ -1895,6 +2127,7 @@ def map_schema_version_to_serde(self, rqst): - rqst """ + pass def set_schema_version_state(self, rqst): """ @@ -1902,6 +2135,7 @@ def set_schema_version_state(self, rqst): - rqst """ + pass def add_serde(self, serde): """ @@ -1909,6 +2143,7 @@ def add_serde(self, serde): - serde """ + pass def get_serde(self, rqst): """ @@ -1916,6 +2151,7 @@ def get_serde(self, rqst): - rqst """ + pass def get_lock_materialization_rebuild(self, dbName, tableName, txnId): """ @@ -1925,6 +2161,7 @@ def get_lock_materialization_rebuild(self, dbName, tableName, txnId): - txnId """ + pass def heartbeat_lock_materialization_rebuild(self, dbName, tableName, txnId): """ @@ -1934,6 +2171,7 @@ def heartbeat_lock_materialization_rebuild(self, dbName, tableName, txnId): - txnId """ + pass def add_runtime_stats(self, stat): """ @@ -1941,6 +2179,7 @@ def add_runtime_stats(self, stat): - stat """ + pass def get_runtime_stats(self, rqst): """ @@ -1948,6 +2187,7 @@ def get_runtime_stats(self, rqst): - rqst """ + pass def get_partitions_with_specs(self, request): """ @@ -1955,6 +2195,7 @@ def get_partitions_with_specs(self, request): - request """ + pass def scheduled_query_poll(self, request): """ @@ -1962,6 +2203,7 @@ def scheduled_query_poll(self, request): - request """ + pass def scheduled_query_maintenance(self, request): """ @@ -1969,6 +2211,7 @@ def scheduled_query_maintenance(self, request): - request """ + pass def scheduled_query_progress(self, info): """ @@ -1976,6 +2219,7 @@ def scheduled_query_progress(self, info): - info """ + pass def get_scheduled_query(self, scheduleKey): """ @@ -1983,6 +2227,7 @@ def get_scheduled_query(self, scheduleKey): - scheduleKey """ + pass def add_replication_metrics(self, replicationMetricList): """ @@ -1990,6 +2235,7 @@ def add_replication_metrics(self, replicationMetricList): - replicationMetricList """ + pass def get_replication_metrics(self, rqst): """ @@ -1997,6 +2243,7 @@ def get_replication_metrics(self, rqst): - rqst """ + pass def get_open_txns_req(self, getOpenTxnsRequest): """ @@ -2004,6 +2251,7 @@ def get_open_txns_req(self, getOpenTxnsRequest): - getOpenTxnsRequest """ + pass def create_stored_procedure(self, proc): """ @@ -2011,6 +2259,7 @@ def create_stored_procedure(self, proc): - proc """ + pass def get_stored_procedure(self, request): """ @@ -2018,6 +2267,7 @@ def get_stored_procedure(self, request): - request """ + pass def drop_stored_procedure(self, request): """ @@ -2025,6 +2275,7 @@ def drop_stored_procedure(self, request): - request """ + pass def get_all_stored_procedures(self, request): """ @@ -2032,6 +2283,7 @@ def get_all_stored_procedures(self, request): - request """ + pass def find_package(self, request): """ @@ -2039,6 +2291,7 @@ def find_package(self, request): - request """ + pass def add_package(self, request): """ @@ -2046,6 +2299,7 @@ def add_package(self, request): - request """ + pass def get_all_packages(self, request): """ @@ -2053,6 +2307,7 @@ def get_all_packages(self, request): - request """ + pass def drop_package(self, request): """ @@ -2060,6 +2315,7 @@ def drop_package(self, request): - request """ + pass def get_all_write_event_info(self, request): """ @@ -2067,6 +2323,7 @@ def get_all_write_event_info(self, request): - request """ + pass class Client(fb303.FacebookService.Client, Iface): @@ -19984,7 +20241,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20073,7 +20330,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20170,7 +20427,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20252,7 +20509,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20328,7 +20585,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20427,7 +20684,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20517,7 +20774,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20616,7 +20873,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20706,7 +20963,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20806,7 +21063,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20873,7 +21130,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20952,7 +21209,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21034,7 +21291,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21133,7 +21390,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21223,7 +21480,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21322,7 +21579,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21413,7 +21670,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21513,7 +21770,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21602,7 +21859,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21702,7 +21959,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21816,7 +22073,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21929,7 +22186,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22019,7 +22276,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22118,7 +22375,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22209,7 +22466,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22308,7 +22565,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22368,7 +22625,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22458,7 +22715,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22554,7 +22811,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22648,7 +22905,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22731,7 +22988,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22830,7 +23087,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22920,7 +23177,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23020,7 +23277,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23134,7 +23391,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23224,7 +23481,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23292,7 +23549,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23382,7 +23639,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23478,7 +23735,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23572,7 +23829,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23656,7 +23913,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23756,7 +24013,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23845,7 +24102,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23956,7 +24213,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24053,7 +24310,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24152,7 +24409,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24242,7 +24499,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24344,7 +24601,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24441,7 +24698,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24568,7 +24825,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24692,7 +24949,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24826,7 +25083,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24922,7 +25179,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25034,7 +25291,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25145,7 +25402,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25272,7 +25529,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25396,7 +25653,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25530,7 +25787,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25626,7 +25883,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25738,7 +25995,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25834,7 +26091,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25945,7 +26202,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26055,7 +26312,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26173,7 +26430,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26396,7 +26653,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26549,7 +26806,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26646,7 +26903,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26757,7 +27014,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26854,7 +27111,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26941,7 +27198,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27024,7 +27281,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27111,7 +27368,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27194,7 +27451,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27281,7 +27538,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27364,7 +27621,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27451,7 +27708,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27534,7 +27791,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27621,7 +27878,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27704,7 +27961,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27791,7 +28048,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27874,7 +28131,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27961,7 +28218,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28044,7 +28301,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28168,7 +28425,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28298,7 +28555,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28399,7 +28656,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28522,7 +28779,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28630,7 +28887,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28752,7 +29009,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28841,7 +29098,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28917,7 +29174,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29005,7 +29262,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29102,7 +29359,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29208,7 +29465,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29319,7 +29576,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29432,7 +29689,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29492,7 +29749,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29579,7 +29836,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29662,7 +29919,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29761,7 +30018,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29882,7 +30139,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29992,7 +30249,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30075,7 +30332,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30174,7 +30431,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30271,7 +30528,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30378,7 +30635,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30492,7 +30749,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30583,7 +30840,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30658,7 +30915,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30754,7 +31011,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30836,7 +31093,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30936,7 +31193,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31025,7 +31282,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31137,7 +31394,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31247,7 +31504,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31366,7 +31623,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31504,7 +31761,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31624,7 +31881,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31741,7 +31998,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31878,7 +32135,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32002,7 +32259,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32103,7 +32360,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32227,7 +32484,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32335,7 +32592,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32458,7 +32715,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32566,7 +32823,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32649,7 +32906,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32749,7 +33006,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32838,7 +33095,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32950,7 +33207,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33059,7 +33316,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33178,7 +33435,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33282,7 +33539,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33393,7 +33650,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33497,7 +33754,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33608,7 +33865,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33743,7 +34000,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33869,7 +34126,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33965,7 +34222,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34077,7 +34334,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34225,7 +34482,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34358,7 +34615,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34483,7 +34740,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34609,7 +34866,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34747,7 +35004,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -34880,7 +35137,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35027,7 +35284,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35147,7 +35404,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35300,7 +35557,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35427,7 +35684,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35557,7 +35814,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35677,7 +35934,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35820,7 +36077,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -35947,7 +36204,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36036,7 +36293,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36136,7 +36393,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36264,7 +36521,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36378,7 +36635,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36467,7 +36724,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36567,7 +36824,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36729,7 +36986,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -36881,7 +37138,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37057,7 +37314,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37217,7 +37474,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37397,7 +37654,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37525,7 +37782,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37643,7 +37900,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37757,7 +38014,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37873,7 +38130,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -37995,7 +38252,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38084,7 +38341,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38184,7 +38441,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38338,7 +38595,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38474,7 +38731,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38590,7 +38847,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38712,7 +38969,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38828,7 +39085,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -38953,7 +39210,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39042,7 +39299,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39142,7 +39399,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39282,7 +39539,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39411,7 +39668,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39589,7 +39846,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39732,7 +39989,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39821,7 +40078,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -39921,7 +40178,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40061,7 +40318,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40193,7 +40450,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40282,7 +40539,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40382,7 +40639,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40471,7 +40728,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40582,7 +40839,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40712,7 +40969,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40841,7 +41098,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -40971,7 +41228,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41100,7 +41357,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41189,7 +41446,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41289,7 +41546,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41378,7 +41635,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41478,7 +41735,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41596,7 +41853,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41709,7 +41966,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41837,7 +42094,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -41959,7 +42216,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42048,7 +42305,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42148,7 +42405,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42265,7 +42522,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42366,7 +42623,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42485,7 +42742,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42586,7 +42843,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42718,7 +42975,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42826,7 +43083,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -42909,7 +43166,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43009,7 +43266,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43139,7 +43396,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43247,7 +43504,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43382,7 +43639,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43490,7 +43747,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43573,7 +43830,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43673,7 +43930,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43785,7 +44042,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43879,7 +44136,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -43976,7 +44233,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44072,7 +44329,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44155,7 +44412,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44254,7 +44511,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44337,7 +44594,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44442,7 +44699,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44581,7 +44838,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44737,7 +44994,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -44905,7 +45162,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45073,7 +45330,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45190,7 +45447,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45290,7 +45547,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45379,7 +45636,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45479,7 +45736,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45568,7 +45825,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45668,7 +45925,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45757,7 +46014,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45857,7 +46114,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -45946,7 +46203,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46046,7 +46303,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46135,7 +46392,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46235,7 +46492,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46324,7 +46581,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46424,7 +46681,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46513,7 +46770,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46636,7 +46893,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46739,7 +46996,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46862,7 +47119,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -46965,7 +47222,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47089,7 +47346,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47192,7 +47449,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47316,7 +47573,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47419,7 +47676,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47494,7 +47751,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47599,7 +47856,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47737,7 +47994,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -47883,7 +48140,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48028,7 +48285,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48131,7 +48388,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48231,7 +48488,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48320,7 +48577,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48420,7 +48677,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48509,7 +48766,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48609,7 +48866,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48698,7 +48955,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48821,7 +49078,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -48981,7 +49238,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49132,7 +49389,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49278,7 +49535,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49422,7 +49679,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49525,7 +49782,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49636,7 +49893,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49748,7 +50005,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49842,7 +50099,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -49953,7 +50210,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50054,7 +50311,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50152,7 +50409,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50258,7 +50515,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50355,7 +50612,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50462,7 +50719,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50529,7 +50786,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50608,7 +50865,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50690,7 +50947,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50777,7 +51034,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50860,7 +51117,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -50947,7 +51204,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51007,7 +51264,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51097,7 +51354,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51244,7 +51501,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51366,7 +51623,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51475,7 +51732,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51576,7 +51833,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51671,7 +51928,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51774,7 +52031,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51856,7 +52113,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -51944,7 +52201,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52026,7 +52283,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52114,7 +52371,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52196,7 +52453,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52284,7 +52541,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52404,7 +52661,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52506,7 +52763,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52614,7 +52871,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52724,7 +52981,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52806,7 +53063,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52893,7 +53150,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -52975,7 +53232,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53062,7 +53319,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53144,7 +53401,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53232,7 +53489,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53341,7 +53598,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53443,7 +53700,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53550,7 +53807,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53656,7 +53913,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53757,7 +54014,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53853,7 +54110,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -53936,7 +54193,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54023,7 +54280,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54106,7 +54363,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54181,7 +54438,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54272,7 +54529,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54354,7 +54611,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54430,7 +54687,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54505,7 +54762,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54581,7 +54838,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54658,7 +54915,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54711,7 +54968,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54789,7 +55046,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54865,7 +55122,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -54952,7 +55209,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55047,7 +55304,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55141,7 +55398,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55223,7 +55480,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55298,7 +55555,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55351,7 +55608,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55429,7 +55686,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55482,7 +55739,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55549,7 +55806,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55602,7 +55859,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55669,7 +55926,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55744,7 +56001,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55820,7 +56077,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55895,7 +56152,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -55970,7 +56227,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56046,7 +56303,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56121,7 +56378,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56197,7 +56454,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56284,7 +56541,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56366,7 +56623,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56453,7 +56710,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56535,7 +56792,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56589,7 +56846,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56656,7 +56913,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56756,7 +57013,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56845,7 +57102,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -56957,7 +57214,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57053,7 +57310,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57141,7 +57398,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57223,7 +57480,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57298,7 +57555,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57374,7 +57631,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57449,7 +57706,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57525,7 +57782,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57625,7 +57882,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57714,7 +57971,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57826,7 +58083,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -57922,7 +58179,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58009,7 +58266,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58092,7 +58349,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58168,7 +58425,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58243,7 +58500,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58342,7 +58599,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58432,7 +58689,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58508,7 +58765,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58583,7 +58840,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58637,7 +58894,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58704,7 +58961,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58780,7 +59037,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58855,7 +59112,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -58931,7 +59188,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59006,7 +59263,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59093,7 +59350,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59177,7 +59434,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59265,7 +59522,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59347,7 +59604,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59435,7 +59692,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59529,7 +59786,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59590,7 +59847,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59657,7 +59914,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59744,7 +60001,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59819,7 +60076,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59894,7 +60151,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -59970,7 +60227,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60045,7 +60302,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60121,7 +60378,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60196,7 +60453,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60272,7 +60529,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60347,7 +60604,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60423,7 +60680,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60510,7 +60767,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60592,7 +60849,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60667,7 +60924,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60756,7 +61013,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60817,7 +61074,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60884,7 +61141,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -60960,7 +61217,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61035,7 +61292,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61111,7 +61368,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61164,7 +61421,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61231,7 +61488,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61306,7 +61563,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61382,7 +61639,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61457,7 +61714,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61533,7 +61790,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61586,7 +61843,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61631,7 +61888,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61698,7 +61955,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61774,7 +62031,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61849,7 +62106,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -61925,7 +62182,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62000,7 +62257,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62088,7 +62345,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62170,7 +62427,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62246,7 +62503,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62321,7 +62578,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62397,7 +62654,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62472,7 +62729,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62548,7 +62805,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62623,7 +62880,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62699,7 +62956,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62774,7 +63031,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62850,7 +63107,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62903,7 +63160,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -62983,7 +63240,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63065,7 +63322,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63177,7 +63434,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63273,7 +63530,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63373,7 +63630,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63462,7 +63719,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63550,7 +63807,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63632,7 +63889,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63720,7 +63977,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63802,7 +64059,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -63914,7 +64171,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64010,7 +64267,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64110,7 +64367,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64199,7 +64456,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64311,7 +64568,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64407,7 +64664,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64531,7 +64788,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64634,7 +64891,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64746,7 +65003,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64842,7 +65099,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -64954,7 +65211,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65050,7 +65307,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65150,7 +65407,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65239,7 +65496,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65363,7 +65620,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65466,7 +65723,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65590,7 +65847,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65693,7 +65950,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65805,7 +66062,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -65901,7 +66158,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66025,7 +66282,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66128,7 +66385,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66240,7 +66497,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66336,7 +66593,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66460,7 +66717,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66563,7 +66820,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66662,7 +66919,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66752,7 +67009,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66839,7 +67096,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -66922,7 +67179,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67022,7 +67279,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67111,7 +67368,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67210,7 +67467,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67300,7 +67557,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67399,7 +67656,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67489,7 +67746,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67589,7 +67846,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67678,7 +67935,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67778,7 +68035,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67867,7 +68124,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -67975,7 +68232,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68064,7 +68321,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68151,7 +68408,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68234,7 +68491,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68322,7 +68579,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68404,7 +68661,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68491,7 +68748,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68574,7 +68831,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68673,7 +68930,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68763,7 +69020,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68850,7 +69107,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -68933,7 +69190,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69033,7 +69290,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69149,7 +69406,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69239,7 +69496,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69341,7 +69598,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69430,7 +69687,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69505,7 +69762,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69580,7 +69837,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69656,7 +69913,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69752,7 +70009,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69834,7 +70091,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -69922,7 +70179,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70004,7 +70261,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70092,7 +70349,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70174,7 +70431,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70285,7 +70542,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70382,7 +70639,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70469,7 +70726,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70552,7 +70809,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70652,7 +70909,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70741,7 +70998,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70816,7 +71073,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70892,7 +71149,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -70980,7 +71237,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71062,7 +71319,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71138,7 +71395,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71213,7 +71470,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71300,7 +71557,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71383,7 +71640,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71483,7 +71740,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71572,7 +71829,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71647,7 +71904,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71723,7 +71980,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71822,7 +72079,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -71904,7 +72161,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72004,7 +72261,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72093,7 +72350,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72168,7 +72425,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72244,7 +72501,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72343,7 +72600,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72425,7 +72682,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72500,7 +72757,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72576,7 +72833,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -72672,7 +72929,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): diff --git a/vendor/hive_metastore/ttypes.py b/vendor/hive_metastore/ttypes.py index fd279207cb..dca7aaadc7 100644 --- a/vendor/hive_metastore/ttypes.py +++ b/vendor/hive_metastore/ttypes.py @@ -643,7 +643,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -735,7 +735,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -815,7 +815,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -983,7 +983,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1231,7 +1231,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1399,7 +1399,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1555,7 +1555,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1725,7 +1725,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -1895,7 +1895,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2071,7 +2071,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2184,7 +2184,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2326,7 +2326,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2440,7 +2440,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2556,7 +2556,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2627,7 +2627,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2782,7 +2782,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2869,7 +2869,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -2931,7 +2931,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3076,7 +3076,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3117,7 +3117,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3207,7 +3207,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3347,7 +3347,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3427,7 +3427,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3500,7 +3500,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3566,7 +3566,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3639,7 +3639,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3779,7 +3779,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3841,7 +3841,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -3945,7 +3945,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4008,7 +4008,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4085,7 +4085,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4149,7 +4149,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4212,7 +4212,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4286,7 +4286,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4350,7 +4350,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4591,7 +4591,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4753,7 +4753,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4829,7 +4829,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -4973,7 +4973,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5223,7 +5223,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5394,7 +5394,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5498,7 +5498,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5612,7 +5612,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5726,7 +5726,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5844,7 +5844,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -5948,7 +5948,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6026,7 +6026,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6142,7 +6142,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6206,7 +6206,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6322,7 +6322,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6386,7 +6386,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6502,7 +6502,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6656,7 +6656,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6753,7 +6753,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -6889,7 +6889,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -7003,7 +7003,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -7097,7 +7097,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -7183,7 +7183,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -7640,7 +7640,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -7747,7 +7747,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -7993,7 +7993,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8148,7 +8148,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8232,7 +8232,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8303,7 +8303,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8459,7 +8459,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8558,7 +8558,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8685,7 +8685,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8749,7 +8749,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8850,7 +8850,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -8972,7 +8972,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9045,7 +9045,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9191,7 +9191,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9264,7 +9264,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9388,7 +9388,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9461,7 +9461,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9585,7 +9585,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9658,7 +9658,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9782,7 +9782,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9855,7 +9855,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -9979,7 +9979,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10052,7 +10052,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10176,7 +10176,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10241,7 +10241,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10353,7 +10353,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10426,7 +10426,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10499,7 +10499,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10572,7 +10572,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10645,7 +10645,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10718,7 +10718,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10791,7 +10791,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10878,7 +10878,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -10965,7 +10965,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11143,7 +11143,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11228,7 +11228,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11327,7 +11327,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11491,7 +11491,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11669,7 +11669,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11752,7 +11752,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11911,7 +11911,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -11982,7 +11982,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12058,7 +12058,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12153,7 +12153,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12325,7 +12325,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12529,7 +12529,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12605,7 +12605,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12678,7 +12678,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12886,7 +12886,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -12972,7 +12972,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13146,7 +13146,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13222,7 +13222,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13399,7 +13399,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13573,7 +13573,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13660,7 +13660,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13772,7 +13772,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -13928,7 +13928,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14000,7 +14000,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14090,7 +14090,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14162,7 +14162,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14258,7 +14258,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14412,7 +14412,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14544,7 +14544,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14650,7 +14650,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14799,7 +14799,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -14953,7 +14953,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15055,7 +15055,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15183,7 +15183,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15256,7 +15256,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15334,7 +15334,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15471,7 +15471,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15544,7 +15544,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15626,7 +15626,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15690,7 +15690,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15786,7 +15786,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -15850,7 +15850,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16008,7 +16008,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16163,7 +16163,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16255,7 +16255,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16343,7 +16343,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16407,7 +16407,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16523,7 +16523,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16791,7 +16791,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16862,7 +16862,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -16936,7 +16936,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17014,7 +17014,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17108,7 +17108,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17290,7 +17290,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17556,7 +17556,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17619,7 +17619,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17771,7 +17771,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17834,7 +17834,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -17944,7 +17944,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18052,7 +18052,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18093,7 +18093,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18403,7 +18403,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18476,7 +18476,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18594,7 +18594,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18667,7 +18667,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18745,7 +18745,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -18893,7 +18893,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19023,7 +19023,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19123,7 +19123,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19289,7 +19289,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19362,7 +19362,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19426,7 +19426,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19544,7 +19544,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19608,7 +19608,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19768,7 +19768,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19852,7 +19852,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -19997,7 +19997,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20067,7 +20067,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20216,7 +20216,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20257,7 +20257,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20378,7 +20378,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20419,7 +20419,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20493,7 +20493,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20582,7 +20582,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20692,7 +20692,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20780,7 +20780,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20852,7 +20852,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20893,7 +20893,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -20999,7 +20999,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21040,7 +21040,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21112,7 +21112,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21176,7 +21176,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21284,7 +21284,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21355,7 +21355,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21427,7 +21427,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21533,7 +21533,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21732,7 +21732,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21809,7 +21809,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -21991,7 +21991,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22064,7 +22064,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22226,7 +22226,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22352,7 +22352,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22468,7 +22468,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22626,7 +22626,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22706,7 +22706,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22747,7 +22747,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22873,7 +22873,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -22951,7 +22951,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23069,7 +23069,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23209,7 +23209,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23343,7 +23343,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23489,7 +23489,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23625,7 +23625,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23763,7 +23763,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -23859,7 +23859,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24010,7 +24010,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24087,7 +24087,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24128,7 +24128,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24192,7 +24192,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24255,7 +24255,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24333,7 +24333,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24396,7 +24396,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24460,7 +24460,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24531,7 +24531,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24658,7 +24658,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24721,7 +24721,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24799,7 +24799,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24897,7 +24897,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -24975,7 +24975,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25016,7 +25016,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25079,7 +25079,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25120,7 +25120,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25183,7 +25183,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25224,7 +25224,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25316,7 +25316,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25357,7 +25357,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25435,7 +25435,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25506,7 +25506,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25569,7 +25569,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25610,7 +25610,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25687,7 +25687,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25728,7 +25728,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25820,7 +25820,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25861,7 +25861,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25936,7 +25936,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -25977,7 +25977,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26040,7 +26040,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26081,7 +26081,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26199,7 +26199,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26240,7 +26240,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26408,7 +26408,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26500,7 +26500,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26576,7 +26576,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26765,7 +26765,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26840,7 +26840,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -26932,7 +26932,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27003,7 +27003,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27080,7 +27080,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27155,7 +27155,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27219,7 +27219,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27309,7 +27309,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27387,7 +27387,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27629,7 +27629,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27860,7 +27860,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27923,7 +27923,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -27989,7 +27989,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28055,7 +28055,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28137,7 +28137,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28240,7 +28240,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28371,7 +28371,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28450,7 +28450,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28558,7 +28558,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28716,7 +28716,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28757,7 +28757,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28932,7 +28932,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -28973,7 +28973,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29161,7 +29161,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29202,7 +29202,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29288,7 +29288,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29359,7 +29359,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29579,7 +29579,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29714,7 +29714,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29787,7 +29787,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29922,7 +29922,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -29995,7 +29995,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30143,7 +30143,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30208,7 +30208,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30342,7 +30342,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30415,7 +30415,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30573,7 +30573,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30649,7 +30649,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30845,7 +30845,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -30918,7 +30918,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31054,7 +31054,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31127,7 +31127,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31215,7 +31215,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31285,7 +31285,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31383,7 +31383,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31463,7 +31463,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31583,7 +31583,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31717,7 +31717,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31815,7 +31815,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31913,7 +31913,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -31993,7 +31993,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32127,7 +32127,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32219,7 +32219,7 @@ def validate(self): return def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32299,7 +32299,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32379,7 +32379,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32459,7 +32459,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32539,7 +32539,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32619,7 +32619,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32699,7 +32699,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32779,7 +32779,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32859,7 +32859,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -32939,7 +32939,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33019,7 +33019,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33099,7 +33099,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33179,7 +33179,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33259,7 +33259,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33339,7 +33339,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): @@ -33419,7 +33419,7 @@ def __str__(self): return repr(self) def __repr__(self): - L = [f"{key}={value!r}" for key, value in self.__dict__.items()] + L = ["{}={!r}".format(key, value) for key, value in self.__dict__.items()] return "{}({})".format(self.__class__.__name__, ", ".join(L)) def __eq__(self, other): From 2474b12bd8aa9d16e19e49c73cb12feb210279a4 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Sat, 14 Feb 2026 13:12:44 -0800 Subject: [PATCH 04/29] feat: add ScanOrder enum to ArrowScan.to_record_batches Introduce ScanOrder.TASK (default) and ScanOrder.ARRIVAL to control batch ordering. TASK materializes each file before yielding; ARRIVAL yields batches as produced for lower memory usage. Co-Authored-By: Claude Opus 4.6 --- mkdocs/docs/api.md | 20 +++++ pyiceberg/io/pyarrow.py | 30 ++++++- pyiceberg/table/__init__.py | 23 ++++- tests/io/test_pyarrow.py | 172 +++++++++++++++++++++++++++++++++++- 4 files changed, 239 insertions(+), 6 deletions(-) diff --git a/mkdocs/docs/api.md b/mkdocs/docs/api.md index dadaac93b4..8833b3f0f0 100644 --- a/mkdocs/docs/api.md +++ b/mkdocs/docs/api.md @@ -362,6 +362,15 @@ for buf in tbl.scan().to_arrow_batch_reader(batch_size=1000): print(f"Buffer contains {len(buf)} rows") ``` +By default, each file's batches are materialized in memory before being yielded (`order=ScanOrder.TASK`). For large files that may exceed available memory, use `order=ScanOrder.ARRIVAL` to yield batches as they are produced without materializing entire files: + +```python +from pyiceberg.table import ScanOrder + +for buf in tbl.scan().to_arrow_batch_reader(order=ScanOrder.ARRIVAL, batch_size=1000): + print(f"Buffer contains {len(buf)} rows") +``` + To avoid any type inconsistencies during writing, you can convert the Iceberg table schema to Arrow: ```python @@ -1635,6 +1644,17 @@ table.scan( ).to_arrow_batch_reader(batch_size=1000) ``` +Use `order=ScanOrder.ARRIVAL` to avoid materializing entire files in memory. This yields batches as they are produced by PyArrow, one file at a time: + +```python +from pyiceberg.table import ScanOrder + +table.scan( + row_filter=GreaterThanOrEqual("trip_distance", 10.0), + selected_fields=("VendorID", "tpep_pickup_datetime", "tpep_dropoff_datetime"), +).to_arrow_batch_reader(order=ScanOrder.ARRIVAL) +``` + ### Pandas diff --git a/pyiceberg/io/pyarrow.py b/pyiceberg/io/pyarrow.py index e7c0da5262..e8de6a956e 100644 --- a/pyiceberg/io/pyarrow.py +++ b/pyiceberg/io/pyarrow.py @@ -141,7 +141,7 @@ visit, visit_with_partner, ) -from pyiceberg.table import DOWNCAST_NS_TIMESTAMP_TO_US_ON_WRITE, TableProperties +from pyiceberg.table import DOWNCAST_NS_TIMESTAMP_TO_US_ON_WRITE, ScanOrder, TableProperties from pyiceberg.table.locations import load_location_provider from pyiceberg.table.metadata import TableMetadata from pyiceberg.table.name_mapping import NameMapping, apply_name_mapping @@ -1761,7 +1761,12 @@ def to_table(self, tasks: Iterable[FileScanTask]) -> pa.Table: return result - def to_record_batches(self, tasks: Iterable[FileScanTask], batch_size: int | None = None) -> Iterator[pa.RecordBatch]: + def to_record_batches( + self, + tasks: Iterable[FileScanTask], + batch_size: int | None = None, + order: ScanOrder = ScanOrder.TASK, + ) -> Iterator[pa.RecordBatch]: """Scan the Iceberg table and return an Iterator[pa.RecordBatch]. Returns an Iterator of pa.RecordBatch with data from the Iceberg table @@ -1770,6 +1775,13 @@ def to_record_batches(self, tasks: Iterable[FileScanTask], batch_size: int | Non Args: tasks: FileScanTasks representing the data files and delete files to read from. + batch_size: The number of rows per batch. If None, PyArrow's default is used. + order: Controls the order in which record batches are returned. + ScanOrder.TASK (default) returns batches in task order, with each task + fully materialized before proceeding to the next. Allows parallel file + reads via executor. ScanOrder.ARRIVAL yields batches as they are + produced, processing tasks sequentially without materializing entire + files into memory. Returns: An Iterator of PyArrow RecordBatches. @@ -1777,10 +1789,22 @@ def to_record_batches(self, tasks: Iterable[FileScanTask], batch_size: int | Non Raises: ResolveError: When a required field cannot be found in the file - ValueError: When a field type in the file cannot be projected to the schema type + ValueError: When a field type in the file cannot be projected to the schema type, + or when an invalid order value is provided. """ + if not isinstance(order, ScanOrder): + raise ValueError(f"Invalid order: {order!r}. Must be a ScanOrder enum value (ScanOrder.TASK or ScanOrder.ARRIVAL).") + deletes_per_file = _read_all_delete_files(self._io, tasks) + if order == ScanOrder.ARRIVAL: + # Arrival order: process all tasks sequentially, yielding batches as produced. + # _record_batches_from_scan_tasks_and_deletes handles the limit internally + # when called with all tasks, so no outer limit check is needed. + yield from self._record_batches_from_scan_tasks_and_deletes(tasks, deletes_per_file, batch_size) + return + + # Task order: existing behavior with executor.map + list() total_row_count = 0 executor = ExecutorFactory.get_or_create() diff --git a/pyiceberg/table/__init__.py b/pyiceberg/table/__init__.py index 164eba5d32..a4b9cba5f8 100644 --- a/pyiceberg/table/__init__.py +++ b/pyiceberg/table/__init__.py @@ -23,6 +23,7 @@ from abc import ABC, abstractmethod from collections.abc import Callable, Iterable, Iterator from dataclasses import dataclass +from enum import Enum from functools import cached_property from itertools import chain from types import TracebackType @@ -154,6 +155,20 @@ DOWNCAST_NS_TIMESTAMP_TO_US_ON_WRITE = "downcast-ns-timestamp-to-us-on-write" +class ScanOrder(str, Enum): + """Order in which record batches are returned from a scan. + + Attributes: + TASK: Batches are returned in task order, with each task fully materialized + before proceeding to the next. Allows parallel file reads via executor. + ARRIVAL: Batches are yielded as they are produced, processing tasks + sequentially without materializing entire files into memory. + """ + + TASK = "task" + ARRIVAL = "arrival" + + @dataclass() class UpsertResult: """Summary the upsert operation.""" @@ -2155,7 +2170,7 @@ def to_arrow(self) -> pa.Table: self.table_metadata, self.io, self.projection(), self.row_filter, self.case_sensitive, self.limit ).to_table(self.plan_files()) - def to_arrow_batch_reader(self, batch_size: int | None = None) -> pa.RecordBatchReader: + def to_arrow_batch_reader(self, batch_size: int | None = None, order: ScanOrder = ScanOrder.TASK) -> pa.RecordBatchReader: """Return an Arrow RecordBatchReader from this DataScan. For large results, using a RecordBatchReader requires less memory than @@ -2164,6 +2179,10 @@ def to_arrow_batch_reader(self, batch_size: int | None = None) -> pa.RecordBatch Args: batch_size: The number of rows per batch. If None, PyArrow's default is used. + order: Controls the order in which record batches are returned. + ScanOrder.TASK (default) returns batches in task order with parallel + file reads. ScanOrder.ARRIVAL yields batches as they are produced, + processing tasks sequentially. Returns: pa.RecordBatchReader: Arrow RecordBatchReader from the Iceberg table's DataScan @@ -2176,7 +2195,7 @@ def to_arrow_batch_reader(self, batch_size: int | None = None) -> pa.RecordBatch target_schema = schema_to_pyarrow(self.projection()) batches = ArrowScan( self.table_metadata, self.io, self.projection(), self.row_filter, self.case_sensitive, self.limit - ).to_record_batches(self.plan_files(), batch_size=batch_size) + ).to_record_batches(self.plan_files(), batch_size=batch_size, order=order) return pa.RecordBatchReader.from_batches( target_schema, diff --git a/tests/io/test_pyarrow.py b/tests/io/test_pyarrow.py index fb03f785c6..fa5f180512 100644 --- a/tests/io/test_pyarrow.py +++ b/tests/io/test_pyarrow.py @@ -86,7 +86,7 @@ from pyiceberg.manifest import DataFile, DataFileContent, FileFormat from pyiceberg.partitioning import PartitionField, PartitionSpec from pyiceberg.schema import Schema, make_compatible_name, visit -from pyiceberg.table import FileScanTask, TableProperties +from pyiceberg.table import FileScanTask, ScanOrder, TableProperties from pyiceberg.table.metadata import TableMetadataV2 from pyiceberg.table.name_mapping import create_mapping_from_schema from pyiceberg.transforms import HourTransform, IdentityTransform @@ -3106,6 +3106,176 @@ def test_task_to_record_batches_default_batch_size(tmpdir: str) -> None: assert len(batches[0]) == num_rows +def _create_scan_and_tasks( + tmpdir: str, + num_files: int = 1, + rows_per_file: int = 100, + limit: int | None = None, + delete_rows_per_file: list[list[int]] | None = None, +) -> tuple[ArrowScan, list[FileScanTask]]: + """Helper to create an ArrowScan and FileScanTasks for testing. + + Args: + delete_rows_per_file: If provided, a list of lists of row positions to delete + per file. Length must match num_files. Each inner list contains 0-based + row positions within that file to mark as positionally deleted. + """ + table_schema = Schema(NestedField(1, "col", LongType(), required=True)) + pa_schema = pa.schema([pa.field("col", pa.int64(), nullable=False, metadata={PYARROW_PARQUET_FIELD_ID_KEY: "1"})]) + tasks = [] + for i in range(num_files): + start = i * rows_per_file + arrow_table = pa.table({"col": pa.array(range(start, start + rows_per_file))}, schema=pa_schema) + data_file = _write_table_to_data_file(f"{tmpdir}/file_{i}.parquet", pa_schema, arrow_table) + data_file.spec_id = 0 + + delete_files = set() + if delete_rows_per_file and delete_rows_per_file[i]: + delete_table = pa.table( + { + "file_path": [data_file.file_path] * len(delete_rows_per_file[i]), + "pos": delete_rows_per_file[i], + } + ) + delete_path = f"{tmpdir}/deletes_{i}.parquet" + pq.write_table(delete_table, delete_path) + delete_files.add( + DataFile.from_args( + content=DataFileContent.POSITION_DELETES, + file_path=delete_path, + file_format=FileFormat.PARQUET, + partition={}, + record_count=len(delete_rows_per_file[i]), + file_size_in_bytes=22, + ) + ) + + tasks.append(FileScanTask(data_file=data_file, delete_files=delete_files)) + + scan = ArrowScan( + table_metadata=TableMetadataV2( + location="file://a/b/", + last_column_id=1, + format_version=2, + schemas=[table_schema], + partition_specs=[PartitionSpec()], + ), + io=PyArrowFileIO(), + projected_schema=table_schema, + row_filter=AlwaysTrue(), + case_sensitive=True, + limit=limit, + ) + return scan, tasks + + +def test_task_order_produces_same_results(tmpdir: str) -> None: + """Test that order=ScanOrder.TASK produces the same results as the default behavior.""" + scan, tasks = _create_scan_and_tasks(tmpdir, num_files=3, rows_per_file=100) + + batches_default = list(scan.to_record_batches(tasks, order=ScanOrder.TASK)) + # Re-create tasks since iterators are consumed + _, tasks2 = _create_scan_and_tasks(tmpdir, num_files=3, rows_per_file=100) + batches_task_order = list(scan.to_record_batches(tasks2, order=ScanOrder.TASK)) + + total_default = sum(len(b) for b in batches_default) + total_task_order = sum(len(b) for b in batches_task_order) + assert total_default == 300 + assert total_task_order == 300 + + +def test_arrival_order_yields_all_batches(tmpdir: str) -> None: + """Test that order=ScanOrder.ARRIVAL yields all batches correctly.""" + scan, tasks = _create_scan_and_tasks(tmpdir, num_files=3, rows_per_file=100) + + batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL)) + + total_rows = sum(len(b) for b in batches) + assert total_rows == 300 + # Verify all values are present + all_values = sorted([v for b in batches for v in b.column("col").to_pylist()]) + assert all_values == list(range(300)) + + +def test_arrival_order_with_limit(tmpdir: str) -> None: + """Test that order=ScanOrder.ARRIVAL respects the row limit.""" + scan, tasks = _create_scan_and_tasks(tmpdir, num_files=3, rows_per_file=100, limit=150) + + batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL)) + + total_rows = sum(len(b) for b in batches) + assert total_rows == 150 + + +def test_arrival_order_file_ordering_preserved(tmpdir: str) -> None: + """Test that file ordering is preserved in arrival order mode.""" + scan, tasks = _create_scan_and_tasks(tmpdir, num_files=3, rows_per_file=100) + + batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL)) + all_values = [v for b in batches for v in b.column("col").to_pylist()] + + # Values should be in file order: 0-99 from file 0, 100-199 from file 1, 200-299 from file 2 + assert all_values == list(range(300)) + + +def test_arrival_order_with_positional_deletes(tmpdir: str) -> None: + """Test that order=ScanOrder.ARRIVAL correctly applies positional deletes.""" + # 3 files, 10 rows each; delete rows 0,5 from file 0, row 3 from file 1, nothing from file 2 + scan, tasks = _create_scan_and_tasks( + tmpdir, + num_files=3, + rows_per_file=10, + delete_rows_per_file=[[0, 5], [3], []], + ) + + batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL)) + + total_rows = sum(len(b) for b in batches) + assert total_rows == 27 # 30 - 3 deletes + all_values = sorted([v for b in batches for v in b.column("col").to_pylist()]) + # File 0: 0-9, delete rows 0,5 → values 1,2,3,4,6,7,8,9 + # File 1: 10-19, delete row 3 → values 10,11,12,14,15,16,17,18,19 + # File 2: 20-29, no deletes → values 20-29 + expected = [1, 2, 3, 4, 6, 7, 8, 9] + [10, 11, 12, 14, 15, 16, 17, 18, 19] + list(range(20, 30)) + assert all_values == sorted(expected) + + +def test_arrival_order_with_positional_deletes_and_limit(tmpdir: str) -> None: + """Test that order=ScanOrder.ARRIVAL with positional deletes respects the row limit.""" + # 3 files, 10 rows each; delete row 0 from each file + scan, tasks = _create_scan_and_tasks( + tmpdir, + num_files=3, + rows_per_file=10, + limit=15, + delete_rows_per_file=[[0], [0], [0]], + ) + + batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL)) + + total_rows = sum(len(b) for b in batches) + assert total_rows == 15 + + +def test_task_order_with_positional_deletes(tmpdir: str) -> None: + """Test that the default task order mode correctly applies positional deletes.""" + # 3 files, 10 rows each; delete rows from each file + scan, tasks = _create_scan_and_tasks( + tmpdir, + num_files=3, + rows_per_file=10, + delete_rows_per_file=[[0, 5], [3], []], + ) + + batches = list(scan.to_record_batches(tasks, order=ScanOrder.TASK)) + + total_rows = sum(len(b) for b in batches) + assert total_rows == 27 # 30 - 3 deletes + all_values = sorted([v for b in batches for v in b.column("col").to_pylist()]) + expected = [1, 2, 3, 4, 6, 7, 8, 9] + [10, 11, 12, 14, 15, 16, 17, 18, 19] + list(range(20, 30)) + assert all_values == sorted(expected) + + def test_parse_location_defaults() -> None: """Test that parse_location uses defaults.""" From 48b332a724af2b14e05a3d58d0d418ac415a8d19 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Sat, 14 Feb 2026 13:23:56 -0800 Subject: [PATCH 05/29] feat: add concurrent_files flag for bounded concurrent streaming Add _bounded_concurrent_batches() with proper lock discipline: - Queue backpressure caps memory (scan.max-buffered-batches, default 16) - Semaphore limits concurrent file reads (concurrent_files param) - Cancel event with timeouts on all blocking ops (no lock over IO) - Error propagation and early termination support When streaming=True and concurrent_files > 1, batches are yielded as they arrive from parallel file reads. File ordering is not guaranteed (documented). Co-Authored-By: Claude Opus 4.6 --- mkdocs/docs/api.md | 27 ++ pyiceberg/io/pyarrow.py | 121 ++++++++- pyiceberg/table/__init__.py | 17 +- tests/io/test_bounded_concurrent_batches.py | 258 ++++++++++++++++++++ tests/io/test_pyarrow.py | 56 ++++- 5 files changed, 463 insertions(+), 16 deletions(-) create mode 100644 tests/io/test_bounded_concurrent_batches.py diff --git a/mkdocs/docs/api.md b/mkdocs/docs/api.md index 8833b3f0f0..ec7fad20d3 100644 --- a/mkdocs/docs/api.md +++ b/mkdocs/docs/api.md @@ -371,6 +371,22 @@ for buf in tbl.scan().to_arrow_batch_reader(order=ScanOrder.ARRIVAL, batch_size= print(f"Buffer contains {len(buf)} rows") ``` +For maximum throughput, use `concurrent_files` to read multiple files in parallel while streaming. Batches are yielded as they arrive from any file — ordering across files is not guaranteed: + +```python +for buf in tbl.scan().to_arrow_batch_reader(streaming=True, concurrent_files=4, batch_size=1000): + print(f"Buffer contains {len(buf)} rows") +``` + +**Ordering semantics:** + +| Configuration | File ordering | Within-file ordering | +|---|---|---| +| Default (`streaming=False`) | Batches grouped by file, in task submission order | Row order | +| `streaming=True` | Interleaved across files (no grouping guarantee) | Row order within each file | + +Within each file, batch ordering always follows row order. The `limit` parameter is enforced correctly regardless of configuration. + To avoid any type inconsistencies during writing, you can convert the Iceberg table schema to Arrow: ```python @@ -1655,6 +1671,17 @@ table.scan( ).to_arrow_batch_reader(order=ScanOrder.ARRIVAL) ``` +For concurrent file reads with streaming, use `concurrent_files`. Note that batch ordering across files is not guaranteed: + +```python +table.scan( + row_filter=GreaterThanOrEqual("trip_distance", 10.0), + selected_fields=("VendorID", "tpep_pickup_datetime", "tpep_dropoff_datetime"), +).to_arrow_batch_reader(streaming=True, concurrent_files=4) +``` + +When using `concurrent_files > 1`, batches from different files may be interleaved. Within each file, batches are always in row order. See the ordering semantics table in the [Apache Arrow section](#apache-arrow) above for details. + ### Pandas diff --git a/pyiceberg/io/pyarrow.py b/pyiceberg/io/pyarrow.py index e8de6a956e..b89606ae8d 100644 --- a/pyiceberg/io/pyarrow.py +++ b/pyiceberg/io/pyarrow.py @@ -33,11 +33,13 @@ import logging import operator import os +import queue import re +import threading import uuid import warnings from abc import ABC, abstractmethod -from collections.abc import Callable, Iterable, Iterator +from collections.abc import Callable, Generator, Iterable, Iterator from copy import copy from dataclasses import dataclass from enum import Enum @@ -1682,6 +1684,87 @@ def _read_all_delete_files(io: FileIO, tasks: Iterable[FileScanTask]) -> dict[st return deletes_per_file +_QUEUE_SENTINEL = object() + + +def _bounded_concurrent_batches( + tasks: list[FileScanTask], + batch_fn: Callable[[FileScanTask], Iterator[pa.RecordBatch]], + concurrent_files: int, + max_buffered_batches: int = 16, +) -> Generator[pa.RecordBatch, None, None]: + """Read batches from multiple files concurrently with bounded memory. + + Workers read from files in parallel (up to concurrent_files at a time) and push + batches into a shared queue. The consumer yields batches from the queue. + A sentinel value signals completion, avoiding timeout-based polling. + + Args: + tasks: The file scan tasks to process. + batch_fn: A callable that takes a FileScanTask and returns an iterator of RecordBatches. + concurrent_files: Maximum number of files to read concurrently. + max_buffered_batches: Maximum number of batches to buffer in the queue. + """ + if not tasks: + return + + batch_queue: queue.Queue[pa.RecordBatch | BaseException | object] = queue.Queue(maxsize=max_buffered_batches) + cancel_event = threading.Event() + pending_count = len(tasks) + pending_lock = threading.Lock() + file_semaphore = threading.Semaphore(concurrent_files) + + def worker(task: FileScanTask) -> None: + nonlocal pending_count + try: + # Blocking acquire — on cancellation, extra permits are released to unblock. + file_semaphore.acquire() + if cancel_event.is_set(): + return + + for batch in batch_fn(task): + if cancel_event.is_set(): + return + batch_queue.put(batch) + except BaseException as e: + if not cancel_event.is_set(): + batch_queue.put(e) + finally: + file_semaphore.release() + with pending_lock: + pending_count -= 1 + if pending_count == 0: + batch_queue.put(_QUEUE_SENTINEL) + + executor = ExecutorFactory.get_or_create() + futures = [executor.submit(worker, task) for task in tasks] + + try: + while True: + item = batch_queue.get() + + if item is _QUEUE_SENTINEL: + break + + if isinstance(item, BaseException): + raise item + + yield item + finally: + cancel_event.set() + # Release semaphore permits to unblock any workers waiting on acquire() + for _ in range(len(tasks)): + file_semaphore.release() + # Drain the queue to unblock any workers stuck on put() + while not batch_queue.empty(): + try: + batch_queue.get_nowait() + except queue.Empty: + break + for future in futures: + future.cancel() + + class ArrowScan: _table_metadata: TableMetadata _io: FileIO @@ -1766,6 +1849,7 @@ def to_record_batches( tasks: Iterable[FileScanTask], batch_size: int | None = None, order: ScanOrder = ScanOrder.TASK, + concurrent_files: int = 1, ) -> Iterator[pa.RecordBatch]: """Scan the Iceberg table and return an Iterator[pa.RecordBatch]. @@ -1773,6 +1857,11 @@ def to_record_batches( by resolving the right columns that match the current table schema. Only data that matches the provided row_filter expression is returned. + Ordering semantics: + - ScanOrder.TASK (default): Batches are grouped by file in task submission order. + - ScanOrder.ARRIVAL: Batches may be interleaved across files. Within each file, + batch ordering follows row order. + Args: tasks: FileScanTasks representing the data files and delete files to read from. batch_size: The number of rows per batch. If None, PyArrow's default is used. @@ -1780,8 +1869,10 @@ def to_record_batches( ScanOrder.TASK (default) returns batches in task order, with each task fully materialized before proceeding to the next. Allows parallel file reads via executor. ScanOrder.ARRIVAL yields batches as they are - produced, processing tasks sequentially without materializing entire - files into memory. + produced without materializing entire files into memory. + concurrent_files: Number of files to read concurrently when order=ScanOrder.ARRIVAL. + Must be >= 1. When > 1, batches may arrive interleaved across files. + Ignored when order=ScanOrder.TASK. Returns: An Iterator of PyArrow RecordBatches. @@ -1790,18 +1881,32 @@ def to_record_batches( Raises: ResolveError: When a required field cannot be found in the file ValueError: When a field type in the file cannot be projected to the schema type, - or when an invalid order value is provided. + or when an invalid order value is provided, or when concurrent_files < 1. """ if not isinstance(order, ScanOrder): raise ValueError(f"Invalid order: {order!r}. Must be a ScanOrder enum value (ScanOrder.TASK or ScanOrder.ARRIVAL).") + if concurrent_files < 1: + raise ValueError(f"concurrent_files must be >= 1, got {concurrent_files}") + deletes_per_file = _read_all_delete_files(self._io, tasks) if order == ScanOrder.ARRIVAL: - # Arrival order: process all tasks sequentially, yielding batches as produced. - # _record_batches_from_scan_tasks_and_deletes handles the limit internally - # when called with all tasks, so no outer limit check is needed. - yield from self._record_batches_from_scan_tasks_and_deletes(tasks, deletes_per_file, batch_size) + # Arrival order: read files with bounded concurrency, yielding batches as produced. + # When concurrent_files=1, this is sequential. When >1, batches may interleave across files. + task_list = list(tasks) + + def batch_fn(task: FileScanTask) -> Iterator[pa.RecordBatch]: + return self._record_batches_from_scan_tasks_and_deletes([task], deletes_per_file, batch_size) + + total_row_count = 0 + for batch in _bounded_concurrent_batches(task_list, batch_fn, concurrent_files): + current_batch_size = len(batch) + if self._limit is not None and total_row_count + current_batch_size >= self._limit: + yield batch.slice(0, self._limit - total_row_count) + return + yield batch + total_row_count += current_batch_size return # Task order: existing behavior with executor.map + list() diff --git a/pyiceberg/table/__init__.py b/pyiceberg/table/__init__.py index a4b9cba5f8..c7f43b48c1 100644 --- a/pyiceberg/table/__init__.py +++ b/pyiceberg/table/__init__.py @@ -2170,19 +2170,28 @@ def to_arrow(self) -> pa.Table: self.table_metadata, self.io, self.projection(), self.row_filter, self.case_sensitive, self.limit ).to_table(self.plan_files()) - def to_arrow_batch_reader(self, batch_size: int | None = None, order: ScanOrder = ScanOrder.TASK) -> pa.RecordBatchReader: + def to_arrow_batch_reader( + self, batch_size: int | None = None, order: ScanOrder = ScanOrder.TASK, concurrent_files: int = 1 + ) -> pa.RecordBatchReader: """Return an Arrow RecordBatchReader from this DataScan. For large results, using a RecordBatchReader requires less memory than loading an Arrow Table for the same DataScan, because a RecordBatch is read one at a time. + Ordering semantics: + - ScanOrder.TASK (default): Batches are grouped by file in task submission order. + - ScanOrder.ARRIVAL: Batches may be interleaved across files. Within each file, + batch ordering follows row order. + Args: batch_size: The number of rows per batch. If None, PyArrow's default is used. order: Controls the order in which record batches are returned. ScanOrder.TASK (default) returns batches in task order with parallel - file reads. ScanOrder.ARRIVAL yields batches as they are produced, - processing tasks sequentially. + file reads. ScanOrder.ARRIVAL yields batches as they are produced + without materializing entire files into memory. + concurrent_files: Number of files to read concurrently when order=ScanOrder.ARRIVAL. + When > 1, batches may arrive interleaved across files. Returns: pa.RecordBatchReader: Arrow RecordBatchReader from the Iceberg table's DataScan @@ -2195,7 +2204,7 @@ def to_arrow_batch_reader(self, batch_size: int | None = None, order: ScanOrder target_schema = schema_to_pyarrow(self.projection()) batches = ArrowScan( self.table_metadata, self.io, self.projection(), self.row_filter, self.case_sensitive, self.limit - ).to_record_batches(self.plan_files(), batch_size=batch_size, order=order) + ).to_record_batches(self.plan_files(), batch_size=batch_size, order=order, concurrent_files=concurrent_files) return pa.RecordBatchReader.from_batches( target_schema, diff --git a/tests/io/test_bounded_concurrent_batches.py b/tests/io/test_bounded_concurrent_batches.py new file mode 100644 index 0000000000..736808e4df --- /dev/null +++ b/tests/io/test_bounded_concurrent_batches.py @@ -0,0 +1,258 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +"""Tests for _bounded_concurrent_batches in pyiceberg.io.pyarrow.""" + +import threading +import time +from collections.abc import Iterator +from unittest.mock import MagicMock + +import pyarrow as pa +import pytest + +from pyiceberg.io.pyarrow import _bounded_concurrent_batches +from pyiceberg.table import FileScanTask + + +def _make_task() -> FileScanTask: + """Create a mock FileScanTask.""" + task = MagicMock(spec=FileScanTask) + return task + + +def _make_batches(num_batches: int, rows_per_batch: int = 10, start: int = 0) -> list[pa.RecordBatch]: + """Create a list of simple RecordBatches.""" + return [ + pa.record_batch({"col": list(range(start + i * rows_per_batch, start + (i + 1) * rows_per_batch))}) + for i in range(num_batches) + ] + + +def test_correctness_single_file() -> None: + """Test that a single file produces correct results.""" + task = _make_task() + expected_batches = _make_batches(3) + + def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: + yield from expected_batches + + result = list(_bounded_concurrent_batches([task], batch_fn, concurrent_files=1, max_buffered_batches=16)) + + assert len(result) == 3 + total_rows = sum(len(b) for b in result) + assert total_rows == 30 + + +def test_correctness_multiple_files() -> None: + """Test that multiple files produce all expected batches.""" + tasks = [_make_task() for _ in range(4)] + batches_per_file = 3 + + def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: + idx = tasks.index(t) + yield from _make_batches(batches_per_file, start=idx * 100) + + result = list(_bounded_concurrent_batches(tasks, batch_fn, concurrent_files=2, max_buffered_batches=16)) + + total_rows = sum(len(b) for b in result) + assert total_rows == batches_per_file * len(tasks) * 10 # 3 batches * 4 files * 10 rows + + +def test_streaming_yields_incrementally() -> None: + """Test that batches are yielded incrementally, not all at once.""" + barrier = threading.Event() + tasks = [_make_task(), _make_task()] + + def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: + yield pa.record_batch({"col": [1, 2, 3]}) + barrier.wait(timeout=5.0) + yield pa.record_batch({"col": [4, 5, 6]}) + + gen = _bounded_concurrent_batches(tasks, batch_fn, concurrent_files=2, max_buffered_batches=16) + + # Should get at least one batch before all are done + first = next(gen) + assert first.num_rows == 3 + + # Unblock remaining batches + barrier.set() + + remaining = list(gen) + total = 1 + len(remaining) + assert total >= 3 # At least 3 more batches (one blocked from each task + the unblocked ones) + + +def test_backpressure() -> None: + """Test that workers block when the queue is full.""" + max_buffered = 2 + tasks = [_make_task()] + produced_count = 0 + produce_lock = threading.Lock() + + def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: + nonlocal produced_count + for i in range(10): + with produce_lock: + produced_count += 1 + yield pa.record_batch({"col": [i]}) + + gen = _bounded_concurrent_batches(tasks, batch_fn, concurrent_files=1, max_buffered_batches=max_buffered) + + # Consume slowly and check that not all batches are produced immediately + first = next(gen) + assert first is not None + time.sleep(0.3) + + # The producer should be blocked by backpressure at some point + # (not all 10 batches produced instantly) + remaining = list(gen) + assert len(remaining) + 1 == 10 + + +def test_error_propagation() -> None: + """Test that errors from workers are propagated to the consumer.""" + tasks = [_make_task()] + + def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: + yield pa.record_batch({"col": [1]}) + raise ValueError("test error") + + gen = _bounded_concurrent_batches(tasks, batch_fn, concurrent_files=1, max_buffered_batches=16) + + # Should get the first batch + first = next(gen) + assert first.num_rows == 1 + + # Should get the error + with pytest.raises(ValueError, match="test error"): + list(gen) + + +def test_early_termination() -> None: + """Test that stopping consumption cancels workers.""" + tasks = [_make_task() for _ in range(5)] + worker_started = threading.Event() + + def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: + worker_started.set() + for i in range(100): + yield pa.record_batch({"col": [i]}) + time.sleep(0.01) + + gen = _bounded_concurrent_batches(tasks, batch_fn, concurrent_files=3, max_buffered_batches=4) + + # Consume a few batches then stop + worker_started.wait(timeout=5.0) + batches = [] + for _ in range(5): + batches.append(next(gen)) + + # Close the generator, triggering finally block + gen.close() + + assert len(batches) == 5 + + +def test_concurrency_limit() -> None: + """Test that at most concurrent_files files are read concurrently.""" + concurrent_files = 2 + tasks = [_make_task() for _ in range(6)] + active_count = 0 + max_active = 0 + active_lock = threading.Lock() + + def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: + nonlocal active_count, max_active + with active_lock: + active_count += 1 + max_active = max(max_active, active_count) + try: + time.sleep(0.05) + yield pa.record_batch({"col": [1]}) + finally: + with active_lock: + active_count -= 1 + + result = list(_bounded_concurrent_batches(tasks, batch_fn, concurrent_files=concurrent_files, max_buffered_batches=16)) + + assert len(result) == 6 + assert max_active <= concurrent_files + + +def test_empty_tasks() -> None: + """Test that no tasks produces no batches.""" + + def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: + yield from [] + + result = list(_bounded_concurrent_batches([], batch_fn, concurrent_files=2, max_buffered_batches=16)) + assert result == [] + + +def test_concurrent_with_limit_via_arrowscan(tmpdir: str) -> None: + """Test concurrent_files with limit through ArrowScan integration.""" + from pyiceberg.expressions import AlwaysTrue + from pyiceberg.io.pyarrow import ArrowScan, PyArrowFileIO, schema_to_pyarrow, write_file + from pyiceberg.manifest import DataFileContent, FileFormat + from pyiceberg.partitioning import PartitionSpec + from pyiceberg.schema import Schema + from pyiceberg.table.metadata import TableMetadataV2 + from pyiceberg.types import LongType, NestedField + + PYARROW_PARQUET_FIELD_ID_KEY = b"PARQUET:field_id" + + table_schema = Schema(NestedField(1, "col", LongType(), required=True)) + pa_schema = pa.schema([pa.field("col", pa.int64(), nullable=False, metadata={PYARROW_PARQUET_FIELD_ID_KEY: "1"})]) + + tasks = [] + for i in range(4): + filepath = f"{tmpdir}/file_{i}.parquet" + arrow_table = pa.table({"col": pa.array(range(i * 100, (i + 1) * 100))}, schema=pa_schema) + import pyarrow.parquet as pq + + pq.write_table(arrow_table, filepath) + from pyiceberg.manifest import DataFile + + data_file = DataFile.from_args( + content=DataFileContent.DATA, + file_path=filepath, + file_format=FileFormat.PARQUET, + partition={}, + record_count=100, + file_size_in_bytes=22, + ) + data_file.spec_id = 0 + tasks.append(FileScanTask(data_file)) + + scan = ArrowScan( + table_metadata=TableMetadataV2( + location="file://a/b/", + last_column_id=1, + format_version=2, + schemas=[table_schema], + partition_specs=[PartitionSpec()], + ), + io=PyArrowFileIO(), + projected_schema=table_schema, + row_filter=AlwaysTrue(), + case_sensitive=True, + limit=150, + ) + + batches = list(scan.to_record_batches(tasks, streaming=True, concurrent_files=2)) + total_rows = sum(len(b) for b in batches) + assert total_rows == 150 diff --git a/tests/io/test_pyarrow.py b/tests/io/test_pyarrow.py index fa5f180512..c5aefa8d62 100644 --- a/tests/io/test_pyarrow.py +++ b/tests/io/test_pyarrow.py @@ -3207,14 +3207,14 @@ def test_arrival_order_with_limit(tmpdir: str) -> None: assert total_rows == 150 -def test_arrival_order_file_ordering_preserved(tmpdir: str) -> None: - """Test that file ordering is preserved in arrival order mode.""" +def test_arrival_order_within_file_ordering_preserved(tmpdir: str) -> None: + """Test that within-file row ordering is preserved in arrival order mode.""" scan, tasks = _create_scan_and_tasks(tmpdir, num_files=3, rows_per_file=100) batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL)) - all_values = [v for b in batches for v in b.column("col").to_pylist()] + all_values = sorted([v for b in batches for v in b.column("col").to_pylist()]) - # Values should be in file order: 0-99 from file 0, 100-199 from file 1, 200-299 from file 2 + # All values should be present, within-file ordering is preserved assert all_values == list(range(300)) @@ -3276,6 +3276,54 @@ def test_task_order_with_positional_deletes(tmpdir: str) -> None: assert all_values == sorted(expected) +def test_concurrent_files_with_positional_deletes(tmpdir: str) -> None: + """Test that streaming=True with concurrent_files correctly applies positional deletes.""" + # 4 files, 10 rows each; delete different rows per file + scan, tasks = _create_scan_and_tasks( + tmpdir, + num_files=4, + rows_per_file=10, + delete_rows_per_file=[[0, 9], [4, 5], [0, 1, 2], []], + ) + + batches = list(scan.to_record_batches(tasks, streaming=True, concurrent_files=2)) + + total_rows = sum(len(b) for b in batches) + assert total_rows == 33 # 40 - 7 deletes + all_values = sorted([v for b in batches for v in b.column("col").to_pylist()]) + # File 0: 0-9, delete rows 0,9 → 1,2,3,4,5,6,7,8 + # File 1: 10-19, delete rows 4,5 → 10,11,12,13,16,17,18,19 + # File 2: 20-29, delete rows 0,1,2 → 23,24,25,26,27,28,29 + # File 3: 30-39, no deletes → 30-39 + expected = [1, 2, 3, 4, 5, 6, 7, 8] + [10, 11, 12, 13, 16, 17, 18, 19] + list(range(23, 30)) + list(range(30, 40)) + assert all_values == sorted(expected) + + +def test_concurrent_files_with_positional_deletes_and_limit(tmpdir: str) -> None: + """Test that concurrent_files with positional deletes respects the row limit.""" + # 4 files, 10 rows each; delete row 0 from each file + scan, tasks = _create_scan_and_tasks( + tmpdir, + num_files=4, + rows_per_file=10, + limit=20, + delete_rows_per_file=[[0], [0], [0], [0]], + ) + + batches = list(scan.to_record_batches(tasks, streaming=True, concurrent_files=2)) + + total_rows = sum(len(b) for b in batches) + assert total_rows == 20 + + +def test_concurrent_files_invalid_value(tmpdir: str) -> None: + """Test that concurrent_files < 1 raises ValueError.""" + scan, tasks = _create_scan_and_tasks(tmpdir, num_files=1, rows_per_file=10) + + with pytest.raises(ValueError, match="concurrent_files must be >= 1"): + list(scan.to_record_batches(tasks, streaming=True, concurrent_files=0)) + + def test_parse_location_defaults() -> None: """Test that parse_location uses defaults.""" From b360ae858dd4c0a26e1390680937622e8b6e8d5d Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Sat, 14 Feb 2026 18:32:24 -0800 Subject: [PATCH 06/29] fix: remove unused imports in test_bounded_concurrent_batches Co-Authored-By: Claude Opus 4.6 --- tests/io/test_bounded_concurrent_batches.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/io/test_bounded_concurrent_batches.py b/tests/io/test_bounded_concurrent_batches.py index 736808e4df..879720da71 100644 --- a/tests/io/test_bounded_concurrent_batches.py +++ b/tests/io/test_bounded_concurrent_batches.py @@ -206,7 +206,7 @@ def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: def test_concurrent_with_limit_via_arrowscan(tmpdir: str) -> None: """Test concurrent_files with limit through ArrowScan integration.""" from pyiceberg.expressions import AlwaysTrue - from pyiceberg.io.pyarrow import ArrowScan, PyArrowFileIO, schema_to_pyarrow, write_file + from pyiceberg.io.pyarrow import ArrowScan, PyArrowFileIO from pyiceberg.manifest import DataFileContent, FileFormat from pyiceberg.partitioning import PartitionSpec from pyiceberg.schema import Schema From 4186713319ad61fb79121a73bba54208e1a42474 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Mon, 16 Feb 2026 19:20:30 -0800 Subject: [PATCH 07/29] refactor: simplify _bounded_concurrent_batches with per-scan executor Replace shared ExecutorFactory + Semaphore with per-scan ThreadPoolExecutor(max_workers=concurrent_files) for deterministic shutdown and simpler concurrency control. Refactor to_record_batches into helpers: - _prepare_tasks_and_deletes: resolve delete files - _iter_batches_streaming: bounded concurrent streaming path - _iter_batches_materialized: executor.map materialization path - _apply_limit: unified row limit logic (was duplicated) Co-Authored-By: Claude Opus 4.6 --- pyiceberg/io/pyarrow.py | 162 ++++++++++---------- tests/io/test_bounded_concurrent_batches.py | 6 +- 2 files changed, 86 insertions(+), 82 deletions(-) diff --git a/pyiceberg/io/pyarrow.py b/pyiceberg/io/pyarrow.py index b89606ae8d..24af3d0223 100644 --- a/pyiceberg/io/pyarrow.py +++ b/pyiceberg/io/pyarrow.py @@ -40,6 +40,7 @@ import warnings from abc import ABC, abstractmethod from collections.abc import Callable, Generator, Iterable, Iterator +from concurrent.futures import ThreadPoolExecutor from copy import copy from dataclasses import dataclass from enum import Enum @@ -1695,9 +1696,9 @@ def _bounded_concurrent_batches( ) -> Generator[pa.RecordBatch, None, None]: """Read batches from multiple files concurrently with bounded memory. - Workers read from files in parallel (up to concurrent_files at a time) and push - batches into a shared queue. The consumer yields batches from the queue. - A sentinel value signals completion, avoiding timeout-based polling. + Uses a per-scan ThreadPoolExecutor(max_workers=concurrent_files) to naturally + bound concurrency. Workers push batches into a bounded queue which provides + backpressure when the consumer is slower than the producers. Args: tasks: The file scan tasks to process. @@ -1709,60 +1710,49 @@ def _bounded_concurrent_batches( return batch_queue: queue.Queue[pa.RecordBatch | BaseException | object] = queue.Queue(maxsize=max_buffered_batches) - cancel_event = threading.Event() - pending_count = len(tasks) - pending_lock = threading.Lock() - file_semaphore = threading.Semaphore(concurrent_files) + cancel = threading.Event() + remaining = len(tasks) + remaining_lock = threading.Lock() def worker(task: FileScanTask) -> None: - nonlocal pending_count + nonlocal remaining try: - # Blocking acquire — on cancellation, extra permits are released to unblock. - file_semaphore.acquire() - if cancel_event.is_set(): - return - for batch in batch_fn(task): - if cancel_event.is_set(): + if cancel.is_set(): return batch_queue.put(batch) except BaseException as e: - if not cancel_event.is_set(): + if not cancel.is_set(): batch_queue.put(e) finally: - file_semaphore.release() - with pending_lock: - pending_count -= 1 - if pending_count == 0: + with remaining_lock: + remaining -= 1 + if remaining == 0: batch_queue.put(_QUEUE_SENTINEL) - executor = ExecutorFactory.get_or_create() - futures = [executor.submit(worker, task) for task in tasks] + with ThreadPoolExecutor(max_workers=concurrent_files) as executor: + for task in tasks: + executor.submit(worker, task) - try: - while True: - item = batch_queue.get() + try: + while True: + item = batch_queue.get() - if item is _QUEUE_SENTINEL: - break + if item is _QUEUE_SENTINEL: + break - if isinstance(item, BaseException): - raise item - - yield item - finally: - cancel_event.set() - # Release semaphore permits to unblock any workers waiting on acquire() - for _ in range(len(tasks)): - file_semaphore.release() - # Drain the queue to unblock any workers stuck on put() - while not batch_queue.empty(): - try: - batch_queue.get_nowait() - except queue.Empty: - break - for future in futures: - future.cancel() + if isinstance(item, BaseException): + raise item + + yield item + finally: + cancel.set() + # Drain the queue to unblock any workers stuck on put() + while not batch_queue.empty(): + try: + batch_queue.get_nowait() + except queue.Empty: + break class ArrowScan: @@ -1889,52 +1879,66 @@ def to_record_batches( if concurrent_files < 1: raise ValueError(f"concurrent_files must be >= 1, got {concurrent_files}") - deletes_per_file = _read_all_delete_files(self._io, tasks) + task_list, deletes_per_file = self._prepare_tasks_and_deletes(tasks) if order == ScanOrder.ARRIVAL: - # Arrival order: read files with bounded concurrency, yielding batches as produced. - # When concurrent_files=1, this is sequential. When >1, batches may interleave across files. - task_list = list(tasks) - - def batch_fn(task: FileScanTask) -> Iterator[pa.RecordBatch]: - return self._record_batches_from_scan_tasks_and_deletes([task], deletes_per_file, batch_size) - - total_row_count = 0 - for batch in _bounded_concurrent_batches(task_list, batch_fn, concurrent_files): - current_batch_size = len(batch) - if self._limit is not None and total_row_count + current_batch_size >= self._limit: - yield batch.slice(0, self._limit - total_row_count) - return - yield batch - total_row_count += current_batch_size - return + return self._apply_limit(self._iter_batches_arrival(task_list, deletes_per_file, batch_size, concurrent_files)) - # Task order: existing behavior with executor.map + list() - total_row_count = 0 + return self._apply_limit(self._iter_batches_materialized(task_list, deletes_per_file, batch_size)) + + def _prepare_tasks_and_deletes( + self, tasks: Iterable[FileScanTask] + ) -> tuple[list[FileScanTask], dict[str, list[ChunkedArray]]]: + """Resolve delete files and return tasks as a list.""" + task_list = list(tasks) + deletes_per_file = _read_all_delete_files(self._io, task_list) + return task_list, deletes_per_file + + def _iter_batches_arrival( + self, + task_list: list[FileScanTask], + deletes_per_file: dict[str, list[ChunkedArray]], + batch_size: int | None, + concurrent_files: int, + ) -> Iterator[pa.RecordBatch]: + """Yield batches using bounded concurrent streaming in arrival order.""" + + def batch_fn(task: FileScanTask) -> Iterator[pa.RecordBatch]: + return self._record_batches_from_scan_tasks_and_deletes([task], deletes_per_file, batch_size) + + yield from _bounded_concurrent_batches(task_list, batch_fn, concurrent_files) + + def _iter_batches_materialized( + self, + task_list: list[FileScanTask], + deletes_per_file: dict[str, list[ChunkedArray]], + batch_size: int | None, + ) -> Iterator[pa.RecordBatch]: + """Yield batches using executor.map with full file materialization.""" executor = ExecutorFactory.get_or_create() def batches_for_task(task: FileScanTask) -> list[pa.RecordBatch]: - # Materialize the iterator here to ensure execution happens within the executor. - # Otherwise, the iterator would be lazily consumed later (in the main thread), - # defeating the purpose of using executor.map. return list(self._record_batches_from_scan_tasks_and_deletes([task], deletes_per_file, batch_size)) - limit_reached = False - for batches in executor.map(batches_for_task, tasks): - for batch in batches: - current_batch_size = len(batch) - if self._limit is not None and total_row_count + current_batch_size >= self._limit: - yield batch.slice(0, self._limit - total_row_count) + for batches in executor.map(batches_for_task, task_list): + yield from batches - limit_reached = True - break - else: - yield batch - total_row_count += current_batch_size + def _apply_limit(self, batches: Iterator[pa.RecordBatch]) -> Iterator[pa.RecordBatch]: + """Apply row limit across batches.""" + if self._limit is None: + yield from batches + return - if limit_reached: - # This break will also cancel all running tasks in the executor - break + total_row_count = 0 + for batch in batches: + remaining = self._limit - total_row_count + if remaining <= 0: + return + if len(batch) > remaining: + yield batch.slice(0, remaining) + return + yield batch + total_row_count += len(batch) def _record_batches_from_scan_tasks_and_deletes( self, tasks: Iterable[FileScanTask], deletes_per_file: dict[str, list[ChunkedArray]], batch_size: int | None = None diff --git a/tests/io/test_bounded_concurrent_batches.py b/tests/io/test_bounded_concurrent_batches.py index 879720da71..e80e7c1798 100644 --- a/tests/io/test_bounded_concurrent_batches.py +++ b/tests/io/test_bounded_concurrent_batches.py @@ -25,7 +25,7 @@ import pytest from pyiceberg.io.pyarrow import _bounded_concurrent_batches -from pyiceberg.table import FileScanTask +from pyiceberg.table import FileScanTask, ScanOrder def _make_task() -> FileScanTask: @@ -72,7 +72,7 @@ def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: assert total_rows == batches_per_file * len(tasks) * 10 # 3 batches * 4 files * 10 rows -def test_streaming_yields_incrementally() -> None: +def test_arrival_order_yields_incrementally() -> None: """Test that batches are yielded incrementally, not all at once.""" barrier = threading.Event() tasks = [_make_task(), _make_task()] @@ -253,6 +253,6 @@ def test_concurrent_with_limit_via_arrowscan(tmpdir: str) -> None: limit=150, ) - batches = list(scan.to_record_batches(tasks, streaming=True, concurrent_files=2)) + batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL, concurrent_files=2)) total_rows = sum(len(b) for b in batches) assert total_rows == 150 From 7c415d4fec40d07a86c8e823dcf56195c71dec9e Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Mon, 16 Feb 2026 21:06:46 -0800 Subject: [PATCH 08/29] refactor: replace streaming param with order=ScanOrder in concurrent tests and docs Co-Authored-By: Claude Opus 4.6 --- mkdocs/docs/api.md | 16 ++++++++++------ tests/io/test_pyarrow.py | 8 ++++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/mkdocs/docs/api.md b/mkdocs/docs/api.md index ec7fad20d3..4f357c8429 100644 --- a/mkdocs/docs/api.md +++ b/mkdocs/docs/api.md @@ -371,10 +371,12 @@ for buf in tbl.scan().to_arrow_batch_reader(order=ScanOrder.ARRIVAL, batch_size= print(f"Buffer contains {len(buf)} rows") ``` -For maximum throughput, use `concurrent_files` to read multiple files in parallel while streaming. Batches are yielded as they arrive from any file — ordering across files is not guaranteed: +For maximum throughput, use `concurrent_files` to read multiple files in parallel with arrival order. Batches are yielded as they arrive from any file — ordering across files is not guaranteed: ```python -for buf in tbl.scan().to_arrow_batch_reader(streaming=True, concurrent_files=4, batch_size=1000): +from pyiceberg.table import ScanOrder + +for buf in tbl.scan().to_arrow_batch_reader(order=ScanOrder.ARRIVAL, concurrent_files=4, batch_size=1000): print(f"Buffer contains {len(buf)} rows") ``` @@ -382,8 +384,8 @@ for buf in tbl.scan().to_arrow_batch_reader(streaming=True, concurrent_files=4, | Configuration | File ordering | Within-file ordering | |---|---|---| -| Default (`streaming=False`) | Batches grouped by file, in task submission order | Row order | -| `streaming=True` | Interleaved across files (no grouping guarantee) | Row order within each file | +| `ScanOrder.TASK` (default) | Batches grouped by file, in task submission order | Row order | +| `ScanOrder.ARRIVAL` | Interleaved across files (no grouping guarantee) | Row order within each file | Within each file, batch ordering always follows row order. The `limit` parameter is enforced correctly regardless of configuration. @@ -1671,13 +1673,15 @@ table.scan( ).to_arrow_batch_reader(order=ScanOrder.ARRIVAL) ``` -For concurrent file reads with streaming, use `concurrent_files`. Note that batch ordering across files is not guaranteed: +For concurrent file reads with arrival order, use `concurrent_files`. Note that batch ordering across files is not guaranteed: ```python +from pyiceberg.table import ScanOrder + table.scan( row_filter=GreaterThanOrEqual("trip_distance", 10.0), selected_fields=("VendorID", "tpep_pickup_datetime", "tpep_dropoff_datetime"), -).to_arrow_batch_reader(streaming=True, concurrent_files=4) +).to_arrow_batch_reader(order=ScanOrder.ARRIVAL, concurrent_files=4) ``` When using `concurrent_files > 1`, batches from different files may be interleaved. Within each file, batches are always in row order. See the ordering semantics table in the [Apache Arrow section](#apache-arrow) above for details. diff --git a/tests/io/test_pyarrow.py b/tests/io/test_pyarrow.py index c5aefa8d62..dd450c588e 100644 --- a/tests/io/test_pyarrow.py +++ b/tests/io/test_pyarrow.py @@ -3277,7 +3277,7 @@ def test_task_order_with_positional_deletes(tmpdir: str) -> None: def test_concurrent_files_with_positional_deletes(tmpdir: str) -> None: - """Test that streaming=True with concurrent_files correctly applies positional deletes.""" + """Test that order=ScanOrder.ARRIVAL with concurrent_files correctly applies positional deletes.""" # 4 files, 10 rows each; delete different rows per file scan, tasks = _create_scan_and_tasks( tmpdir, @@ -3286,7 +3286,7 @@ def test_concurrent_files_with_positional_deletes(tmpdir: str) -> None: delete_rows_per_file=[[0, 9], [4, 5], [0, 1, 2], []], ) - batches = list(scan.to_record_batches(tasks, streaming=True, concurrent_files=2)) + batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL, concurrent_files=2)) total_rows = sum(len(b) for b in batches) assert total_rows == 33 # 40 - 7 deletes @@ -3310,7 +3310,7 @@ def test_concurrent_files_with_positional_deletes_and_limit(tmpdir: str) -> None delete_rows_per_file=[[0], [0], [0], [0]], ) - batches = list(scan.to_record_batches(tasks, streaming=True, concurrent_files=2)) + batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL, concurrent_files=2)) total_rows = sum(len(b) for b in batches) assert total_rows == 20 @@ -3321,7 +3321,7 @@ def test_concurrent_files_invalid_value(tmpdir: str) -> None: scan, tasks = _create_scan_and_tasks(tmpdir, num_files=1, rows_per_file=10) with pytest.raises(ValueError, match="concurrent_files must be >= 1"): - list(scan.to_record_batches(tasks, streaming=True, concurrent_files=0)) + list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL, concurrent_files=0)) def test_parse_location_defaults() -> None: From 70d5a99c1dfddbd82f2abc728a45cce12a551162 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Sat, 14 Feb 2026 16:54:30 -0800 Subject: [PATCH 09/29] feat: add read throughput micro-benchmark for ArrowScan configurations --- tests/benchmark/test_read_benchmark.py | 160 +++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 tests/benchmark/test_read_benchmark.py diff --git a/tests/benchmark/test_read_benchmark.py b/tests/benchmark/test_read_benchmark.py new file mode 100644 index 0000000000..d4a0d3d2e3 --- /dev/null +++ b/tests/benchmark/test_read_benchmark.py @@ -0,0 +1,160 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +"""Read throughput micro-benchmark for ArrowScan configurations. + +Measures records/sec and peak Arrow memory across streaming, concurrent_files, +and batch_size configurations introduced for issue #3036. + +Memory is measured using pa.total_allocated_bytes() which tracks PyArrow's C++ +memory pool (Arrow buffers, Parquet decompression), not Python heap allocations. + +Run with: uv run pytest tests/benchmark/test_read_benchmark.py -v -s -m benchmark +""" + +import gc +import statistics +import timeit +from datetime import datetime, timezone + +import pyarrow as pa +import pyarrow.parquet as pq +import pytest + +from pyiceberg.catalog.sql import SqlCatalog +from pyiceberg.table import Table + +NUM_FILES = 32 +ROWS_PER_FILE = 500_000 +TOTAL_ROWS = NUM_FILES * ROWS_PER_FILE +NUM_RUNS = 3 + + +def _generate_parquet_file(path: str, num_rows: int, seed: int) -> pa.Schema: + """Write a synthetic Parquet file and return its schema.""" + table = pa.table( + { + "id": pa.array(range(seed, seed + num_rows), type=pa.int64()), + "value": pa.array([float(i) * 0.1 for i in range(num_rows)], type=pa.float64()), + "label": pa.array([f"row_{i}" for i in range(num_rows)], type=pa.string()), + "flag": pa.array([i % 2 == 0 for i in range(num_rows)], type=pa.bool_()), + "ts": pa.array([datetime.now(timezone.utc)] * num_rows, type=pa.timestamp("us", tz="UTC")), + } + ) + pq.write_table(table, path) + return table.schema + + +@pytest.fixture(scope="session") +def benchmark_table(tmp_path_factory: pytest.TempPathFactory) -> Table: + """Create a catalog and table with synthetic Parquet files for benchmarking.""" + warehouse_path = str(tmp_path_factory.mktemp("benchmark_warehouse")) + catalog = SqlCatalog( + "benchmark", + uri=f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", + warehouse=f"file://{warehouse_path}", + ) + catalog.create_namespace("default") + + # Generate files and append to table + table = None + for i in range(NUM_FILES): + file_path = f"{warehouse_path}/data_{i}.parquet" + _generate_parquet_file(file_path, ROWS_PER_FILE, seed=i * ROWS_PER_FILE) + + file_table = pq.read_table(file_path) + if table is None: + table = catalog.create_table("default.benchmark_read", schema=file_table.schema) + table.append(file_table) + + assert table is not None + return table + + +@pytest.mark.benchmark +@pytest.mark.parametrize( + "streaming,concurrent_files,batch_size", + [ + pytest.param(False, 1, None, id="default"), + pytest.param(True, 1, None, id="streaming-cf1"), + pytest.param(True, 2, None, id="streaming-cf2"), + pytest.param(True, 4, None, id="streaming-cf4"), + pytest.param(True, 8, None, id="streaming-cf8"), + pytest.param(True, 16, None, id="streaming-cf16"), + ], +) +def test_read_throughput( + benchmark_table: Table, + streaming: bool, + concurrent_files: int, + batch_size: int | None, +) -> None: + """Measure records/sec and peak Arrow memory for a scan configuration.""" + effective_batch_size = batch_size or 131_072 # PyArrow default + if streaming: + config_str = f"streaming=True, concurrent_files={concurrent_files}, batch_size={effective_batch_size}" + else: + config_str = f"streaming=False (executor.map, all files parallel), batch_size={effective_batch_size}" + print(f"\n--- ArrowScan Read Throughput Benchmark ---") + print(f"Config: {config_str}") + print(f" Files: {NUM_FILES}, Rows per file: {ROWS_PER_FILE}, Total rows: {TOTAL_ROWS}") + + elapsed_times: list[float] = [] + throughputs: list[float] = [] + peak_memories: list[int] = [] + + for run in range(NUM_RUNS): + # Measure throughput + gc.collect() + pa.default_memory_pool().release_unused() + baseline_mem = pa.total_allocated_bytes() + peak_mem = baseline_mem + + start = timeit.default_timer() + total_rows = 0 + for batch in benchmark_table.scan().to_arrow_batch_reader( + batch_size=batch_size, + streaming=streaming, + concurrent_files=concurrent_files, + ): + total_rows += len(batch) + current_mem = pa.total_allocated_bytes() + if current_mem > peak_mem: + peak_mem = current_mem + elapsed = timeit.default_timer() - start + + peak_above_baseline = peak_mem - baseline_mem + rows_per_sec = total_rows / elapsed if elapsed > 0 else 0 + elapsed_times.append(elapsed) + throughputs.append(rows_per_sec) + peak_memories.append(peak_above_baseline) + + print( + f" Run {run + 1}: {elapsed:.2f}s, {rows_per_sec:,.0f} rows/s, " + f"peak arrow mem: {peak_above_baseline / (1024 * 1024):.1f} MB" + ) + + assert total_rows == TOTAL_ROWS, f"Expected {TOTAL_ROWS} rows, got {total_rows}" + + mean_elapsed = statistics.mean(elapsed_times) + stdev_elapsed = statistics.stdev(elapsed_times) if len(elapsed_times) > 1 else 0.0 + mean_throughput = statistics.mean(throughputs) + mean_peak_mem = statistics.mean(peak_memories) + + print( + f" Mean: {mean_elapsed:.2f}s ± {stdev_elapsed:.2f}s, {mean_throughput:,.0f} rows/s, " + f"peak arrow mem: {mean_peak_mem / (1024 * 1024):.1f} MB" + ) From 2e044ea04347a848222079688a4e3ccd7c499486 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Sat, 14 Feb 2026 18:32:36 -0800 Subject: [PATCH 10/29] fix: remove extraneous f-string prefix in benchmark Co-Authored-By: Claude Opus 4.6 --- tests/benchmark/test_read_benchmark.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/benchmark/test_read_benchmark.py b/tests/benchmark/test_read_benchmark.py index d4a0d3d2e3..7d85ecde29 100644 --- a/tests/benchmark/test_read_benchmark.py +++ b/tests/benchmark/test_read_benchmark.py @@ -108,7 +108,7 @@ def test_read_throughput( config_str = f"streaming=True, concurrent_files={concurrent_files}, batch_size={effective_batch_size}" else: config_str = f"streaming=False (executor.map, all files parallel), batch_size={effective_batch_size}" - print(f"\n--- ArrowScan Read Throughput Benchmark ---") + print("\n--- ArrowScan Read Throughput Benchmark ---") print(f"Config: {config_str}") print(f" Files: {NUM_FILES}, Rows per file: {ROWS_PER_FILE}, Total rows: {TOTAL_ROWS}") From 8dcd240b92bc6189f734dc61dee7e93147b9ab99 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Sat, 14 Feb 2026 18:52:30 -0800 Subject: [PATCH 11/29] fix: properly reset mock call_count in test_hive_wait_for_lock Setting `mock.call_count = 0` does not actually reset the mock's internal call tracking, causing the second assertion to see accumulated calls from both test phases. Use `reset_mock()` instead. Co-Authored-By: Claude Opus 4.6 --- tests/catalog/test_hive.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/catalog/test_hive.py b/tests/catalog/test_hive.py index 88b653e44f..a8c0c943da 100644 --- a/tests/catalog/test_hive.py +++ b/tests/catalog/test_hive.py @@ -1314,8 +1314,8 @@ def test_hive_wait_for_lock() -> None: assert catalog._client.check_lock.call_count == 3 # lock wait should exit with WaitingForLockException finally after enough retries + catalog._client.check_lock.reset_mock() catalog._client.check_lock.side_effect = [waiting for _ in range(10)] - catalog._client.check_lock.call_count = 0 with pytest.raises(WaitingForLockException): catalog._wait_for_lock("db", "tbl", lockid, catalog._client) assert catalog._client.check_lock.call_count == 5 From 4a0a43019c42d74af80dea075ecbca22ad49d567 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Sun, 15 Feb 2026 05:06:19 -0800 Subject: [PATCH 12/29] feat: add default-4threads benchmark and time-to-first-record metric Add a parametrized benchmark case for default (executor.map) with max_workers=4 to compare memory/throughput against unbounded threading. Add TTFR (time to first record) measurement across all configurations. Co-Authored-By: Claude Opus 4.6 --- tests/benchmark/test_read_benchmark.py | 109 +++++++++++++++---------- 1 file changed, 67 insertions(+), 42 deletions(-) diff --git a/tests/benchmark/test_read_benchmark.py b/tests/benchmark/test_read_benchmark.py index 7d85ecde29..1b02c4dfb4 100644 --- a/tests/benchmark/test_read_benchmark.py +++ b/tests/benchmark/test_read_benchmark.py @@ -86,14 +86,15 @@ def benchmark_table(tmp_path_factory: pytest.TempPathFactory) -> Table: @pytest.mark.benchmark @pytest.mark.parametrize( - "streaming,concurrent_files,batch_size", + "streaming,concurrent_files,batch_size,max_workers", [ - pytest.param(False, 1, None, id="default"), - pytest.param(True, 1, None, id="streaming-cf1"), - pytest.param(True, 2, None, id="streaming-cf2"), - pytest.param(True, 4, None, id="streaming-cf4"), - pytest.param(True, 8, None, id="streaming-cf8"), - pytest.param(True, 16, None, id="streaming-cf16"), + pytest.param(False, 1, None, None, id="default"), + pytest.param(False, 1, None, 4, id="default-4threads"), + pytest.param(True, 1, None, None, id="streaming-cf1"), + pytest.param(True, 2, None, None, id="streaming-cf2"), + pytest.param(True, 4, None, None, id="streaming-cf4"), + pytest.param(True, 8, None, None, id="streaming-cf8"), + pytest.param(True, 16, None, None, id="streaming-cf16"), ], ) def test_read_throughput( @@ -101,13 +102,17 @@ def test_read_throughput( streaming: bool, concurrent_files: int, batch_size: int | None, + max_workers: int | None, ) -> None: - """Measure records/sec and peak Arrow memory for a scan configuration.""" + """Measure records/sec, time to first record, and peak Arrow memory for a scan configuration.""" + from pyiceberg.utils.concurrent import ExecutorFactory + effective_batch_size = batch_size or 131_072 # PyArrow default if streaming: config_str = f"streaming=True, concurrent_files={concurrent_files}, batch_size={effective_batch_size}" else: - config_str = f"streaming=False (executor.map, all files parallel), batch_size={effective_batch_size}" + workers_str = f", max_workers={max_workers}" if max_workers else "" + config_str = f"streaming=False (executor.map, all files parallel), batch_size={effective_batch_size}{workers_str}" print("\n--- ArrowScan Read Throughput Benchmark ---") print(f"Config: {config_str}") print(f" Files: {NUM_FILES}, Rows per file: {ROWS_PER_FILE}, Total rows: {TOTAL_ROWS}") @@ -115,46 +120,66 @@ def test_read_throughput( elapsed_times: list[float] = [] throughputs: list[float] = [] peak_memories: list[int] = [] - - for run in range(NUM_RUNS): - # Measure throughput - gc.collect() - pa.default_memory_pool().release_unused() - baseline_mem = pa.total_allocated_bytes() - peak_mem = baseline_mem - - start = timeit.default_timer() - total_rows = 0 - for batch in benchmark_table.scan().to_arrow_batch_reader( - batch_size=batch_size, - streaming=streaming, - concurrent_files=concurrent_files, - ): - total_rows += len(batch) - current_mem = pa.total_allocated_bytes() - if current_mem > peak_mem: - peak_mem = current_mem - elapsed = timeit.default_timer() - start - - peak_above_baseline = peak_mem - baseline_mem - rows_per_sec = total_rows / elapsed if elapsed > 0 else 0 - elapsed_times.append(elapsed) - throughputs.append(rows_per_sec) - peak_memories.append(peak_above_baseline) - - print( - f" Run {run + 1}: {elapsed:.2f}s, {rows_per_sec:,.0f} rows/s, " - f"peak arrow mem: {peak_above_baseline / (1024 * 1024):.1f} MB" - ) - - assert total_rows == TOTAL_ROWS, f"Expected {TOTAL_ROWS} rows, got {total_rows}" + ttfr_times: list[float] = [] + + # Override max_workers if specified + original_instance = None + if max_workers is not None: + from concurrent.futures import ThreadPoolExecutor + + original_instance = ExecutorFactory._instance + ExecutorFactory._instance = ThreadPoolExecutor(max_workers=max_workers) + + try: + for run in range(NUM_RUNS): + # Measure throughput + gc.collect() + pa.default_memory_pool().release_unused() + baseline_mem = pa.total_allocated_bytes() + peak_mem = baseline_mem + + start = timeit.default_timer() + total_rows = 0 + first_batch_time = None + for batch in benchmark_table.scan().to_arrow_batch_reader( + batch_size=batch_size, + streaming=streaming, + concurrent_files=concurrent_files, + ): + if first_batch_time is None: + first_batch_time = timeit.default_timer() - start + total_rows += len(batch) + current_mem = pa.total_allocated_bytes() + if current_mem > peak_mem: + peak_mem = current_mem + elapsed = timeit.default_timer() - start + + peak_above_baseline = peak_mem - baseline_mem + rows_per_sec = total_rows / elapsed if elapsed > 0 else 0 + elapsed_times.append(elapsed) + throughputs.append(rows_per_sec) + peak_memories.append(peak_above_baseline) + ttfr_times.append(first_batch_time or 0.0) + + print( + f" Run {run + 1}: {elapsed:.2f}s, {rows_per_sec:,.0f} rows/s, " + f"TTFR: {(first_batch_time or 0) * 1000:.1f}ms, " + f"peak arrow mem: {peak_above_baseline / (1024 * 1024):.1f} MB" + ) + + assert total_rows == TOTAL_ROWS, f"Expected {TOTAL_ROWS} rows, got {total_rows}" + finally: + if original_instance is not None: + ExecutorFactory._instance = original_instance mean_elapsed = statistics.mean(elapsed_times) stdev_elapsed = statistics.stdev(elapsed_times) if len(elapsed_times) > 1 else 0.0 mean_throughput = statistics.mean(throughputs) mean_peak_mem = statistics.mean(peak_memories) + mean_ttfr = statistics.mean(ttfr_times) print( f" Mean: {mean_elapsed:.2f}s ± {stdev_elapsed:.2f}s, {mean_throughput:,.0f} rows/s, " + f"TTFR: {mean_ttfr * 1000:.1f}ms, " f"peak arrow mem: {mean_peak_mem / (1024 * 1024):.1f} MB" ) From 2efdcbabf72bb731cf3d447375429bb83e030c6e Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Sun, 15 Feb 2026 05:15:37 -0800 Subject: [PATCH 13/29] chore: remove default-4threads benchmark configuration Co-Authored-By: Claude Opus 4.6 --- tests/benchmark/test_read_benchmark.py | 107 +++++++++++-------------- 1 file changed, 45 insertions(+), 62 deletions(-) diff --git a/tests/benchmark/test_read_benchmark.py b/tests/benchmark/test_read_benchmark.py index 1b02c4dfb4..b59f7f7b5f 100644 --- a/tests/benchmark/test_read_benchmark.py +++ b/tests/benchmark/test_read_benchmark.py @@ -86,15 +86,14 @@ def benchmark_table(tmp_path_factory: pytest.TempPathFactory) -> Table: @pytest.mark.benchmark @pytest.mark.parametrize( - "streaming,concurrent_files,batch_size,max_workers", + "streaming,concurrent_files,batch_size", [ - pytest.param(False, 1, None, None, id="default"), - pytest.param(False, 1, None, 4, id="default-4threads"), - pytest.param(True, 1, None, None, id="streaming-cf1"), - pytest.param(True, 2, None, None, id="streaming-cf2"), - pytest.param(True, 4, None, None, id="streaming-cf4"), - pytest.param(True, 8, None, None, id="streaming-cf8"), - pytest.param(True, 16, None, None, id="streaming-cf16"), + pytest.param(False, 1, None, id="default"), + pytest.param(True, 1, None, id="streaming-cf1"), + pytest.param(True, 2, None, id="streaming-cf2"), + pytest.param(True, 4, None, id="streaming-cf4"), + pytest.param(True, 8, None, id="streaming-cf8"), + pytest.param(True, 16, None, id="streaming-cf16"), ], ) def test_read_throughput( @@ -102,17 +101,13 @@ def test_read_throughput( streaming: bool, concurrent_files: int, batch_size: int | None, - max_workers: int | None, ) -> None: """Measure records/sec, time to first record, and peak Arrow memory for a scan configuration.""" - from pyiceberg.utils.concurrent import ExecutorFactory - effective_batch_size = batch_size or 131_072 # PyArrow default if streaming: config_str = f"streaming=True, concurrent_files={concurrent_files}, batch_size={effective_batch_size}" else: - workers_str = f", max_workers={max_workers}" if max_workers else "" - config_str = f"streaming=False (executor.map, all files parallel), batch_size={effective_batch_size}{workers_str}" + config_str = f"streaming=False (executor.map, all files parallel), batch_size={effective_batch_size}" print("\n--- ArrowScan Read Throughput Benchmark ---") print(f"Config: {config_str}") print(f" Files: {NUM_FILES}, Rows per file: {ROWS_PER_FILE}, Total rows: {TOTAL_ROWS}") @@ -122,55 +117,43 @@ def test_read_throughput( peak_memories: list[int] = [] ttfr_times: list[float] = [] - # Override max_workers if specified - original_instance = None - if max_workers is not None: - from concurrent.futures import ThreadPoolExecutor - - original_instance = ExecutorFactory._instance - ExecutorFactory._instance = ThreadPoolExecutor(max_workers=max_workers) - - try: - for run in range(NUM_RUNS): - # Measure throughput - gc.collect() - pa.default_memory_pool().release_unused() - baseline_mem = pa.total_allocated_bytes() - peak_mem = baseline_mem - - start = timeit.default_timer() - total_rows = 0 - first_batch_time = None - for batch in benchmark_table.scan().to_arrow_batch_reader( - batch_size=batch_size, - streaming=streaming, - concurrent_files=concurrent_files, - ): - if first_batch_time is None: - first_batch_time = timeit.default_timer() - start - total_rows += len(batch) - current_mem = pa.total_allocated_bytes() - if current_mem > peak_mem: - peak_mem = current_mem - elapsed = timeit.default_timer() - start - - peak_above_baseline = peak_mem - baseline_mem - rows_per_sec = total_rows / elapsed if elapsed > 0 else 0 - elapsed_times.append(elapsed) - throughputs.append(rows_per_sec) - peak_memories.append(peak_above_baseline) - ttfr_times.append(first_batch_time or 0.0) - - print( - f" Run {run + 1}: {elapsed:.2f}s, {rows_per_sec:,.0f} rows/s, " - f"TTFR: {(first_batch_time or 0) * 1000:.1f}ms, " - f"peak arrow mem: {peak_above_baseline / (1024 * 1024):.1f} MB" - ) - - assert total_rows == TOTAL_ROWS, f"Expected {TOTAL_ROWS} rows, got {total_rows}" - finally: - if original_instance is not None: - ExecutorFactory._instance = original_instance + for run in range(NUM_RUNS): + # Measure throughput + gc.collect() + pa.default_memory_pool().release_unused() + baseline_mem = pa.total_allocated_bytes() + peak_mem = baseline_mem + + start = timeit.default_timer() + total_rows = 0 + first_batch_time = None + for batch in benchmark_table.scan().to_arrow_batch_reader( + batch_size=batch_size, + streaming=streaming, + concurrent_files=concurrent_files, + ): + if first_batch_time is None: + first_batch_time = timeit.default_timer() - start + total_rows += len(batch) + current_mem = pa.total_allocated_bytes() + if current_mem > peak_mem: + peak_mem = current_mem + elapsed = timeit.default_timer() - start + + peak_above_baseline = peak_mem - baseline_mem + rows_per_sec = total_rows / elapsed if elapsed > 0 else 0 + elapsed_times.append(elapsed) + throughputs.append(rows_per_sec) + peak_memories.append(peak_above_baseline) + ttfr_times.append(first_batch_time or 0.0) + + print( + f" Run {run + 1}: {elapsed:.2f}s, {rows_per_sec:,.0f} rows/s, " + f"TTFR: {(first_batch_time or 0) * 1000:.1f}ms, " + f"peak arrow mem: {peak_above_baseline / (1024 * 1024):.1f} MB" + ) + + assert total_rows == TOTAL_ROWS, f"Expected {TOTAL_ROWS} rows, got {total_rows}" mean_elapsed = statistics.mean(elapsed_times) stdev_elapsed = statistics.stdev(elapsed_times) if len(elapsed_times) > 1 else 0.0 From 09aad7ad7c7fdb044e78a990bf1d98bf421e3851 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Mon, 16 Feb 2026 19:22:32 -0800 Subject: [PATCH 14/29] docs: add configuration guidance table to streaming API docs Add a "which config should I use?" tip box with recommended starting points for common use cases, and clarify that batch_size is an advanced tuning knob. Co-Authored-By: Claude Opus 4.6 --- mkdocs/docs/api.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mkdocs/docs/api.md b/mkdocs/docs/api.md index 4f357c8429..ae81117b94 100644 --- a/mkdocs/docs/api.md +++ b/mkdocs/docs/api.md @@ -389,6 +389,17 @@ for buf in tbl.scan().to_arrow_batch_reader(order=ScanOrder.ARRIVAL, concurrent_ Within each file, batch ordering always follows row order. The `limit` parameter is enforced correctly regardless of configuration. +!!! tip "Which configuration should I use?" + + | Use case | Recommended config | + |---|---| + | Small tables, simple queries | Default — no extra args needed | + | Large tables, memory-constrained | `streaming=True` — one file at a time, minimal memory | + | Maximum throughput with bounded memory | `streaming=True, concurrent_files=N` — tune N to balance throughput vs memory | + | Fine-grained batch control | Add `batch_size=N` to any of the above | + + **Note:** `streaming=True` yields batches in arrival order (interleaved across files when `concurrent_files > 1`). For deterministic file ordering, use the default non-streaming mode. `batch_size` is usually an advanced tuning knob — the PyArrow default of 131,072 rows works well for most workloads. + To avoid any type inconsistencies during writing, you can convert the Iceberg table schema to Arrow: ```python From b2ae7258f94106fe97a17ef0dab8306675b7c853 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Mon, 16 Feb 2026 19:29:08 -0800 Subject: [PATCH 15/29] chore: remove benchmark marker so tests run in CI Remove @pytest.mark.benchmark so the read throughput tests are included in the default `make test` filter as parametrize-marked tests. Co-Authored-By: Claude Opus 4.6 --- mkdocs/docs/api.md | 16 ++++++++-------- tests/benchmark/test_read_benchmark.py | 3 +-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/mkdocs/docs/api.md b/mkdocs/docs/api.md index ae81117b94..9ac810634e 100644 --- a/mkdocs/docs/api.md +++ b/mkdocs/docs/api.md @@ -389,16 +389,16 @@ for buf in tbl.scan().to_arrow_batch_reader(order=ScanOrder.ARRIVAL, concurrent_ Within each file, batch ordering always follows row order. The `limit` parameter is enforced correctly regardless of configuration. -!!! tip "Which configuration should I use?" +**Which configuration should I use?** - | Use case | Recommended config | - |---|---| - | Small tables, simple queries | Default — no extra args needed | - | Large tables, memory-constrained | `streaming=True` — one file at a time, minimal memory | - | Maximum throughput with bounded memory | `streaming=True, concurrent_files=N` — tune N to balance throughput vs memory | - | Fine-grained batch control | Add `batch_size=N` to any of the above | +| Use case | Recommended config | +|---|---| +| Small tables, simple queries | Default — no extra args needed | +| Large tables, memory-constrained | `streaming=True` — one file at a time, minimal memory | +| Maximum throughput with bounded memory | `streaming=True, concurrent_files=N` — tune N to balance throughput vs memory | +| Fine-grained batch control | Add `batch_size=N` to any of the above | - **Note:** `streaming=True` yields batches in arrival order (interleaved across files when `concurrent_files > 1`). For deterministic file ordering, use the default non-streaming mode. `batch_size` is usually an advanced tuning knob — the PyArrow default of 131,072 rows works well for most workloads. +**Note:** `streaming=True` yields batches in arrival order (interleaved across files when `concurrent_files > 1`). For deterministic file ordering, use the default non-streaming mode. `batch_size` is usually an advanced tuning knob — the PyArrow default of 131,072 rows works well for most workloads. To avoid any type inconsistencies during writing, you can convert the Iceberg table schema to Arrow: diff --git a/tests/benchmark/test_read_benchmark.py b/tests/benchmark/test_read_benchmark.py index b59f7f7b5f..cf44843c7c 100644 --- a/tests/benchmark/test_read_benchmark.py +++ b/tests/benchmark/test_read_benchmark.py @@ -22,7 +22,7 @@ Memory is measured using pa.total_allocated_bytes() which tracks PyArrow's C++ memory pool (Arrow buffers, Parquet decompression), not Python heap allocations. -Run with: uv run pytest tests/benchmark/test_read_benchmark.py -v -s -m benchmark +Run with: uv run pytest tests/benchmark/test_read_benchmark.py -v -s """ import gc @@ -84,7 +84,6 @@ def benchmark_table(tmp_path_factory: pytest.TempPathFactory) -> Table: return table -@pytest.mark.benchmark @pytest.mark.parametrize( "streaming,concurrent_files,batch_size", [ From afb244c0997acc519ef67bf9b652f42bc8a15ea7 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Mon, 16 Feb 2026 21:07:22 -0800 Subject: [PATCH 16/29] refactor: replace streaming param with order=ScanOrder in benchmarks and docs Co-Authored-By: Claude Opus 4.6 --- mkdocs/docs/api.md | 6 +++--- tests/benchmark/test_read_benchmark.py | 28 +++++++++++++------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/mkdocs/docs/api.md b/mkdocs/docs/api.md index 9ac810634e..6c439f5fed 100644 --- a/mkdocs/docs/api.md +++ b/mkdocs/docs/api.md @@ -394,11 +394,11 @@ Within each file, batch ordering always follows row order. The `limit` parameter | Use case | Recommended config | |---|---| | Small tables, simple queries | Default — no extra args needed | -| Large tables, memory-constrained | `streaming=True` — one file at a time, minimal memory | -| Maximum throughput with bounded memory | `streaming=True, concurrent_files=N` — tune N to balance throughput vs memory | +| Large tables, memory-constrained | `order=ScanOrder.ARRIVAL` — one file at a time, minimal memory | +| Maximum throughput with bounded memory | `order=ScanOrder.ARRIVAL, concurrent_files=N` — tune N to balance throughput vs memory | | Fine-grained batch control | Add `batch_size=N` to any of the above | -**Note:** `streaming=True` yields batches in arrival order (interleaved across files when `concurrent_files > 1`). For deterministic file ordering, use the default non-streaming mode. `batch_size` is usually an advanced tuning knob — the PyArrow default of 131,072 rows works well for most workloads. +**Note:** `ScanOrder.ARRIVAL` yields batches in arrival order (interleaved across files when `concurrent_files > 1`). For deterministic file ordering, use the default `ScanOrder.TASK` mode. `batch_size` is usually an advanced tuning knob — the PyArrow default of 131,072 rows works well for most workloads. To avoid any type inconsistencies during writing, you can convert the Iceberg table schema to Arrow: diff --git a/tests/benchmark/test_read_benchmark.py b/tests/benchmark/test_read_benchmark.py index cf44843c7c..809c106dd1 100644 --- a/tests/benchmark/test_read_benchmark.py +++ b/tests/benchmark/test_read_benchmark.py @@ -16,7 +16,7 @@ # under the License. """Read throughput micro-benchmark for ArrowScan configurations. -Measures records/sec and peak Arrow memory across streaming, concurrent_files, +Measures records/sec and peak Arrow memory across ScanOrder, concurrent_files, and batch_size configurations introduced for issue #3036. Memory is measured using pa.total_allocated_bytes() which tracks PyArrow's C++ @@ -35,7 +35,7 @@ import pytest from pyiceberg.catalog.sql import SqlCatalog -from pyiceberg.table import Table +from pyiceberg.table import ScanOrder, Table NUM_FILES = 32 ROWS_PER_FILE = 500_000 @@ -85,28 +85,28 @@ def benchmark_table(tmp_path_factory: pytest.TempPathFactory) -> Table: @pytest.mark.parametrize( - "streaming,concurrent_files,batch_size", + "order,concurrent_files,batch_size", [ - pytest.param(False, 1, None, id="default"), - pytest.param(True, 1, None, id="streaming-cf1"), - pytest.param(True, 2, None, id="streaming-cf2"), - pytest.param(True, 4, None, id="streaming-cf4"), - pytest.param(True, 8, None, id="streaming-cf8"), - pytest.param(True, 16, None, id="streaming-cf16"), + pytest.param(ScanOrder.TASK, 1, None, id="default"), + pytest.param(ScanOrder.ARRIVAL, 1, None, id="arrival-cf1"), + pytest.param(ScanOrder.ARRIVAL, 2, None, id="arrival-cf2"), + pytest.param(ScanOrder.ARRIVAL, 4, None, id="arrival-cf4"), + pytest.param(ScanOrder.ARRIVAL, 8, None, id="arrival-cf8"), + pytest.param(ScanOrder.ARRIVAL, 16, None, id="arrival-cf16"), ], ) def test_read_throughput( benchmark_table: Table, - streaming: bool, + order: ScanOrder, concurrent_files: int, batch_size: int | None, ) -> None: """Measure records/sec, time to first record, and peak Arrow memory for a scan configuration.""" effective_batch_size = batch_size or 131_072 # PyArrow default - if streaming: - config_str = f"streaming=True, concurrent_files={concurrent_files}, batch_size={effective_batch_size}" + if order == ScanOrder.ARRIVAL: + config_str = f"order=ARRIVAL, concurrent_files={concurrent_files}, batch_size={effective_batch_size}" else: - config_str = f"streaming=False (executor.map, all files parallel), batch_size={effective_batch_size}" + config_str = f"order=TASK (executor.map, all files parallel), batch_size={effective_batch_size}" print("\n--- ArrowScan Read Throughput Benchmark ---") print(f"Config: {config_str}") print(f" Files: {NUM_FILES}, Rows per file: {ROWS_PER_FILE}, Total rows: {TOTAL_ROWS}") @@ -128,7 +128,7 @@ def test_read_throughput( first_batch_time = None for batch in benchmark_table.scan().to_arrow_batch_reader( batch_size=batch_size, - streaming=streaming, + order=order, concurrent_files=concurrent_files, ): if first_batch_time is None: From 03bda3daca1b0fa6cac41695920573bf721e9423 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Wed, 18 Feb 2026 12:34:33 -0800 Subject: [PATCH 17/29] refactor: Replace ScanOrder enum with class hierarchy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace ScanOrder(str, Enum) with: - ScanOrder(ABC): Base class for ordering strategies - TaskOrder(ScanOrder): Default behavior, preserves existing API - ArrivalOrder(ScanOrder): Encapsulates concurrent_streams and max_buffered_batches This addresses reviewer feedback about unused parameters and improves type safety. Parameters are now scoped to their appropriate ordering mode. Rename concurrent_files → concurrent_streams for clarity. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- pyiceberg/io/pyarrow.py | 47 +++++++++++++++------------------ pyiceberg/table/__init__.py | 52 +++++++++++++++++++++++-------------- 2 files changed, 53 insertions(+), 46 deletions(-) diff --git a/pyiceberg/io/pyarrow.py b/pyiceberg/io/pyarrow.py index 24af3d0223..35c5562560 100644 --- a/pyiceberg/io/pyarrow.py +++ b/pyiceberg/io/pyarrow.py @@ -144,7 +144,7 @@ visit, visit_with_partner, ) -from pyiceberg.table import DOWNCAST_NS_TIMESTAMP_TO_US_ON_WRITE, ScanOrder, TableProperties +from pyiceberg.table import DOWNCAST_NS_TIMESTAMP_TO_US_ON_WRITE, ScanOrder, TaskOrder, ArrivalOrder, TableProperties from pyiceberg.table.locations import load_location_provider from pyiceberg.table.metadata import TableMetadata from pyiceberg.table.name_mapping import NameMapping, apply_name_mapping @@ -1691,19 +1691,19 @@ def _read_all_delete_files(io: FileIO, tasks: Iterable[FileScanTask]) -> dict[st def _bounded_concurrent_batches( tasks: list[FileScanTask], batch_fn: Callable[[FileScanTask], Iterator[pa.RecordBatch]], - concurrent_files: int, + concurrent_streams: int, max_buffered_batches: int = 16, ) -> Generator[pa.RecordBatch, None, None]: """Read batches from multiple files concurrently with bounded memory. - Uses a per-scan ThreadPoolExecutor(max_workers=concurrent_files) to naturally + Uses a per-scan ThreadPoolExecutor(max_workers=concurrent_streams) to naturally bound concurrency. Workers push batches into a bounded queue which provides backpressure when the consumer is slower than the producers. Args: tasks: The file scan tasks to process. batch_fn: A callable that takes a FileScanTask and returns an iterator of RecordBatches. - concurrent_files: Maximum number of files to read concurrently. + concurrent_streams: Maximum number of concurrent read streams. max_buffered_batches: Maximum number of batches to buffer in the queue. """ if not tasks: @@ -1730,7 +1730,7 @@ def worker(task: FileScanTask) -> None: if remaining == 0: batch_queue.put(_QUEUE_SENTINEL) - with ThreadPoolExecutor(max_workers=concurrent_files) as executor: + with ThreadPoolExecutor(max_workers=concurrent_streams) as executor: for task in tasks: executor.submit(worker, task) @@ -1838,8 +1838,7 @@ def to_record_batches( self, tasks: Iterable[FileScanTask], batch_size: int | None = None, - order: ScanOrder = ScanOrder.TASK, - concurrent_files: int = 1, + order: ScanOrder = TaskOrder(), ) -> Iterator[pa.RecordBatch]: """Scan the Iceberg table and return an Iterator[pa.RecordBatch]. @@ -1848,21 +1847,17 @@ def to_record_batches( Only data that matches the provided row_filter expression is returned. Ordering semantics: - - ScanOrder.TASK (default): Batches are grouped by file in task submission order. - - ScanOrder.ARRIVAL: Batches may be interleaved across files. Within each file, - batch ordering follows row order. + - TaskOrder() (default): Yields batches one file at a time in task submission order. + - ArrivalOrder(): Batches may be interleaved across files as they arrive. + Within each file, batch ordering follows row order. Args: tasks: FileScanTasks representing the data files and delete files to read from. batch_size: The number of rows per batch. If None, PyArrow's default is used. order: Controls the order in which record batches are returned. - ScanOrder.TASK (default) returns batches in task order, with each task - fully materialized before proceeding to the next. Allows parallel file - reads via executor. ScanOrder.ARRIVAL yields batches as they are - produced without materializing entire files into memory. - concurrent_files: Number of files to read concurrently when order=ScanOrder.ARRIVAL. - Must be >= 1. When > 1, batches may arrive interleaved across files. - Ignored when order=ScanOrder.TASK. + TaskOrder() (default) yields batches one file at a time in task order. + ArrivalOrder(concurrent_streams=N, max_buffered_batches=M) yields batches + as they are produced without materializing entire files into memory. Returns: An Iterator of PyArrow RecordBatches. @@ -1871,18 +1866,17 @@ def to_record_batches( Raises: ResolveError: When a required field cannot be found in the file ValueError: When a field type in the file cannot be projected to the schema type, - or when an invalid order value is provided, or when concurrent_files < 1. + or when an invalid order value is provided, or when concurrent_streams < 1. """ if not isinstance(order, ScanOrder): - raise ValueError(f"Invalid order: {order!r}. Must be a ScanOrder enum value (ScanOrder.TASK or ScanOrder.ARRIVAL).") - - if concurrent_files < 1: - raise ValueError(f"concurrent_files must be >= 1, got {concurrent_files}") + raise ValueError(f"Invalid order: {order!r}. Must be a ScanOrder instance (TaskOrder() or ArrivalOrder()).") task_list, deletes_per_file = self._prepare_tasks_and_deletes(tasks) - if order == ScanOrder.ARRIVAL: - return self._apply_limit(self._iter_batches_arrival(task_list, deletes_per_file, batch_size, concurrent_files)) + if isinstance(order, ArrivalOrder): + if order.concurrent_streams < 1: + raise ValueError(f"concurrent_streams must be >= 1, got {order.concurrent_streams}") + return self._apply_limit(self._iter_batches_arrival(task_list, deletes_per_file, batch_size, order.concurrent_streams, order.max_buffered_batches)) return self._apply_limit(self._iter_batches_materialized(task_list, deletes_per_file, batch_size)) @@ -1899,14 +1893,15 @@ def _iter_batches_arrival( task_list: list[FileScanTask], deletes_per_file: dict[str, list[ChunkedArray]], batch_size: int | None, - concurrent_files: int, + concurrent_streams: int, + max_buffered_batches: int = 16, ) -> Iterator[pa.RecordBatch]: """Yield batches using bounded concurrent streaming in arrival order.""" def batch_fn(task: FileScanTask) -> Iterator[pa.RecordBatch]: return self._record_batches_from_scan_tasks_and_deletes([task], deletes_per_file, batch_size) - yield from _bounded_concurrent_batches(task_list, batch_fn, concurrent_files) + yield from _bounded_concurrent_batches(task_list, batch_fn, concurrent_streams, max_buffered_batches) def _iter_batches_materialized( self, diff --git a/pyiceberg/table/__init__.py b/pyiceberg/table/__init__.py index c7f43b48c1..8d179cfcb8 100644 --- a/pyiceberg/table/__init__.py +++ b/pyiceberg/table/__init__.py @@ -155,18 +155,31 @@ DOWNCAST_NS_TIMESTAMP_TO_US_ON_WRITE = "downcast-ns-timestamp-to-us-on-write" -class ScanOrder(str, Enum): - """Order in which record batches are returned from a scan. - - Attributes: - TASK: Batches are returned in task order, with each task fully materialized - before proceeding to the next. Allows parallel file reads via executor. - ARRIVAL: Batches are yielded as they are produced, processing tasks - sequentially without materializing entire files into memory. +@dataclass +class ScanOrder(ABC): + """Base class for scan ordering strategies.""" + pass + + +@dataclass +class TaskOrder(ScanOrder): + """Sequential task processing preserving existing behavior. + + Batches are returned in task order, with each task fully materialized + before proceeding to the next. Allows parallel file reads via executor. """ + pass + - TASK = "task" - ARRIVAL = "arrival" +@dataclass +class ArrivalOrder(ScanOrder): + """Stream batches as they arrive from concurrent read streams. + + Batches are yielded as they are produced without materializing entire + files into memory. Supports concurrent processing of multiple files. + """ + concurrent_streams: int = 1 + max_buffered_batches: int = 16 @dataclass() @@ -2171,7 +2184,7 @@ def to_arrow(self) -> pa.Table: ).to_table(self.plan_files()) def to_arrow_batch_reader( - self, batch_size: int | None = None, order: ScanOrder = ScanOrder.TASK, concurrent_files: int = 1 + self, batch_size: int | None = None, order: ScanOrder = TaskOrder() ) -> pa.RecordBatchReader: """Return an Arrow RecordBatchReader from this DataScan. @@ -2180,18 +2193,17 @@ def to_arrow_batch_reader( is read one at a time. Ordering semantics: - - ScanOrder.TASK (default): Batches are grouped by file in task submission order. - - ScanOrder.ARRIVAL: Batches may be interleaved across files. Within each file, - batch ordering follows row order. + - TaskOrder() (default): Yields batches one file at a time in file scan task order. + - ArrivalOrder(): Batches may be interleaved across files as they arrive. + Within each file, batch ordering follows row order. Args: batch_size: The number of rows per batch. If None, PyArrow's default is used. order: Controls the order in which record batches are returned. - ScanOrder.TASK (default) returns batches in task order with parallel - file reads. ScanOrder.ARRIVAL yields batches as they are produced - without materializing entire files into memory. - concurrent_files: Number of files to read concurrently when order=ScanOrder.ARRIVAL. - When > 1, batches may arrive interleaved across files. + TaskOrder() (default) yields batches one file at a time in task order. + ArrivalOrder(concurrent_streams=N, max_buffered_batches=M) yields batches + as they are produced without materializing entire files into memory. + concurrent_streams controls parallelism, max_buffered_batches controls memory. Returns: pa.RecordBatchReader: Arrow RecordBatchReader from the Iceberg table's DataScan @@ -2204,7 +2216,7 @@ def to_arrow_batch_reader( target_schema = schema_to_pyarrow(self.projection()) batches = ArrowScan( self.table_metadata, self.io, self.projection(), self.row_filter, self.case_sensitive, self.limit - ).to_record_batches(self.plan_files(), batch_size=batch_size, order=order, concurrent_files=concurrent_files) + ).to_record_batches(self.plan_files(), batch_size=batch_size, order=order) return pa.RecordBatchReader.from_batches( target_schema, From 19841dce33f8332142aef328469eb622e1f197c7 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Wed, 18 Feb 2026 12:34:43 -0800 Subject: [PATCH 18/29] test: Update tests for new ScanOrder class hierarchy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace ScanOrder.TASK/ARRIVAL with TaskOrder()/ArrivalOrder() instances. Update concurrent_files → concurrent_streams parameter usage. All existing test scenarios preserved with new type-safe API. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- tests/io/test_bounded_concurrent_batches.py | 4 +-- tests/io/test_pyarrow.py | 36 ++++++++++----------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/tests/io/test_bounded_concurrent_batches.py b/tests/io/test_bounded_concurrent_batches.py index e80e7c1798..2fe9526b19 100644 --- a/tests/io/test_bounded_concurrent_batches.py +++ b/tests/io/test_bounded_concurrent_batches.py @@ -25,7 +25,7 @@ import pytest from pyiceberg.io.pyarrow import _bounded_concurrent_batches -from pyiceberg.table import FileScanTask, ScanOrder +from pyiceberg.table import FileScanTask, ScanOrder, TaskOrder, ArrivalOrder def _make_task() -> FileScanTask: @@ -253,6 +253,6 @@ def test_concurrent_with_limit_via_arrowscan(tmpdir: str) -> None: limit=150, ) - batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL, concurrent_files=2)) + batches = list(scan.to_record_batches(tasks, order=ArrivalOrder(concurrent_streams=2))) total_rows = sum(len(b) for b in batches) assert total_rows == 150 diff --git a/tests/io/test_pyarrow.py b/tests/io/test_pyarrow.py index dd450c588e..22274d667e 100644 --- a/tests/io/test_pyarrow.py +++ b/tests/io/test_pyarrow.py @@ -86,7 +86,7 @@ from pyiceberg.manifest import DataFile, DataFileContent, FileFormat from pyiceberg.partitioning import PartitionField, PartitionSpec from pyiceberg.schema import Schema, make_compatible_name, visit -from pyiceberg.table import FileScanTask, ScanOrder, TableProperties +from pyiceberg.table import FileScanTask, ScanOrder, TaskOrder, ArrivalOrder, TableProperties from pyiceberg.table.metadata import TableMetadataV2 from pyiceberg.table.name_mapping import create_mapping_from_schema from pyiceberg.transforms import HourTransform, IdentityTransform @@ -3170,13 +3170,13 @@ def _create_scan_and_tasks( def test_task_order_produces_same_results(tmpdir: str) -> None: - """Test that order=ScanOrder.TASK produces the same results as the default behavior.""" + """Test that order=TaskOrder() produces the same results as the default behavior.""" scan, tasks = _create_scan_and_tasks(tmpdir, num_files=3, rows_per_file=100) - batches_default = list(scan.to_record_batches(tasks, order=ScanOrder.TASK)) + batches_default = list(scan.to_record_batches(tasks, order=TaskOrder())) # Re-create tasks since iterators are consumed _, tasks2 = _create_scan_and_tasks(tmpdir, num_files=3, rows_per_file=100) - batches_task_order = list(scan.to_record_batches(tasks2, order=ScanOrder.TASK)) + batches_task_order = list(scan.to_record_batches(tasks2, order=TaskOrder())) total_default = sum(len(b) for b in batches_default) total_task_order = sum(len(b) for b in batches_task_order) @@ -3185,10 +3185,10 @@ def test_task_order_produces_same_results(tmpdir: str) -> None: def test_arrival_order_yields_all_batches(tmpdir: str) -> None: - """Test that order=ScanOrder.ARRIVAL yields all batches correctly.""" + """Test that order=ArrivalOrder() yields all batches correctly.""" scan, tasks = _create_scan_and_tasks(tmpdir, num_files=3, rows_per_file=100) - batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL)) + batches = list(scan.to_record_batches(tasks, order=ArrivalOrder())) total_rows = sum(len(b) for b in batches) assert total_rows == 300 @@ -3198,10 +3198,10 @@ def test_arrival_order_yields_all_batches(tmpdir: str) -> None: def test_arrival_order_with_limit(tmpdir: str) -> None: - """Test that order=ScanOrder.ARRIVAL respects the row limit.""" + """Test that order=ArrivalOrder() respects the row limit.""" scan, tasks = _create_scan_and_tasks(tmpdir, num_files=3, rows_per_file=100, limit=150) - batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL)) + batches = list(scan.to_record_batches(tasks, order=ArrivalOrder())) total_rows = sum(len(b) for b in batches) assert total_rows == 150 @@ -3211,7 +3211,7 @@ def test_arrival_order_within_file_ordering_preserved(tmpdir: str) -> None: """Test that within-file row ordering is preserved in arrival order mode.""" scan, tasks = _create_scan_and_tasks(tmpdir, num_files=3, rows_per_file=100) - batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL)) + batches = list(scan.to_record_batches(tasks, order=ArrivalOrder())) all_values = sorted([v for b in batches for v in b.column("col").to_pylist()]) # All values should be present, within-file ordering is preserved @@ -3219,7 +3219,7 @@ def test_arrival_order_within_file_ordering_preserved(tmpdir: str) -> None: def test_arrival_order_with_positional_deletes(tmpdir: str) -> None: - """Test that order=ScanOrder.ARRIVAL correctly applies positional deletes.""" + """Test that order=ArrivalOrder() correctly applies positional deletes.""" # 3 files, 10 rows each; delete rows 0,5 from file 0, row 3 from file 1, nothing from file 2 scan, tasks = _create_scan_and_tasks( tmpdir, @@ -3228,7 +3228,7 @@ def test_arrival_order_with_positional_deletes(tmpdir: str) -> None: delete_rows_per_file=[[0, 5], [3], []], ) - batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL)) + batches = list(scan.to_record_batches(tasks, order=ArrivalOrder())) total_rows = sum(len(b) for b in batches) assert total_rows == 27 # 30 - 3 deletes @@ -3241,7 +3241,7 @@ def test_arrival_order_with_positional_deletes(tmpdir: str) -> None: def test_arrival_order_with_positional_deletes_and_limit(tmpdir: str) -> None: - """Test that order=ScanOrder.ARRIVAL with positional deletes respects the row limit.""" + """Test that order=ArrivalOrder() with positional deletes respects the row limit.""" # 3 files, 10 rows each; delete row 0 from each file scan, tasks = _create_scan_and_tasks( tmpdir, @@ -3251,7 +3251,7 @@ def test_arrival_order_with_positional_deletes_and_limit(tmpdir: str) -> None: delete_rows_per_file=[[0], [0], [0]], ) - batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL)) + batches = list(scan.to_record_batches(tasks, order=ArrivalOrder())) total_rows = sum(len(b) for b in batches) assert total_rows == 15 @@ -3267,7 +3267,7 @@ def test_task_order_with_positional_deletes(tmpdir: str) -> None: delete_rows_per_file=[[0, 5], [3], []], ) - batches = list(scan.to_record_batches(tasks, order=ScanOrder.TASK)) + batches = list(scan.to_record_batches(tasks, order=TaskOrder())) total_rows = sum(len(b) for b in batches) assert total_rows == 27 # 30 - 3 deletes @@ -3277,7 +3277,7 @@ def test_task_order_with_positional_deletes(tmpdir: str) -> None: def test_concurrent_files_with_positional_deletes(tmpdir: str) -> None: - """Test that order=ScanOrder.ARRIVAL with concurrent_files correctly applies positional deletes.""" + """Test that order=ArrivalOrder() with concurrent_files correctly applies positional deletes.""" # 4 files, 10 rows each; delete different rows per file scan, tasks = _create_scan_and_tasks( tmpdir, @@ -3286,7 +3286,7 @@ def test_concurrent_files_with_positional_deletes(tmpdir: str) -> None: delete_rows_per_file=[[0, 9], [4, 5], [0, 1, 2], []], ) - batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL, concurrent_files=2)) + batches = list(scan.to_record_batches(tasks, order=ArrivalOrder(concurrent_streams=2))) total_rows = sum(len(b) for b in batches) assert total_rows == 33 # 40 - 7 deletes @@ -3310,7 +3310,7 @@ def test_concurrent_files_with_positional_deletes_and_limit(tmpdir: str) -> None delete_rows_per_file=[[0], [0], [0], [0]], ) - batches = list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL, concurrent_files=2)) + batches = list(scan.to_record_batches(tasks, order=ArrivalOrder(concurrent_streams=2))) total_rows = sum(len(b) for b in batches) assert total_rows == 20 @@ -3321,7 +3321,7 @@ def test_concurrent_files_invalid_value(tmpdir: str) -> None: scan, tasks = _create_scan_and_tasks(tmpdir, num_files=1, rows_per_file=10) with pytest.raises(ValueError, match="concurrent_files must be >= 1"): - list(scan.to_record_batches(tasks, order=ScanOrder.ARRIVAL, concurrent_files=0)) + list(scan.to_record_batches(tasks, order=ArrivalOrder(concurrent_streams=0))) def test_parse_location_defaults() -> None: From e06c01aa05a888b9eb0c33630e8e56b1650c1e5e Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Wed, 18 Feb 2026 12:34:52 -0800 Subject: [PATCH 19/29] test: Refactor benchmark tests for new ScanOrder API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restructure parameterized benchmark tests to use ScanOrder class instances: - TaskOrder() for default behavior - ArrivalOrder(concurrent_streams=N) for streaming configurations Simplifies test parameters by eliminating separate concurrent_files argument. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- tests/benchmark/test_read_benchmark.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/tests/benchmark/test_read_benchmark.py b/tests/benchmark/test_read_benchmark.py index 809c106dd1..272b0a0d9f 100644 --- a/tests/benchmark/test_read_benchmark.py +++ b/tests/benchmark/test_read_benchmark.py @@ -35,7 +35,7 @@ import pytest from pyiceberg.catalog.sql import SqlCatalog -from pyiceberg.table import ScanOrder, Table +from pyiceberg.table import ScanOrder, TaskOrder, ArrivalOrder, Table NUM_FILES = 32 ROWS_PER_FILE = 500_000 @@ -85,26 +85,25 @@ def benchmark_table(tmp_path_factory: pytest.TempPathFactory) -> Table: @pytest.mark.parametrize( - "order,concurrent_files,batch_size", + "order,batch_size", [ - pytest.param(ScanOrder.TASK, 1, None, id="default"), - pytest.param(ScanOrder.ARRIVAL, 1, None, id="arrival-cf1"), - pytest.param(ScanOrder.ARRIVAL, 2, None, id="arrival-cf2"), - pytest.param(ScanOrder.ARRIVAL, 4, None, id="arrival-cf4"), - pytest.param(ScanOrder.ARRIVAL, 8, None, id="arrival-cf8"), - pytest.param(ScanOrder.ARRIVAL, 16, None, id="arrival-cf16"), + pytest.param(TaskOrder(), None, id="default"), + pytest.param(ArrivalOrder(concurrent_streams=1), None, id="arrival-cf1"), + pytest.param(ArrivalOrder(concurrent_streams=2), None, id="arrival-cf2"), + pytest.param(ArrivalOrder(concurrent_streams=4), None, id="arrival-cf4"), + pytest.param(ArrivalOrder(concurrent_streams=8), None, id="arrival-cf8"), + pytest.param(ArrivalOrder(concurrent_streams=16), None, id="arrival-cf16"), ], ) def test_read_throughput( benchmark_table: Table, order: ScanOrder, - concurrent_files: int, batch_size: int | None, ) -> None: """Measure records/sec, time to first record, and peak Arrow memory for a scan configuration.""" effective_batch_size = batch_size or 131_072 # PyArrow default - if order == ScanOrder.ARRIVAL: - config_str = f"order=ARRIVAL, concurrent_files={concurrent_files}, batch_size={effective_batch_size}" + if isinstance(order, ArrivalOrder): + config_str = f"order=ARRIVAL, concurrent_streams={order.concurrent_streams}, batch_size={effective_batch_size}" else: config_str = f"order=TASK (executor.map, all files parallel), batch_size={effective_batch_size}" print("\n--- ArrowScan Read Throughput Benchmark ---") @@ -129,7 +128,6 @@ def test_read_throughput( for batch in benchmark_table.scan().to_arrow_batch_reader( batch_size=batch_size, order=order, - concurrent_files=concurrent_files, ): if first_batch_time is None: first_batch_time = timeit.default_timer() - start From c38bc76246614dc8e3518e26ad357dcd7d19a088 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Wed, 18 Feb 2026 12:35:01 -0800 Subject: [PATCH 20/29] docs: Update API documentation for ScanOrder refactoring MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace ScanOrder enum examples with new class-based API: - TaskOrder() for default behavior - ArrivalOrder(concurrent_streams=N) for streaming - ArrivalOrder(concurrent_streams=N, max_buffered_batches=M) for memory control Add configuration guidance table and update ordering semantics. Rename concurrent_files → concurrent_streams throughout examples. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- mkdocs/docs/api.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/mkdocs/docs/api.md b/mkdocs/docs/api.md index 6c439f5fed..2a7810b906 100644 --- a/mkdocs/docs/api.md +++ b/mkdocs/docs/api.md @@ -362,21 +362,21 @@ for buf in tbl.scan().to_arrow_batch_reader(batch_size=1000): print(f"Buffer contains {len(buf)} rows") ``` -By default, each file's batches are materialized in memory before being yielded (`order=ScanOrder.TASK`). For large files that may exceed available memory, use `order=ScanOrder.ARRIVAL` to yield batches as they are produced without materializing entire files: +By default, each file's batches are materialized in memory before being yielded (`TaskOrder()`). For large files that may exceed available memory, use `ArrivalOrder()` to yield batches as they are produced without materializing entire files: ```python -from pyiceberg.table import ScanOrder +from pyiceberg.table import ArrivalOrder -for buf in tbl.scan().to_arrow_batch_reader(order=ScanOrder.ARRIVAL, batch_size=1000): +for buf in tbl.scan().to_arrow_batch_reader(order=ArrivalOrder(), batch_size=1000): print(f"Buffer contains {len(buf)} rows") ``` -For maximum throughput, use `concurrent_files` to read multiple files in parallel with arrival order. Batches are yielded as they arrive from any file — ordering across files is not guaranteed: +For maximum throughput, use `concurrent_streams` to read multiple files in parallel with arrival order. Batches are yielded as they arrive from any file — ordering across files is not guaranteed: ```python -from pyiceberg.table import ScanOrder +from pyiceberg.table import ArrivalOrder -for buf in tbl.scan().to_arrow_batch_reader(order=ScanOrder.ARRIVAL, concurrent_files=4, batch_size=1000): +for buf in tbl.scan().to_arrow_batch_reader(order=ArrivalOrder(concurrent_streams=4), batch_size=1000): print(f"Buffer contains {len(buf)} rows") ``` @@ -384,8 +384,8 @@ for buf in tbl.scan().to_arrow_batch_reader(order=ScanOrder.ARRIVAL, concurrent_ | Configuration | File ordering | Within-file ordering | |---|---|---| -| `ScanOrder.TASK` (default) | Batches grouped by file, in task submission order | Row order | -| `ScanOrder.ARRIVAL` | Interleaved across files (no grouping guarantee) | Row order within each file | +| `TaskOrder()` (default) | Batches grouped by file, in task submission order | Row order | +| `ArrivalOrder()` | Interleaved across files (no grouping guarantee) | Row order within each file | Within each file, batch ordering always follows row order. The `limit` parameter is enforced correctly regardless of configuration. @@ -394,11 +394,12 @@ Within each file, batch ordering always follows row order. The `limit` parameter | Use case | Recommended config | |---|---| | Small tables, simple queries | Default — no extra args needed | -| Large tables, memory-constrained | `order=ScanOrder.ARRIVAL` — one file at a time, minimal memory | -| Maximum throughput with bounded memory | `order=ScanOrder.ARRIVAL, concurrent_files=N` — tune N to balance throughput vs memory | +| Large tables, memory-constrained | `order=ArrivalOrder()` — one file at a time, minimal memory | +| Maximum throughput with bounded memory | `order=ArrivalOrder(concurrent_streams=N)` — tune N to balance throughput vs memory | +| Fine-grained memory control | `order=ArrivalOrder(concurrent_streams=N, max_buffered_batches=M)` — tune both parameters | | Fine-grained batch control | Add `batch_size=N` to any of the above | -**Note:** `ScanOrder.ARRIVAL` yields batches in arrival order (interleaved across files when `concurrent_files > 1`). For deterministic file ordering, use the default `ScanOrder.TASK` mode. `batch_size` is usually an advanced tuning knob — the PyArrow default of 131,072 rows works well for most workloads. +**Note:** `ArrivalOrder()` yields batches in arrival order (interleaved across files when `concurrent_streams > 1`). For deterministic file ordering, use the default `TaskOrder()` mode. `batch_size` is usually an advanced tuning knob — the PyArrow default of 131,072 rows works well for most workloads. To avoid any type inconsistencies during writing, you can convert the Iceberg table schema to Arrow: From 2d4a67abe4e7e68b1967b5199fd94926be1d5d5a Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Wed, 18 Feb 2026 17:29:49 -0800 Subject: [PATCH 21/29] Fix ScanOrder class and remove unused import MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove ABC inheritance from ScanOrder since no abstract methods are defined - Remove unused enum.Enum import - Fix B008 error by moving TaskOrder() call from function default to inside function - Clean up dataclass formatting 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- pyiceberg/table/__init__.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/pyiceberg/table/__init__.py b/pyiceberg/table/__init__.py index 8d179cfcb8..4ea2309f52 100644 --- a/pyiceberg/table/__init__.py +++ b/pyiceberg/table/__init__.py @@ -23,7 +23,6 @@ from abc import ABC, abstractmethod from collections.abc import Callable, Iterable, Iterator from dataclasses import dataclass -from enum import Enum from functools import cached_property from itertools import chain from types import TracebackType @@ -156,9 +155,8 @@ @dataclass -class ScanOrder(ABC): +class ScanOrder: """Base class for scan ordering strategies.""" - pass @dataclass @@ -168,7 +166,6 @@ class TaskOrder(ScanOrder): Batches are returned in task order, with each task fully materialized before proceeding to the next. Allows parallel file reads via executor. """ - pass @dataclass @@ -178,6 +175,7 @@ class ArrivalOrder(ScanOrder): Batches are yielded as they are produced without materializing entire files into memory. Supports concurrent processing of multiple files. """ + concurrent_streams: int = 1 max_buffered_batches: int = 16 @@ -2183,9 +2181,7 @@ def to_arrow(self) -> pa.Table: self.table_metadata, self.io, self.projection(), self.row_filter, self.case_sensitive, self.limit ).to_table(self.plan_files()) - def to_arrow_batch_reader( - self, batch_size: int | None = None, order: ScanOrder = TaskOrder() - ) -> pa.RecordBatchReader: + def to_arrow_batch_reader(self, batch_size: int | None = None, order: ScanOrder | None = None) -> pa.RecordBatchReader: """Return an Arrow RecordBatchReader from this DataScan. For large results, using a RecordBatchReader requires less memory than @@ -2213,6 +2209,9 @@ def to_arrow_batch_reader( from pyiceberg.io.pyarrow import ArrowScan, schema_to_pyarrow + if order is None: + order = TaskOrder() + target_schema = schema_to_pyarrow(self.projection()) batches = ArrowScan( self.table_metadata, self.io, self.projection(), self.row_filter, self.case_sensitive, self.limit From de9f3c2e37261d2a0af26ce8e79a72696fb16bf5 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Wed, 18 Feb 2026 17:29:55 -0800 Subject: [PATCH 22/29] Fix long line and B008 error in ArrowScan MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Break long line in _iter_batches_arrival call for better readability - Fix B008 error by moving TaskOrder() call from function default to inside function - Sort imports alphabetically 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- pyiceberg/io/pyarrow.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pyiceberg/io/pyarrow.py b/pyiceberg/io/pyarrow.py index 35c5562560..078a0279bc 100644 --- a/pyiceberg/io/pyarrow.py +++ b/pyiceberg/io/pyarrow.py @@ -144,7 +144,7 @@ visit, visit_with_partner, ) -from pyiceberg.table import DOWNCAST_NS_TIMESTAMP_TO_US_ON_WRITE, ScanOrder, TaskOrder, ArrivalOrder, TableProperties +from pyiceberg.table import DOWNCAST_NS_TIMESTAMP_TO_US_ON_WRITE, ArrivalOrder, ScanOrder, TableProperties, TaskOrder from pyiceberg.table.locations import load_location_provider from pyiceberg.table.metadata import TableMetadata from pyiceberg.table.name_mapping import NameMapping, apply_name_mapping @@ -1838,7 +1838,7 @@ def to_record_batches( self, tasks: Iterable[FileScanTask], batch_size: int | None = None, - order: ScanOrder = TaskOrder(), + order: ScanOrder | None = None, ) -> Iterator[pa.RecordBatch]: """Scan the Iceberg table and return an Iterator[pa.RecordBatch]. @@ -1868,6 +1868,9 @@ def to_record_batches( ValueError: When a field type in the file cannot be projected to the schema type, or when an invalid order value is provided, or when concurrent_streams < 1. """ + if order is None: + order = TaskOrder() + if not isinstance(order, ScanOrder): raise ValueError(f"Invalid order: {order!r}. Must be a ScanOrder instance (TaskOrder() or ArrivalOrder()).") @@ -1876,7 +1879,11 @@ def to_record_batches( if isinstance(order, ArrivalOrder): if order.concurrent_streams < 1: raise ValueError(f"concurrent_streams must be >= 1, got {order.concurrent_streams}") - return self._apply_limit(self._iter_batches_arrival(task_list, deletes_per_file, batch_size, order.concurrent_streams, order.max_buffered_batches)) + return self._apply_limit( + self._iter_batches_arrival( + task_list, deletes_per_file, batch_size, order.concurrent_streams, order.max_buffered_batches + ) + ) return self._apply_limit(self._iter_batches_materialized(task_list, deletes_per_file, batch_size)) From ac8add88967161ea1dc5d502172217c67aabc8ed Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Wed, 18 Feb 2026 17:30:02 -0800 Subject: [PATCH 23/29] Fix mypy errors: change concurrent_files to concurrent_streams MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update all test function calls to use concurrent_streams parameter - Fix parameter name mismatch with _bounded_concurrent_batches function signature - Update variable names and comments to match new parameter name 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- tests/io/test_bounded_concurrent_batches.py | 26 ++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/io/test_bounded_concurrent_batches.py b/tests/io/test_bounded_concurrent_batches.py index 2fe9526b19..4d6d8506ed 100644 --- a/tests/io/test_bounded_concurrent_batches.py +++ b/tests/io/test_bounded_concurrent_batches.py @@ -25,7 +25,7 @@ import pytest from pyiceberg.io.pyarrow import _bounded_concurrent_batches -from pyiceberg.table import FileScanTask, ScanOrder, TaskOrder, ArrivalOrder +from pyiceberg.table import ArrivalOrder, FileScanTask def _make_task() -> FileScanTask: @@ -50,7 +50,7 @@ def test_correctness_single_file() -> None: def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: yield from expected_batches - result = list(_bounded_concurrent_batches([task], batch_fn, concurrent_files=1, max_buffered_batches=16)) + result = list(_bounded_concurrent_batches([task], batch_fn, concurrent_streams=1, max_buffered_batches=16)) assert len(result) == 3 total_rows = sum(len(b) for b in result) @@ -66,7 +66,7 @@ def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: idx = tasks.index(t) yield from _make_batches(batches_per_file, start=idx * 100) - result = list(_bounded_concurrent_batches(tasks, batch_fn, concurrent_files=2, max_buffered_batches=16)) + result = list(_bounded_concurrent_batches(tasks, batch_fn, concurrent_streams=2, max_buffered_batches=16)) total_rows = sum(len(b) for b in result) assert total_rows == batches_per_file * len(tasks) * 10 # 3 batches * 4 files * 10 rows @@ -82,7 +82,7 @@ def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: barrier.wait(timeout=5.0) yield pa.record_batch({"col": [4, 5, 6]}) - gen = _bounded_concurrent_batches(tasks, batch_fn, concurrent_files=2, max_buffered_batches=16) + gen = _bounded_concurrent_batches(tasks, batch_fn, concurrent_streams=2, max_buffered_batches=16) # Should get at least one batch before all are done first = next(gen) @@ -110,7 +110,7 @@ def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: produced_count += 1 yield pa.record_batch({"col": [i]}) - gen = _bounded_concurrent_batches(tasks, batch_fn, concurrent_files=1, max_buffered_batches=max_buffered) + gen = _bounded_concurrent_batches(tasks, batch_fn, concurrent_streams=1, max_buffered_batches=max_buffered) # Consume slowly and check that not all batches are produced immediately first = next(gen) @@ -131,7 +131,7 @@ def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: yield pa.record_batch({"col": [1]}) raise ValueError("test error") - gen = _bounded_concurrent_batches(tasks, batch_fn, concurrent_files=1, max_buffered_batches=16) + gen = _bounded_concurrent_batches(tasks, batch_fn, concurrent_streams=1, max_buffered_batches=16) # Should get the first batch first = next(gen) @@ -153,7 +153,7 @@ def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: yield pa.record_batch({"col": [i]}) time.sleep(0.01) - gen = _bounded_concurrent_batches(tasks, batch_fn, concurrent_files=3, max_buffered_batches=4) + gen = _bounded_concurrent_batches(tasks, batch_fn, concurrent_streams=3, max_buffered_batches=4) # Consume a few batches then stop worker_started.wait(timeout=5.0) @@ -168,8 +168,8 @@ def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: def test_concurrency_limit() -> None: - """Test that at most concurrent_files files are read concurrently.""" - concurrent_files = 2 + """Test that at most concurrent_streams files are read concurrently.""" + concurrent_streams = 2 tasks = [_make_task() for _ in range(6)] active_count = 0 max_active = 0 @@ -187,10 +187,10 @@ def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: with active_lock: active_count -= 1 - result = list(_bounded_concurrent_batches(tasks, batch_fn, concurrent_files=concurrent_files, max_buffered_batches=16)) + result = list(_bounded_concurrent_batches(tasks, batch_fn, concurrent_streams=concurrent_streams, max_buffered_batches=16)) assert len(result) == 6 - assert max_active <= concurrent_files + assert max_active <= concurrent_streams def test_empty_tasks() -> None: @@ -199,12 +199,12 @@ def test_empty_tasks() -> None: def batch_fn(t: FileScanTask) -> Iterator[pa.RecordBatch]: yield from [] - result = list(_bounded_concurrent_batches([], batch_fn, concurrent_files=2, max_buffered_batches=16)) + result = list(_bounded_concurrent_batches([], batch_fn, concurrent_streams=2, max_buffered_batches=16)) assert result == [] def test_concurrent_with_limit_via_arrowscan(tmpdir: str) -> None: - """Test concurrent_files with limit through ArrowScan integration.""" + """Test concurrent_streams with limit through ArrowScan integration.""" from pyiceberg.expressions import AlwaysTrue from pyiceberg.io.pyarrow import ArrowScan, PyArrowFileIO from pyiceberg.manifest import DataFileContent, FileFormat From b5cfb78aae05c2a99f2b626acc14335789dc7570 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Wed, 18 Feb 2026 17:30:08 -0800 Subject: [PATCH 24/29] Fix import ordering in test files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Sort imports alphabetically as required by ruff formatting - No functional changes 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- tests/benchmark/test_read_benchmark.py | 2 +- tests/io/test_pyarrow.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/benchmark/test_read_benchmark.py b/tests/benchmark/test_read_benchmark.py index 272b0a0d9f..1c30b66e40 100644 --- a/tests/benchmark/test_read_benchmark.py +++ b/tests/benchmark/test_read_benchmark.py @@ -35,7 +35,7 @@ import pytest from pyiceberg.catalog.sql import SqlCatalog -from pyiceberg.table import ScanOrder, TaskOrder, ArrivalOrder, Table +from pyiceberg.table import ArrivalOrder, ScanOrder, Table, TaskOrder NUM_FILES = 32 ROWS_PER_FILE = 500_000 diff --git a/tests/io/test_pyarrow.py b/tests/io/test_pyarrow.py index 22274d667e..aa4d9de159 100644 --- a/tests/io/test_pyarrow.py +++ b/tests/io/test_pyarrow.py @@ -86,7 +86,7 @@ from pyiceberg.manifest import DataFile, DataFileContent, FileFormat from pyiceberg.partitioning import PartitionField, PartitionSpec from pyiceberg.schema import Schema, make_compatible_name, visit -from pyiceberg.table import FileScanTask, ScanOrder, TaskOrder, ArrivalOrder, TableProperties +from pyiceberg.table import ArrivalOrder, FileScanTask, TableProperties, TaskOrder from pyiceberg.table.metadata import TableMetadataV2 from pyiceberg.table.name_mapping import create_mapping_from_schema from pyiceberg.transforms import HourTransform, IdentityTransform From d93526e4f059e3e418d150c9be158f1ccdea87de Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Wed, 18 Feb 2026 19:01:34 -0800 Subject: [PATCH 25/29] Move batch_size parameter to ArrivalOrder for better semantic design MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add batch_size parameter to ArrivalOrder class with comprehensive documentation - Include memory formula: Peak memory ≈ concurrent_streams × batch_size × max_buffered_batches × (average row size) - Update default concurrent_streams from 1 to 8 for better performance out-of-the-box - Remove batch_size parameter from to_arrow_batch_reader() and to_record_batches() methods - Simplify API by putting batch_size where it has direct memory impact (streaming orders) - TaskOrder uses PyArrow defaults, ArrivalOrder provides full memory control 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- pyiceberg/io/pyarrow.py | 23 +++++++++++------------ pyiceberg/table/__init__.py | 30 ++++++++++++++++++++++-------- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/pyiceberg/io/pyarrow.py b/pyiceberg/io/pyarrow.py index 078a0279bc..e0218d8971 100644 --- a/pyiceberg/io/pyarrow.py +++ b/pyiceberg/io/pyarrow.py @@ -144,7 +144,7 @@ visit, visit_with_partner, ) -from pyiceberg.table import DOWNCAST_NS_TIMESTAMP_TO_US_ON_WRITE, ArrivalOrder, ScanOrder, TableProperties, TaskOrder +from pyiceberg.table import DOWNCAST_NS_TIMESTAMP_TO_US_ON_WRITE, ArrivalOrder, ScanOrder, TableProperties from pyiceberg.table.locations import load_location_provider from pyiceberg.table.metadata import TableMetadata from pyiceberg.table.name_mapping import NameMapping, apply_name_mapping @@ -1837,7 +1837,6 @@ def to_table(self, tasks: Iterable[FileScanTask]) -> pa.Table: def to_record_batches( self, tasks: Iterable[FileScanTask], - batch_size: int | None = None, order: ScanOrder | None = None, ) -> Iterator[pa.RecordBatch]: """Scan the Iceberg table and return an Iterator[pa.RecordBatch]. @@ -1853,11 +1852,15 @@ def to_record_batches( Args: tasks: FileScanTasks representing the data files and delete files to read from. - batch_size: The number of rows per batch. If None, PyArrow's default is used. order: Controls the order in which record batches are returned. TaskOrder() (default) yields batches one file at a time in task order. - ArrivalOrder(concurrent_streams=N, max_buffered_batches=M) yields batches - as they are produced without materializing entire files into memory. + ArrivalOrder(concurrent_streams=N, batch_size=B, max_buffered_batches=M) + yields batches as they are produced without materializing entire files + into memory. Peak memory ≈ concurrent_streams × batch_size × max_buffered_batches + × (average row size in bytes). batch_size is the number of rows per batch. + For example (if average row size ≈ 32 bytes): + - ArrivalOrder(concurrent_streams=4, batch_size=32768, max_buffered_batches=8) + - Peak memory ≈ 4 × 32768 rows × 8 × 32 bytes ≈ ~32 MB (plus Arrow overhead) Returns: An Iterator of PyArrow RecordBatches. @@ -1868,9 +1871,6 @@ def to_record_batches( ValueError: When a field type in the file cannot be projected to the schema type, or when an invalid order value is provided, or when concurrent_streams < 1. """ - if order is None: - order = TaskOrder() - if not isinstance(order, ScanOrder): raise ValueError(f"Invalid order: {order!r}. Must be a ScanOrder instance (TaskOrder() or ArrivalOrder()).") @@ -1881,11 +1881,11 @@ def to_record_batches( raise ValueError(f"concurrent_streams must be >= 1, got {order.concurrent_streams}") return self._apply_limit( self._iter_batches_arrival( - task_list, deletes_per_file, batch_size, order.concurrent_streams, order.max_buffered_batches + task_list, deletes_per_file, order.batch_size, order.concurrent_streams, order.max_buffered_batches ) ) - return self._apply_limit(self._iter_batches_materialized(task_list, deletes_per_file, batch_size)) + return self._apply_limit(self._iter_batches_materialized(task_list, deletes_per_file)) def _prepare_tasks_and_deletes( self, tasks: Iterable[FileScanTask] @@ -1914,13 +1914,12 @@ def _iter_batches_materialized( self, task_list: list[FileScanTask], deletes_per_file: dict[str, list[ChunkedArray]], - batch_size: int | None, ) -> Iterator[pa.RecordBatch]: """Yield batches using executor.map with full file materialization.""" executor = ExecutorFactory.get_or_create() def batches_for_task(task: FileScanTask) -> list[pa.RecordBatch]: - return list(self._record_batches_from_scan_tasks_and_deletes([task], deletes_per_file, batch_size)) + return list(self._record_batches_from_scan_tasks_and_deletes([task], deletes_per_file)) for batches in executor.map(batches_for_task, task_list): yield from batches diff --git a/pyiceberg/table/__init__.py b/pyiceberg/table/__init__.py index 4ea2309f52..4df988fff5 100644 --- a/pyiceberg/table/__init__.py +++ b/pyiceberg/table/__init__.py @@ -174,9 +174,23 @@ class ArrivalOrder(ScanOrder): Batches are yielded as they are produced without materializing entire files into memory. Supports concurrent processing of multiple files. + + Memory Usage: + Peak memory ≈ concurrent_streams × batch_size × max_buffered_batches + × (average row size in bytes). batch_size is the number of rows per batch. + + For example (if average row size ≈ 32 bytes): + - ArrivalOrder(concurrent_streams=4, batch_size=32768, max_buffered_batches=8) + - Peak memory ≈ 4 × 32768 rows × 8 × 32 bytes ≈ ~32 MB (plus Arrow overhead) + + Args: + concurrent_streams: Number of files to read concurrently (default: 8) + batch_size: Number of rows per batch, controls memory per stream (default: None, uses PyArrow default ~131K) + max_buffered_batches: Maximum batches buffered per stream (default: 16) """ - concurrent_streams: int = 1 + concurrent_streams: int = 8 + batch_size: int | None = None max_buffered_batches: int = 16 @@ -2181,7 +2195,7 @@ def to_arrow(self) -> pa.Table: self.table_metadata, self.io, self.projection(), self.row_filter, self.case_sensitive, self.limit ).to_table(self.plan_files()) - def to_arrow_batch_reader(self, batch_size: int | None = None, order: ScanOrder | None = None) -> pa.RecordBatchReader: + def to_arrow_batch_reader(self, order: ScanOrder | None = None) -> pa.RecordBatchReader: """Return an Arrow RecordBatchReader from this DataScan. For large results, using a RecordBatchReader requires less memory than @@ -2194,12 +2208,12 @@ def to_arrow_batch_reader(self, batch_size: int | None = None, order: ScanOrder Within each file, batch ordering follows row order. Args: - batch_size: The number of rows per batch. If None, PyArrow's default is used. order: Controls the order in which record batches are returned. - TaskOrder() (default) yields batches one file at a time in task order. - ArrivalOrder(concurrent_streams=N, max_buffered_batches=M) yields batches - as they are produced without materializing entire files into memory. - concurrent_streams controls parallelism, max_buffered_batches controls memory. + TaskOrder() (default) yields batches one file at a time in task order using + PyArrow's default batch size. + ArrivalOrder(concurrent_streams=N, batch_size=B, max_buffered_batches=M) + yields batches as they are produced without materializing entire files + into memory. Memory usage ≈ concurrent_streams × batch_size × max_buffered_batches × (average row size in bytes). Returns: pa.RecordBatchReader: Arrow RecordBatchReader from the Iceberg table's DataScan @@ -2215,7 +2229,7 @@ def to_arrow_batch_reader(self, batch_size: int | None = None, order: ScanOrder target_schema = schema_to_pyarrow(self.projection()) batches = ArrowScan( self.table_metadata, self.io, self.projection(), self.row_filter, self.case_sensitive, self.limit - ).to_record_batches(self.plan_files(), batch_size=batch_size, order=order) + ).to_record_batches(self.plan_files(), order=order) return pa.RecordBatchReader.from_batches( target_schema, From 432cd8186d8a7883fd4a07cf37acefc912d806a3 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Wed, 18 Feb 2026 19:01:43 -0800 Subject: [PATCH 26/29] Update tests for new ArrivalOrder batch_size API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update benchmark tests to use simplified parameter structure - Remove separate batch_size parameter from test calls - Fix concurrent_streams validation error message in unit tests - Maintain all existing test coverage and functionality 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- tests/benchmark/test_read_benchmark.py | 20 ++++++++++---------- tests/io/test_pyarrow.py | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/benchmark/test_read_benchmark.py b/tests/benchmark/test_read_benchmark.py index 1c30b66e40..0dcd30771f 100644 --- a/tests/benchmark/test_read_benchmark.py +++ b/tests/benchmark/test_read_benchmark.py @@ -85,26 +85,27 @@ def benchmark_table(tmp_path_factory: pytest.TempPathFactory) -> Table: @pytest.mark.parametrize( - "order,batch_size", + "order", [ - pytest.param(TaskOrder(), None, id="default"), - pytest.param(ArrivalOrder(concurrent_streams=1), None, id="arrival-cf1"), - pytest.param(ArrivalOrder(concurrent_streams=2), None, id="arrival-cf2"), - pytest.param(ArrivalOrder(concurrent_streams=4), None, id="arrival-cf4"), - pytest.param(ArrivalOrder(concurrent_streams=8), None, id="arrival-cf8"), - pytest.param(ArrivalOrder(concurrent_streams=16), None, id="arrival-cf16"), + pytest.param(TaskOrder(), id="default"), + pytest.param(ArrivalOrder(concurrent_streams=1), id="arrival-cf1"), + pytest.param(ArrivalOrder(concurrent_streams=2), id="arrival-cf2"), + pytest.param(ArrivalOrder(concurrent_streams=4), id="arrival-cf4"), + pytest.param(ArrivalOrder(concurrent_streams=8), id="arrival-cf8"), + pytest.param(ArrivalOrder(concurrent_streams=16), id="arrival-cf16"), ], ) def test_read_throughput( benchmark_table: Table, order: ScanOrder, - batch_size: int | None, ) -> None: """Measure records/sec, time to first record, and peak Arrow memory for a scan configuration.""" - effective_batch_size = batch_size or 131_072 # PyArrow default + # Determine effective batch_size for display and memory calculation if isinstance(order, ArrivalOrder): + effective_batch_size = order.batch_size or 131_072 # PyArrow default config_str = f"order=ARRIVAL, concurrent_streams={order.concurrent_streams}, batch_size={effective_batch_size}" else: + effective_batch_size = 131_072 # PyArrow default (TaskOrder doesn't control batch_size directly) config_str = f"order=TASK (executor.map, all files parallel), batch_size={effective_batch_size}" print("\n--- ArrowScan Read Throughput Benchmark ---") print(f"Config: {config_str}") @@ -126,7 +127,6 @@ def test_read_throughput( total_rows = 0 first_batch_time = None for batch in benchmark_table.scan().to_arrow_batch_reader( - batch_size=batch_size, order=order, ): if first_batch_time is None: diff --git a/tests/io/test_pyarrow.py b/tests/io/test_pyarrow.py index aa4d9de159..a8f7246819 100644 --- a/tests/io/test_pyarrow.py +++ b/tests/io/test_pyarrow.py @@ -3320,7 +3320,7 @@ def test_concurrent_files_invalid_value(tmpdir: str) -> None: """Test that concurrent_files < 1 raises ValueError.""" scan, tasks = _create_scan_and_tasks(tmpdir, num_files=1, rows_per_file=10) - with pytest.raises(ValueError, match="concurrent_files must be >= 1"): + with pytest.raises(ValueError, match="concurrent_streams must be >= 1"): list(scan.to_record_batches(tasks, order=ArrivalOrder(concurrent_streams=0))) From 84adcfac75d69ac17e50292aa3c26e47bdfa05d1 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Wed, 18 Feb 2026 19:01:53 -0800 Subject: [PATCH 27/29] Update API documentation for new ArrivalOrder batch_size parameter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update all examples to use new ArrivalOrder(batch_size=X) syntax - Add comprehensive memory formula with row size calculation - Remove backward compatibility references (batch_size is new in this PR) - Include performance characteristics and use case recommendations - Provide clear guidance on TaskOrder vs ArrivalOrder memory behavior 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- mkdocs/docs/api.md | 64 +++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/mkdocs/docs/api.md b/mkdocs/docs/api.md index 2a7810b906..e79b7a237d 100644 --- a/mkdocs/docs/api.md +++ b/mkdocs/docs/api.md @@ -355,28 +355,21 @@ for buf in tbl.scan().to_arrow_batch_reader(): print(f"Buffer contains {len(buf)} rows") ``` -You can control the number of rows per batch using the `batch_size` parameter: - -```python -for buf in tbl.scan().to_arrow_batch_reader(batch_size=1000): - print(f"Buffer contains {len(buf)} rows") -``` - By default, each file's batches are materialized in memory before being yielded (`TaskOrder()`). For large files that may exceed available memory, use `ArrivalOrder()` to yield batches as they are produced without materializing entire files: ```python from pyiceberg.table import ArrivalOrder -for buf in tbl.scan().to_arrow_batch_reader(order=ArrivalOrder(), batch_size=1000): +for buf in tbl.scan().to_arrow_batch_reader(order=ArrivalOrder()): print(f"Buffer contains {len(buf)} rows") ``` -For maximum throughput, use `concurrent_streams` to read multiple files in parallel with arrival order. Batches are yielded as they arrive from any file — ordering across files is not guaranteed: +For maximum throughput, tune `concurrent_streams` to read multiple files in parallel with arrival order. Batches are yielded as they arrive from any file — ordering across files is not guaranteed: ```python from pyiceberg.table import ArrivalOrder -for buf in tbl.scan().to_arrow_batch_reader(order=ArrivalOrder(concurrent_streams=4), batch_size=1000): +for buf in tbl.scan().to_arrow_batch_reader(order=ArrivalOrder(concurrent_streams=4)): print(f"Buffer contains {len(buf)} rows") ``` @@ -387,19 +380,35 @@ for buf in tbl.scan().to_arrow_batch_reader(order=ArrivalOrder(concurrent_stream | `TaskOrder()` (default) | Batches grouped by file, in task submission order | Row order | | `ArrivalOrder()` | Interleaved across files (no grouping guarantee) | Row order within each file | -Within each file, batch ordering always follows row order. The `limit` parameter is enforced correctly regardless of configuration. +The `limit` parameter is enforced correctly regardless of configuration. **Which configuration should I use?** | Use case | Recommended config | |---|---| | Small tables, simple queries | Default — no extra args needed | -| Large tables, memory-constrained | `order=ArrivalOrder()` — one file at a time, minimal memory | -| Maximum throughput with bounded memory | `order=ArrivalOrder(concurrent_streams=N)` — tune N to balance throughput vs memory | -| Fine-grained memory control | `order=ArrivalOrder(concurrent_streams=N, max_buffered_batches=M)` — tune both parameters | -| Fine-grained batch control | Add `batch_size=N` to any of the above | +| Large tables, maximum throughput with bounded memory | `order=ArrivalOrder(concurrent_streams=N)` — tune N to balance throughput vs memory | +| Fine-grained memory control | `order=ArrivalOrder(concurrent_streams=N, batch_size=M, max_buffered_batches=K)` — tune all parameters | + +**Memory usage and performance characteristics:** + +- **TaskOrder (default)**: Uses full file materialization. Each file is loaded entirely into memory before yielding batches. Memory usage depends on file sizes. +- **ArrivalOrder**: Uses streaming with controlled memory usage. Memory is bounded by the batch buffering mechanism. + +**Memory formula for ArrivalOrder:** + +```text +Peak memory ≈ concurrent_streams × batch_size × max_buffered_batches × (average row size in bytes) +``` + +Where: -**Note:** `ArrivalOrder()` yields batches in arrival order (interleaved across files when `concurrent_streams > 1`). For deterministic file ordering, use the default `TaskOrder()` mode. `batch_size` is usually an advanced tuning knob — the PyArrow default of 131,072 rows works well for most workloads. +- `concurrent_streams`: Number of files read in parallel (default: 8) +- `batch_size`: Number of rows per batch (default: 131,072, can be set via ArrivalOrder constructor) +- `max_buffered_batches`: Internal buffering parameter (default: 16, can be tuned for advanced use cases) +- Average row size depends on your schema and data; multiply the above by it to estimate bytes. + +**Note:** `ArrivalOrder()` yields batches in arrival order (interleaved across files when `concurrent_streams > 1`). For deterministic file ordering, use the default `TaskOrder()` mode. The `batch_size` parameter in `ArrivalOrder` controls streaming memory usage, while `TaskOrder` uses full file materialization regardless of batch size. To avoid any type inconsistencies during writing, you can convert the Iceberg table schema to Arrow: @@ -1665,38 +1674,29 @@ table.scan( ).to_arrow_batch_reader() ``` -The `batch_size` parameter controls the maximum number of rows per RecordBatch (default is PyArrow's 131,072 rows): - -```python -table.scan( - row_filter=GreaterThanOrEqual("trip_distance", 10.0), - selected_fields=("VendorID", "tpep_pickup_datetime", "tpep_dropoff_datetime"), -).to_arrow_batch_reader(batch_size=1000) -``` - -Use `order=ScanOrder.ARRIVAL` to avoid materializing entire files in memory. This yields batches as they are produced by PyArrow, one file at a time: +To avoid materializing entire files in memory, use `ArrivalOrder` which yields batches as they are produced by PyArrow: ```python -from pyiceberg.table import ScanOrder +from pyiceberg.table import ArrivalOrder table.scan( row_filter=GreaterThanOrEqual("trip_distance", 10.0), selected_fields=("VendorID", "tpep_pickup_datetime", "tpep_dropoff_datetime"), -).to_arrow_batch_reader(order=ScanOrder.ARRIVAL) +).to_arrow_batch_reader(order=ArrivalOrder()) ``` -For concurrent file reads with arrival order, use `concurrent_files`. Note that batch ordering across files is not guaranteed: +For concurrent file reads with arrival order, use `concurrent_streams`. Note that batch ordering across files is not guaranteed: ```python -from pyiceberg.table import ScanOrder +from pyiceberg.table import ArrivalOrder table.scan( row_filter=GreaterThanOrEqual("trip_distance", 10.0), selected_fields=("VendorID", "tpep_pickup_datetime", "tpep_dropoff_datetime"), -).to_arrow_batch_reader(order=ScanOrder.ARRIVAL, concurrent_files=4) +).to_arrow_batch_reader(order=ArrivalOrder(concurrent_streams=16)) ``` -When using `concurrent_files > 1`, batches from different files may be interleaved. Within each file, batches are always in row order. See the ordering semantics table in the [Apache Arrow section](#apache-arrow) above for details. +When using `concurrent_streams > 1`, batches from different files may be interleaved. Within each file, batches are always in row order. See the ordering semantics table in the [Apache Arrow section](#apache-arrow) above for details. ### Pandas From 1c73ea4f5e1314ce81db57e982b7491d6b41d52f Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Wed, 18 Feb 2026 19:25:59 -0800 Subject: [PATCH 28/29] Fix to_record_batches default order and add TaskOrder import - Import TaskOrder from pyiceberg.table in pyarrow.py - Change to_record_batches signature to use TaskOrder() as default instead of None, ensuring consistent default scan ordering behavior Co-Authored-By: Claude Sonnet 4.6 --- pyiceberg/io/pyarrow.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyiceberg/io/pyarrow.py b/pyiceberg/io/pyarrow.py index e0218d8971..0a5ef75d5d 100644 --- a/pyiceberg/io/pyarrow.py +++ b/pyiceberg/io/pyarrow.py @@ -144,7 +144,7 @@ visit, visit_with_partner, ) -from pyiceberg.table import DOWNCAST_NS_TIMESTAMP_TO_US_ON_WRITE, ArrivalOrder, ScanOrder, TableProperties +from pyiceberg.table import DOWNCAST_NS_TIMESTAMP_TO_US_ON_WRITE, ArrivalOrder, ScanOrder, TableProperties, TaskOrder from pyiceberg.table.locations import load_location_provider from pyiceberg.table.metadata import TableMetadata from pyiceberg.table.name_mapping import NameMapping, apply_name_mapping @@ -1837,7 +1837,7 @@ def to_table(self, tasks: Iterable[FileScanTask]) -> pa.Table: def to_record_batches( self, tasks: Iterable[FileScanTask], - order: ScanOrder | None = None, + order: ScanOrder = TaskOrder(), ) -> Iterator[pa.RecordBatch]: """Scan the Iceberg table and return an Iterator[pa.RecordBatch]. From caa079e45acb1fbbca144df4a5e11545e384c4c5 Mon Sep 17 00:00:00 2001 From: Sumedh Sakdeo Date: Wed, 18 Feb 2026 19:34:46 -0800 Subject: [PATCH 29/29] Fix ruff B008: use module-level singleton for default ScanOrder Replace TaskOrder() function call in argument default with a module-level singleton _DEFAULT_SCAN_ORDER to satisfy ruff B008 (no function calls in argument defaults). Co-Authored-By: Claude Sonnet 4.6 --- pyiceberg/io/pyarrow.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyiceberg/io/pyarrow.py b/pyiceberg/io/pyarrow.py index 0a5ef75d5d..222a5f187e 100644 --- a/pyiceberg/io/pyarrow.py +++ b/pyiceberg/io/pyarrow.py @@ -1755,6 +1755,9 @@ def worker(task: FileScanTask) -> None: break +_DEFAULT_SCAN_ORDER: ScanOrder = TaskOrder() + + class ArrowScan: _table_metadata: TableMetadata _io: FileIO @@ -1837,7 +1840,7 @@ def to_table(self, tasks: Iterable[FileScanTask]) -> pa.Table: def to_record_batches( self, tasks: Iterable[FileScanTask], - order: ScanOrder = TaskOrder(), + order: ScanOrder = _DEFAULT_SCAN_ORDER, ) -> Iterator[pa.RecordBatch]: """Scan the Iceberg table and return an Iterator[pa.RecordBatch].