From b64e85799ee39a54a110bb93bfdf279fc4b9814a Mon Sep 17 00:00:00 2001 From: AlexSm Date: Fri, 22 Dec 2023 20:30:08 +0100 Subject: [PATCH] Import libs 3 (#679) --- build/conf/java.conf | 22 +++ .../ymake/public.resources.json | 10 +- build/external_resources/ymake/resources.json | 10 +- build/mapping.conf.json | 16 ++- build/platform/test_tool/ya.make | 2 +- build/sysincl/darwin.yml | 1 + build/ymake.core.conf | 2 + .../Foundation/include/Poco/UTF32Encoding.h | 9 ++ .../poco/Foundation/src/UTF32Encoding.cpp | 42 +++--- .../py3/.dist-info/METADATA | 2 +- .../py3/importlib_metadata/__init__.py | 42 ++---- .../py3/importlib_metadata/diagnose.py | 21 +++ contrib/python/importlib-metadata/py3/ya.make | 3 +- .../type_index/include/boost/type_index.hpp | 26 +--- .../boost/type_index/ctti_type_index.hpp | 65 ++++----- .../detail/compile_time_type_info.hpp | 132 ++++++++++-------- .../type_index/detail/ctti_register_class.hpp | 12 +- .../type_index/detail/stl_register_class.hpp | 10 +- .../boost/type_index/stl_type_index.hpp | 94 ++++--------- .../boost/type_index/type_index_facade.hpp | 77 ++++------ contrib/restricted/boost/type_index/ya.make | 7 +- .../cpp/protobuf/json/json_writer_output.h | 5 +- .../cpp/protobuf/json/proto2json_printer.cpp | 10 +- .../cpp/protobuf/json/proto2json_printer.h | 2 +- .../cpp/protobuf/json/ut/proto2json_ut.cpp | 44 +++++- .../protobuf/json/ut/string_transform_ut.cpp | 2 - library/python/runtime_py3/importer.pxi | 3 +- yt/yt/client/api/etc_client.h | 2 +- .../complex_types/yson_format_conversion.cpp | 2 +- yt/yt/client/object_client/helpers.h | 2 +- yt/yt/client/unittests/comparator_ut.cpp | 12 +- .../client/unittests/composite_compare_ut.cpp | 2 +- yt/yt/client/unittests/logical_type_ut.cpp | 2 +- yt/yt/core/actions/unittests/bind_ut.cpp | 20 +-- yt/yt/core/bus/tcp/connection.cpp | 2 +- .../concurrency/unittests/scheduler_ut.cpp | 4 +- yt/yt/core/misc/unittests/callback_ut.cpp | 10 +- yt/yt/core/profiling/unittests/timing_ut.cpp | 2 +- yt/yt/core/rpc/config.cpp | 22 --- yt/yt/core/rpc/config.h | 34 ----- yt/yt/core/rpc/grpc/config.cpp | 12 +- yt/yt/core/rpc/grpc/config.h | 18 ++- yt/yt/core/rpc/grpc/public.h | 1 + yt/yt/core/rpc/public.h | 2 - yt/yt/core/rpc/server.h | 4 +- yt/yt/core/rpc/server_detail.cpp | 54 ++----- yt/yt/core/rpc/server_detail.h | 9 +- yt/yt/core/rpc/service_detail.cpp | 1 - yt/yt/core/yson/protobuf_interop.cpp | 2 +- yt/yt/library/formats/skiff_writer.cpp | 4 +- yt/yt/library/formats/web_json_writer.cpp | 2 +- .../proto/node_directory.proto | 2 +- 52 files changed, 420 insertions(+), 478 deletions(-) create mode 100644 contrib/python/importlib-metadata/py3/importlib_metadata/diagnose.py diff --git a/build/conf/java.conf b/build/conf/java.conf index d161c0d4c0c8..293304509828 100644 --- a/build/conf/java.conf +++ b/build/conf/java.conf @@ -74,6 +74,24 @@ multimodule JAVA_PROGRAM { } } +### Usage JUNIT_TESTS_JAR(path/to/some/peer realname.jar) +### +### Specifies jar to search test suites and test cases. By default tests are +### searched in the jar compild by JTEST or JUNIT5 module sources. This macro +### allows to specify diferent jar to search tests. +### +### Only one jar file is used to search tests. If this macro invoked multiple +### times (which is not reccomended practice) only the last invocation will +### have effect. +### +### If this macro is used no test from the module build by current ya.make +### will be searched and executed. +macro JUNIT_TESTS_JAR(Dir, Jar) { + SET(UNITTEST_DIR $Dir) + PEERDIR($Dir) + SET(UNITTEST_MOD $Dir/$Jar) +} + BUILD_JUNIT5_JAR_SEM=$BUILD_JAR_SEM && junit5_test multimodule JUNIT5 { @@ -102,6 +120,7 @@ multimodule JUNIT5 { .FINAL_TARGET=no .DEFAULT_NAME_GENERATOR=FullPath .SEM=BUILD_JUNIT5_JAR_SEM + .IGNORED=JUNIT_TESTS_JAR PEERDIR+=devtools/junit5-runner PEERDIR+=build/platform/java/jacoco-agent @@ -157,6 +176,7 @@ multimodule JTEST { .FINAL_TARGET=no .DEFAULT_NAME_GENERATOR=FullPath .SEM=BUILD_JUNIT4_JAR_SEM + .IGNORED=JUNIT_TESTS_JAR SET(MODULE_TYPE JTEST) DEPENDS(contrib/java/org/sonarsource/scanner/cli/sonar-scanner-cli/2.8) @@ -197,6 +217,7 @@ multimodule JTEST_FOR { # |-> FORBID_CONFLICT_DM_RECENT = FAIL (because downgrade from v1.4 to v1.1 is detected before understanding that v1.4 was excuded on the examined path) .IGNORED=JAVA_SRCS RUN_JAVA_PROGRAM JAVA_DEPENDENCIES_CONFIGURATION PROVIDES FEATURE_VERSION .ALIASES=JAVA_TEST_PEERDIR=PEERDIR JAVA_TEST_EXCLUDE=EXCLUDE + .RESTRICTED=JUNIT_TESTS_JAR .PEERDIRSELF=JAR_COMPILATION .SEM=PROGRAM_AND_TESTS_CP_COLLECTING_NODES_SEM @@ -210,6 +231,7 @@ multimodule JTEST_FOR { .FINAL_TARGET=no .DEFAULT_NAME_GENERATOR=FullPath .SEM=BUILD_JUNIT4_JAR_SEM + .RESTRICTED=JUNIT_TESTS_JAR SET(MODULE_TYPE JTEST_FOR) DEPENDS(contrib/java/org/sonarsource/scanner/cli/sonar-scanner-cli/2.8) diff --git a/build/external_resources/ymake/public.resources.json b/build/external_resources/ymake/public.resources.json index fa16b227cfef..cfe29ad8eb24 100644 --- a/build/external_resources/ymake/public.resources.json +++ b/build/external_resources/ymake/public.resources.json @@ -1,19 +1,19 @@ { "by_platform": { "darwin": { - "uri": "sbr:5550834592" + "uri": "sbr:5569062376" }, "darwin-arm64": { - "uri": "sbr:5550838146" + "uri": "sbr:5569072879" }, "linux": { - "uri": "sbr:5550826871" + "uri": "sbr:5569070627" }, "linux-aarch64": { - "uri": "sbr:5550843115" + "uri": "sbr:5569095361" }, "win32-clang-cl": { - "uri": "sbr:5550838970" + "uri": "sbr:5569066861" } } } diff --git a/build/external_resources/ymake/resources.json b/build/external_resources/ymake/resources.json index 9bd6c43508c8..0e5983e05659 100644 --- a/build/external_resources/ymake/resources.json +++ b/build/external_resources/ymake/resources.json @@ -1,19 +1,19 @@ { "by_platform": { "darwin": { - "uri": "sbr:5550837873" + "uri": "sbr:5569055879" }, "darwin-arm64": { - "uri": "sbr:5550841763" + "uri": "sbr:5569046692" }, "linux": { - "uri": "sbr:5550823946" + "uri": "sbr:5569080477" }, "linux-aarch64": { - "uri": "sbr:5550840880" + "uri": "sbr:5569058127" }, "win32-clang-cl": { - "uri": "sbr:5550839664" + "uri": "sbr:5569069854" } } } diff --git a/build/mapping.conf.json b/build/mapping.conf.json index 160a3bb15138..9d47061c2406 100644 --- a/build/mapping.conf.json +++ b/build/mapping.conf.json @@ -86,6 +86,7 @@ "5523579199": "https://devtools-registry.s3.yandex.net/5523579199", "5530948376": "https://devtools-registry.s3.yandex.net/5530948376", "5545691160": "https://devtools-registry.s3.yandex.net/5545691160", + "5559524010": "https://devtools-registry.s3.yandex.net/5559524010", "5486731632": "https://devtools-registry.s3.yandex.net/5486731632", "5514350352": "https://devtools-registry.s3.yandex.net/5514350352", "5514360398": "https://devtools-registry.s3.yandex.net/5514360398", @@ -95,6 +96,7 @@ "5530946535": "https://devtools-registry.s3.yandex.net/5530946535", "5545693767": "https://devtools-registry.s3.yandex.net/5545693767", "5545709989": "https://devtools-registry.s3.yandex.net/5545709989", + "5559537477": "https://devtools-registry.s3.yandex.net/5559537477", "5559549864": "https://devtools-registry.s3.yandex.net/5559549864", "4307890075": "https://devtools-registry.s3.yandex.net/4307890075", "5517245192": "https://devtools-registry.s3.yandex.net/5517245192", @@ -125,18 +127,23 @@ "5476908047": "https://devtools-registry.s3.yandex.net/5476908047", "5509380757": "https://devtools-registry.s3.yandex.net/5509380757", "5550834592": "https://devtools-registry.s3.yandex.net/5550834592", + "5569062376": "https://devtools-registry.s3.yandex.net/5569062376", "5476891477": "https://devtools-registry.s3.yandex.net/5476891477", "5509369518": "https://devtools-registry.s3.yandex.net/5509369518", "5550838146": "https://devtools-registry.s3.yandex.net/5550838146", + "5569072879": "https://devtools-registry.s3.yandex.net/5569072879", "5476896849": "https://devtools-registry.s3.yandex.net/5476896849", "5509364024": "https://devtools-registry.s3.yandex.net/5509364024", "5550826871": "https://devtools-registry.s3.yandex.net/5550826871", + "5569070627": "https://devtools-registry.s3.yandex.net/5569070627", "5476895322": "https://devtools-registry.s3.yandex.net/5476895322", "5509360013": "https://devtools-registry.s3.yandex.net/5509360013", "5550843115": "https://devtools-registry.s3.yandex.net/5550843115", + "5569095361": "https://devtools-registry.s3.yandex.net/5569095361", "5476896707": "https://devtools-registry.s3.yandex.net/5476896707", "5509388614": "https://devtools-registry.s3.yandex.net/5509388614", "5550838970": "https://devtools-registry.s3.yandex.net/5550838970", + "5569066861": "https://devtools-registry.s3.yandex.net/5569066861", "2980468199": "https://devtools-registry.s3.yandex.net/2980468199", "5562224408": "https://devtools-registry.s3.yandex.net/5562224408" }, @@ -226,6 +233,7 @@ "5523579199": "devtools/ya/test/programs/test_tool/bin/test_tool for linux", "5530948376": "devtools/ya/test/programs/test_tool/bin/test_tool for linux", "5545691160": "devtools/ya/test/programs/test_tool/bin/test_tool for linux", + "5559524010": "devtools/ya/test/programs/test_tool/bin/test_tool for linux", "5486731632": "devtools/ya/test/programs/test_tool/bin3/test_tool3 for linux", "5514350352": "devtools/ya/test/programs/test_tool/bin3/test_tool3 for linux", "5514360398": "devtools/ya/test/programs/test_tool/bin3/test_tool3 for linux", @@ -235,6 +243,7 @@ "5530946535": "devtools/ya/test/programs/test_tool/bin3/test_tool3 for linux", "5545693767": "devtools/ya/test/programs/test_tool/bin3/test_tool3 for linux", "5545709989": "devtools/ya/test/programs/test_tool/bin3/test_tool3 for linux", + "5559537477": "devtools/ya/test/programs/test_tool/bin3/test_tool3 for linux", "5559549864": "devtools/ya/test/programs/test_tool/bin3/test_tool3 for linux", "4307890075": "flake8_linter for linux", "5517245192": "flake8_linter for linux", @@ -265,21 +274,26 @@ "5476908047": "ymake for darwin", "5509380757": "ymake for darwin", "5550834592": "ymake for darwin", + "5569062376": "ymake for darwin", "5476891477": "ymake for darwin-arm64", "5509369518": "ymake for darwin-arm64", "5550838146": "ymake for darwin-arm64", + "5569072879": "ymake for darwin-arm64", "5476896849": "ymake for linux", "5509364024": "ymake for linux", "5550826871": "ymake for linux", + "5569070627": "ymake for linux", "5476895322": "ymake for linux-aarch64", "5509360013": "ymake for linux-aarch64", "5550843115": "ymake for linux-aarch64", + "5569095361": "ymake for linux-aarch64", "5476896707": "ymake.exe for win32-clang-cl", "5509388614": "ymake.exe for win32-clang-cl", "5550838970": "ymake.exe for win32-clang-cl", + "5569066861": "ymake.exe for win32-clang-cl", "2980468199": "ytexec for linux", "5562224408": "ytexec for linux" }, "resources_info": {}, "tasks": {} -} +} \ No newline at end of file diff --git a/build/platform/test_tool/ya.make b/build/platform/test_tool/ya.make index 6d25550c523d..4394136e14c1 100644 --- a/build/platform/test_tool/ya.make +++ b/build/platform/test_tool/ya.make @@ -11,7 +11,7 @@ IF (TEST_TOOL3_HOST_LOCAL) MESSAGE(WARNING Host test tool3 $TEST_TOOL3_HOST_LOCAL will be used) ENDIF() -IF (OPENSOURCE) +IF (OPENSOURCE AND USE_OPENSOURCE_TEST_TOOL) INCLUDE(host_os.ya.make.inc) ELSE() INCLUDE(host.ya.make.inc) diff --git a/build/sysincl/darwin.yml b/build/sysincl/darwin.yml index ec31605b7709..54e5295fa277 100644 --- a/build/sysincl/darwin.yml +++ b/build/sysincl/darwin.yml @@ -203,6 +203,7 @@ - CoreTelephony/CTTelephonyNetworkInfo.h - CoreText/CoreText.h - CoreVideo/CoreVideo.h + - DeviceCheck/DCAppAttestService.h - Foundation/Foundation.h - Foundation/NSException.h - Foundation/NSString.h diff --git a/build/ymake.core.conf b/build/ymake.core.conf index 5161f034242b..3a236876bc52 100644 --- a/build/ymake.core.conf +++ b/build/ymake.core.conf @@ -39,6 +39,8 @@ FORCE_COVERAGE_ENABLED= FORCE_COVERAGE_DISABLED= OBJADDE_LIB= OBJADDE_LIB_GLOBAL= +TRUE=yes +FALSE=no MODULE_PREFIX= MODULE_SUFFIX= diff --git a/contrib/libs/poco/Foundation/include/Poco/UTF32Encoding.h b/contrib/libs/poco/Foundation/include/Poco/UTF32Encoding.h index 6f8af525a66d..02b10b8a7e67 100644 --- a/contrib/libs/poco/Foundation/include/Poco/UTF32Encoding.h +++ b/contrib/libs/poco/Foundation/include/Poco/UTF32Encoding.h @@ -68,6 +68,15 @@ class Foundation_API UTF32Encoding: public TextEncoding int convert(int ch, unsigned char* bytes, int length) const; int queryConvert(const unsigned char* bytes, int length) const; int sequenceLength(const unsigned char* bytes, int length) const; + +protected: + static int safeToInt(Poco::UInt32 value) + { + if (value <= 0x10FFFF) + return static_cast(value); + else + return -1; + } private: bool _flipBytes; diff --git a/contrib/libs/poco/Foundation/src/UTF32Encoding.cpp b/contrib/libs/poco/Foundation/src/UTF32Encoding.cpp index db0cfe21d7fa..687a48c96c1d 100644 --- a/contrib/libs/poco/Foundation/src/UTF32Encoding.cpp +++ b/contrib/libs/poco/Foundation/src/UTF32Encoding.cpp @@ -30,22 +30,22 @@ const char* UTF32Encoding::_names[] = const TextEncoding::CharacterMap UTF32Encoding::_charMap = { - /* 00 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* 10 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* 20 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* 30 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* 40 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* 50 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* 60 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* 70 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* 80 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* 90 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* a0 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* b0 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* c0 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* d0 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* e0 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - /* f0 */ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + /* 00 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* 10 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* 20 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* 30 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* 40 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* 50 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* 60 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* 70 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* 80 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* 90 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* a0 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* b0 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* c0 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* d0 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* e0 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + /* f0 */ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, }; @@ -118,7 +118,7 @@ const TextEncoding::CharacterMap& UTF32Encoding::characterMap() const int UTF32Encoding::convert(const unsigned char* bytes) const { UInt32 uc; - unsigned char* p = (unsigned char*) &uc; + unsigned char* p = reinterpret_cast(&uc); *p++ = *bytes++; *p++ = *bytes++; *p++ = *bytes++; @@ -129,7 +129,7 @@ int UTF32Encoding::convert(const unsigned char* bytes) const ByteOrder::flipBytes(uc); } - return uc; + return safeToInt(uc); } @@ -138,7 +138,7 @@ int UTF32Encoding::convert(int ch, unsigned char* bytes, int length) const if (bytes && length >= 4) { UInt32 ch1 = _flipBytes ? ByteOrder::flipBytes((UInt32) ch) : (UInt32) ch; - unsigned char* p = (unsigned char*) &ch1; + unsigned char* p = reinterpret_cast(&ch1); *bytes++ = *p++; *bytes++ = *p++; *bytes++ = *p++; @@ -155,14 +155,14 @@ int UTF32Encoding::queryConvert(const unsigned char* bytes, int length) const if (length >= 4) { UInt32 uc; - unsigned char* p = (unsigned char*) &uc; + unsigned char* p = reinterpret_cast(&uc); *p++ = *bytes++; *p++ = *bytes++; *p++ = *bytes++; *p++ = *bytes++; if (_flipBytes) ByteOrder::flipBytes(uc); - return uc; + ret = safeToInt(uc); } return ret; diff --git a/contrib/python/importlib-metadata/py3/.dist-info/METADATA b/contrib/python/importlib-metadata/py3/.dist-info/METADATA index 9e58c1d38ef2..a344859f1745 100644 --- a/contrib/python/importlib-metadata/py3/.dist-info/METADATA +++ b/contrib/python/importlib-metadata/py3/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: importlib-metadata -Version: 6.9.0 +Version: 7.0.0 Summary: Read metadata from Python packages Home-page: https://github.com/python/importlib_metadata Author: Jason R. Coombs diff --git a/contrib/python/importlib-metadata/py3/importlib_metadata/__init__.py b/contrib/python/importlib-metadata/py3/importlib_metadata/__init__.py index 8416afdbd64a..cd015707b1a1 100644 --- a/contrib/python/importlib-metadata/py3/importlib_metadata/__init__.py +++ b/contrib/python/importlib-metadata/py3/importlib_metadata/__init__.py @@ -3,7 +3,9 @@ import abc import csv import sys +import json import email +import types import inspect import pathlib import operator @@ -20,7 +22,6 @@ NullFinder, StrPath, install, - pypy_partial, ) from ._functools import method_cache, pass_none from ._itertools import always_iterable, unique_everseen @@ -131,34 +132,7 @@ def valid(line: str): return line and not line.startswith('#') -class DeprecatedTuple: - """ - Provide subscript item access for backward compatibility. - - >>> recwarn = getfixture('recwarn') - >>> ep = EntryPoint(name='name', value='value', group='group') - >>> ep[:] - ('name', 'value', 'group') - >>> ep[0] - 'name' - >>> len(recwarn) - 1 - """ - - # Do not remove prior to 2023-05-01 or Python 3.13 - _warn = functools.partial( - warnings.warn, - "EntryPoint tuple interface is deprecated. Access members by name.", - DeprecationWarning, - stacklevel=pypy_partial(2), - ) - - def __getitem__(self, item): - self._warn() - return self._key()[item] - - -class EntryPoint(DeprecatedTuple): +class EntryPoint: """An entry point as defined by Python packaging conventions. See `the packaging docs on entry points @@ -630,6 +604,16 @@ def url_req_space(req): space = url_req_space(section.value) yield section.value + space + quoted_marker(section.name) + @property + def origin(self): + return self._load_json('direct_url.json') + + def _load_json(self, filename): + return pass_none(json.loads)( + self.read_text(filename), + object_hook=lambda data: types.SimpleNamespace(**data), + ) + class DistributionFinder(MetaPathFinder): """ diff --git a/contrib/python/importlib-metadata/py3/importlib_metadata/diagnose.py b/contrib/python/importlib-metadata/py3/importlib_metadata/diagnose.py new file mode 100644 index 000000000000..e405471ac4d9 --- /dev/null +++ b/contrib/python/importlib-metadata/py3/importlib_metadata/diagnose.py @@ -0,0 +1,21 @@ +import sys + +from . import Distribution + + +def inspect(path): + print("Inspecting", path) + dists = list(Distribution.discover(path=[path])) + if not dists: + return + print("Found", len(dists), "packages:", end=' ') + print(', '.join(dist.name for dist in dists)) + + +def run(): + for path in sys.path: + inspect(path) + + +if __name__ == '__main__': + run() diff --git a/contrib/python/importlib-metadata/py3/ya.make b/contrib/python/importlib-metadata/py3/ya.make index cb87df460a07..4e4813824c9b 100644 --- a/contrib/python/importlib-metadata/py3/ya.make +++ b/contrib/python/importlib-metadata/py3/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(6.9.0) +VERSION(7.0.0) LICENSE(Apache-2.0) @@ -23,6 +23,7 @@ PY_SRCS( importlib_metadata/_meta.py importlib_metadata/_py39compat.py importlib_metadata/_text.py + importlib_metadata/diagnose.py ) RESOURCE_FILES( diff --git a/contrib/restricted/boost/type_index/include/boost/type_index.hpp b/contrib/restricted/boost/type_index/include/boost/type_index.hpp index 9ef884a8c4c3..a37d0e16ee63 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index.hpp @@ -20,26 +20,6 @@ # pragma once #endif - - -#include -#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ - defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) || \ - defined(BOOST_NO_CXX11_CONSTEXPR) || \ - defined(BOOST_NO_CXX11_NULLPTR) || \ - defined(BOOST_NO_CXX11_NOEXCEPT) || \ - defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || \ - defined(BOOST_NO_CXX11_FINAL) || \ - defined(BOOST_NO_CXX11_ALIGNOF) || \ - defined(BOOST_NO_CXX11_STATIC_ASSERT) || \ - defined(BOOST_NO_CXX11_SMART_PTR) || \ - defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) || \ - defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) - -BOOST_PRAGMA_MESSAGE("C++03 support is deprecated in Boost.TypeIndex 1.82 and will be removed in Boost.TypeIndex 1.84.") - -#endif - #if defined(BOOST_TYPE_INDEX_USER_TYPEINDEX) # error #include BOOST_TYPE_INDEX_USER_TYPEINDEX # ifdef BOOST_HAS_PRAGMA_DETECT_MISMATCH @@ -228,7 +208,7 @@ typedef type_index::type_info_t type_info; /// \throw Nothing. /// \return boost::typeindex::type_index with information about the specified type T. template -inline type_index type_id() BOOST_NOEXCEPT { +inline type_index type_id() noexcept { return type_index::type_id(); } @@ -248,7 +228,7 @@ inline type_index type_id() BOOST_NOEXCEPT { /// \throw Nothing. /// \return boost::typeindex::type_index with information about the specified type T. template -inline type_index type_id_with_cvr() BOOST_NOEXCEPT { +inline type_index type_id_with_cvr() noexcept { return type_index::type_id_with_cvr(); } @@ -273,7 +253,7 @@ inline type_index type_id_with_cvr() BOOST_NOEXCEPT { /// \throw Nothing. /// \return boost::typeindex::type_index with information about the specified variable. template -inline type_index type_id_runtime(const T& runtime_val) BOOST_NOEXCEPT { +inline type_index type_id_runtime(const T& runtime_val) noexcept { return type_index::type_id_runtime(runtime_val); } diff --git a/contrib/restricted/boost/type_index/include/boost/type_index/ctti_type_index.hpp b/contrib/restricted/boost/type_index/include/boost/type_index/ctti_type_index.hpp index 818545b88912..d6717f3b8c7d 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index/ctti_type_index.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index/ctti_type_index.hpp @@ -22,10 +22,8 @@ #include #include +#include #include -#include -#include -#include #ifdef BOOST_HAS_PRAGMA_ONCE # pragma once @@ -58,24 +56,17 @@ namespace detail { /// std::cout << ti.pretty_name(); /// \endcode class ctti_data { -#ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS public: ctti_data() = delete; ctti_data(const ctti_data&) = delete; ctti_data& operator=(const ctti_data&) = delete; -#else -private: - ctti_data(); - ctti_data(const ctti_data&); - ctti_data& operator=(const ctti_data&); -#endif }; } // namespace detail /// Helper method for getting detail::ctti_data of a template parameter T. template -inline const detail::ctti_data& ctti_construct() BOOST_NOEXCEPT { +inline const detail::ctti_data& ctti_construct() noexcept { // Standard C++11, 5.2.10 Reinterpret cast: // An object pointer can be explicitly converted to an object pointer of a different type. When a prvalue // v of type "pointer to T1" is converted to the type "pointer to cv T2", the result is static_cast { const char* data_; - inline std::size_t get_raw_name_length() const BOOST_NOEXCEPT; + inline std::size_t get_raw_name_length() const noexcept; - BOOST_CXX14_CONSTEXPR inline explicit ctti_type_index(const char* data) BOOST_NOEXCEPT + BOOST_CXX14_CONSTEXPR inline explicit ctti_type_index(const char* data) noexcept : data_(data) {} public: typedef detail::ctti_data type_info_t; - BOOST_CXX14_CONSTEXPR inline ctti_type_index() BOOST_NOEXCEPT + BOOST_CXX14_CONSTEXPR inline ctti_type_index() noexcept : data_(boost::detail::ctti::n()) {} - inline ctti_type_index(const type_info_t& data) BOOST_NOEXCEPT + inline ctti_type_index(const type_info_t& data) noexcept : data_(reinterpret_cast(&data)) {} - inline const type_info_t& type_info() const BOOST_NOEXCEPT; - BOOST_CXX14_CONSTEXPR inline const char* raw_name() const BOOST_NOEXCEPT; - BOOST_CXX14_CONSTEXPR inline const char* name() const BOOST_NOEXCEPT; + inline const type_info_t& type_info() const noexcept; + BOOST_CXX14_CONSTEXPR inline const char* raw_name() const noexcept; + BOOST_CXX14_CONSTEXPR inline const char* name() const noexcept; inline std::string pretty_name() const; - inline std::size_t hash_code() const BOOST_NOEXCEPT; + inline std::size_t hash_code() const noexcept; - BOOST_CXX14_CONSTEXPR inline bool equal(const ctti_type_index& rhs) const BOOST_NOEXCEPT; - BOOST_CXX14_CONSTEXPR inline bool before(const ctti_type_index& rhs) const BOOST_NOEXCEPT; + BOOST_CXX14_CONSTEXPR inline bool equal(const ctti_type_index& rhs) const noexcept; + BOOST_CXX14_CONSTEXPR inline bool before(const ctti_type_index& rhs) const noexcept; template - BOOST_CXX14_CONSTEXPR inline static ctti_type_index type_id() BOOST_NOEXCEPT; + BOOST_CXX14_CONSTEXPR inline static ctti_type_index type_id() noexcept; template - BOOST_CXX14_CONSTEXPR inline static ctti_type_index type_id_with_cvr() BOOST_NOEXCEPT; + BOOST_CXX14_CONSTEXPR inline static ctti_type_index type_id_with_cvr() noexcept; template - inline static ctti_type_index type_id_runtime(const T& variable) BOOST_NOEXCEPT; + inline static ctti_type_index type_id_runtime(const T& variable) noexcept; }; -inline const ctti_type_index::type_info_t& ctti_type_index::type_info() const BOOST_NOEXCEPT { +inline const ctti_type_index::type_info_t& ctti_type_index::type_info() const noexcept { return *reinterpret_cast(data_); } -BOOST_CXX14_CONSTEXPR inline bool ctti_type_index::equal(const ctti_type_index& rhs) const BOOST_NOEXCEPT { +BOOST_CXX14_CONSTEXPR inline bool ctti_type_index::equal(const ctti_type_index& rhs) const noexcept { const char* const left = raw_name(); const char* const right = rhs.raw_name(); return /*left == right ||*/ !boost::typeindex::detail::constexpr_strcmp(left, right); } -BOOST_CXX14_CONSTEXPR inline bool ctti_type_index::before(const ctti_type_index& rhs) const BOOST_NOEXCEPT { +BOOST_CXX14_CONSTEXPR inline bool ctti_type_index::before(const ctti_type_index& rhs) const noexcept { const char* const left = raw_name(); const char* const right = rhs.raw_name(); return /*left != right &&*/ boost::typeindex::detail::constexpr_strcmp(left, right) < 0; @@ -161,37 +152,37 @@ BOOST_CXX14_CONSTEXPR inline bool ctti_type_index::before(const ctti_type_index& template -BOOST_CXX14_CONSTEXPR inline ctti_type_index ctti_type_index::type_id() BOOST_NOEXCEPT { - typedef BOOST_DEDUCED_TYPENAME boost::remove_reference::type no_ref_t; - typedef BOOST_DEDUCED_TYPENAME boost::remove_cv::type no_cvr_t; +BOOST_CXX14_CONSTEXPR inline ctti_type_index ctti_type_index::type_id() noexcept { + typedef typename std::remove_reference::type no_ref_t; + typedef typename std::remove_cv::type no_cvr_t; return ctti_type_index(boost::detail::ctti::n()); } template -BOOST_CXX14_CONSTEXPR inline ctti_type_index ctti_type_index::type_id_with_cvr() BOOST_NOEXCEPT { +BOOST_CXX14_CONSTEXPR inline ctti_type_index ctti_type_index::type_id_with_cvr() noexcept { return ctti_type_index(boost::detail::ctti::n()); } template -inline ctti_type_index ctti_type_index::type_id_runtime(const T& variable) BOOST_NOEXCEPT { +inline ctti_type_index ctti_type_index::type_id_runtime(const T& variable) noexcept { return variable.boost_type_index_type_id_runtime_(); } -BOOST_CXX14_CONSTEXPR inline const char* ctti_type_index::raw_name() const BOOST_NOEXCEPT { +BOOST_CXX14_CONSTEXPR inline const char* ctti_type_index::raw_name() const noexcept { return data_; } -BOOST_CXX14_CONSTEXPR inline const char* ctti_type_index::name() const BOOST_NOEXCEPT { +BOOST_CXX14_CONSTEXPR inline const char* ctti_type_index::name() const noexcept { return data_; } -inline std::size_t ctti_type_index::get_raw_name_length() const BOOST_NOEXCEPT { - return std::strlen(raw_name() + detail::ctti_skip_size_at_end); +inline std::size_t ctti_type_index::get_raw_name_length() const noexcept { + return std::strlen(raw_name() + detail::skip().size_at_end); } @@ -202,7 +193,7 @@ inline std::string ctti_type_index::pretty_name() const { } -inline std::size_t ctti_type_index::hash_code() const BOOST_NOEXCEPT { +inline std::size_t ctti_type_index::hash_code() const noexcept { return boost::hash_range(raw_name(), raw_name() + get_raw_name_length()); } diff --git a/contrib/restricted/boost/type_index/include/boost/type_index/detail/compile_time_type_info.hpp b/contrib/restricted/boost/type_index/include/boost/type_index/detail/compile_time_type_info.hpp index c80808410ddd..9d6129a8d0a8 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index/detail/compile_time_type_info.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index/detail/compile_time_type_info.hpp @@ -13,10 +13,10 @@ /// \brief Contains helper macros and implementation details of boost::typeindex::ctti_type_index. /// Not intended for inclusion from user's code. -#include #include -#include -#include + +#include +#include #ifdef BOOST_HAS_PRAGMA_ONCE # pragma once @@ -35,74 +35,87 @@ #define BOOST_TYPE_INDEX_DETAIL_BUILTIN_STRCMP(str1, str2) __builtin_strcmp(str1, str2) #endif -#define BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS(begin_skip, end_skip, runtime_skip, runtime_skip_until) \ - namespace boost { namespace typeindex { namespace detail { \ - BOOST_STATIC_CONSTEXPR std::size_t ctti_skip_size_at_begin = begin_skip; \ - BOOST_STATIC_CONSTEXPR std::size_t ctti_skip_size_at_end = end_skip; \ - BOOST_STATIC_CONSTEXPR bool ctti_skip_more_at_runtime = runtime_skip; \ - BOOST_STATIC_CONSTEXPR char ctti_skip_until_runtime[] = runtime_skip_until; \ - }}} /* namespace boost::typeindex::detail */ \ - /**/ /// @endcond +namespace boost { namespace typeindex { namespace detail { + struct ctti_skip { + std::size_t size_at_begin; + std::size_t size_at_end; + const char* until_runtime; + std::size_t until_runtime_length; + }; + + template + constexpr ctti_skip make_ctti_skip(std::size_t size_at_begin, + std::size_t size_at_end, + bool more_at_runtime, + const char (&until_runtime)[N]) + { + return ctti_skip{size_at_begin, size_at_end, until_runtime, more_at_runtime ? N - 1 : 0}; + } + + template + constexpr ctti_skip make_ctti_skip(std::size_t size_at_begin, + std::size_t size_at_end, + const char (&until_runtime)[N]) + { + return ctti_skip{size_at_begin, size_at_end, until_runtime, N - 1}; + } + #if defined(BOOST_TYPE_INDEX_DOXYGEN_INVOKED) /* Nothing to document. All the macro docs are moved to */ #elif defined(BOOST_TYPE_INDEX_CTTI_USER_DEFINED_PARSING) -# include - BOOST_PP_EXPAND( BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS BOOST_TYPE_INDEX_CTTI_USER_DEFINED_PARSING ) +constexpr ctti_skip skip() noexcept { return detail::make_ctti_skip BOOST_TYPE_INDEX_CTTI_USER_DEFINED_PARSING; } #elif defined(_MSC_VER) && !defined(__clang__) && defined (BOOST_NO_CXX11_NOEXCEPT) // sizeof("const char *__cdecl boost::detail::ctti<") - 1, sizeof(">::n(void)") - 1 - BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS(40, 10, false, "") +constexpr ctti_skip skip() noexcept { return detail::make_ctti_skip(40, 10, ""); } #elif defined(_MSC_VER) && !defined(__clang__) && !defined (BOOST_NO_CXX11_NOEXCEPT) // sizeof("const char *__cdecl boost::detail::ctti<") - 1, sizeof(">::n(void) noexcept") - 1 - BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS(40, 19, false, "") +constexpr ctti_skip skip() noexcept { return detail::make_ctti_skip(40, 19, ""); } #elif defined(__clang__) && defined(__APPLE__) // Someone made __clang_major__ equal to LLVM version rather than compiler version // on APPLE platform. // // Using less efficient solution because there is no good way to detect real version of Clang. // sizeof("static const char *boost::detail::ctti<") - 1, sizeof("]") - 1, true, "???????????>::n() [T = int" - BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS(39, 1, true, "T = ") +constexpr ctti_skip skip() noexcept { return detail::make_ctti_skip(39, 1, "T = "); } #elif defined(__clang__) && (__clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ == 0)) // sizeof("static const char *boost::detail::ctti<") - 1, sizeof(">::n()") - 1 // note: checked on 3.0 - BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS(39, 6, false, "") +constexpr ctti_skip skip() noexcept { return detail::make_ctti_skip(39, 6, ""); } #elif defined(__clang__) && (__clang_major__ >= 4 || (__clang_major__ == 3 && __clang_minor__ > 0)) // sizeof("static const char *boost::detail::ctti<") - 1, sizeof("]") - 1, true, "int>::n() [T = int" // note: checked on 3.1, 3.4 - BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS(39, 1, true, "T = ") +constexpr ctti_skip skip() noexcept { return detail::make_ctti_skip(39, 1, "T = "); } #elif defined(__EDG__) && !defined(BOOST_NO_CXX14_CONSTEXPR) // sizeof("static cha boost::detail::ctti::s() [with I = 40U, T = ") - 1, sizeof("]") - 1 // note: checked on 4.14 - BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS(58, 1, false, "") +constexpr ctti_skip skip() noexcept { return detail::make_ctti_skip(58, 1, ""); } #elif defined(__EDG__) && defined(BOOST_NO_CXX14_CONSTEXPR) // sizeof("static const char *boost::detail::ctti::n() [with T = ") - 1, sizeof("]") - 1 // note: checked on 4.14 - BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS(57, 1, false, "") +constexpr ctti_skip skip() noexcept { return detail::make_ctti_skip(57, 1, ""); } #elif defined(__GNUC__) && (__GNUC__ < 7) && !defined(BOOST_NO_CXX14_CONSTEXPR) - // sizeof("static constexpr char boost::detail::ctti::s() [with unsigned int I = 0u; T = ") - 1, sizeof("]") - 1 - BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS(81, 1, false, "") + // sizeof("static constexpr char boost::detail::ctti::s() [with unsigned int I = 0u; } T = ") - 1, sizeof("]") - 1 +constexpr ctti_skip skip() noexcept { return detail::make_ctti_skip(81, 1, ""); } #elif defined(__GNUC__) && (__GNUC__ >= 7) && !defined(BOOST_NO_CXX14_CONSTEXPR) - // sizeof("static constexpr char boost::detail::ctti::s() [with unsigned int I = 0; T = ") - 1, sizeof("]") - 1 - BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS(80, 1, false, "") + // sizeof("static constexpr char boost::detail::ctti::s() [with unsigned int I = 0; } T = ") - 1, sizeof("]") - 1 +constexpr ctti_skip skip() noexcept { return detail::make_ctti_skip(80, 1, ""); } #elif defined(__GNUC__) && defined(BOOST_NO_CXX14_CONSTEXPR) // sizeof("static const char* boost::detail::ctti::n() [with T = ") - 1, sizeof("]") - 1 - BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS(57, 1, false, "") +constexpr ctti_skip skip() noexcept { return detail::make_ctti_skip(57, 1, ""); } #elif defined(__ghs__) // sizeof("static const char *boost::detail::ctti::n() [with T = ") - 1, sizeof("]") - 1 - BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS(57, 1, false, "") +constexpr ctti_skip skip() noexcept { return detail::make_ctti_skip(57, 1, ""); } #else // Deafult code for other platforms... Just skip nothing! - BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS(0, 0, false, "") +constexpr ctti_skip skip() noexcept { return detail::make_ctti_skip(0, 0, ""); } #endif -#undef BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS - -namespace boost { namespace typeindex { namespace detail { template - BOOST_CXX14_CONSTEXPR inline void assert_compile_time_legths() BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT_MSG( + BOOST_CXX14_CONSTEXPR inline void assert_compile_time_legths() noexcept { + static_assert( Condition, "TypeIndex library is misconfigured for your compiler. " "Please define BOOST_TYPE_INDEX_CTTI_USER_DEFINED_PARSING to correct values. See section " @@ -111,8 +124,8 @@ namespace boost { namespace typeindex { namespace detail { } template - BOOST_CXX14_CONSTEXPR inline void failed_to_get_function_name() BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT_MSG( + BOOST_CXX14_CONSTEXPR inline void failed_to_get_function_name() noexcept { + static_assert( sizeof(T) && false, "TypeIndex library could not detect your compiler. " "Please make the BOOST_TYPE_INDEX_FUNCTION_SIGNATURE macro use " @@ -122,7 +135,7 @@ namespace boost { namespace typeindex { namespace detail { } #if defined(BOOST_TYPE_INDEX_DETAIL_IS_CONSTANT) - BOOST_CXX14_CONSTEXPR BOOST_FORCEINLINE bool is_constant_string(const char* str) BOOST_NOEXCEPT { + BOOST_CXX14_CONSTEXPR BOOST_FORCEINLINE bool is_constant_string(const char* str) noexcept { while (BOOST_TYPE_INDEX_DETAIL_IS_CONSTANT(*str)) { if (*str == '\0') return true; @@ -132,17 +145,12 @@ namespace boost { namespace typeindex { namespace detail { } #endif // defined(BOOST_TYPE_INDEX_DETAIL_IS_CONSTANT) - template - BOOST_CXX14_CONSTEXPR inline const char* skip_begining_runtime(const char* begin, boost::false_type) BOOST_NOEXCEPT { - return begin; - } - template BOOST_CXX14_CONSTEXPR inline ForwardIterator1 constexpr_search( ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, - ForwardIterator2 last2) BOOST_NOEXCEPT + ForwardIterator2 last2) noexcept { if (first2 == last2) { return first1; // specified in C++11 @@ -165,7 +173,7 @@ namespace boost { namespace typeindex { namespace detail { return last1; } - BOOST_CXX14_CONSTEXPR inline int constexpr_strcmp_loop(const char *v1, const char *v2) BOOST_NOEXCEPT { + BOOST_CXX14_CONSTEXPR inline int constexpr_strcmp_loop(const char *v1, const char *v2) noexcept { while (*v1 != '\0' && *v1 == *v2) { ++v1; ++v2; @@ -174,7 +182,7 @@ namespace boost { namespace typeindex { namespace detail { return static_cast(*v1) - *v2; } - BOOST_CXX14_CONSTEXPR inline int constexpr_strcmp(const char *v1, const char *v2) BOOST_NOEXCEPT { + BOOST_CXX14_CONSTEXPR inline int constexpr_strcmp(const char *v1, const char *v2) noexcept { #if !defined(BOOST_NO_CXX14_CONSTEXPR) && defined(BOOST_TYPE_INDEX_DETAIL_IS_CONSTANT) && defined(BOOST_TYPE_INDEX_DETAIL_BUILTIN_STRCMP) if (boost::typeindex::detail::is_constant_string(v1) && boost::typeindex::detail::is_constant_string(v2)) return boost::typeindex::detail::constexpr_strcmp_loop(v1, v2); @@ -187,21 +195,21 @@ namespace boost { namespace typeindex { namespace detail { } template - BOOST_CXX14_CONSTEXPR inline const char* skip_begining_runtime(const char* begin, boost::true_type) BOOST_NOEXCEPT { - const char* const it = constexpr_search( + BOOST_CXX14_CONSTEXPR inline const char* skip_begining_runtime(const char* begin) noexcept { + const char* const it = detail::constexpr_search( begin, begin + ArrayLength, - ctti_skip_until_runtime, ctti_skip_until_runtime + sizeof(ctti_skip_until_runtime) - 1 + skip().until_runtime, skip().until_runtime + skip().until_runtime_length ); - return (it == begin + ArrayLength ? begin : it + sizeof(ctti_skip_until_runtime) - 1); + return (it == begin + ArrayLength ? begin : it + skip().until_runtime_length); } template - BOOST_CXX14_CONSTEXPR inline const char* skip_begining(const char* begin) BOOST_NOEXCEPT { - assert_compile_time_legths<(ArrayLength > ctti_skip_size_at_begin + ctti_skip_size_at_end)>(); - return skip_begining_runtime( - begin + ctti_skip_size_at_begin, - boost::integral_constant() - ); + BOOST_CXX14_CONSTEXPR inline const char* skip_begining(const char* begin) noexcept { + detail::assert_compile_time_legths<(ArrayLength > skip().size_at_begin + skip().size_at_end)>(); + return skip().until_runtime_length + ? detail::skip_begining_runtime(begin + skip().size_at_begin) + : begin + skip().size_at_begin + ; } #if !defined(__clang__) && defined(__GNUC__) && !defined(BOOST_NO_CXX14_CONSTEXPR) @@ -257,7 +265,7 @@ struct ctti { #if !defined(__clang__) && defined(__GNUC__) && !defined(BOOST_NO_CXX14_CONSTEXPR) //helper functions template - constexpr static char s() BOOST_NOEXCEPT { // step + constexpr static char s() noexcept { // step constexpr unsigned int offset = (I >= 10u ? 1u : 0u) + (I >= 100u ? 1u : 0u) @@ -277,12 +285,12 @@ struct ctti { } template - constexpr static const char* impl(::boost::typeindex::detail::index_seq ) BOOST_NOEXCEPT { + constexpr static const char* impl(::boost::typeindex::detail::index_seq ) noexcept { return ::boost::typeindex::detail::cstring()...>::data_; } template // `D` means `Dummy` - constexpr static const char* n() BOOST_NOEXCEPT { + constexpr static const char* n() noexcept { #if defined(BOOST_TYPE_INDEX_FUNCTION_SIGNATURE) constexpr unsigned int size = sizeof(BOOST_TYPE_INDEX_FUNCTION_SIGNATURE); #elif defined(__FUNCSIG__) @@ -300,19 +308,19 @@ struct ctti { #endif boost::typeindex::detail::assert_compile_time_legths< - (size > boost::typeindex::detail::ctti_skip_size_at_begin + boost::typeindex::detail::ctti_skip_size_at_end + sizeof("const *") - 1) + (size > boost::typeindex::detail::skip().size_at_begin + boost::typeindex::detail::skip().size_at_end + sizeof("const *") - 1) >(); - static_assert(!boost::typeindex::detail::ctti_skip_more_at_runtime, "Skipping for GCC in C++14 mode is unsupported"); + static_assert(!boost::typeindex::detail::skip().until_runtime_length, "Skipping for GCC in C++14 mode is unsupported"); typedef typename boost::typeindex::detail::make_index_seq_impl< - boost::typeindex::detail::ctti_skip_size_at_begin, - size - sizeof("const *") + 1 - boost::typeindex::detail::ctti_skip_size_at_begin + boost::typeindex::detail::skip().size_at_begin, + size - sizeof("const *") + 1 - boost::typeindex::detail::skip().size_at_begin >::type idx_seq; return impl(idx_seq()); } #else /// Returns raw name. Must be as short, as possible, to avoid code bloat - BOOST_CXX14_CONSTEXPR static const char* n() BOOST_NOEXCEPT { + BOOST_CXX14_CONSTEXPR static const char* n() noexcept { #if defined(BOOST_TYPE_INDEX_FUNCTION_SIGNATURE) return boost::typeindex::detail::skip_begining< sizeof(BOOST_TYPE_INDEX_FUNCTION_SIGNATURE) >(BOOST_TYPE_INDEX_FUNCTION_SIGNATURE); #elif defined(__FUNCSIG__) @@ -336,4 +344,6 @@ struct ctti { }} // namespace boost::detail + + #endif // BOOST_TYPE_INDEX_DETAIL_COMPILE_TIME_TYPE_INFO_HPP diff --git a/contrib/restricted/boost/type_index/include/boost/type_index/detail/ctti_register_class.hpp b/contrib/restricted/boost/type_index/include/boost/type_index/detail/ctti_register_class.hpp index ba1f068a0571..9c69d49c6a89 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index/detail/ctti_register_class.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index/detail/ctti_register_class.hpp @@ -22,17 +22,17 @@ namespace boost { namespace typeindex { namespace detail { template -inline const ctti_data& ctti_construct_typeid_ref(const T*) BOOST_NOEXCEPT { - return ctti_construct(); +inline const ctti_data& ctti_construct_typeid_ref(const T*) noexcept { + return boost::typeindex::ctti_construct(); } }}} // namespace boost::typeindex::detail /// @cond -#define BOOST_TYPE_INDEX_REGISTER_CLASS \ - virtual const boost::typeindex::detail::ctti_data& boost_type_index_type_id_runtime_() const BOOST_NOEXCEPT { \ - return boost::typeindex::detail::ctti_construct_typeid_ref(this); \ - } \ +#define BOOST_TYPE_INDEX_REGISTER_CLASS \ + virtual const boost::typeindex::detail::ctti_data& boost_type_index_type_id_runtime_() const noexcept { \ + return boost::typeindex::detail::ctti_construct_typeid_ref(this); \ + } \ /**/ /// @endcond diff --git a/contrib/restricted/boost/type_index/include/boost/type_index/detail/stl_register_class.hpp b/contrib/restricted/boost/type_index/include/boost/type_index/detail/stl_register_class.hpp index 590fc96fb31d..20eb818af915 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index/detail/stl_register_class.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index/detail/stl_register_class.hpp @@ -22,17 +22,17 @@ namespace boost { namespace typeindex { namespace detail { template -inline const stl_type_index::type_info_t& stl_construct_typeid_ref(const T*) BOOST_NOEXCEPT { +inline const stl_type_index::type_info_t& stl_construct_typeid_ref(const T*) noexcept { return typeid(T); } }}} // namespace boost::typeindex::detail /// @cond -#define BOOST_TYPE_INDEX_REGISTER_CLASS \ - virtual const boost::typeindex::stl_type_index::type_info_t& boost_type_index_type_id_runtime_() const BOOST_NOEXCEPT { \ - return boost::typeindex::detail::stl_construct_typeid_ref(this); \ - } \ +#define BOOST_TYPE_INDEX_REGISTER_CLASS \ + virtual const boost::typeindex::stl_type_index::type_info_t& boost_type_index_type_id_runtime_() const noexcept { \ + return boost::typeindex::detail::stl_construct_typeid_ref(this); \ + } \ /**/ /// @endcond diff --git a/contrib/restricted/boost/type_index/include/boost/type_index/stl_type_index.hpp b/contrib/restricted/boost/type_index/include/boost/type_index/stl_type_index.hpp index 06c3cac2f778..66d66e238e76 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index/stl_type_index.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index/stl_type_index.hpp @@ -29,30 +29,9 @@ #include #include // std::strcmp, std::strlen, std::strstr #include -#include +#include #include #include -#include -#include -#include -#include -#include -#include - -#if (defined(_MSC_VER) && _MSC_VER > 1600) \ - || (defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ > 5 && defined(__GXX_EXPERIMENTAL_CXX0X__)) \ - || (defined(__GNUC__) && __GNUC__ > 4 && __cplusplus >= 201103) -# define BOOST_TYPE_INDEX_STD_TYPE_INDEX_HAS_HASH_CODE -#else -# include -#endif - -#if (defined(__EDG_VERSION__) && __EDG_VERSION__ < 245) \ - || (defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 744) -# include -# include -# include -#endif #ifdef BOOST_HAS_PRAGMA_ONCE # pragma once @@ -86,40 +65,40 @@ class stl_type_index const type_info_t* data_; public: - inline stl_type_index() BOOST_NOEXCEPT + inline stl_type_index() noexcept : data_(&typeid(void)) {} - inline stl_type_index(const type_info_t& data) BOOST_NOEXCEPT + inline stl_type_index(const type_info_t& data) noexcept : data_(&data) {} - inline const type_info_t& type_info() const BOOST_NOEXCEPT; + inline const type_info_t& type_info() const noexcept; - inline const char* raw_name() const BOOST_NOEXCEPT; - inline const char* name() const BOOST_NOEXCEPT; + inline const char* raw_name() const noexcept; + inline const char* name() const noexcept; inline std::string pretty_name() const; - inline std::size_t hash_code() const BOOST_NOEXCEPT; - inline bool equal(const stl_type_index& rhs) const BOOST_NOEXCEPT; - inline bool before(const stl_type_index& rhs) const BOOST_NOEXCEPT; + inline std::size_t hash_code() const noexcept; + inline bool equal(const stl_type_index& rhs) const noexcept; + inline bool before(const stl_type_index& rhs) const noexcept; template - inline static stl_type_index type_id() BOOST_NOEXCEPT; + inline static stl_type_index type_id() noexcept; template - inline static stl_type_index type_id_with_cvr() BOOST_NOEXCEPT; + inline static stl_type_index type_id_with_cvr() noexcept; template - inline static stl_type_index type_id_runtime(const T& value) BOOST_NOEXCEPT; + inline static stl_type_index type_id_runtime(const T& value) noexcept; }; -inline const stl_type_index::type_info_t& stl_type_index::type_info() const BOOST_NOEXCEPT { +inline const stl_type_index::type_info_t& stl_type_index::type_info() const noexcept { return *data_; } -inline const char* stl_type_index::raw_name() const BOOST_NOEXCEPT { +inline const char* stl_type_index::raw_name() const noexcept { #ifdef _MSC_VER return data_->raw_name(); #else @@ -127,7 +106,7 @@ inline const char* stl_type_index::raw_name() const BOOST_NOEXCEPT { #endif } -inline const char* stl_type_index::name() const BOOST_NOEXCEPT { +inline const char* stl_type_index::name() const noexcept { return data_->name(); } @@ -180,12 +159,8 @@ inline std::string stl_type_index::pretty_name() const { } -inline std::size_t stl_type_index::hash_code() const BOOST_NOEXCEPT { -#ifdef BOOST_TYPE_INDEX_STD_TYPE_INDEX_HAS_HASH_CODE +inline std::size_t stl_type_index::hash_code() const noexcept { return data_->hash_code(); -#else - return boost::hash_range(raw_name(), raw_name() + std::strlen(raw_name())); -#endif } @@ -203,7 +178,7 @@ inline std::size_t stl_type_index::hash_code() const BOOST_NOEXCEPT { /// @endcond -inline bool stl_type_index::equal(const stl_type_index& rhs) const BOOST_NOEXCEPT { +inline bool stl_type_index::equal(const stl_type_index& rhs) const noexcept { #ifdef BOOST_TYPE_INDEX_CLASSINFO_COMPARE_BY_NAMES return raw_name() == rhs.raw_name() || !std::strcmp(raw_name(), rhs.raw_name()); #else @@ -211,7 +186,7 @@ inline bool stl_type_index::equal(const stl_type_index& rhs) const BOOST_NOEXCEP #endif } -inline bool stl_type_index::before(const stl_type_index& rhs) const BOOST_NOEXCEPT { +inline bool stl_type_index::before(const stl_type_index& rhs) const noexcept { #ifdef BOOST_TYPE_INDEX_CLASSINFO_COMPARE_BY_NAMES return raw_name() != rhs.raw_name() && std::strcmp(raw_name(), rhs.raw_name()) < 0; #else @@ -223,26 +198,9 @@ inline bool stl_type_index::before(const stl_type_index& rhs) const BOOST_NOEXCE template -inline stl_type_index stl_type_index::type_id() BOOST_NOEXCEPT { - typedef BOOST_DEDUCED_TYPENAME boost::remove_reference::type no_ref_t; - typedef BOOST_DEDUCED_TYPENAME boost::remove_cv::type no_cvr_prefinal_t; - - # if (defined(__EDG_VERSION__) && __EDG_VERSION__ < 245) \ - || (defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 744) - - // Old EDG-based compilers seem to mistakenly distinguish 'integral' from 'signed integral' - // in typeid() expressions. Full template specialization for 'integral' fixes that issue: - typedef BOOST_DEDUCED_TYPENAME boost::conditional< - boost::is_signed::value, - boost::make_signed, - boost::type_identity - >::type no_cvr_prefinal_lazy_t; - - typedef BOOST_DEDUCED_TYPENAME no_cvr_prefinal_t::type no_cvr_t; - #else - typedef no_cvr_prefinal_t no_cvr_t; - #endif - +inline stl_type_index stl_type_index::type_id() noexcept { + typedef typename std::remove_reference::type no_ref_t; + typedef typename std::remove_cv::type no_cvr_t; return typeid(no_cvr_t); } @@ -251,9 +209,9 @@ namespace detail { } template -inline stl_type_index stl_type_index::type_id_with_cvr() BOOST_NOEXCEPT { - typedef BOOST_DEDUCED_TYPENAME boost::conditional< - boost::is_reference::value || boost::is_const::value || boost::is_volatile::value, +inline stl_type_index stl_type_index::type_id_with_cvr() noexcept { + typedef typename std::conditional< + std::is_reference::value || std::is_const::value || std::is_volatile::value, detail::cvr_saver, T >::type type; @@ -263,7 +221,7 @@ inline stl_type_index stl_type_index::type_id_with_cvr() BOOST_NOEXCEPT { template -inline stl_type_index stl_type_index::type_id_runtime(const T& value) BOOST_NOEXCEPT { +inline stl_type_index stl_type_index::type_id_runtime(const T& value) noexcept { #ifdef BOOST_NO_RTTI return value.boost_type_index_type_id_runtime_(); #else @@ -273,6 +231,4 @@ inline stl_type_index stl_type_index::type_id_runtime(const T& value) BOOST_NOEX }} // namespace boost::typeindex -#undef BOOST_TYPE_INDEX_STD_TYPE_INDEX_HAS_HASH_CODE - #endif // BOOST_TYPE_INDEX_STL_TYPE_INDEX_HPP diff --git a/contrib/restricted/boost/type_index/include/boost/type_index/type_index_facade.hpp b/contrib/restricted/boost/type_index/include/boost/type_index/type_index_facade.hpp index 4145aa4ea298..e4691af80bd0 100644 --- a/contrib/restricted/boost/type_index/include/boost/type_index/type_index_facade.hpp +++ b/contrib/restricted/boost/type_index/include/boost/type_index/type_index_facade.hpp @@ -13,14 +13,8 @@ #include #include #include - -#if !defined(BOOST_NO_IOSTREAM) -#if !defined(BOOST_NO_IOSFWD) +#include #include // for std::basic_ostream -#else -#include -#endif -#endif #ifdef BOOST_HAS_PRAGMA_ONCE # pragma once @@ -62,7 +56,7 @@ template class type_index_facade { private: /// @cond - BOOST_CXX14_CONSTEXPR const Derived & derived() const BOOST_NOEXCEPT { + BOOST_CXX14_CONSTEXPR const Derived & derived() const noexcept { return *static_cast(this); } /// @endcond @@ -71,7 +65,7 @@ class type_index_facade { /// \b Override: This function \b may be redefined in Derived class. Overrides \b must not throw. /// \return Name of a type. By default returns Derived::raw_name(). - inline const char* name() const BOOST_NOEXCEPT { + inline const char* name() const noexcept { return derived().raw_name(); } @@ -83,7 +77,7 @@ class type_index_facade { /// \b Override: This function \b may be redefined in Derived class. Overrides \b must not throw. /// \return True if two types are equal. By default compares types by raw_name(). - inline bool equal(const Derived& rhs) const BOOST_NOEXCEPT { + inline bool equal(const Derived& rhs) const noexcept { const char* const left = derived().raw_name(); const char* const right = rhs.raw_name(); return left == right || !std::strcmp(left, right); @@ -91,7 +85,7 @@ class type_index_facade { /// \b Override: This function \b may be redefined in Derived class. Overrides \b must not throw. /// \return True if rhs is greater than this. By default compares types by raw_name(). - inline bool before(const Derived& rhs) const BOOST_NOEXCEPT { + inline bool before(const Derived& rhs) const noexcept { const char* const left = derived().raw_name(); const char* const right = rhs.raw_name(); return left != right && std::strcmp(left, right) < 0; @@ -101,7 +95,7 @@ class type_index_facade { /// \return Hash code of a type. By default hashes types by raw_name(). /// \note Derived class header \b must include , \b unless this function is redefined in /// Derived class to not use boost::hash_range(). - inline std::size_t hash_code() const BOOST_NOEXCEPT { + inline std::size_t hash_code() const noexcept { const char* const name_raw = derived().raw_name(); return boost::hash_range(name_raw, name_raw + std::strlen(name_raw)); } @@ -110,11 +104,11 @@ class type_index_facade { protected: /// \b Override: This function \b must be redefined in Derived class. Overrides \b must not throw. /// \return Pointer to unredable/raw type name. - inline const char* raw_name() const BOOST_NOEXCEPT; + inline const char* raw_name() const noexcept; /// \b Override: This function \b may be redefined in Derived class. Overrides \b must not throw. /// \return Const reference to underlying low level type_info_t. - inline const type_info_t& type_info() const BOOST_NOEXCEPT; + inline const type_info_t& type_info() const noexcept; /// This is a factory method that is used to create instances of Derived classes. /// boost::typeindex::type_id() will call this method, if Derived has same type as boost::typeindex::type_index. @@ -124,7 +118,7 @@ class type_index_facade { /// \tparam T Type for which type_index must be created. /// \return type_index for type T. template - static Derived type_id() BOOST_NOEXCEPT; + static Derived type_id() noexcept; /// This is a factory method that is used to create instances of Derived classes. /// boost::typeindex::type_id_with_cvr() will call this method, if Derived has same type as boost::typeindex::type_index. @@ -134,7 +128,7 @@ class type_index_facade { /// \tparam T Type for which type_index must be created. /// \return type_index for type T. template - static Derived type_id_with_cvr() BOOST_NOEXCEPT; + static Derived type_id_with_cvr() noexcept; /// This is a factory method that is used to create instances of Derived classes. /// boost::typeindex::type_id_runtime(const T&) will call this method, if Derived has same type as boost::typeindex::type_index. @@ -143,7 +137,7 @@ class type_index_facade { /// \param variable Variable which runtime type will be stored in type_index. /// \return type_index with runtime type of variable. template - static Derived type_id_runtime(const T& variable) BOOST_NOEXCEPT; + static Derived type_id_runtime(const T& variable) noexcept; #endif @@ -151,96 +145,96 @@ class type_index_facade { /// @cond template -BOOST_CXX14_CONSTEXPR inline bool operator == (const type_index_facade& lhs, const type_index_facade& rhs) BOOST_NOEXCEPT { +BOOST_CXX14_CONSTEXPR inline bool operator == (const type_index_facade& lhs, const type_index_facade& rhs) noexcept { return static_cast(lhs).equal(static_cast(rhs)); } template -BOOST_CXX14_CONSTEXPR inline bool operator < (const type_index_facade& lhs, const type_index_facade& rhs) BOOST_NOEXCEPT { +BOOST_CXX14_CONSTEXPR inline bool operator < (const type_index_facade& lhs, const type_index_facade& rhs) noexcept { return static_cast(lhs).before(static_cast(rhs)); } template -BOOST_CXX14_CONSTEXPR inline bool operator > (const type_index_facade& lhs, const type_index_facade& rhs) BOOST_NOEXCEPT { +BOOST_CXX14_CONSTEXPR inline bool operator > (const type_index_facade& lhs, const type_index_facade& rhs) noexcept { return rhs < lhs; } template -BOOST_CXX14_CONSTEXPR inline bool operator <= (const type_index_facade& lhs, const type_index_facade& rhs) BOOST_NOEXCEPT { +BOOST_CXX14_CONSTEXPR inline bool operator <= (const type_index_facade& lhs, const type_index_facade& rhs) noexcept { return !(lhs > rhs); } template -BOOST_CXX14_CONSTEXPR inline bool operator >= (const type_index_facade& lhs, const type_index_facade& rhs) BOOST_NOEXCEPT { +BOOST_CXX14_CONSTEXPR inline bool operator >= (const type_index_facade& lhs, const type_index_facade& rhs) noexcept { return !(lhs < rhs); } template -BOOST_CXX14_CONSTEXPR inline bool operator != (const type_index_facade& lhs, const type_index_facade& rhs) BOOST_NOEXCEPT { +BOOST_CXX14_CONSTEXPR inline bool operator != (const type_index_facade& lhs, const type_index_facade& rhs) noexcept { return !(lhs == rhs); } // ######################### COMPARISONS with Derived ############################ // template -inline bool operator == (const TypeInfo& lhs, const type_index_facade& rhs) BOOST_NOEXCEPT { +inline bool operator == (const TypeInfo& lhs, const type_index_facade& rhs) noexcept { return Derived(lhs) == rhs; } template -inline bool operator < (const TypeInfo& lhs, const type_index_facade& rhs) BOOST_NOEXCEPT { +inline bool operator < (const TypeInfo& lhs, const type_index_facade& rhs) noexcept { return Derived(lhs) < rhs; } template -inline bool operator > (const TypeInfo& lhs, const type_index_facade& rhs) BOOST_NOEXCEPT { +inline bool operator > (const TypeInfo& lhs, const type_index_facade& rhs) noexcept { return rhs < Derived(lhs); } template -inline bool operator <= (const TypeInfo& lhs, const type_index_facade& rhs) BOOST_NOEXCEPT { +inline bool operator <= (const TypeInfo& lhs, const type_index_facade& rhs) noexcept { return !(Derived(lhs) > rhs); } template -inline bool operator >= (const TypeInfo& lhs, const type_index_facade& rhs) BOOST_NOEXCEPT { +inline bool operator >= (const TypeInfo& lhs, const type_index_facade& rhs) noexcept { return !(Derived(lhs) < rhs); } template -inline bool operator != (const TypeInfo& lhs, const type_index_facade& rhs) BOOST_NOEXCEPT { +inline bool operator != (const TypeInfo& lhs, const type_index_facade& rhs) noexcept { return !(Derived(lhs) == rhs); } template -inline bool operator == (const type_index_facade& lhs, const TypeInfo& rhs) BOOST_NOEXCEPT { +inline bool operator == (const type_index_facade& lhs, const TypeInfo& rhs) noexcept { return lhs == Derived(rhs); } template -inline bool operator < (const type_index_facade& lhs, const TypeInfo& rhs) BOOST_NOEXCEPT { +inline bool operator < (const type_index_facade& lhs, const TypeInfo& rhs) noexcept { return lhs < Derived(rhs); } template -inline bool operator > (const type_index_facade& lhs, const TypeInfo& rhs) BOOST_NOEXCEPT { +inline bool operator > (const type_index_facade& lhs, const TypeInfo& rhs) noexcept { return Derived(rhs) < lhs; } template -inline bool operator <= (const type_index_facade& lhs, const TypeInfo& rhs) BOOST_NOEXCEPT { +inline bool operator <= (const type_index_facade& lhs, const TypeInfo& rhs) noexcept { return !(lhs > Derived(rhs)); } template -inline bool operator >= (const type_index_facade& lhs, const TypeInfo& rhs) BOOST_NOEXCEPT { +inline bool operator >= (const type_index_facade& lhs, const TypeInfo& rhs) noexcept { return !(lhs < Derived(rhs)); } template -inline bool operator != (const type_index_facade& lhs, const TypeInfo& rhs) BOOST_NOEXCEPT { +inline bool operator != (const type_index_facade& lhs, const TypeInfo& rhs) noexcept { return !(lhs == Derived(rhs)); } @@ -262,16 +256,6 @@ bool operator ==, !=, <, ... (const TypeInfo& lhs, const type_index_facade& rhs) #endif #ifndef BOOST_NO_IOSTREAM -#ifdef BOOST_NO_TEMPLATED_IOSTREAMS -/// @cond -/// Ostream operator that will output demangled name -template -inline std::ostream& operator<<(std::ostream& ostr, const type_index_facade& ind) { - ostr << static_cast(ind).pretty_name(); - return ostr; -} -/// @endcond -#else /// Ostream operator that will output demangled name. template inline std::basic_ostream& operator<<( @@ -281,13 +265,12 @@ inline std::basic_ostream& operator<<( ostr << static_cast(ind).pretty_name(); return ostr; } -#endif // BOOST_NO_TEMPLATED_IOSTREAMS #endif // BOOST_NO_IOSTREAM /// This free function is used by Boost's unordered containers. /// \note has to be included if this function is used. template -inline std::size_t hash_value(const type_index_facade& lhs) BOOST_NOEXCEPT { +inline std::size_t hash_value(const type_index_facade& lhs) noexcept { return static_cast(lhs).hash_code(); } diff --git a/contrib/restricted/boost/type_index/ya.make b/contrib/restricted/boost/type_index/ya.make index d95025d29717..ca4428511a5d 100644 --- a/contrib/restricted/boost/type_index/ya.make +++ b/contrib/restricted/boost/type_index/ya.make @@ -6,18 +6,15 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.83.0) +VERSION(1.84.0) -ORIGINAL_SOURCE(https://github.com/boostorg/type_index/archive/boost-1.83.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/type_index/archive/boost-1.84.0.tar.gz) PEERDIR( contrib/restricted/boost/config contrib/restricted/boost/container_hash contrib/restricted/boost/core - contrib/restricted/boost/preprocessor - contrib/restricted/boost/static_assert contrib/restricted/boost/throw_exception - contrib/restricted/boost/type_traits ) ADDINCL( diff --git a/library/cpp/protobuf/json/json_writer_output.h b/library/cpp/protobuf/json/json_writer_output.h index 3d8a2daa56ca..975245a264b9 100644 --- a/library/cpp/protobuf/json/json_writer_output.h +++ b/library/cpp/protobuf/json/json_writer_output.h @@ -86,7 +86,7 @@ namespace NProtobufJson { { } - private: + protected: static NJson::TJsonWriterConfig CreateJsonWriterConfig(const TProto2JsonConfig& cfg); }; @@ -95,7 +95,8 @@ namespace NProtobufJson { template TJsonStringWriterOutput(TString* str, const TConfig& cfg) : TEmbedPolicy(*str) - , TJsonWriterOutput(TEmbedPolicy::Ptr(), cfg) + // If Unbuffered = false, TJsonWriter uses its own string and then flushes it into TStringOutput. + , TJsonWriterOutput(TEmbedPolicy::Ptr(), CreateJsonWriterConfig(cfg).SetUnbuffered(true)) { } }; diff --git a/library/cpp/protobuf/json/proto2json_printer.cpp b/library/cpp/protobuf/json/proto2json_printer.cpp index 456d1c43c52d..aa0823de0eda 100644 --- a/library/cpp/protobuf/json/proto2json_printer.cpp +++ b/library/cpp/protobuf/json/proto2json_printer.cpp @@ -195,6 +195,9 @@ namespace NProtobufJson { using namespace google::protobuf; auto type = proto.GetDescriptor()->well_known_type(); + // XXX static_cast will cause UB if used with dynamic messages + // (can be created by a DynamicMessageFactory with SetDelegateToGeneratedFactory(false). Unlikely, but still possible). + // See workaround with CopyFrom in JsonString2Duration, JsonString2Timestamp (json2proto.cpp) if (type == Descriptor::WellKnownType::WELLKNOWNTYPE_DURATION) { const auto& duration = static_cast(proto); json.Write(util::TimeUtil::ToString(duration)); @@ -210,7 +213,8 @@ namespace NProtobufJson { void TProto2JsonPrinter::PrintSingleField(const Message& proto, const FieldDescriptor& field, IJsonOutput& json, - TStringBuf key) { + TStringBuf key, + bool inProtoMap) { Y_ABORT_UNLESS(!field.is_repeated(), "field is repeated."); if (!key) { @@ -236,7 +240,7 @@ namespace NProtobufJson { const Reflection* reflection = proto.GetReflection(); - bool shouldPrintField = reflection->HasField(proto, &field); + bool shouldPrintField = inProtoMap || reflection->HasField(proto, &field); if (!shouldPrintField && GetConfig().MissingSingleKeyMode == TProto2JsonConfig::MissingKeyExplicitDefaultThrowRequired) { if (field.has_default_value()) { shouldPrintField = true; @@ -409,7 +413,7 @@ namespace NProtobufJson { TString key = MakeKey(proto, *keyField); const FieldDescriptor* valueField = proto.GetDescriptor()->FindFieldByName("value"); Y_ABORT_UNLESS(valueField, "Map entry value field not found."); - PrintField(proto, *valueField, json, key); + PrintSingleField(proto, *valueField, json, key, true); } TString TProto2JsonPrinter::MakeKey(const NProtoBuf::Message& proto, diff --git a/library/cpp/protobuf/json/proto2json_printer.h b/library/cpp/protobuf/json/proto2json_printer.h index 9dc5aa86c628..a1278193869b 100644 --- a/library/cpp/protobuf/json/proto2json_printer.h +++ b/library/cpp/protobuf/json/proto2json_printer.h @@ -39,7 +39,7 @@ namespace NProtobufJson { void PrintSingleField(const NProtoBuf::Message& proto, const NProtoBuf::FieldDescriptor& field, IJsonOutput& json, - TStringBuf key = {}); + TStringBuf key = {}, bool inProtoMap = false); void PrintKeyValue(const NProtoBuf::Message& proto, IJsonOutput& json); diff --git a/library/cpp/protobuf/json/ut/proto2json_ut.cpp b/library/cpp/protobuf/json/ut/proto2json_ut.cpp index f19558e60a44..80dae6f01d8f 100644 --- a/library/cpp/protobuf/json/ut/proto2json_ut.cpp +++ b/library/cpp/protobuf/json/ut/proto2json_ut.cpp @@ -981,7 +981,7 @@ Y_UNIT_TEST(TestMapAsObject) { UNIT_ASSERT_JSON_STRINGS_EQUAL(jsonStr.Str(), modelStr); } // TestMapAsObject -Y_UNIT_TEST(TestMapWTF) { +Y_UNIT_TEST(TestMapUsingGeneratedAsJSON) { TMapType proto; auto& items = *proto.MutableItems(); @@ -995,7 +995,47 @@ Y_UNIT_TEST(TestMapWTF) { UNIT_ASSERT_NO_EXCEPTION(Proto2Json(proto, jsonStr)); UNIT_ASSERT_JSON_STRINGS_EQUAL(jsonStr.Str(), modelStr); -} // TestMapWTF +} // TestMapUsingGeneratedAsJSON + +Y_UNIT_TEST(TestMapDefaultValue) { + TMapType proto; + + auto& items = *proto.MutableItems(); + items["key1"] = ""; + + TString modelStr(R"_({"Items":{"key1":""}})_"); + + TStringStream jsonStr; + + TProto2JsonConfig config; + config.MapAsObject = true; + UNIT_ASSERT_NO_EXCEPTION(Proto2Json(proto, jsonStr, config)); + UNIT_ASSERT_JSON_STRINGS_EQUAL(jsonStr.Str(), modelStr); + + jsonStr.Clear(); + UNIT_ASSERT_NO_EXCEPTION(Proto2Json(proto, jsonStr)); + UNIT_ASSERT_JSON_STRINGS_EQUAL(jsonStr.Str(), modelStr); +} // TestMapDefaultValue + +Y_UNIT_TEST(TestMapDefaultMessageValue) { + TComplexMapType proto; + + auto& map = *proto.MutableNested(); + map["key1"]; // Creates an empty nested message + + TString modelStr(R"_({"Nested":{"key1":{}}})_"); + + TStringStream jsonStr; + + TProto2JsonConfig config; + config.MapAsObject = true; + UNIT_ASSERT_NO_EXCEPTION(Proto2Json(proto, jsonStr, config)); + UNIT_ASSERT_JSON_STRINGS_EQUAL(jsonStr.Str(), modelStr); + + jsonStr.Clear(); + UNIT_ASSERT_NO_EXCEPTION(Proto2Json(proto, jsonStr)); + UNIT_ASSERT_JSON_STRINGS_EQUAL(jsonStr.Str(), modelStr); +} // TestMapDefaultMessageValue Y_UNIT_TEST(TestStringifyNumbers) { #define TEST_SINGLE(flag, field, value, expectString) \ diff --git a/library/cpp/protobuf/json/ut/string_transform_ut.cpp b/library/cpp/protobuf/json/ut/string_transform_ut.cpp index a31dabcb0f09..3a4df5c02275 100644 --- a/library/cpp/protobuf/json/ut/string_transform_ut.cpp +++ b/library/cpp/protobuf/json/ut/string_transform_ut.cpp @@ -33,7 +33,6 @@ Y_UNIT_TEST_SUITE(TDoubleEscapeTransform) { TString s; s = "aba\\ca\"ba"; transform.Transform(s); - Cerr << "###" << s << Endl; UNIT_ASSERT_EQUAL(s, "aba\\\\\\\\ca\\\\\\\"ba"); } } @@ -52,7 +51,6 @@ Y_UNIT_TEST_SUITE(TDoubleUnescapeTransform) { TString s; s = "abacaba"; transform.Transform(s); - Cerr << "###" << s << Endl; UNIT_ASSERT_EQUAL("abacaba", s); } diff --git a/library/python/runtime_py3/importer.pxi b/library/python/runtime_py3/importer.pxi index 901c9faa3a1c..66ecd35167a8 100644 --- a/library/python/runtime_py3/importer.pxi +++ b/library/python/runtime_py3/importer.pxi @@ -221,7 +221,8 @@ class ResourceImporter(object): def find_spec(self, fullname, path=None, target=None): # Поддежка переопределения стандартного distutils из пакетом из setuptools if fullname.startswith("distutils."): - if path and len(path) > 0 and "/setuptools/_distutils" in path[0]: + setuptools_path = f"{path_sep}setuptools{path_sep}_distutils" + if path and len(path) > 0 and setuptools_path in path[0]: import importlib import importlib.abc diff --git a/yt/yt/client/api/etc_client.h b/yt/yt/client/api/etc_client.h index 1ab15d990017..743cc3d9553f 100644 --- a/yt/yt/client/api/etc_client.h +++ b/yt/yt/client/api/etc_client.h @@ -38,7 +38,7 @@ struct TClusterMeta struct TCheckClusterLivenessOptions : public TTimeoutOptions { - //! Checks cypress root availability. + //! Checks Cypress root availability. bool CheckCypressRoot = false; //! Checks secondary master cells generic availability. bool CheckSecondaryMasterCells = false; diff --git a/yt/yt/client/complex_types/yson_format_conversion.cpp b/yt/yt/client/complex_types/yson_format_conversion.cpp index 3b50011e6116..0eee4f2d9791 100644 --- a/yt/yt/client/complex_types/yson_format_conversion.cpp +++ b/yt/yt/client/complex_types/yson_format_conversion.cpp @@ -1119,7 +1119,7 @@ TYsonCursorConverter CreateYsonConverterImpl( } } case ELogicalMetatype::VariantTuple: { - std::vector> elementConverters; + std::vector> elementConverters; const auto size = type->GetElements().size(); for (size_t i = 0; i != size; ++i) { elementConverters.emplace_back(i, CreateYsonConverterImpl(descriptor.VariantTupleElement(i), cache, config)); diff --git a/yt/yt/client/object_client/helpers.h b/yt/yt/client/object_client/helpers.h index 57849c77901a..2b6dc85da7b5 100644 --- a/yt/yt/client/object_client/helpers.h +++ b/yt/yt/client/object_client/helpers.h @@ -69,7 +69,7 @@ bool IsCollocationType(EObjectType type); //! Checks if the given type is a medium. bool IsMediumType(EObjectType type); -//! Checks if the given type is a cypress (i.e. master, simple) transaction. +//! Checks if the given type is a Cypress (i.e. master, simple) transaction. bool IsCypressTransactionType(EObjectType type); //! Checks if the given type is a system transaction. diff --git a/yt/yt/client/unittests/comparator_ut.cpp b/yt/yt/client/unittests/comparator_ut.cpp index 192b303bbeb8..d3c8ea9ef75e 100644 --- a/yt/yt/client/unittests/comparator_ut.cpp +++ b/yt/yt/client/unittests/comparator_ut.cpp @@ -335,8 +335,8 @@ TEST_F(TComparatorTest, CompareWithWidening) EXPECT_TRUE(TestKeyWithWidening({int1}, TKeyBoundRef({int1, null}, true))); // Upper bound with null and widening. - EXPECT_FALSE(TestKeyWithWidening({int1}, TKeyBoundRef({int1, null}, false ,true))); - EXPECT_TRUE(TestKeyWithWidening({int1}, TKeyBoundRef({int1, null}, true ,true))); + EXPECT_FALSE(TestKeyWithWidening({int1}, TKeyBoundRef({int1, null}, false, true))); + EXPECT_TRUE(TestKeyWithWidening({int1}, TKeyBoundRef({int1, null}, true, true))); // Lower bound longer bound. EXPECT_FALSE(TestKeyWithWidening({int1}, TKeyBoundRef({int1, int2}, false))); @@ -346,11 +346,11 @@ TEST_F(TComparatorTest, CompareWithWidening) EXPECT_TRUE(TestKeyWithWidening({int2}, TKeyBoundRef({int1, int2}, true))); // Upper bound longer bound. - EXPECT_TRUE(TestKeyWithWidening({int1}, TKeyBoundRef({int1, int2}, false ,true))); - EXPECT_TRUE(TestKeyWithWidening({int1}, TKeyBoundRef({int1, int2}, true ,true))); + EXPECT_TRUE(TestKeyWithWidening({int1}, TKeyBoundRef({int1, int2}, false, true))); + EXPECT_TRUE(TestKeyWithWidening({int1}, TKeyBoundRef({int1, int2}, true, true))); - EXPECT_FALSE(TestKeyWithWidening({int2}, TKeyBoundRef({int1, int2}, false ,true))); - EXPECT_FALSE(TestKeyWithWidening({int2}, TKeyBoundRef({int1, int2}, true ,true))); + EXPECT_FALSE(TestKeyWithWidening({int2}, TKeyBoundRef({int1, int2}, false, true))); + EXPECT_FALSE(TestKeyWithWidening({int2}, TKeyBoundRef({int1, int2}, true, true))); auto sortOrdersAAD = {ESortOrder::Ascending, ESortOrder::Ascending, ESortOrder::Descending}; diff --git a/yt/yt/client/unittests/composite_compare_ut.cpp b/yt/yt/client/unittests/composite_compare_ut.cpp index 81a12bec208d..5332abe182a1 100644 --- a/yt/yt/client/unittests/composite_compare_ut.cpp +++ b/yt/yt/client/unittests/composite_compare_ut.cpp @@ -40,7 +40,7 @@ TEST(TCompositeCompare, Simple) EXPECT_EQ(-1, compare("foo", "fooo")); EXPECT_EQ(0, compare("foo", "foo")); - // Tuple or List + // Tuple or List EXPECT_EQ(-1, compare("[1; 2]", "[1; 3]")); EXPECT_EQ(1, compare("[1; 3]", "[1; 2]")); diff --git a/yt/yt/client/unittests/logical_type_ut.cpp b/yt/yt/client/unittests/logical_type_ut.cpp index f6b98ae6388c..4912ccbf7c7d 100644 --- a/yt/yt/client/unittests/logical_type_ut.cpp +++ b/yt/yt/client/unittests/logical_type_ut.cpp @@ -831,7 +831,7 @@ TEST(TLogicalTypeTest, TestAllTypesInCombineFunctions) } class TCombineLogicalMetatypeTests - : public ::testing::TestWithParam> + : public ::testing::TestWithParam> { }; INSTANTIATE_TEST_SUITE_P( diff --git a/yt/yt/core/actions/unittests/bind_ut.cpp b/yt/yt/core/actions/unittests/bind_ut.cpp index a44dd05f0c48..6abad98bc89f 100644 --- a/yt/yt/core/actions/unittests/bind_ut.cpp +++ b/yt/yt/core/actions/unittests/bind_ut.cpp @@ -315,38 +315,38 @@ TEST_F(TBindTest, ArityTest) TCallback c1 = BIND(&Sum, 5, 4, 3, 2, 1); EXPECT_EQ(543219, c1(9)); - TCallback c2 = BIND(&Sum, 5, 4, 3, 2); + TCallback c2 = BIND(&Sum, 5, 4, 3, 2); EXPECT_EQ(543298, c2(9, 8)); - TCallback c3 = BIND(&Sum, 5, 4, 3); + TCallback c3 = BIND(&Sum, 5, 4, 3); EXPECT_EQ(543987, c3(9, 8, 7)); - TCallback c4 = BIND(&Sum, 5, 4); + TCallback c4 = BIND(&Sum, 5, 4); EXPECT_EQ(549876, c4(9, 8, 7, 6)); - TCallback c5 = BIND(&Sum, 5); + TCallback c5 = BIND(&Sum, 5); EXPECT_EQ(598765, c5(9, 8, 7, 6, 5)); - TCallback c6 = BIND(&Sum); + TCallback c6 = BIND(&Sum); EXPECT_EQ(987654, c6(9, 8, 7, 6, 5, 4)); } // Test the currying ability of the BIND(). TEST_F(TBindTest, CurryingTest) { - TCallback c6 = BIND(&Sum); + TCallback c6 = BIND(&Sum); EXPECT_EQ(987654, c6(9, 8, 7, 6, 5, 4)); - TCallback c5 = BIND(c6, 5); + TCallback c5 = BIND(c6, 5); EXPECT_EQ(598765, c5(9, 8, 7, 6, 5)); - TCallback c4 = BIND(c5, 4); + TCallback c4 = BIND(c5, 4); EXPECT_EQ(549876, c4(9, 8, 7, 6)); - TCallback c3 = BIND(c4, 3); + TCallback c3 = BIND(c4, 3); EXPECT_EQ(543987, c3(9, 8, 7)); - TCallback c2 = BIND(c3, 2); + TCallback c2 = BIND(c3, 2); EXPECT_EQ(543298, c2(9, 8)); TCallback c1 = BIND(c2, 1); diff --git a/yt/yt/core/bus/tcp/connection.cpp b/yt/yt/core/bus/tcp/connection.cpp index d3168a89f5d3..02c820965182 100644 --- a/yt/yt/core/bus/tcp/connection.cpp +++ b/yt/yt/core/bus/tcp/connection.cpp @@ -915,7 +915,7 @@ void TTcpConnection::OnSocketRead() bytesToRead = std::min(bytesToRead, RemainingSslAckPacketBytes_); } - YT_LOG_TRACE("Reading from socket into decoder (BytesToRead: %v)",bytesToRead); + YT_LOG_TRACE("Reading from socket into decoder (BytesToRead: %v)", bytesToRead); size_t bytesRead; if (!ReadSocket(decoderChunk.Begin(), bytesToRead, &bytesRead)) { diff --git a/yt/yt/core/concurrency/unittests/scheduler_ut.cpp b/yt/yt/core/concurrency/unittests/scheduler_ut.cpp index 4e437fcec898..2b202dde76ce 100644 --- a/yt/yt/core/concurrency/unittests/scheduler_ut.cpp +++ b/yt/yt/core/concurrency/unittests/scheduler_ut.cpp @@ -848,9 +848,9 @@ TEST_W(TSchedulerTest, FiberTiming) CheckCurrentFiberRunDuration(timer.GetElapsedTime(), TDuration::MilliSeconds(0), TDuration::MilliSeconds(100)); Sleep(TDuration::Seconds(1)); - CheckCurrentFiberRunDuration(timer.GetElapsedTime(),TDuration::MilliSeconds(900), TDuration::MilliSeconds(1100)); + CheckCurrentFiberRunDuration(timer.GetElapsedTime(), TDuration::MilliSeconds(900), TDuration::MilliSeconds(1100)); TDelayedExecutor::WaitForDuration(TDuration::Seconds(1)); - CheckCurrentFiberRunDuration(timer.GetElapsedTime(),TDuration::MilliSeconds(900), TDuration::MilliSeconds(1100)); + CheckCurrentFiberRunDuration(timer.GetElapsedTime(), TDuration::MilliSeconds(900), TDuration::MilliSeconds(1100)); } TEST_W(TSchedulerTest, CancelDelayedFuture) diff --git a/yt/yt/core/misc/unittests/callback_ut.cpp b/yt/yt/core/misc/unittests/callback_ut.cpp index cbc35781814a..903b58287225 100644 --- a/yt/yt/core/misc/unittests/callback_ut.cpp +++ b/yt/yt/core/misc/unittests/callback_ut.cpp @@ -103,11 +103,11 @@ TEST_F(TCallbackTest, DefaultConstruction) TCallback c0; TCallback c1; - TCallback c2; - TCallback c3; - TCallback c4; - TCallback c5; - TCallback c6; + TCallback c2; + TCallback c3; + TCallback c4; + TCallback c5; + TCallback c6; EXPECT_FALSE(c0); EXPECT_FALSE(c1); diff --git a/yt/yt/core/profiling/unittests/timing_ut.cpp b/yt/yt/core/profiling/unittests/timing_ut.cpp index 4bd23b88e3d6..f6a8b1b06404 100644 --- a/yt/yt/core/profiling/unittests/timing_ut.cpp +++ b/yt/yt/core/profiling/unittests/timing_ut.cpp @@ -13,7 +13,7 @@ i64 DiffMS(T a, T b) { return a >= b ? static_cast(a.MilliSeconds()) - static_cast(b.MilliSeconds()) - : DiffMS(b ,a); + : DiffMS(b, a); } TEST(TTimingTest, GetInstant) diff --git a/yt/yt/core/rpc/config.cpp b/yt/yt/core/rpc/config.cpp index ec29c3b88c09..14143a6585ff 100644 --- a/yt/yt/core/rpc/config.cpp +++ b/yt/yt/core/rpc/config.cpp @@ -38,20 +38,6 @@ void TServiceCommonConfig::Register(TRegistrar registrar) //////////////////////////////////////////////////////////////////////////////// -void TServiceCommonDynamicConfig::Register(TRegistrar registrar) -{ - registrar.Parameter("enable_per_user_profiling", &TThis::EnablePerUserProfiling) - .Default(); - registrar.Parameter("histogram_timer_profiling", &TThis::HistogramTimerProfiling) - .Default(); - registrar.Parameter("code_counting", &TThis::EnableErrorCodeCounting) - .Default(); - registrar.Parameter("tracing_mode", &TThis::TracingMode) - .Default(); -} - -//////////////////////////////////////////////////////////////////////////////// - void TServerConfig::Register(TRegistrar registrar) { registrar.Parameter("services", &TThis::Services) @@ -60,14 +46,6 @@ void TServerConfig::Register(TRegistrar registrar) //////////////////////////////////////////////////////////////////////////////// -void TServerDynamicConfig::Register(TRegistrar registrar) -{ - registrar.Parameter("services", &TThis::Services) - .Default(); -} - -//////////////////////////////////////////////////////////////////////////////// - void TServiceConfig::Register(TRegistrar registrar) { registrar.Parameter("enable_per_user_profiling", &TThis::EnablePerUserProfiling) diff --git a/yt/yt/core/rpc/config.h b/yt/yt/core/rpc/config.h index 9cdf971d18cd..be8c1fdec5d4 100644 --- a/yt/yt/core/rpc/config.h +++ b/yt/yt/core/rpc/config.h @@ -90,40 +90,6 @@ DEFINE_REFCOUNTED_TYPE(TServerConfig) //////////////////////////////////////////////////////////////////////////////// -// Common options shared between all services in one server. -class TServiceCommonDynamicConfig - : public NYTree::TYsonStruct -{ -public: - std::optional EnablePerUserProfiling; - std::optional HistogramTimerProfiling; - std::optional EnableErrorCodeCounting; - std::optional TracingMode; - - REGISTER_YSON_STRUCT(TServiceCommonDynamicConfig); - - static void Register(TRegistrar registrar); -}; - -DEFINE_REFCOUNTED_TYPE(TServiceCommonDynamicConfig) - -//////////////////////////////////////////////////////////////////////////////// - -class TServerDynamicConfig - : public TServiceCommonDynamicConfig -{ -public: - THashMap Services; - - REGISTER_YSON_STRUCT(TServerDynamicConfig); - - static void Register(TRegistrar registrar); -}; - -DEFINE_REFCOUNTED_TYPE(TServerDynamicConfig) - -//////////////////////////////////////////////////////////////////////////////// - class TServiceConfig : public NYTree::TYsonStruct { diff --git a/yt/yt/core/rpc/grpc/config.cpp b/yt/yt/core/rpc/grpc/config.cpp index 7a4a4a0d361c..dc3a003cb123 100644 --- a/yt/yt/core/rpc/grpc/config.cpp +++ b/yt/yt/core/rpc/grpc/config.cpp @@ -73,10 +73,8 @@ void TChannelCredentialsConfig::Register(TRegistrar registrar) //////////////////////////////////////////////////////////////////////////////// -void TChannelConfig::Register(TRegistrar registrar) +void TChannelConfigBase::Register(TRegistrar registrar) { - registrar.Parameter("address", &TThis::Address) - .Optional(); registrar.Parameter("credentials", &TThis::Credentials) .Optional(); registrar.Parameter("grpc_arguments", &TThis::GrpcArguments) @@ -85,4 +83,12 @@ void TChannelConfig::Register(TRegistrar registrar) //////////////////////////////////////////////////////////////////////////////// +void TChannelConfig::Register(TRegistrar registrar) +{ + registrar.Parameter("address", &TThis::Address) + .Optional(); +} + +//////////////////////////////////////////////////////////////////////////////// + } // namespace NYT::NRpc::NGrpc diff --git a/yt/yt/core/rpc/grpc/config.h b/yt/yt/core/rpc/grpc/config.h index 1575e469011e..607d152c0784 100644 --- a/yt/yt/core/rpc/grpc/config.h +++ b/yt/yt/core/rpc/grpc/config.h @@ -122,14 +122,28 @@ DEFINE_REFCOUNTED_TYPE(TChannelCredentialsConfig) //////////////////////////////////////////////////////////////////////////////// -class TChannelConfig +class TChannelConfigBase : public NYTree::TYsonStruct { public: - TString Address; TChannelCredentialsConfigPtr Credentials; THashMap GrpcArguments; + REGISTER_YSON_STRUCT(TChannelConfigBase); + + static void Register(TRegistrar registrar); +}; + +DEFINE_REFCOUNTED_TYPE(TChannelConfigBase) + +//////////////////////////////////////////////////////////////////////////////// + +class TChannelConfig + : public TChannelConfigBase +{ +public: + TString Address; + REGISTER_YSON_STRUCT(TChannelConfig); static void Register(TRegistrar registrar); diff --git a/yt/yt/core/rpc/grpc/public.h b/yt/yt/core/rpc/grpc/public.h index ec912d141af1..d3da4f43f71b 100644 --- a/yt/yt/core/rpc/grpc/public.h +++ b/yt/yt/core/rpc/grpc/public.h @@ -12,6 +12,7 @@ DECLARE_REFCOUNTED_CLASS(TServerCredentialsConfig) DECLARE_REFCOUNTED_CLASS(TServerAddressConfig) DECLARE_REFCOUNTED_CLASS(TServerConfig) DECLARE_REFCOUNTED_CLASS(TChannelCredentialsConfig) +DECLARE_REFCOUNTED_CLASS(TChannelConfigBase) DECLARE_REFCOUNTED_CLASS(TChannelConfig) //////////////////////////////////////////////////////////////////////////////// diff --git a/yt/yt/core/rpc/public.h b/yt/yt/core/rpc/public.h index 5548fa0f229a..af88870ad92c 100644 --- a/yt/yt/core/rpc/public.h +++ b/yt/yt/core/rpc/public.h @@ -107,8 +107,6 @@ DECLARE_REFCOUNTED_CLASS(THistogramExponentialBounds) DECLARE_REFCOUNTED_CLASS(THistogramConfig) DECLARE_REFCOUNTED_CLASS(TServerConfig) DECLARE_REFCOUNTED_CLASS(TServiceCommonConfig) -DECLARE_REFCOUNTED_CLASS(TServerDynamicConfig) -DECLARE_REFCOUNTED_CLASS(TServiceCommonDynamicConfig) DECLARE_REFCOUNTED_CLASS(TServiceConfig) DECLARE_REFCOUNTED_CLASS(TMethodConfig) DECLARE_REFCOUNTED_CLASS(TRetryingChannelConfig) diff --git a/yt/yt/core/rpc/server.h b/yt/yt/core/rpc/server.h index e48bf2ef5cd2..fe4c88a47837 100644 --- a/yt/yt/core/rpc/server.h +++ b/yt/yt/core/rpc/server.h @@ -31,9 +31,7 @@ struct IServer virtual IServicePtr GetServiceOrThrow(const TServiceId& serviceId) const = 0; //! Reconfigures the server on-the-fly. - virtual void Configure(const TServerConfigPtr& config) = 0; - - virtual void OnDynamicConfigChanged(const TServerDynamicConfigPtr& config) = 0; + virtual void Configure(TServerConfigPtr config) = 0; //! Starts the server. /*! diff --git a/yt/yt/core/rpc/server_detail.cpp b/yt/yt/core/rpc/server_detail.cpp index 82ba43afe463..0f80a07b6b11 100644 --- a/yt/yt/core/rpc/server_detail.cpp +++ b/yt/yt/core/rpc/server_detail.cpp @@ -768,12 +768,12 @@ void TServerBase::RegisterService(IServicePtr service) auto guard = WriterGuard(ServicesLock_); auto& serviceMap = RealmIdToServiceMap_[serviceId.RealmId]; YT_VERIFY(serviceMap.emplace(serviceId.ServiceName, service).second); - if (AppliedConfig_) { - auto it = AppliedConfig_->Services.find(serviceId.ServiceName); - if (it != AppliedConfig_->Services.end()) { - service->Configure(AppliedConfig_, it->second); + if (Config_) { + auto it = Config_->Services.find(serviceId.ServiceName); + if (it != Config_->Services.end()) { + service->Configure(Config_, it->second); } else { - service->Configure(AppliedConfig_, nullptr); + service->Configure(Config_, nullptr); } } DoRegisterService(service); @@ -866,54 +866,26 @@ IServicePtr TServerBase::GetServiceOrThrow(const TServiceId& serviceId) const return serviceIt->second; } -void TServerBase::ApplyConfig() +void TServerBase::Configure(TServerConfigPtr config) { - VERIFY_SPINLOCK_AFFINITY(ServicesLock_); - - auto newAppliedConfig = New(); - newAppliedConfig->EnableErrorCodeCounting = DynamicConfig_->EnableErrorCodeCounting.value_or(StaticConfig_->EnableErrorCodeCounting); - newAppliedConfig->EnablePerUserProfiling = DynamicConfig_->EnablePerUserProfiling.value_or(StaticConfig_->EnablePerUserProfiling); - newAppliedConfig->HistogramTimerProfiling = DynamicConfig_->HistogramTimerProfiling.value_or(StaticConfig_->HistogramTimerProfiling); - newAppliedConfig->Services = StaticConfig_->Services; - - for (const auto& [name, node] : DynamicConfig_->Services) { - newAppliedConfig->Services[name] = node; - } + auto guard = WriterGuard(ServicesLock_); - AppliedConfig_ = newAppliedConfig; + // Future services will be configured appropriately. + Config_ = config; // Apply configuration to all existing services. for (const auto& [realmId, serviceMap] : RealmIdToServiceMap_) { for (const auto& [serviceName, service] : serviceMap) { - auto it = AppliedConfig_->Services.find(serviceName); - if (it != AppliedConfig_->Services.end()) { - service->Configure(AppliedConfig_, it->second); + auto it = config->Services.find(serviceName); + if (it != config->Services.end()) { + service->Configure(config, it->second); } else { - service->Configure(AppliedConfig_, nullptr); + service->Configure(config, nullptr); } } } } -void TServerBase::Configure(const TServerConfigPtr& config) -{ - auto guard = WriterGuard(ServicesLock_); - - // Future services will be configured appropriately. - StaticConfig_ = config; - - ApplyConfig(); -} - -void TServerBase::OnDynamicConfigChanged(const TServerDynamicConfigPtr& config) -{ - auto guard = WriterGuard(ServicesLock_); - - DynamicConfig_ = config; - - ApplyConfig(); -} - void TServerBase::Start() { YT_VERIFY(!Started_); diff --git a/yt/yt/core/rpc/server_detail.h b/yt/yt/core/rpc/server_detail.h index c05e19216e12..0a2647b6433d 100644 --- a/yt/yt/core/rpc/server_detail.h +++ b/yt/yt/core/rpc/server_detail.h @@ -269,8 +269,7 @@ class TServerBase IServicePtr FindService(const TServiceId& serviceId) const override; IServicePtr GetServiceOrThrow(const TServiceId& serviceId) const override; - void Configure(const TServerConfigPtr& config) override; - void OnDynamicConfigChanged(const TServerDynamicConfigPtr& config) override; + void Configure(TServerConfigPtr config) override; void Start() override; TFuture Stop(bool graceful) override; @@ -281,9 +280,7 @@ class TServerBase std::atomic Started_ = false; YT_DECLARE_SPIN_LOCK(NThreading::TReaderWriterSpinLock, ServicesLock_); - TServerConfigPtr StaticConfig_; - TServerDynamicConfigPtr DynamicConfig_ = New(); - TServerConfigPtr AppliedConfig_; + TServerConfigPtr Config_; //! Service name to service. using TServiceMap = THashMap; @@ -291,8 +288,6 @@ class TServerBase explicit TServerBase(NLogging::TLogger logger); - void ApplyConfig(); - virtual void DoStart(); virtual TFuture DoStop(bool graceful); diff --git a/yt/yt/core/rpc/service_detail.cpp b/yt/yt/core/rpc/service_detail.cpp index 46567c3fcdb6..2fd6f483ad59 100644 --- a/yt/yt/core/rpc/service_detail.cpp +++ b/yt/yt/core/rpc/service_detail.cpp @@ -2451,7 +2451,6 @@ void TServiceBase::DoConfigure( auto methodConfig = methodIt ? methodIt->second : New(); const auto& descriptor = runtimeInfo->Descriptor; - runtimeInfo->Heavy.store(methodConfig->Heavy.value_or(descriptor.Options.Heavy)); runtimeInfo->QueueSizeLimit.store(methodConfig->QueueSizeLimit.value_or(descriptor.QueueSizeLimit)); runtimeInfo->ConcurrencyLimit.Reconfigure(methodConfig->ConcurrencyLimit.value_or(descriptor.ConcurrencyLimit)); diff --git a/yt/yt/core/yson/protobuf_interop.cpp b/yt/yt/core/yson/protobuf_interop.cpp index 60f4ee6e1a6b..a72a630f04a7 100644 --- a/yt/yt/core/yson/protobuf_interop.cpp +++ b/yt/yt/core/yson/protobuf_interop.cpp @@ -357,7 +357,7 @@ class TProtobufTypeRegistry YT_DECLARE_SPIN_LOCK(TForkAwareSpinLock, Lock_); THashMap> MessageTypeMap_; TForkAwareSyncMap MessageTypeSyncMap_; - THashMap> EnumTypeMap_; + THashMap> EnumTypeMap_; TForkAwareSyncMap EnumTypeSyncMap_; THashMap MessageTypeConverterMap_; diff --git a/yt/yt/library/formats/skiff_writer.cpp b/yt/yt/library/formats/skiff_writer.cpp index e75378d1991e..cfe3306969e9 100644 --- a/yt/yt/library/formats/skiff_writer.cpp +++ b/yt/yt/library/formats/skiff_writer.cpp @@ -73,14 +73,14 @@ class TIndexedSchemas for (size_t tableIndex = 0; tableIndex < tableSchemas.size(); ++tableIndex) { const auto& columns = tableSchemas[tableIndex]->Columns(); for (const auto& column : columns) { - Columns_[std::pair(tableIndex, column.Name())] = column; + Columns_[std::pair(tableIndex, column.Name())] = column; } } } const TColumnSchema* GetColumnSchema(int tableIndex, TStringBuf columnName) const { - auto it = Columns_.find(std::pair(tableIndex, columnName)); + auto it = Columns_.find(std::pair(tableIndex, columnName)); if (it == Columns_.end()) { return nullptr; } else { diff --git a/yt/yt/library/formats/web_json_writer.cpp b/yt/yt/library/formats/web_json_writer.cpp index 0539ed6cec68..a956486e6710 100644 --- a/yt/yt/library/formats/web_json_writer.cpp +++ b/yt/yt/library/formats/web_json_writer.cpp @@ -419,7 +419,7 @@ class TSchemalessValueWriter case EValueType::Any: case EValueType::Composite: { const auto data = value.AsStringBuf(); - auto key = std::pair(tableIndex, value.Id); + auto key = std::pair(tableIndex, value.Id); auto it = YsonConverters_.find(key); if (it == YsonConverters_.end()) { Consumer_->OnNodeWeightLimited(data, FieldWeightLimit_); diff --git a/yt/yt_proto/yt/client/node_tracker_client/proto/node_directory.proto b/yt/yt_proto/yt/client/node_tracker_client/proto/node_directory.proto index 2c383c96c5e2..e49fde9910f7 100644 --- a/yt/yt_proto/yt/client/node_tracker_client/proto/node_directory.proto +++ b/yt/yt_proto/yt/client/node_tracker_client/proto/node_directory.proto @@ -10,7 +10,7 @@ message TNodeDirectory { message TItem { - required int32 node_id = 1; + required uint32 node_id = 1; required TNodeDescriptor node_descriptor = 2; }