# Changelog _Main Kolo Changelog for the `kolo` package. There's a separate [changelog for the VSCode Extension](vscode-changelog)_ [![PyPI version](https://img.shields.io/pypi/v/kolo?label=python%20package)](https://pypi.org/project/kolo/) ## v2.33.8 _2024-09-09_ - We no longer explicitly run our CI against PyPy but we still build wheels for it. - Fix a build issue where the static webapp was not included in wheels in maturin 1.7.1 ## v2.33.7 _2024-09-09_ - Experimental new feature behind a feature flag. - Fix a bug where Kolo would crash when it `__name__` is not defined ## v2.33.6 _2024-08-05_ - Fix GitHub Actions build errors ## v2.33.5 _2024-08-05_ - Support initializing web app with Windows paths. - Add wheels for Alpine Linux. ## v2.33.4 _2024-07-29_ - Show `ModelCreate` step in visual test plan in web app & fix sticky header. ## v2.33.3 _2024-07-24_ - Fix a bug where the test plan wouldn't render in the web app. - Add a check for standard library frames against lib64/python which is path on some linux distros including Fedora ## v2.33.2 _2024-07-22_ - Fix a bug where the web app would crash when selecting a frame with return locals omitted ## v2.33.1 _2024-07-22_ - Use experimental `sys.monitoring` tracing added in [`2.31.0`](#v2310) in `kolo run` and `KoloMiddleware` when `use_monitoring = true`. ## v2.33.0 _2024-07-19_ - Add `omit_return_locals` config option to omit local variable information from return frames. This is useful for reducing the size of Kolo traces. ## v2.32.2 _2024-07-15_ - Fix handling of generator `throw` methods in experimental tracing added in [`2.31.0`](#v2310). ## v2.32.1 _2024-07-15_ - Add a dependency on typing extensions to fix an `ImportError`. - Update all JavaScript dependencies in the web app. ## v2.32.0 _2024-07-12_ - Support registering "step hooks" for customising test generation steps. - Support setting a variable name in test generation `With` step. - Rename test generation step `EndClass` to `EndTestClass`. - Rename test generation step `EndFunction` to `EndTestFunction`. - Rename test generation step `EndMethod` to `EndTestMethod`. - Rename test generation step `Method` to `TestMethod`. - Rename `kolo.test_generation.register_plan_hook` to `plan_hook`. - Add `plan_hook` and `step_hook` decorators to top-level `kolo` module for convenience. - Fix rendering of `ModelCreate` in test generation when not using the default `get_or_create` method. - Drop support for custom test generation templates. - Rework the [test generation documentation](../howto/generate-tests) to focus on customisation via step and plan hooks. - Add [reference documentation for test generation steps](../reference/steps). ## v2.31.0 _2024-07-08_ - Add experimental tracing implementation using [`sys.monitoring`](https://docs.python.org/3/library/sys.monitoring.html) on Python 3.12+. To enable, set `use_monitoring = true` in `.kolo/config.toml`. - Show outdated version notice in web app when there's a newer version of Kolo available. ## v2.30.9 _2024-07-02_ - Auto-delete traces older than 30 days. This feature is only available on the web app, where it can be disabled through the newly-added settings page. - Fix opening files in PyCharm from the web app. - Allow setting a default text editor (VS Code or PyCharm) for opening source files from the web app. - Open detail view when clicking on visualization in web app. ## v2.30.8 _2024-06-25_ - Fix test generation crash for templates without names. ## v2.30.7 _2024-06-21_ - Hide default `port` values (`80` for `http` and `443` for `https`) in traced URLs when using `urllib3`. ## v2.30.6 _2024-06-21_ - The web app now asks for your email, in line with the VS Code extension. We also dislike filling in forms, but knowing who and how many people use our web app helps us decide where to direct our small team's efforts. ## v2.30.5 _2024-06-20_ - Only store frame data in thread-specific lists when the `threading` config value is set to `true`. This was missing in the pure Python implementation used on PyPy or when `use_rust = false`. - Support accessing Kolo's web app when using [Daphne's `runserver`](https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/daphne/#integration-with-runserver). - Support viewing source code from outside a project in Kolo's web app. This is usually standard library code or third party library code. - Improve recorded traces for async Django urls. ## v2.30.4 _2024-06-18_ - Handle traces without any frames in the web app. - Fix deadlock in experimental threading support. ## v2.30.3 _2024-06-18_ - Avoid reparsing traces once they are successfully parsed in web app. - Do not require trailing slash in path to load web app (`/_kolo` now works, as well as `/_kolo/`). - Fix the "Generate test" button on the web app. It was incorrectly redirecting to a non-Kolo path. ## v2.30.2 _2024-06-18_ - Avoid web app crash when a single trace fails to parse. - Send caching HTTP headers when polling for latest traces in web app, in order to avoid unnecessary data transfer. ## v2.30.1 _2024-06-14_ - Implement better fix for `AttributeError` in Kolo web app api (previously worked around in [`2.28.0`](#v2280)). ## v2.30.0 _2024-06-14_ - Enable Kolo web by default in `KoloMiddleware` and remove the `web_experience` config option. - Improve startup message in `KoloMiddleware` to include a clickable link (`http://127.0.0.1:8000/_kolo/`). - Add `hide_startup_message` config option to allow disabling the startup message. ## v2.29.2 _2024-06-14_ - Fix issue with trace deserialization stuck in an infinite loop in the extension and web app, by switching from `msgpackr` to `msgpack-es`. ## v2.29.1 _2024-06-13_ - Avoid expensive call to `black` in `kolo trace dump --as-python` when the trace is larger than 1 million characters. - Use `ruff format` to reformat Python code in `kolo trace dump --as-python` and `kolo generate-test` when ruff is installed. ## v2.29.0 _2024-06-13_ - Add a button to copy the generated test to clipboard in the web app. - Fix minor web app issues: dark mode no longer makes some buttons transparent; flickering dark shadow no longer appears in code excerpts. - Add support for self-referential models in test generation. - Replace [`httpretty`](https://pypi.org/project/httpretty/) with [`mocket`](https://pypi.org/project/mocket/) in generated tests. - Add `mocket` to Kolo's dependencies for generated tests. ## v2.28.0 _2024-06-07_ - Fix `AttributeError` in Kolo web app api. - Show variable names in test plan in Kolo web app. - Show json view for test plan in Kolo web app. - Add basic syntax highlighting to test plan in Kolo web app. ## v2.27.1 _2024-06-05_ - Fix flickering scrollbars in the Kolo web app. ## v2.27.0 _2024-06-05_ - Added background job and log message detail views in Kolo web app. ## v2.26.0 _2024-06-04_ - Display test plan rendering in Kolo web app. ## v2.25.1 _2024-06-03_ - Stop generating uninteresting `assertTemplateUsed` lines for Django's own template files. - Omit csrf token from generated test client `post` calls. - Standardise representation of booleans in tests generated from sqlite queries. ## v2.25.0 _2024-05-31_ - Kolo's test generation dependencies are now installed by default, instead of requiring `pip install kolo[test_generation]`. - Kolo now generates pytest-style tests by default. Use `kolo generate-test --unittest` to enable unittest style tests. - Added experimental `kolo generate-test --use-plan` option to generate a test via a programmatic `Plan`. - Added experimental support for hooks to modify the generated `Plan` before rendering. ## v2.24.1 _2024-05-22_ - Fix handling of outbound http responses in test generation when response headers are `None`. ## v2.24.0 _2024-05-08_ - Support building Kolo with [Pyodide](https://pyodide.org/en/stable/). ## v2.23.1 _2024-05-01_ - Fix `kolo trace load` for msgpack traces containing non-string dictionary keys. - Support tracing un-named Django templates. Fixes https://github.com/kolofordjango/kolo/issues/84. - Work around [a `ValueError` that can be raised by Django's `RequestContext.flatten()`](https://code.djangoproject.com/ticket/35417) during template tracing. ## v2.23.0 _2024-04-19_ - Always use the current Django schema when processing queries in test generation. Add the `--use-saved-schemas` flag to support the old behaviour of using schemas saved via the `kolo store-django-model-schema` command. - Record trace data for `Model.objects.raw()` Django queries. - Record trace data for Django templates used in `{% include %}` and `{% extends %}` tags. - Add missing newline to imports in generated tests. - Ensure all `Decimal` values in generated tests are normalized. - Add `--as-python` flag to `kolo trace dump` to support dumping the trace as python code instead of msgpack or json. - Add `kolo trace list-queries` command to show all queries included in a trace. - Add optional `Pygments` dependency for syntax highlighting in the cli. Run `pip install kolo[cli]` to install. - Add basic support for `bulk_update` queries in test generation. - Record the raw parameters involved in an SQL query executed via Django. - Add new [`lightweight_repr` config option](../reference/config.md#lightweight_repr). Some traced objects have `__repr__` implementations that are expensive to run. If this is enabled, Kolo instead serializes these objects as `"{class_name} object {id}"`. - Drop support for loading or dumping legacy json traces with the Kolo cli. - Add `kolo trace json-to-msgpack` helper command to convert all legacy json traces to msgpack format. ## v2.22.0 _2024-04-04_ - Support generating a test from multiple traces at once. - Import `Decimal` in generated tests using `DecimalField`. - Import `uuid` in generated tests using `UUIDField`. - Avoid importing `datetime` unnecessarily in generated tests. - Require `sqlglot>=23.6.4` to fix [broken postgres interval parsing](https://github.com/tobymao/sqlglot/issues/3268#issuecomment-2034814262) in test generation. - Fix `kolo trace download` to match new api endpoint in Kolo Dashboard. ## v2.21.1 _2024-03-26_ - Add more debugging information to error logs. - Fix `kolo trace download` to match new gzip headers for Kolo Dashboard. - Rename `SerializationError` to `KoloSerializationError`. ## v2.21.0 _2024-03-20_ - Support automatically uploading traces to Kolo Dashboard instead of saving them locally. ## v2.20.2 _2024-03-19_ - Add compatibility with version 23 of `sqlglot` for test generation. - Drop support for older versions of `sqlglot`. - Support saving a Django schema to the Kolo database when that schema includes datetime types. - Be less strict when checking `content-type` for json responses in test generation. ## v2.20.1 _2024-03-05_ - Exit `kolo run` early when a different debugger is already active. - Add an assert to generated tests for Django JSON responses. - Gracefully handle a missing response body for an outbound request in test generation. - Support saving a Django schema to the Kolo database when that schema includes lazy translatable strings. - Consistently use lower-case variable names in test generation. ## v2.20.0 _2024-02-22_ - Support defining [local processor plugins](../misc/plugins.md#local-processor-plugins) in your own project. - Fix packaging of generated assets for the editor-agnostic web endpoint introduced in [`2.17.0`](#v2170). ## v2.19.0 _2024-02-19_ - Stop hiding suspend/resume frames when tracing `httpx` async code. - Mark `KoloMiddleware` as a coroutine for better compatibility with Django's async support. - Fix Rust panic when using `kolo run pytest -k`. - Add support for [third party plugins](../misc/plugins.md) for Kolo to add custom data to traces. ## v2.18.0 _2024-01-31_ - Remove support for json traces (`use_msgpack=false`) that was deprecated in [`2.16.0`](#v2160). - Serialize `tuple` as a msgpack extension type to maintain hashability after deserializing. - Serialize `set` and `frozenset` as msgpack extension types. - Add support for [custom field parsers for test generation](../howto/generate-tests.md). - Parse isoformat `date` strings in test generation. - Support parsing negative `timedelta` strings in test generation. - Convert non-string SQL Literal values to python values in test generation. - Improve generated asserts for delete queries in test generation. - Improve merging of generated asserts to simplify generated tests. - Remove the `list-traces`, `dump-trace`, `load-trace` and `delete-old-traces` commands deprecated in [`2.8.0`](#v280). - Stop officially supporting Django 4.1. ## v2.17.0 _2023-11-15_ - Add an early version of an editor agnostic Kolo experience accessible via `localhost:8000/_kolo/` - Fix some invalid timestamps in Kolo's internal trace format when tracing a test that mocks time with `time_machine`. - Improve parsing of `INSERT` queries in test generation. - Support generating a test from a trace including multiple request/response sections. Previously we only used the first request/response pair. - Avoid duplicate arguments to `queryset.filter` in generated assert code for delete queries. - Always include a request body when mocking outbound requests in generated tests. Previously we only supported json body data. ## v2.16.3 _2023-11-01_ - Avoid crashing on unhashable query data in test generation. ## v2.16.2 _2023-10-30_ - [Avoid crashing in test generation when handling model foreign key cycles.](https://github.com/kolofordjango/kolo/issues/74) ## v2.16.1 _2023-10-26_ - Fix validation of a msgpack trace downloaded from the Kolo dashboard. ## v2.16.0 _2023-10-26_ - Add support for using msgpack as an internal format for traces with the `use_msgpack` config option. This is on by default and [requires version `2.15.0` of the VSCode Extension](vscode-changelog.md#v2150). Support for json traces (`use_msgpack=false`) is deprecated and will be removed in a future version. - Add support for Python 3.12. - Remove the `wal_mode` config option. - Log an error when a trace is too big to save to Kolo's sqlite database. - Use timezone-aware datetimes in test generation. - Avoid generating code leading to a `MultipleObjectsReturned` exception in test generation. ## v2.15.1 _2023-09-15_ - Hide `__builtins__` from module locals to save space and make raw traces more readable. - Increase the default busy timeout for Kolo's sqlite database to 60s (from 5s). - Allow setting `sqlite_busy_timeout` in `.kolo/config.toml`. - Add a lower bound (`3.6.0`) for the required version of asgiref. - Fix handling of foreign key values in generated asserts for update queries. - Stop creating test model instances with `None` as a primary key in test generation. ## v2.15.0 _2023-09-13_ - Remove unnecessary blank lines between asserts in generated tests. - Remove `refresh_from_db` calls from generated tests when there are no associated asserts. - Merge generated asserts from insert, update and delete database queries together. - Improve support for generic foreign keys in test generation. - Make asgiref dependency explicit [so Kolo can be used with older Django versions](https://github.com/kolofordjango/kolo/issues/71). - [Handle exceptions in outbound http request handling.](https://github.com/kolofordjango/kolo/issues/70) ## v2.14.0 _2023-09-04_ - Add support for [generating tests using factory boy factories](../howto/generate-tests.md). - Change the behaviour of the [`trace_processors` config value](../howto/generate-tests.md) to append new processors instead of overriding the existing processors. This means you don't need to copy the list of all Kolo's default processors when adding your own custom processor. - Prefer [time machine](https://pypi.org/project/time-machine/) over [freezegun](https://github.com/spulec/freezegun#readme) in generated tests. Freezegun will still be used if it is installed and time machine is not installed. - Add support for fields with custom column names in Kolo test generation. - Change test generation import style to a more human style. - Add extra hooks to Kolo's default test generation templates to enable further customisation of generated tests. - Improve the quality of test asserts generated from database queries. - Handle traces including bulk creates better in test generation. - Add preliminary support for sharing traces via [Kolo Dashboard](https://my.kolo.app). - Track Django checks to allow better filtering in VSCode. - Track Django test database creation to allow better filtering in VSCode. - Stop filtering out module creation frames from traces. This allows better visibility of import flow. - Fix file path resolution edge-case on Windows for Python 3.8 and 3.9. - Fix a deprecation warning for Content-Type header parsing. ## v2.13.2 _2023-08-17_ - Turn off special handling of `namedtuple` in `simplejson.dumps` since this was adding unexpected entries to `MagicMock.mock_calls` in traced tests. ## v2.13.1 _2023-08-09_ - Convert `NaN` and infinite float values to `null` when encoding json. ## v2.13.0 _2023-07-26_ - Add `--count` and `--reverse` options to `kolo trace list` to allow customising the results. - Add support for configuring Kolo in `pyproject.toml` in addition to `.kolo/config.toml`. Fixes https://github.com/kolofordjango/kolo/issues/46. - Track Django setup logic entrypoint to allow better filtering in VSCode. - Improve stability of experimental threading support. ## v2.12.4 _2023-07-17_ - Really fix disabling of experimental threading support in the Rust extension. ## v2.12.3 _2023-07-14_ - Fix disabling of experimental threading support in the Rust extension. ## v2.12.2 _2023-07-12_ - Disable experimental threading support by default. ## v2.12.1 _2023-07-06_ - Fix the rust extension's handling of fake frame filenames. Fixes https://github.com/kolofordjango/kolo/issues/62. ## v2.12.0 _2023-07-04_ - Replace [a panic in the Rust extension when decoding json](https://github.com/kolofordjango/kolo/issues/61) with a python exception for better debugging. - Add support for pypy 3.10. - Drop support for pypy 3.8 [because the pypy project no longer support it](https://foss.heptapod.net/pypy/pypy/-/issues/3958#note_299926). ## v2.11.0 _2023-06-23_ - Add support for tracing [httpx](https://www.python-httpx.org/) outbound requests. - Add `kolo dbshell` for advanced users to inspect or run queries against the Kolo database. - Support json (de-)serialization of large numbers in the Rust extension. ## v2.10.0 _2023-06-21_ - Update `KoloMiddleware` to handle async views as well as sync views. Fixes https://github.com/kolofordjango/kolo/issues/57. - Allow [customising the behaviour of test generation](../howto//generate-tests.md). - Improve sql query parsing for test generation. - Tweak the error message when test generation dependencies are missing. Fixes https://github.com/kolofordjango/kolo/issues/58. - Bump the minimum version of `sqlglot` to `16.1.1` for better sqlite parsing in test generation. - Drop support for Python 3.7. ## v2.9.4 _2023-05-29_ - Omit json data from assert queries in test generation. - Fix variables in test generation. ## v2.9.3 _2023-05-29_ - Improve support for json response bodies for httpretty in test generation. - Remove debug sql comments from generated tests. ## v2.9.2 _2023-05-23_ - Try to autodetect the correct Django settings file from `manage.py` in test generation. - Disable logging during test generation to avoid log messages in the generated test. - Handle Django's `DurationField` better in test generation. - Ensure string values in `get_or_create` defaults don't get `repr` called twice in test generation. - Add context to the top of the generated test file. ## v2.9.1 _2023-05-19_ - Handle more edge-cases in test generation. ## v2.9.0 _2023-05-12_ - Add support for Django ORM asserts to the experimental test generation feature. ## v2.8.1 _2023-05-11_ - Turn a panic in the Rust extension into a Python exception for better debugging. ## v2.8.0 _2023-05-03_ - [Fix `IndexError` in `ExceptionFilter` when the exception doesn't come from a recorded frame.](https://github.com/kolofordjango/kolo/issues/56) - Add `kolo trace` command with `list`, `dump`, `load` and `delete` subcommands. - Deprecate the `list-traces`, `dump-trace`, `load-trace` and `delete-old-traces` commands. ## v2.7.0 _2023-04-21_ - Store `date` and `datetime` values as timestamp strings in traces. - Add the `kolo store-django-model-schema` command for use with the experimental test generation feature. ## v2.6.2 _2023-04-18_ - Fix an `AttributeError` in `RequestsFilter` when handling a bad response (for example in a timeout/retry). ## v2.6.1 _2023-04-18_ - Raise a new `KoloWriteError` when Kolo fails to write to the `.kolo` directory for some reason. ## v2.6.0 _2023-03-17_ - Track which database each SQL query is for. Enables future work in the VSCode extension. ## v2.5.0 _2023-03-15_ - Add the [`kolo delete-old-traces`](../reference/cli.md) command. ## v2.4.4 _2023-03-13_ - Fix a `KeyError` in `Urllib3Filter` where a `"response"` key could be missing (for example in a timeout/retry). ## v2.4.3 _2023-03-13_ - Fix a `TypeError` in the Rust extension when trying to convert `None` to a string. - Optimise how we process Django QuerySet objects in Python and Rust. ## v2.4.2 _2023-02-15_ - Further improve the performance of the Rust extension by optimising string contains in a hot loop. ## v2.4.1 _2023-01-30_ - Further improve the performance of the Rust extension by interning suitable strings. ## v2.4.0 _2023-01-25_ - Use the Rust extension by default on CPython. To disable this set `use_rust = false` at the top of your `.kolo/config.toml`. - Improve the performance of the Rust extension by about 10%. ## v2.3.0 _2022-12-01_ - Consolidate `kolo.enable` and `kolo.enabled` into one combined context manager and decorator. - Exclude library code from analysis properly on Windows for all supported python versions. - Exclude library code from analysis properly on PyPy 3.8 and 3.9. - Add an experimental Rust extension. To opt-in to this, set `use_rust = true` at the top of your `.kolo/config.toml`. ## v2.2.1 _2022-11-14_ - Fix a `TypeError` when serializing dictionary keys as json. ## v2.2.0 _2022-11-01_ - Refactor Kolo's internal serialization format to minimise runtime overhead. Requires [version `2.2.0` of the VSCode extension](vscode-changelog.md#v220). ## v2.1.0 _2022-10-27_ - Add a `kolo list-traces` command to make it easier to share traces - [Fix a `TypeError` when serializing data as json.](https://github.com/kolofordjango/kolo/issues/42) - [Include the port in outbound http requests](https://github.com/kolofordjango/kolo/issues/31) - Optimise Kolo's hot profiling loop. ## v2.0.6 _2022-10-18_ - Fix a `KeyError` in Kolo's SQL query processing for empty queries. - Stop json encoding errors breaking Kolo traces. ## v2.0.5 _2022-10-13_ - Fix a `KeyError` in Kolo's SQL query processing. - Fix a `TypeError` in Kolo's SQL query processing. ## v2.0.4 _2022-10-10_ - Increase the log level of exceptions handled by Kolo from `debug` to `warning`. - Stop double-encoding data as json before saving it in the Kolo database. Requires [version 2.1.1](vscode-changelog.md#v211) or later of the VSCode extension. - [Fix a serialization bug in SQL query processing](https://github.com/kolofordjango/kolo/issues/33). ## v2.0.3 _2022-09-22_ - Stop autocreating an empty `.kolo/config.toml` file. ## v2.0.2 _2022-09-15_ - Replace [toml](https://pypi.org/project/toml/) with {doc}`tomllib ` from Python 3.11. Fallback to [tomli](https://pypi.org/project/tomli/) on Python 3.10 and earlier. - Move [jinja2](https://pypi.org/project/Jinja2/) to the experimental `kolo[test_generation]` extra. - Fix a dataloss bug when tracing a queryset. ## v2.0.1 _2022-09-09_ - Don't lose trace data when an object has a broken `__repr__`. ## v2.0.0 _2022-09-09_ - Record when a background job ends when using eager mode for celery or huey. - Record data about Django template rendering. - Record the data loaded from the database by sql queries in Django. - Support tracing pytest tests with `kolo run`. - Support user-defined includes and ignores when processing exceptions. - Add `--one-trace-per-test` option to `kolo run` to better support analysing tests. - Add `kolo load-trace` and `kolo dump-trace` commands to support sharing interesting traces. - Add experimental support for test generation with `kolo generate-test`. - Add a timestamp to all trace items. - Ensure `.kolo/config.toml` exists so users don't need to manually create it. - Fix the `kolo.enable` decorator so it actually works as a decorator with the `config` argument. - Stop storing config data in Kolo's database. - Remove the `kolo config` command. ## v1.8.0 _2022-07-22_ - Fix threadsafety bug in `KoloMiddleware` causing traces to be lost when too many requests happen close together with `manage.py runserver`. - Optimise the main profiling loop by 30-40%. - Drop support for setting `use_frame_boundaries` to `false`. ## v1.7.0 _2022-06-30_ - Change the default value of `use_frame_boundaries` to `true`. ## v1.6.1 _2022-06-30_ - Fix a bug with 404 response handling when `use_frame_boundaries = true`. ## v1.6.0 _2022-06-29_ - Make a new mode of collecting traces available via `use_frame_boundaries = true` in `.kolo/config.toml` where each trace does not necessarily have to start with a served HTTP request and does not necessarily have to end with an HTTP response - Add the `kolo.enable` decorator - Add the `kolo.enabled` context manager - Upgrade dependencies - Fix a bug with args serialization the logging filter ## v1.5.0 _2022-06-15_ - Start using SQLite WAL-mode, which allows for both writing and reading to SQLite at the same time. - Kolo will now always store its db in the `.kolo` directory. The previously deprecated storage location using the operating system's user data directory is no longer supported. The `KOLO_STORE_IN_PROJECT` and `KOLO_PROJECT_NAME` settings are no longer supported – `KOLO_STORE_IN_PROJECT` is now always true. - Numerous performance improvements to speed up Kolo - Add support for a logging filter, so that Kolo can capture log output for later display ## v1.4.0 _2022-04-18_ - Use repr as a fallback when serializing locals. Fixes https://github.com/kolofordjango/kolo/issues/15 - Better support for outbound HTTP requests with binary request bodies - Make use of Django's [MiddlewareNotUsed](https://docs.djangoproject.com/en/4.0/topics/http/middleware/#marking-middleware-as-unused) when Kolo is disabled - Handle case where the actual charset in an HTTP response is different from the expected one. Fixes https://github.com/kolofordjango/kolo/issues/13 - Drop support for Python 3.6 and Django 2.2, 3.0, 3.1 as all these versions have reached their end of life - Include qualname information in frame data ## v1.3.8 _2022-03-14_ - Kolo will no longer crash if `git` isn't available while recording a trace ## v1.3.7 _2022-02-22_ - Fix bug where kolo would error when the request body included binary content. Thanks @abdulmuizzf for the report 🙌 ## v1.3.6 _2022-02-08_ - A whole host of performance improvements that should make using Kolo feel a lot snappier! ## v1.3.5 _2022-02-07_ - Support for huey tasks (on the python side) - Re-create the kolo sqlite database if we detect it has been deleted while kolo is active - Include query template in recorded SQL data - Fix crash when kolo is processing a streaming HttpResponse - Further stability improvements ## v1.3.4 _2022-01-12_ - Fix a regression in 1.3.3 where Kolo was throwing an error when it was disabled ## v1.3.3 _2022-01-12_ - Fix a dependency incompatibility issue by moving our build process from poetry to pip + setup.cfg - Capture urls information for the request Django is processing ## v1.3.2 _2021-12-12_ - Support for Django 4.0 ## v1.3.1 _2021-11-25_ - Support for standard library `urllib` - Better support for when `urllib3` is used standalone (without `requests`) - Decompress gzipped HttpRespones for display in Kolo (Fixes https://github.com/kolofordjango/kolo/issues/10) ## v1.3.0 _2021-11-10_ - Default to storing the Kolo database in `.kolo/db.sqlite3`. The `.kolo` directory is adjacent to your `manage.py` file by default and can otherwise be customized using the `KOLO_PATH` environment variable - This change is backwards compatible. Kolo will continue to read and write data to the previous database location if it detects an existing database present - Store milliseconds for `created_at` timestamps in the Kolo database ## v1.2.1 _2021-10-26_ - Fix issue where Kolo would exhaust iterators as part of processing a frame: https://github.com/kolofordjango/kolo/issues/9 ## v1.2.0 _2021-10-25_ - Capture the call site for each captured frame - Store Kolo database in `.kolo` (alongside the user's working directory) via the `KOLO_STORE_IN_PROJECT=1` environment variable. (To be the default soon) - Capture information about where in the user code SQL queries originate ## v1.1.3 _2021-09-30_ - Collect `scheme` from the incoming HTTP request which assists the VSCode extension in reliably replaying requests ## v1.1.2 _2021-09-21_ - Fix bug where Kolo would cause additional SQL queries when the evaluation of a third party `__repr__` would call `__repr__` on a django queryset. Specifically this was the case with Django Rest Framework (as with the previous change log item, credit to @vhtkrk for reporting this https://github.com/kolofordjango/kolo/issues/4) ## v1.1.1 _2021-09-20_ - Fix bug where Kolo would prematurely evaluate not-yet-evaluated Querysets (credit to @vhtkrk for reporting this bug!) ## v1.1.0 _2021-09-16_ - Additional configuration options via .kolo/config.toml - You can now configure Kolo to exclude certain URL paths (like `/static/`) and also explicitly include and exclude frames based on filepath - Better support for capturing those exceptions that lead to a 500 error - Several bug fixes and stability improvements! ## v1.0.4 _2021-08-19_ - Exclude attrs generated frames. The refactor of the 1.0.0 release resulted in these being included, but now they're excluded again! ## v1.0.3 _2021-08-11_ - Add changelog link pointing at this file on PyPI page: https://pypi.org/project/kolo/ ## v1.0.2 _2021-08-11_ - Fix classifiers from 1.0.1. Now they actually show up: https://pypi.org/project/kolo/ ## v1.0.1 _2021-08-11_ - Add relevant PyPI classifiers: https://pypi.org/classifiers/ ## v1.0.0 _2021-08-10_ - Support for Python 3.6 - Refactored how we exclude library code. If you start seeing library code show up in Kolo, please open a new issue on this repo - Kolo now has better support for showing code that was executed as part of a custom middleware that you have in your Django project - Kolo will now disable itself if it detects another profiler present (a log message will be shown in this case) - A whole host of performance and stability improvements - Introduced more logging to show when Kolo is disabling itself - Bringing the major version number to 1, to ensure the `kolo` python package and VSCode extension always share the same major version number ## v0.0.5 _2021-06-10_ - Support for Python 3.7 ## v0.0.4 _2021-06-04_ - Improve README shown on PyPI ## v0.0.3 _2021-06-04_ - Use INSERT OR IGNORE to prevent bug where the same invocation would be inserted twice into sqlite leading to a confusing user-visible error message ## v0.0.2 _2021-05-26_ - Capture timestamps as floats instead of ints, because we're basically always operating at the sub-second level ## v0.0.1 _2021-05-23_ - Initial release. New to Kolo? Check out [our website](https://kolo.app) and the [announcement video](https://www.youtube.com/watch?v=6XR9Y8v7vZ4)