Metabase 0.48.0¶
-
The MBQL schema in
metabase.mbql.schemanow uses Malli instead of Schema. If you were using this namespace in combination with Schema, you'll want to update your code to use Malli instead. -
Another driver feature has been added:
:table-privileges. This feature signals whether we can store the table-level privileges for the database on database sync. -
The multimethod
metabase.driver/current-user-table-privilegeshas been added. This method is used to get the set of privileges the database connection's current user has. It needs to be implemented if the database supports the:table-privilegesfeature. -
The following functions in
metabase.query-processor.store(qp.store) are now deprecated -
qp.store/database
qp.store/tableqp.store/field
Update usages of the to the corresponding functions in metabase.lib.metadata (lib.metadata):
(qp.store/database) => (lib.metadata/database (qp.store/metadata-provider))
(qp.store/table table-id) => (lib.metadata/table (qp.store/metadata-provider) table-id)
(qp.store/field field-id) => (lib.metadata/field (qp.store/metadata-provider) field-id)
Note that the new methods return keys as kebab-case rather than snake_case.
- Similarly, drivers should NOT access the application database directly (via
toucanfunctions or otherwise); uselib.metadatafunctions instead. This access may be blocked in a future release. - SQL drivers that implement
metabase.driver.sql.query-processor/->honeysqlformetabase.models.table/Table/:model/Tableshould be updated to implement it for:metadata/tableinstead. As with the changes above, the main difference is that the new metadata maps usekebab-casekeys rather thansnake_casekeys. -
metabase.driver.sql.query-processor/cast-field-if-needednow expects akebab-cased field as returned bylib.metadata/field.
-
metabase.query-processor.store/fetch-and-store-database!,metabase.query-processor.store/fetch-and-store-tables!, andmetabase.query-processor.store/fetch-and-store-fields!have been removed. Things are now fetched automatically as needed and these calls are no longer necessary. metabase.models.field/json-field?has been removed, usemetabase.lib.field/json-field?instead. Note that the new function takes a Field as returned bylib.metadata/field, i.e. akebab-casemap.- Tests should try to avoid using any of the
with-temphelpers or application database objects; instead, use the metadata functions above and and the helper metadata providers inmetabase.lib,metabase.lib.test-util, andmetabase.query-processor.test-utilfor mocking them, such asmock-metadata-provider,metabase-provider-with-cards-for-queries,remap-metadata-provider, andmerged-mock-metadata-provider. metabase.query-processor.util.add-alias-info/field-referenceis now deprecated. If your driver implemented it, implementmetabase.query-processor.util.add-alias-info/field-reference-mlv2instead. The only difference between the two is that the latter is passed Field metadata withkebab-casekeys while the former is passed legacy metadata withsnake_casekeys.metabase.driver/current-db-time, deprecated in 0.34, and related methods and helper functions, have been removed. Implementmetabase.driver/db-default-timezoneinstead.metabase.driver.sql-jdbc.sync.interface/db-default-timezone, a helper for writingmetabase.driver/db-default-timezoneimplementations for JDBC-based drivers, has been deprecated, and will be removed in 0.51.0 or later. You can easily implementmetabase.driver/db-default-timezonedirectly, and usemetabase.driver.sql-jdbc.execute/do-with-connection-with-optionsto get ajava.sql.Connectionfor a Database.- Added a new multimethod
metabase.driver.sql.parameters.substitution/align-temporal-unit-with-param-type, which returns a suitable temporal unit conversion keyword forfield,param-typeand the given driver. The resulting keyword will be used to call the correspondingmetabase.driver.sql.query-processor/dateimplementation to convert thefield. Returnsnilif the conversion is not necessary for thisfieldandparam-typecombination. - The multimethod
metabase.driver.sql-jdbc.execute/inject-remarkhas been added. It allows JDBC-based drivers to override the default behavior of how SQL query remarks are added to queries (prepending them as a comment). - The arity of multimethod
metabase.driver.sql-jdbc.sync.interface/fallback-metadata-queryhas been updated from 3 to 4, it now takes an additionaldbargument. The new function arguments are:[driver db-name-or-nil schema table].
Metabase 0.47.0¶
-
Добавлено новое свойство драйвера:
:schemas. Это свойство сигнализирует о том, организует ли база данных таблицы в схемы (также известные как пространства имен) или нет. Большинство баз данных имеют схемы, поэтому это свойство включена по умолчанию. Реализация мультиметодаmetabase.driver/database-supports?для:schemasтребуется только в том случае, если база данных не хранит таблицы в схемах. -
Добавлена ещё одно свойство драйвера:
:uploads. Свойство:uploadsсигнализирует, поддерживает ли база данных загрузку CSV-файлов в таблицы базы данных. Для поддержки функции загрузки реализуйте следующие новые мультиметоды:metabase.driver/create-table!(создать таблицу),metabase.driver/drop-table!(удалить таблицу) иmetabase.driver/insert-into!(вставить данные в таблицу). -
Мультиметод
metabase.driver/syncable-schemasбыл добавлен. Этот метод используется для получения списка схем для загрузки CSV-файлов и должен включать все схемы, которые можно синхронизировать. В настоящее время его необходимо реализовать только в том случае, если база данных имеет схему и поддерживает свойство:uploads. -
Мультиметод
metabase.driver/supports?был признан устаревшим и заменёнmetabase.driver/database-supports?. Существующая реализация по умолчаниюdatabase-supports?в настоящее время вызываетsupports?, но она будет удалена в версии 0.50.0. -
metabase.driver.sql-jdbc.execute/connection-with-timezoneотмечен как устаревший, его планируется удалить в Metabase 0.50.0. Его заменит новый методmetabase.driver.sql-jdbc.execute/do-with-connection-with-options. Переход на новый метод прост. Для получения информации - см. PR #22166. В дальнейшем рекомендуется использоватьmetabase.driver.sql-jdbc.execute/do-with-connection-with-optionsвместоclojure.java.jdbc/with-db-connectionилиclojure.java.jdbc/get-connection. -
Добавлены мультиметоды
set-role!,set-role-statementиdefault-database-role. Эти методы используются для включения имперсонализации соединения — новой функции, добавленной в версии 0.47.0. Имперсонализация соединения позволяет назначать пользователям определённые роли базы данных, которые устанавливаются до выполнения любых запросов, так что доступ к таблицам может быть ограничен на уровне базы данных вместо встроенной системы разрешений Metabase (или в сочетании с ней). -
The multimethod
metabase.driver.sql-jdbc.sync.describe-table/get-table-pksis changed to return a vector instead of a set. -
The function
metabase.query-processor.timezone/report-timezone-id-if-supportedhas been updated to take an additionaldatabaseargument for the arity which previously had one argument. This function might be used in the implementation of a driver's multimethods. -
metabase.driver/prettify-native-formwas added to enable driver developers use native form formatting specific to their driver. For details see the PR #34991.
Metabase 0.46.0¶
- Процесс для сборки драйвера немного изменился в версии 0.46.0. Ваша команда сборки теперь должна выглядеть следующим образом:
# Example for building the driver with bash or similar
# switch to the local checkout of the Metabase repo
cd /path/to/metabase/repo
# get absolute path to the driver project directory
DRIVER_PATH=`readlink -f ~/sudoku-driver`
# Build driver. See explanation in sample Sudoku driver README
clojure \
-Sdeps "{:aliases {:sudoku {:extra-deps {com.metabase/sudoku-driver {:local/root \"$DRIVER_PATH\"}}}}}" \
-X:build:sudoku \
build-drivers.build-driver/build-driver! \
"{:driver :sudoku, :project-dir \"$DRIVER_PATH\", :target-dir \"$DRIVER_PATH/target\"}"
- Взгляните на наши инструкции по сборке для образца драйвера Sudoku для объяснения команды.
Обратите внимание, что хотя эта команда сама по себе довольно длинная, вам больше не нужно указывать псевдоним :build в файле deps.edn вашего драйвера.
Пожалуйста, проголосуйте за https://ask.clojure.org/index.php/7843/allow-specifying-aliases-coordinates-that-point-projects , что позволит нам упростить команду сборки драйвера в будущем.
-
Мультиметод
metabase.driver/sql.query-processor/datetime-diffбыл добавлен. Этот метод используется в ситуациях, когда GlarusBI требуется ограниченный образец из таблицы, например, при снятии отпечатков. Реализация по умолчанию, определённая в пространстве имёнmetabase.db.metadata-queries, запускает запрос MBQL с использованием обычного процессора запросов для создания образца строк. Этого достаточно в большинстве случаев, поэтому этот мультиметод не должен быть реализован, если это действительно необходимо. В настоящее время единственный случай, когда используется специальная реализация, - это BigQuery, который не учитывает ограничение классов. -
Мультиметод
metabase.driver.sql.query-processor/->honeysqlбыл добавлен. Этот метод используется имплементацией->honeysqlдля:datetime-diffи:datetime-fieldвыражений. Рекомендуется реализовать этот метод, если вы хотите использовать реализацию SQL по умолчанию для->honeysqlдля:datetime-diffи:datetime-field, которая включает в себя валидацию типов аргументов для всех единиц. -
Мультиметод
metabase.query-processor.util.add-alias-info/field-referenceбыл добавлен. Этот метод используется для создания ссылки на полеadd-alias-infomiddleware. (Обратите внимание, что этот middleware необязателен, в настоящее время он используется только драйверами SQL и MongoDB.) Реализация по умолчанию возвращает имя экземпляра поля. Он должен быть переопределен, если только имя не является допустимой ссылкой. Например, MongoDB поддерживает вложенные документы, и ссылки на вложенные поля должны содержать весь путь. См. пространство имёнmetabase.driver.mongo.query-processorдля альтернативной реализации. -
Мультиметод
metabase.driver.sql-jdbc.sync.interface/syncable-schemas(синонимmetabase.driver.sql-jdbc.sync/syncable-schemas), который был устарел в 0.43.0, был удален. Реализуйте вместо этогоmetabase.driver.sql-jdbc.sync.interface/filtered-syncable-schemas. См. примечания 0.43.0 ниже для получения дополнительной информации. -
Мультиметод
metabase.driver/format-custom-field-name, который был помечен как устаревший в 0.42.0, был удален. Реализуйте вместо этогоmetabase.driver/escape-alias. См. примечания 0.42.0 ниже для получения дополнительной информации. -
Мультиметод
metabase.driver.sql-jdbc.execute/read-column, который был помечен как устаревший в 0.35.0, был удален. Реализуйте вместо этогоmetabase.driver.sql-jdbc.execute/read-column-thunk. См. примечания 0.35.0 ниже для получения дополнительной информации.
Honey SQL 2¶
Следующее относится только к драйверам SQL; вы можете игнорировать это для недрайверов SQL.
До GlarusBI 0.46.0 драйверы SQL использовали Honey SQL 1 в качестве промежуточной цели при компиляции запросов. В 0.46.0 мы начали процесс миграции на Honey SQL 2 в качестве нашей новой промежуточной цели.
Мы планируем продолжить поддержку Honey SQL 1 до GlarusBI 0.49.0. Пожалуйста, убедитесь, что вы перенесли свои драйверы до этого момента.
В GlarusBI 0.46.x, 0.47.x и 0.48.x вы можете указать, какую версию Honey SQL должен использовать ваш драйвер, реализовав мультиметод metabase.driver.sql.query-processor/honey-sql-version:
(require '[metabase.driver.sql.query-processor :as sql.qp])
;;; use Honey SQL 2 for :my-driver
(defmethod sql.qp/honey-sql-version :my-driver
[_driver]
2)
Этот метод должен вернуть либо 1, либо 2. В настоящее время реализация по умолчанию возвращает 1. Фактически это означает, что в настоящее время вам нужно включить компиляцию Honey SQL 2. Это хорошая идея сделать это как можно скорее, чтобы ваш драйвер заранее был готов к 0.49.0.
В GlarusBI 0.47.x или 0.48.x мы, вероятно, изменим версию Honey SQL по умолчанию на 2, чтобы убедиться, что все знают о предстоящих изменениях в 0.49.0 и дать им один или два цикла выпуска, чтобы обновить свои драйверы для Honey SQL 2. Вы Всё ещё сможете включить использование Honey SQL 1 до 0.49.0, реализовав sql.qp/honey-sql-version и возвращая 1.
Что вам нужно изменить¶
В нашей утилите Honey SQL, пространство имён metabase.util.honeysql-extensions, обычно псевдонимизируемом как hx, было обновлено для генерации форм, соответствующих Honey SQL 1 или Honey SQL 2. Это делается автоматически на основе вашего драйвера honey-sql-version. metabase.driver.sql.query-processor также поддерживает обе цели аналогичным образом.
Фактические изменения, которые вам нужно будет внести в свой код драйвера, вероятно, будут довольно незначительными. Обратите внимание на следующие вещи при портировании драйвера:
-
Избегайте использования вещей из пространства имён Honey SQL 1, таких, как
honeysql.coreилиhoneysql.format. Если это все таки необходимо, то используйте вместо этого Honey SQLhoney.sql; вам может не понадобиться ни одного из них. -
Пока ещё вы можете использовать
metabase.util.honeysql-extensions, так как он может быть направлен на любую версию Honey SQL, но мы, вероятно, удалим это пространство имён в какой-то момент в будущем. Обновите свой код для использованияmetabase.util.honey-sql-2. Пространства имён реализуют почти идентичный набор вспомогательных функций, поэтому все, что вам нужно сделать, это переключиться на тот, который вы:requireв своей формеns. -
honeysql.core/callбольше не существует, поэтому вместо конструкций(hsql/call :my_function 1 2)вы просто должны вернуть плоский вектор[:my_function 1 2].(hsql/raw "x")сейчас[:raw "x"]. Новые обработчики могут быть зарегистрированы с Honey SQL 2 с помощьюhoney.sql/register-fn!. Нет эквивалента протокола Honey SQL 1honeysql.format./ToSql, поэтому вы больше не должны определять одноразовые типы для реализации пользовательских правил компиляции SQL. Вместо этого используйтеhoney.sql/register-fn!. -
В Honey SQL 1 существовала возможность зарегистрировать свои функции с ограниченным скоупом путём реализации мультиметода
honeysql.format/fn-handler. GlarusBI регистрировал функции:extract,:distinct-countи:percentile-contтаким образом. Для Honey SQL 2 мы зарегистрировали эти функции как квалифицированные ключевые слова в пространстве имёнmetabase.util.honey-sql-2, чтобы избежать путаницы в том, где они определены. Таким образом, вам нужно будет обновить ключевое слово, если вы используете эти функции.
преобразуется в
- Так как пользовательские выражеения стали просто текстом вроде
[:my_function 1], вам может понадобиться обернуть выражения в дополнительный вектор, если они появляются внутри:select,:from, или в других местах, где вектор может быть интерпретирован как[expression alias], например:
;; Honey SQL 1
(honeysql.core/format {:select [[:my_function 1]]})
;; => ["SELECT my_function AS 1"]
;; Honey SQL 2
;;
;; WRONG
(honey.sql/format {:select [[:my_function 1]]})
;; => ["SELECT my_function AS ?" 1]
;; CORRECT
(honey.sql/format {:select [[[:my_function 1]]]})
;; => ["SELECT MY_FUNCTION(?)" 1]
Процессор запросов SQL делает это автоматически для форм, которые он генерирует, поэтому вам нужно беспокоиться об этом только в том случае, если вы переопределяете способ, которым он генерирует :select или другие верхнеуровневые выражения.
- Числа теперь по умолчанию параметризованы, т.е.
{:select [1]}становитсяSELECT ?вместоSELECT 1. Вы можете использовать:inline, чтобы принудительно сгенерировать SQL встроенным образом:{:select [[[:inline 1]]]}становитсяSELECT 1. Числа сгенерированные SQL процессором запросов должны автоматически встраиваться, но вам может потребоваться убедиться, что любые числа, которые вы генерируете, обернуты в:inline, если они могут оказаться выражениями внутри выраженияGROUP BY. Некоторые базы данных могут распознавать выражения как одно и то же только тогда, когда они не параметризованы:
-- This is okay
SELECT x 1
FROM table
GROUP BY x 1
-- Bad: DB doesn't know whether the two x ? expressions are the same thing
SELECT x ?
FROM table
GROUP BY x ?
Используйте :inline с осторожностью - не используйте его для ненадежных строк или других способов внедрения SQL.
Встраивание только тех вещей, которые являются number? - это более безопасный выбор.
Обратитесь к Различиям между Honey SQL 1.x и 2.x для получения дополнительной информации о различиях между версиями библиотеки.
Важные изменения в 0.46.0, связанные с переходом на Honey SQL 2¶
Инфо: эти изменения будут исправлены до того, как 0.46.0 будет выпущен. Мы обновим информацию соответственно.
Классы metabase.util.honeysql_extensions.Identifer и metabase.util.honeysql_extensions.TypedHoneySQLForm были перемещены в metabase.util.honey_sql_1.Identifer и metabase.util.honey_sql_1.TypedHoneySQLForm соответственно. На всякий случай, если ваш драйвер напрямую ссылается на эти имена классов, вам может потребоваться обновить их, чтобы использовать новые имена классов.
Аналогичным образом metabase.util.honeysql-extensions/->AtTimeZone был удален; используйте вместо него metabase.util.honeysql-extensions/at-time-zone.
Журнал изменений интерфейса драйвера¶
GlarusBI 0.45.0¶
metabase.driver.sql-jdbc.connection/details->connection-spec-for-testing-connectionбыл удален из GlarusBI 0.45.0, из-за проблемы с SSH. См.#24445. Если вы используете эту функцию, обновите свой код, чтобы вместо этого использоватьmetabase.driver.sql-jdbc.connection/with-connection-spec-for-testing-connection, который правильно очищает данные.
Новые методы¶
- Добавлено
metabase.driver.sql-jdbc.sync.describe-table-fields. Реализуйте этот метод, если вы хотите переопределить поведение по умолчанию для выборки метаданных поля (например, типов) для таблицы. metabase.driver.sql-jdbc.sync.describe-table/get-table-pkshas been added. This methods is used to get a set of pks given a table.
GlarusBI 0.43.0¶
-
Карта
:expressionsв запросе MBQL теперь использует строки в качестве ключей, а не ключевые слова (см. #14647). Вам нужно беспокоиться об этом только в том случае, если вы напрямую обращаетесь к этой карте или изменяте ее. Драйверы, производные от:sql, реализующие->honeysqlдля[<driver>:expression], возможно, нуждаются в обновлении. Вспомогательная функцияmetabase.mbql.util/expression-with-nameдоступна по крайней мере начиная с GlarusBI 0.35.0 и обрабатывает оба типа ключей. Настоятельно рекомендуется использовать эту функцию вместо прямого доступа к:expressions, так как это может сделать ваш драйвер совместимым как с 0.42.0, так и с 0.43.0 и новее. -
Теперь в пространстве имён
sql-jdbc.syncсуществует методdescribe-nested-field-columns, который возвращает экземпляр NestedFCMetadata. Это сделано для того, чтобы разрешить JSON столбцы в Postgres и, в других БД, которые обычно являются обычными СУБД, но иногда имеют денормализованный столбец с JSON или какой-либо другой семантикой. Учитывая таблицу с денормализованными столбцами, которые имеют семантику вложенных полей (то есть типизированные подполя, которые Всё ещё денормализованы, но имеют стабильный тип сток), возвращаемое значение должно быть NestedFCMetadata, картой путей к обнаруженному подполю. Обнаружение полей при синхронизации будет дополнено этими вложенными типами. Это существенно отличается от того, как мы делаем для MongoDB, потому что хотя каждый тип столбца JSON и различается, но он будет выполняться при каждой синхронизации, поэтому он не может быть слишком медленным, даже на огромных таблицах и огромных денормализованных столбцах.
GlarusBI 0.42.0¶
Изменения в GlarusBI 0.42.0 затрагивает драйвера :sql (включая :sql-jdbc).
Non-SQL драйвера не требуют изменений.
0.42.0 вносит несколько существенных изменений в способ, которым процессор запросов SQL компилирует и определяет псевдонимы для предложений MBQL :field. Для получения дополнительной информации см. PR #19384.
Если вы изменяли псевдонимы полей или таблиц, мы объединили множество перекрывающихся переменных и методов. Это означает, что вам может потребоваться удалить устаревшие реализации методов.
Значительные изменения¶
- Метод
metabase.driver.sql.query-processor/->honeysqlдля сущности Field, например,
больше не вызывается. Вся компиляция теперь обрабатывается методом предложения MBQL :field, например.
Если вы делали здесь что-то особенное, вам нужно вместо этого переместить этот специальный логин в [<driver> :field]. (Однако вам может больше не понадобиться эта специальная логика - см. ниже.)
-
Предложения
:field,:expressionи:aggregation-optionsтеперь содержат информацию о том, какие псевдонимы вы должны использовать для ссылки на них как в левой, так и в правой части SQLASили в другом месте запроса. См. PR #19610 для подробного обсуждения новой информации, далее именуемой /#19610/. -
Если у вас есть собственная реализация
->honeysqlдля:fieldили(class Field): методы->honeysqlдля:fieldдолжны использовать или заменить #19610, а не пытаться определить или переопределить его каким-либо другим способом.
Новые методы¶
-
metabase.driver/escape-alias(перемещенный изmetabase.driver.sql.query-processor/escape-alias, который был представлен в версии 0.41.0) теперь используется для генерации #19610 и постоянно используется в коде SQL QP. Если вам нужно преобразовать сгенерированные псевдонимы полей по какой-либо причине (например, для экранирования запрещенных символов), реализуйте этот метод. -
Был добавлен
metabase.driver.sql-jdbc.sync.interface/filtered-syncable-schemas, который со временем заменитmetabase.driver.sql-jdbc.sync.interface/syncable-schemas. Он служит той же цели, за исключением того, что он также передает шаблоны включения и исключения (например:auth*,data*) в дальнейшие схемы фильтрации, которые будут синхронизированы.
Устаревшие методы и переменные¶
Следующие методы и переменные планируется удалить в GlarusBI 0.45.0, если не указано иное.
-
metabase.driver/format-custom-field-nameтеперь не используется. Вместо этого реализуйтеmetabase.driver/escape-alias. -
metabase.driver.sql.query-processor/escape-aliasбыл переименован вmetabase.driver/escape-alias. Все остальное то же самое. -
metabase.driver.sql.query-processor/field-clause->aliasбольше не использует необязательный параметрunique-name-fn. Псевдонимы теперь делаются уникальными автоматически после экранирования; реализуйтеmetabase.driver/escape-alias, если вам нужно сделать что-то дополнительно, прежде чем они станут уникальными. (Уникальные псевдонимы также экранируются во второй раз, если вам нужно сделать что-то /действительно/ особенное.) -
metabase.driver.sql.query-processor/field->alias, который устарел в 0.41.0, теперь не используется в 0.42.0.
Реализация этого метода больше не имеет никакого эффекта. Реализуйте metabase.driver/escape-alias вместо этого, если вам нужно сделать что-то особенное; используйте #19610, если вам нужно избежать псевдонима по той или иной причине. Этот метод Всё ещё планируется удалить в GlarusBI 0.44.0.
-
metabase.driver.sql.query-processor/*field-options*теперь не используется и больше не связывается автоматически. Если по какой-либо причине вам нужны параметры поля, см. наш драйвер SQL Server для примера того, как его создать. -
metabase.driver.sql.query-processor/*table-alias*теперь не используется и больше не связывается автоматически. Вместо этого используйте или переопределите:metabase.query-processor.util.add-alias-info/source-tableиз #19610. -
metabase.driver.sql.query-processor/*source-query*теперь не используется и больше не связывается автоматически. Вместо этого используйтеmetabase.driver.sql.query-processor/*inner-query*, который всегда связан, даже если мы не находимся внутри исходного запроса. -
metabase.driver.sql.query-processor/field->identifierтеперь не используется. Внедрение этого метода больше не должно быть необходимым ни при каких обстоятельствах. Переопределите->honeysqlдля[<driver> :field]и манипулируйте #19610, если вам нужно сделать здесь что-то особенное. -
metabase.driver.sql.query-processor/prefix-field-aliasбольше не используется. Раньше это было доступно, чтобы дать драйверам возможность избежать автоматически сгенерированных псевдонимов для объединенных полей. В этом больше нет необходимости, потому чтоmetabase.driver/escape-aliasавтоматически генерирует псевдонимы. Имплементируйтеmetabase.driver/escape-alias, если вам нужно сделать что-то дополнительно. -
metabase.driver.sql-jdbc.sync.interface/syncable-schemasустарела в пользуmetabase.driver.sql-jdbc.sync.interface/filtered-syncable-schemas(см. выше). Существующая реализация syncable-schemas по умолчанию в настоящее время вызываетfiltered-syncable-schemas(сnilфильтрами, т. е. операция фильтрации фактически не выполняется), но в конечном итоге она будет удалена.
удалённые методы и переменные¶
metabase.mbql.schema/DatetimeFieldUnit, объявленный устаревшим в версии 0.39.0, теперь удален.
Старые версии¶
До 0.42.0 эта информация отслеживалась в нашей Wiki. Вы можете найти изменения для версий до 0.42.0 в таблице ниже:
| Версия | Wiki страница |
|---|---|
| 0.41.0 | изменения |
| 0.40.0 | Без изменений. |
| 0.39.0 | Без изменений. |
| 0.38.0 | изменения |
| 0.37.0 | изменения |
| 0.36.0 | изменения |
| 0.35.0 | изменения |