aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2024-01-26 13:18:00 +0300
committerAlexander Smirnov <alex@ydb.tech>2024-01-26 20:49:32 +0300
commit487e4bd3ed1fa550b82f329ed3a76ddc3881f642 (patch)
treebf3affc512067469ce7ec2743d52529e0fae2473
parentde5550f847db018c6d29f627e935cc319fc98845 (diff)
downloadydb-487e4bd3ed1fa550b82f329ed3a76ddc3881f642.tar.gz
Intermediate changes
-rw-r--r--contrib/python/fonttools/.dist-info/METADATA14
-rw-r--r--contrib/python/fonttools/fontTools/__init__.py2
-rw-r--r--contrib/python/fonttools/fontTools/merge/__init__.py54
-rw-r--r--contrib/python/fonttools/fontTools/merge/options.py3
-rw-r--r--contrib/python/fonttools/fontTools/otlLib/builder.py26
-rw-r--r--contrib/python/fonttools/fontTools/varLib/featureVars.py35
-rw-r--r--contrib/python/fonttools/fontTools/varLib/interpolatable.py14
-rw-r--r--contrib/python/fonttools/ya.make2
-rw-r--r--contrib/python/google-auth/py3/.dist-info/METADATA2
-rw-r--r--contrib/python/google-auth/py3/google/auth/external_account_authorized_user.py1
-rw-r--r--contrib/python/google-auth/py3/google/auth/version.py2
-rw-r--r--contrib/python/google-auth/py3/tests/data/external_account_authorized_user_non_gdu.json10
-rw-r--r--contrib/python/google-auth/py3/tests/test__default.py13
-rw-r--r--contrib/python/google-auth/py3/ya.make2
-rw-r--r--contrib/python/hypothesis/py3/.dist-info/METADATA2
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/control.py11
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/core.py4
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/errors.py3
-rw-r--r--contrib/python/hypothesis/py3/hypothesis/version.py2
-rw-r--r--contrib/python/hypothesis/py3/ya.make2
-rw-r--r--yt/yt/core/concurrency/config.cpp20
-rw-r--r--yt/yt/core/concurrency/config.h18
-rw-r--r--yt/yt/core/concurrency/retrying_periodic_executor.cpp8
-rw-r--r--yt/yt/core/misc/config.h2
24 files changed, 186 insertions, 66 deletions
diff --git a/contrib/python/fonttools/.dist-info/METADATA b/contrib/python/fonttools/.dist-info/METADATA
index f156c42697..f9e01c388f 100644
--- a/contrib/python/fonttools/.dist-info/METADATA
+++ b/contrib/python/fonttools/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: fonttools
-Version: 4.47.0
+Version: 4.47.2
Summary: Tools to manipulate font files
Home-page: http://github.com/fonttools/fonttools
Author: Just van Rossum
@@ -375,6 +375,18 @@ Have fun!
Changelog
~~~~~~~~~
+4.47.2 (released 2024-01-11)
+----------------------------
+
+Minor release to fix uploading wheels to PyPI.
+
+4.47.1 (released 2024-01-11)
+----------------------------
+
+- [merge] Improve help message and add standard command line options (#3408)
+- [otlLib] Pass ``ttFont`` to ``name.addName`` in ``buildStatTable`` (#3406)
+- [featureVars] Re-use ``FeatureVariationRecord``'s when possible (#3413)
+
4.47.0 (released 2023-12-18)
----------------------------
diff --git a/contrib/python/fonttools/fontTools/__init__.py b/contrib/python/fonttools/fontTools/__init__.py
index 6c00e567a4..7410d3c7fe 100644
--- a/contrib/python/fonttools/fontTools/__init__.py
+++ b/contrib/python/fonttools/fontTools/__init__.py
@@ -3,6 +3,6 @@ from fontTools.misc.loggingTools import configLogger
log = logging.getLogger(__name__)
-version = __version__ = "4.47.0"
+version = __version__ = "4.47.2"
__all__ = ["version", "log", "configLogger"]
diff --git a/contrib/python/fonttools/fontTools/merge/__init__.py b/contrib/python/fonttools/fontTools/merge/__init__.py
index 8d8a5213e8..7653e4a079 100644
--- a/contrib/python/fonttools/fontTools/merge/__init__.py
+++ b/contrib/python/fonttools/fontTools/merge/__init__.py
@@ -139,6 +139,7 @@ class Merger(object):
*(vars(table).keys() for table in tables if table is not NotImplemented),
)
for key in allKeys:
+ log.info(" %s", key)
try:
mergeLogic = logic[key]
except KeyError:
@@ -181,17 +182,50 @@ def main(args=None):
args = sys.argv[1:]
options = Options()
- args = options.parse_opts(args, ignore_unknown=["output-file"])
- outfile = "merged.ttf"
+ args = options.parse_opts(args)
fontfiles = []
+ if options.input_file:
+ with open(options.input_file) as inputfile:
+ fontfiles = [
+ line.strip()
+ for line in inputfile.readlines()
+ if not line.lstrip().startswith("#")
+ ]
for g in args:
- if g.startswith("--output-file="):
- outfile = g[14:]
- continue
fontfiles.append(g)
- if len(args) < 1:
- print("usage: pyftmerge font...", file=sys.stderr)
+ if len(fontfiles) < 1:
+ print(
+ "usage: pyftmerge [font1 ... fontN] [--input-file=filelist.txt] [--output-file=merged.ttf] [--import-file=tables.ttx]",
+ file=sys.stderr,
+ )
+ print(
+ " [--drop-tables=tags] [--verbose] [--timing]",
+ file=sys.stderr,
+ )
+ print("", file=sys.stderr)
+ print(" font1 ... fontN Files to merge.", file=sys.stderr)
+ print(
+ " --input-file=<filename> Read files to merge from a text file, each path new line. # Comment lines allowed.",
+ file=sys.stderr,
+ )
+ print(
+ " --output-file=<filename> Specify output file name (default: merged.ttf).",
+ file=sys.stderr,
+ )
+ print(
+ " --import-file=<filename> TTX file to import after merging. This can be used to set metadata.",
+ file=sys.stderr,
+ )
+ print(
+ " --drop-tables=<table tags> Comma separated list of table tags to skip, case sensitive.",
+ file=sys.stderr,
+ )
+ print(
+ " --verbose Output progress information.",
+ file=sys.stderr,
+ )
+ print(" --timing Output progress timing.", file=sys.stderr)
return 1
configLogger(level=logging.INFO if options.verbose else logging.WARNING)
@@ -202,8 +236,12 @@ def main(args=None):
merger = Merger(options=options)
font = merger.merge(fontfiles)
+
+ if options.import_file:
+ font.importXML(options.import_file)
+
with timer("compile and save font"):
- font.save(outfile)
+ font.save(options.output_file)
if __name__ == "__main__":
diff --git a/contrib/python/fonttools/fontTools/merge/options.py b/contrib/python/fonttools/fontTools/merge/options.py
index f134009368..8bc8947138 100644
--- a/contrib/python/fonttools/fontTools/merge/options.py
+++ b/contrib/python/fonttools/fontTools/merge/options.py
@@ -11,6 +11,9 @@ class Options(object):
self.verbose = False
self.timing = False
self.drop_tables = []
+ self.input_file = None
+ self.output_file = "merged.ttf"
+ self.import_file = None
self.set(**kwargs)
diff --git a/contrib/python/fonttools/fontTools/otlLib/builder.py b/contrib/python/fonttools/fontTools/otlLib/builder.py
index 3508a7e28d..4b457f4d9f 100644
--- a/contrib/python/fonttools/fontTools/otlLib/builder.py
+++ b/contrib/python/fonttools/fontTools/otlLib/builder.py
@@ -2781,14 +2781,13 @@ def buildStatTable(
"""
ttFont["STAT"] = ttLib.newTable("STAT")
statTable = ttFont["STAT"].table = ot.STAT()
- nameTable = ttFont["name"]
statTable.ElidedFallbackNameID = _addName(
- nameTable, elidedFallbackName, windows=windowsNames, mac=macNames
+ ttFont, elidedFallbackName, windows=windowsNames, mac=macNames
)
# 'locations' contains data for AxisValue Format 4
axisRecords, axisValues = _buildAxisRecords(
- axes, nameTable, windowsNames=windowsNames, macNames=macNames
+ axes, ttFont, windowsNames=windowsNames, macNames=macNames
)
if not locations:
statTable.Version = 0x00010001
@@ -2797,10 +2796,10 @@ def buildStatTable(
# requires a higher table version
statTable.Version = 0x00010002
multiAxisValues = _buildAxisValuesFormat4(
- locations, axes, nameTable, windowsNames=windowsNames, macNames=macNames
+ locations, axes, ttFont, windowsNames=windowsNames, macNames=macNames
)
axisValues = multiAxisValues + axisValues
- nameTable.names.sort()
+ ttFont["name"].names.sort()
# Store AxisRecords
axisRecordArray = ot.AxisRecordArray()
@@ -2820,14 +2819,14 @@ def buildStatTable(
statTable.AxisValueCount = len(axisValues)
-def _buildAxisRecords(axes, nameTable, windowsNames=True, macNames=True):
+def _buildAxisRecords(axes, ttFont, windowsNames=True, macNames=True):
axisRecords = []
axisValues = []
for axisRecordIndex, axisDict in enumerate(axes):
axis = ot.AxisRecord()
axis.AxisTag = axisDict["tag"]
axis.AxisNameID = _addName(
- nameTable, axisDict["name"], 256, windows=windowsNames, mac=macNames
+ ttFont, axisDict["name"], 256, windows=windowsNames, mac=macNames
)
axis.AxisOrdering = axisDict.get("ordering", axisRecordIndex)
axisRecords.append(axis)
@@ -2837,7 +2836,7 @@ def _buildAxisRecords(axes, nameTable, windowsNames=True, macNames=True):
axisValRec.AxisIndex = axisRecordIndex
axisValRec.Flags = axisVal.get("flags", 0)
axisValRec.ValueNameID = _addName(
- nameTable, axisVal["name"], windows=windowsNames, mac=macNames
+ ttFont, axisVal["name"], windows=windowsNames, mac=macNames
)
if "value" in axisVal:
@@ -2863,9 +2862,7 @@ def _buildAxisRecords(axes, nameTable, windowsNames=True, macNames=True):
return axisRecords, axisValues
-def _buildAxisValuesFormat4(
- locations, axes, nameTable, windowsNames=True, macNames=True
-):
+def _buildAxisValuesFormat4(locations, axes, ttFont, windowsNames=True, macNames=True):
axisTagToIndex = {}
for axisRecordIndex, axisDict in enumerate(axes):
axisTagToIndex[axisDict["tag"]] = axisRecordIndex
@@ -2875,7 +2872,7 @@ def _buildAxisValuesFormat4(
axisValRec = ot.AxisValue()
axisValRec.Format = 4
axisValRec.ValueNameID = _addName(
- nameTable, axisLocationDict["name"], windows=windowsNames, mac=macNames
+ ttFont, axisLocationDict["name"], windows=windowsNames, mac=macNames
)
axisValRec.Flags = axisLocationDict.get("flags", 0)
axisValueRecords = []
@@ -2891,7 +2888,8 @@ def _buildAxisValuesFormat4(
return axisValues
-def _addName(nameTable, value, minNameID=0, windows=True, mac=True):
+def _addName(ttFont, value, minNameID=0, windows=True, mac=True):
+ nameTable = ttFont["name"]
if isinstance(value, int):
# Already a nameID
return value
@@ -2916,5 +2914,5 @@ def _addName(nameTable, value, minNameID=0, windows=True, mac=True):
else:
raise TypeError("value must be int, str, dict or list")
return nameTable.addMultilingualName(
- names, windows=windows, mac=mac, minNameID=minNameID
+ names, ttFont=ttFont, windows=windows, mac=mac, minNameID=minNameID
)
diff --git a/contrib/python/fonttools/fontTools/varLib/featureVars.py b/contrib/python/fonttools/fontTools/varLib/featureVars.py
index a6beb5c7d2..828b843594 100644
--- a/contrib/python/fonttools/fontTools/varLib/featureVars.py
+++ b/contrib/python/fonttools/fontTools/varLib/featureVars.py
@@ -414,6 +414,10 @@ def addFeatureVariationsRaw(font, table, conditionalSubstitutions, featureTag="r
axis.axisTag: axisIndex for axisIndex, axis in enumerate(font["fvar"].axes)
}
+ hasFeatureVariations = (
+ hasattr(table, "FeatureVariations") and table.FeatureVariations is not None
+ )
+
featureVariationRecords = []
for conditionSet, lookupIndices in conditionalSubstitutions:
conditionTable = []
@@ -440,11 +444,19 @@ def addFeatureVariationsRaw(font, table, conditionalSubstitutions, featureTag="r
varFeatureIndex, combinedLookupIndices
)
)
- featureVariationRecords.append(
- buildFeatureVariationRecord(conditionTable, records)
- )
+ if hasFeatureVariations and (
+ fvr := findFeatureVariationRecord(table.FeatureVariations, conditionTable)
+ ):
+ fvr.FeatureTableSubstitution.SubstitutionRecord.extend(records)
+ fvr.FeatureTableSubstitution.SubstitutionCount = len(
+ fvr.FeatureTableSubstitution.SubstitutionRecord
+ )
+ else:
+ featureVariationRecords.append(
+ buildFeatureVariationRecord(conditionTable, records)
+ )
- if hasattr(table, "FeatureVariations") and table.FeatureVariations is not None:
+ if hasFeatureVariations:
if table.FeatureVariations.Version != 0x00010000:
raise VarLibError(
"Unsupported FeatureVariations table version: "
@@ -614,6 +626,21 @@ def buildConditionTable(axisIndex, filterRangeMinValue, filterRangeMaxValue):
return ct
+def findFeatureVariationRecord(featureVariations, conditionTable):
+ """Find a FeatureVariationRecord that has the same conditionTable."""
+ if featureVariations.Version != 0x00010000:
+ raise VarLibError(
+ "Unsupported FeatureVariations table version: "
+ f"0x{featureVariations.Version:08x} (expected 0x00010000)."
+ )
+
+ for fvr in featureVariations.FeatureVariationRecord:
+ if conditionTable == fvr.ConditionSet.ConditionTable:
+ return fvr
+
+ return None
+
+
def sortFeatureList(table):
"""Sort the feature list by feature tag, and remap the feature indices
elsewhere. This is needed after the feature list has been modified.
diff --git a/contrib/python/fonttools/fontTools/varLib/interpolatable.py b/contrib/python/fonttools/fontTools/varLib/interpolatable.py
index 0a9bbebc41..5fc12e04c9 100644
--- a/contrib/python/fonttools/fontTools/varLib/interpolatable.py
+++ b/contrib/python/fonttools/fontTools/varLib/interpolatable.py
@@ -376,9 +376,6 @@ def test_gen(
size1 = m1Vec[0] * m1Vec[0]
midSize = midVector[0] * midVector[0]
- power = 1
- t = tolerance**power
-
for overweight, problem_type in enumerate(
(
InterpolatableProblem.UNDERWEIGHT,
@@ -386,8 +383,7 @@ def test_gen(
)
):
if overweight:
- expectedSize = sqrt(size0 * size1)
- expectedSize = (size0 + size1) - expectedSize
+ expectedSize = max(size0, size1)
continue
else:
expectedSize = sqrt(size0 * size1)
@@ -406,13 +402,9 @@ def test_gen(
) or (overweight and 1e-5 + expectedSize / tolerance < midSize):
try:
if overweight:
- this_tolerance = (expectedSize / midSize) ** (
- 1 / power
- )
+ this_tolerance = expectedSize / midSize
else:
- this_tolerance = (midSize / expectedSize) ** (
- 1 / power
- )
+ this_tolerance = midSize / expectedSize
except ZeroDivisionError:
this_tolerance = 0
log.debug("tolerance %g", this_tolerance)
diff --git a/contrib/python/fonttools/ya.make b/contrib/python/fonttools/ya.make
index 6e76c94da1..4d380b556c 100644
--- a/contrib/python/fonttools/ya.make
+++ b/contrib/python/fonttools/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(4.47.0)
+VERSION(4.47.2)
LICENSE(MIT)
diff --git a/contrib/python/google-auth/py3/.dist-info/METADATA b/contrib/python/google-auth/py3/.dist-info/METADATA
index 21345a0555..2820e8856d 100644
--- a/contrib/python/google-auth/py3/.dist-info/METADATA
+++ b/contrib/python/google-auth/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: google-auth
-Version: 2.26.1
+Version: 2.26.2
Summary: Google Authentication Library
Home-page: https://github.com/googleapis/google-auth-library-python
Author: Google Cloud Platform
diff --git a/contrib/python/google-auth/py3/google/auth/external_account_authorized_user.py b/contrib/python/google-auth/py3/google/auth/external_account_authorized_user.py
index 55230103f4..526588f7e8 100644
--- a/contrib/python/google-auth/py3/google/auth/external_account_authorized_user.py
+++ b/contrib/python/google-auth/py3/google/auth/external_account_authorized_user.py
@@ -342,6 +342,7 @@ class Credentials(
revoke_url=info.get("revoke_url"),
quota_project_id=info.get("quota_project_id"),
scopes=info.get("scopes"),
+ universe_domain=info.get("universe_domain", _DEFAULT_UNIVERSE_DOMAIN),
**kwargs
)
diff --git a/contrib/python/google-auth/py3/google/auth/version.py b/contrib/python/google-auth/py3/google/auth/version.py
index 1c94c2f5f6..6d53c4c411 100644
--- a/contrib/python/google-auth/py3/google/auth/version.py
+++ b/contrib/python/google-auth/py3/google/auth/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "2.26.1"
+__version__ = "2.26.2"
diff --git a/contrib/python/google-auth/py3/tests/data/external_account_authorized_user_non_gdu.json b/contrib/python/google-auth/py3/tests/data/external_account_authorized_user_non_gdu.json
new file mode 100644
index 0000000000..b82854c743
--- /dev/null
+++ b/contrib/python/google-auth/py3/tests/data/external_account_authorized_user_non_gdu.json
@@ -0,0 +1,10 @@
+{
+ "type": "external_account_authorized_user",
+ "audience": "//iam.fake_universe_domain/locations/global/workforcePools/$WORKFORCE_POOL_ID/providers/$PROVIDER_ID",
+ "refresh_token": "refreshToken",
+ "token_url": "https://sts.fake_universe_domain/v1/oauth/token",
+ "token_info_url": "https://sts.fake_universe_domain/v1/instrospect",
+ "client_id": "clientId",
+ "client_secret": "clientSecret",
+ "universe_domain": "fake_universe_domain"
+}
diff --git a/contrib/python/google-auth/py3/tests/test__default.py b/contrib/python/google-auth/py3/tests/test__default.py
index d619614790..aaf892f6d0 100644
--- a/contrib/python/google-auth/py3/tests/test__default.py
+++ b/contrib/python/google-auth/py3/tests/test__default.py
@@ -158,6 +158,10 @@ EXTERNAL_ACCOUNT_AUTHORIZED_USER_FILE = os.path.join(
DATA_DIR, "external_account_authorized_user.json"
)
+EXTERNAL_ACCOUNT_AUTHORIZED_USER_NON_GDU_FILE = os.path.join(
+ DATA_DIR, "external_account_authorized_user_non_gdu.json"
+)
+
MOCK_CREDENTIALS = mock.Mock(spec=credentials.CredentialsWithQuotaProject)
MOCK_CREDENTIALS.with_quota_project.return_value = MOCK_CREDENTIALS
@@ -577,6 +581,15 @@ def test_load_credentials_from_file_external_account_authorized_user():
assert project_id is None
+def test_load_credentials_from_file_external_account_authorized_user_non_gdu():
+ credentials, _ = _default.load_credentials_from_file(
+ EXTERNAL_ACCOUNT_AUTHORIZED_USER_NON_GDU_FILE, request=mock.sentinel.request
+ )
+
+ assert isinstance(credentials, external_account_authorized_user.Credentials)
+ assert credentials.universe_domain == "fake_universe_domain"
+
+
def test_load_credentials_from_file_external_account_authorized_user_bad_format(tmpdir):
filename = tmpdir.join("external_account_authorized_user_bad.json")
filename.write(json.dumps({"type": "external_account_authorized_user"}))
diff --git a/contrib/python/google-auth/py3/ya.make b/contrib/python/google-auth/py3/ya.make
index 75848da971..976b926bff 100644
--- a/contrib/python/google-auth/py3/ya.make
+++ b/contrib/python/google-auth/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(2.26.1)
+VERSION(2.26.2)
LICENSE(Apache-2.0)
diff --git a/contrib/python/hypothesis/py3/.dist-info/METADATA b/contrib/python/hypothesis/py3/.dist-info/METADATA
index bf3a10e9cc..b4f00cf430 100644
--- a/contrib/python/hypothesis/py3/.dist-info/METADATA
+++ b/contrib/python/hypothesis/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: hypothesis
-Version: 6.92.7
+Version: 6.92.8
Summary: A library for property-based testing
Home-page: https://hypothesis.works
Author: David R. MacIver and Zac Hatfield-Dodds
diff --git a/contrib/python/hypothesis/py3/hypothesis/control.py b/contrib/python/hypothesis/py3/hypothesis/control.py
index c49dba2954..3a973f666f 100644
--- a/contrib/python/hypothesis/py3/hypothesis/control.py
+++ b/contrib/python/hypothesis/py3/hypothesis/control.py
@@ -8,6 +8,7 @@
# v. 2.0. If a copy of the MPL was not distributed with this file, You can
# obtain one at https://mozilla.org/MPL/2.0/.
+import inspect
import math
from collections import defaultdict
from typing import NoReturn, Union
@@ -25,6 +26,10 @@ from hypothesis.utils.dynamicvariables import DynamicVariable
from hypothesis.vendor.pretty import IDKey
+def _calling_function_name(frame):
+ return frame.f_back.f_code.co_name
+
+
def reject() -> NoReturn:
if _current_build_context.value is None:
note_deprecation(
@@ -32,7 +37,8 @@ def reject() -> NoReturn:
since="2023-09-25",
has_codemod=False,
)
- raise UnsatisfiedAssumption
+ f = _calling_function_name(inspect.currentframe())
+ raise UnsatisfiedAssumption(f"reject() in {f}")
def assume(condition: object) -> bool:
@@ -49,7 +55,8 @@ def assume(condition: object) -> bool:
has_codemod=False,
)
if not condition:
- raise UnsatisfiedAssumption
+ f = _calling_function_name(inspect.currentframe())
+ raise UnsatisfiedAssumption(f"failed to satisfy assume() in {f}")
return True
diff --git a/contrib/python/hypothesis/py3/hypothesis/core.py b/contrib/python/hypothesis/py3/hypothesis/core.py
index 7c149d1222..86b20ea6f9 100644
--- a/contrib/python/hypothesis/py3/hypothesis/core.py
+++ b/contrib/python/hypothesis/py3/hypothesis/core.py
@@ -1005,10 +1005,10 @@ class StateForActualGivenExecution:
f"{self.test.__name__} returned {result!r} instead.",
HealthCheck.return_value,
)
- except UnsatisfiedAssumption:
+ except UnsatisfiedAssumption as e:
# An "assume" check failed, so instead we inform the engine that
# this test run was invalid.
- data.mark_invalid()
+ data.mark_invalid(e.reason)
except StopTest:
# The engine knows how to handle this control exception, so it's
# OK to re-raise it.
diff --git a/contrib/python/hypothesis/py3/hypothesis/errors.py b/contrib/python/hypothesis/py3/hypothesis/errors.py
index 9ee81cfc36..8387a87586 100644
--- a/contrib/python/hypothesis/py3/hypothesis/errors.py
+++ b/contrib/python/hypothesis/py3/hypothesis/errors.py
@@ -23,6 +23,9 @@ class UnsatisfiedAssumption(HypothesisException):
If you're seeing this error something has gone wrong.
"""
+ def __init__(self, reason=None):
+ self.reason = reason
+
class NoSuchExample(HypothesisException):
"""The condition we have been asked to satisfy appears to be always false.
diff --git a/contrib/python/hypothesis/py3/hypothesis/version.py b/contrib/python/hypothesis/py3/hypothesis/version.py
index cd924cc7a7..ef8fe6a63a 100644
--- a/contrib/python/hypothesis/py3/hypothesis/version.py
+++ b/contrib/python/hypothesis/py3/hypothesis/version.py
@@ -8,5 +8,5 @@
# v. 2.0. If a copy of the MPL was not distributed with this file, You can
# obtain one at https://mozilla.org/MPL/2.0/.
-__version_info__ = (6, 92, 7)
+__version_info__ = (6, 92, 8)
__version__ = ".".join(map(str, __version_info__))
diff --git a/contrib/python/hypothesis/py3/ya.make b/contrib/python/hypothesis/py3/ya.make
index 6616c6d3b9..92b1d0c734 100644
--- a/contrib/python/hypothesis/py3/ya.make
+++ b/contrib/python/hypothesis/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(6.92.7)
+VERSION(6.92.8)
LICENSE(MPL-2.0)
diff --git a/yt/yt/core/concurrency/config.cpp b/yt/yt/core/concurrency/config.cpp
index c54512e56e..acd8194e2f 100644
--- a/yt/yt/core/concurrency/config.cpp
+++ b/yt/yt/core/concurrency/config.cpp
@@ -32,10 +32,22 @@ void TPeriodicExecutorOptionsSerializer::Register(TRegistrar registrar)
void TRetryingPeriodicExecutorOptionsSerializer::Register(TRegistrar registrar)
{
- registrar.ExternalClassParameter("periodic", &TThat::Periodic)
- .Default();
- registrar.ExternalClassParameter("backoff_strategy", &TThat::BackoffStrategy)
- .Default();
+ //! NB(arkady-e1ppa): Defaults and preprocessors of derived class
+ //! override defaults and overrides of base class and base class fields
+ registrar.ExternalPreprocessor([] (TThat* options) {
+ *options = TRetryingPeriodicExecutorOptions{
+ {
+ .Period = TDuration::Seconds(5),
+ .Splay = TDuration::Seconds(1),
+ .Jitter = 0.0,
+ },
+ {
+ .MinBackoff = TDuration::Seconds(5),
+ .MaxBackoff = TDuration::Seconds(60),
+ .BackoffMultiplier = 2.0,
+ },
+ };
+ });
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/yt/yt/core/concurrency/config.h b/yt/yt/core/concurrency/config.h
index cc2e007bf1..3777d7a8d4 100644
--- a/yt/yt/core/concurrency/config.h
+++ b/yt/yt/core/concurrency/config.h
@@ -27,10 +27,9 @@ struct TPeriodicExecutorOptions
////////////////////////////////////////////////////////////////////////////////
struct TRetryingPeriodicExecutorOptions
-{
- TPeriodicExecutorOptions Periodic;
- TExponentialBackoffOptions BackoffStrategy;
-};
+ : public TPeriodicExecutorOptions
+ , public TExponentialBackoffOptions
+{ };
////////////////////////////////////////////////////////////////////////////////
@@ -39,7 +38,7 @@ namespace NDetail {
////////////////////////////////////////////////////////////////////////////////
class TPeriodicExecutorOptionsSerializer
- : public NYTree::TExternalizedYsonStruct
+ : public virtual NYTree::TExternalizedYsonStruct
{
public:
REGISTER_EXTERNALIZED_YSON_STRUCT(TPeriodicExecutorOptions, TPeriodicExecutorOptionsSerializer);
@@ -50,10 +49,15 @@ public:
////////////////////////////////////////////////////////////////////////////////
class TRetryingPeriodicExecutorOptionsSerializer
- : public NYTree::TExternalizedYsonStruct
+ : public TPeriodicExecutorOptionsSerializer
+ , public ::NYT::NDetail::TExponentialBackoffOptionsSerializer
{
public:
- REGISTER_EXTERNALIZED_YSON_STRUCT(TRetryingPeriodicExecutorOptions, TRetryingPeriodicExecutorOptionsSerializer);
+ REGISTER_DERIVED_EXTERNALIZED_YSON_STRUCT(
+ TRetryingPeriodicExecutorOptions,
+ TRetryingPeriodicExecutorOptionsSerializer,
+ (TPeriodicExecutorOptionsSerializer)
+ (::NYT::NDetail::TExponentialBackoffOptionsSerializer));
static void Register(TRegistrar registrar);
};
diff --git a/yt/yt/core/concurrency/retrying_periodic_executor.cpp b/yt/yt/core/concurrency/retrying_periodic_executor.cpp
index 6858366ddd..3be49c6001 100644
--- a/yt/yt/core/concurrency/retrying_periodic_executor.cpp
+++ b/yt/yt/core/concurrency/retrying_periodic_executor.cpp
@@ -21,8 +21,8 @@ namespace NDetail {
TRetryingInvocationTimePolicy::TRetryingInvocationTimePolicy(
const TOptions& options)
- : TDefaultInvocationTimePolicy(options.Periodic)
- , Backoff_(options.BackoffStrategy)
+ : TDefaultInvocationTimePolicy(options)
+ , Backoff_(options)
{ }
void TRetryingInvocationTimePolicy::ProcessResult(TError result)
@@ -40,7 +40,7 @@ void TRetryingInvocationTimePolicy::ProcessResult(TError result)
bool TRetryingInvocationTimePolicy::ShouldKickstart(const TOptions& newOptions)
{
- return ShouldKickstart(newOptions.Periodic, std::nullopt);
+ return ShouldKickstart(newOptions, std::nullopt);
}
bool TRetryingInvocationTimePolicy::ShouldKickstart(
@@ -54,7 +54,7 @@ bool TRetryingInvocationTimePolicy::ShouldKickstart(
void TRetryingInvocationTimePolicy::SetOptions(TOptions newOptions)
{
- SetOptions(newOptions.Periodic, newOptions.BackoffStrategy);
+ SetOptions(newOptions, newOptions);
}
void TRetryingInvocationTimePolicy::SetOptions(
diff --git a/yt/yt/core/misc/config.h b/yt/yt/core/misc/config.h
index 70b17362d0..7b928e2151 100644
--- a/yt/yt/core/misc/config.h
+++ b/yt/yt/core/misc/config.h
@@ -149,7 +149,7 @@ DEFINE_REFCOUNTED_TYPE(TAdaptiveHedgingManagerConfig)
namespace NDetail {
class TExponentialBackoffOptionsSerializer
- : public NYTree::TExternalizedYsonStruct
+ : public virtual NYTree::TExternalizedYsonStruct
{
public:
REGISTER_EXTERNALIZED_YSON_STRUCT(TExponentialBackoffOptions, TExponentialBackoffOptionsSerializer);