TypeDAL 4.8.6__tar.gz → 4.8.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. {typedal-4.8.6 → typedal-4.8.7}/CHANGELOG.md +6 -0
  2. {typedal-4.8.6 → typedal-4.8.7}/PKG-INFO +1 -1
  3. typedal-4.8.7/coverage.svg +1 -0
  4. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/__about__.py +1 -1
  5. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/fields.py +1 -3
  6. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/tables.py +6 -5
  7. {typedal-4.8.6 → typedal-4.8.7}/tests/test_config.py +1 -3
  8. typedal-4.8.6/.crush/.gitignore +0 -1
  9. typedal-4.8.6/.crush/crush.db-shm +0 -0
  10. typedal-4.8.6/.crush/crush.db-wal +0 -0
  11. typedal-4.8.6/.crush/init +0 -0
  12. typedal-4.8.6/.crush/logs/crush.log +0 -37
  13. typedal-4.8.6/coverage.svg +0 -1
  14. {typedal-4.8.6 → typedal-4.8.7}/.github/workflows/su6.yml +0 -0
  15. {typedal-4.8.6 → typedal-4.8.7}/.gitignore +0 -0
  16. {typedal-4.8.6 → typedal-4.8.7}/.readthedocs.yml +0 -0
  17. {typedal-4.8.6 → typedal-4.8.7}/README.md +0 -0
  18. {typedal-4.8.6 → typedal-4.8.7}/docs/10_advanced_apis.md +0 -0
  19. {typedal-4.8.6 → typedal-4.8.7}/docs/1_getting_started.md +0 -0
  20. {typedal-4.8.6 → typedal-4.8.7}/docs/2_defining_tables.md +0 -0
  21. {typedal-4.8.6 → typedal-4.8.7}/docs/3_building_queries.md +0 -0
  22. {typedal-4.8.6 → typedal-4.8.7}/docs/4_relationships.md +0 -0
  23. {typedal-4.8.6 → typedal-4.8.7}/docs/5_py4web.md +0 -0
  24. {typedal-4.8.6 → typedal-4.8.7}/docs/6_migrations.md +0 -0
  25. {typedal-4.8.6 → typedal-4.8.7}/docs/7_configuration.md +0 -0
  26. {typedal-4.8.6 → typedal-4.8.7}/docs/8_mixins.md +0 -0
  27. {typedal-4.8.6 → typedal-4.8.7}/docs/9_memoization.md +0 -0
  28. {typedal-4.8.6 → typedal-4.8.7}/docs/css/code_blocks.css +0 -0
  29. {typedal-4.8.6 → typedal-4.8.7}/docs/index.md +0 -0
  30. {typedal-4.8.6 → typedal-4.8.7}/docs/requirements.txt +0 -0
  31. {typedal-4.8.6 → typedal-4.8.7}/example_new.py +0 -0
  32. {typedal-4.8.6 → typedal-4.8.7}/example_old.py +0 -0
  33. {typedal-4.8.6 → typedal-4.8.7}/mkdocs.yml +0 -0
  34. {typedal-4.8.6 → typedal-4.8.7}/pyproject.toml +0 -0
  35. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/__init__.py +0 -0
  36. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/caching.py +0 -0
  37. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/cli.py +0 -0
  38. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/config.py +0 -0
  39. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/constants.py +0 -0
  40. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/core.py +0 -0
  41. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/define.py +0 -0
  42. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/enum_helpers.py +0 -0
  43. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/for_py4web.py +0 -0
  44. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/for_web2py.py +0 -0
  45. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/helpers.py +0 -0
  46. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/mixins.py +0 -0
  47. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/py.typed +0 -0
  48. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/query_builder.py +0 -0
  49. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/relationships.py +0 -0
  50. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/rows.py +0 -0
  51. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/serializers/as_json.py +0 -0
  52. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/serializers/typescript.py +0 -0
  53. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/types.py +0 -0
  54. {typedal-4.8.6 → typedal-4.8.7}/src/typedal/web2py_py4web_shared.py +0 -0
  55. {typedal-4.8.6 → typedal-4.8.7}/tasks.py +0 -0
  56. {typedal-4.8.6 → typedal-4.8.7}/tests/__init__.py +0 -0
  57. {typedal-4.8.6 → typedal-4.8.7}/tests/configs/simple.toml +0 -0
  58. {typedal-4.8.6 → typedal-4.8.7}/tests/configs/valid.env +0 -0
  59. {typedal-4.8.6 → typedal-4.8.7}/tests/configs/valid.toml +0 -0
  60. {typedal-4.8.6 → typedal-4.8.7}/tests/py314_tests.py +0 -0
  61. {typedal-4.8.6 → typedal-4.8.7}/tests/test_cli.py +0 -0
  62. {typedal-4.8.6 → typedal-4.8.7}/tests/test_docs_examples.py +0 -0
  63. {typedal-4.8.6 → typedal-4.8.7}/tests/test_helpers.py +0 -0
  64. {typedal-4.8.6 → typedal-4.8.7}/tests/test_json.py +0 -0
  65. {typedal-4.8.6 → typedal-4.8.7}/tests/test_main.py +0 -0
  66. {typedal-4.8.6 → typedal-4.8.7}/tests/test_mixins.py +0 -0
  67. {typedal-4.8.6 → typedal-4.8.7}/tests/test_mypy.py +0 -0
  68. {typedal-4.8.6 → typedal-4.8.7}/tests/test_orm.py +0 -0
  69. {typedal-4.8.6 → typedal-4.8.7}/tests/test_py4web.py +0 -0
  70. {typedal-4.8.6 → typedal-4.8.7}/tests/test_query_builder.py +0 -0
  71. {typedal-4.8.6 → typedal-4.8.7}/tests/test_relationships.py +0 -0
  72. {typedal-4.8.6 → typedal-4.8.7}/tests/test_row.py +0 -0
  73. {typedal-4.8.6 → typedal-4.8.7}/tests/test_stats.py +0 -0
  74. {typedal-4.8.6 → typedal-4.8.7}/tests/test_table.py +0 -0
  75. {typedal-4.8.6 → typedal-4.8.7}/tests/test_typescript.py +0 -0
  76. {typedal-4.8.6 → typedal-4.8.7}/tests/test_typing_mypy.md +0 -0
  77. {typedal-4.8.6 → typedal-4.8.7}/tests/test_typing_pyright.md +0 -0
  78. {typedal-4.8.6 → typedal-4.8.7}/tests/test_web2py.py +0 -0
  79. {typedal-4.8.6 → typedal-4.8.7}/tests/test_xx_others.py +0 -0
  80. {typedal-4.8.6 → typedal-4.8.7}/tests/timings.py +0 -0
@@ -2,6 +2,12 @@
2
2
 
3
3
  <!--next-version-placeholder-->
4
4
 
5
+ ## v4.8.7 (2026-06-11)
6
+
7
+ ### Fix
8
+
9
+ * Make type checker happy about as_dict and similar methods; reformat ([`f6be55f`](https://github.com/trialandsuccess/TypeDAL/commit/f6be55f253e87d409e0ac017f2bdb89233620391))
10
+
5
11
  ## v4.8.6 (2026-06-02)
6
12
 
7
13
  ### Fix
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: TypeDAL
3
- Version: 4.8.6
3
+ Version: 4.8.7
4
4
  Summary: Typing support for PyDAL
5
5
  Project-URL: Documentation, https://typedal.readthedocs.io/
6
6
  Project-URL: Issues, https://github.com/trialandsuccess/TypeDAL/issues
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="122" height="20" role="img" aria-label="coverage: 100.00%"><title>coverage: 100.00%</title><filter id="blur"><feGaussianBlur stdDeviation="16"/></filter><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="122" height="20" rx="3"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="61" height="20" fill="#4b0"/><rect width="122" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="315" y="150" fill-opacity=".8" filter="url(#blur)" textLength="510">coverage</text><text x="315" y="150" fill-opacity=".3" textLength="510">coverage</text></g><text x="315" y="140" textLength="510">coverage</text></g><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="905" y="150" fill-opacity=".8" filter="url(#blur)" textLength="510">100.00%</text><text x="905" y="150" fill-opacity=".3" textLength="510">100.00%</text></g><text x="905" y="140" textLength="510">100.00%</text></g></g></svg>
@@ -5,4 +5,4 @@ This file contains the Version info for this package.
5
5
  # SPDX-FileCopyrightText: 2023-present Robin van der Noord <robinvandernoord@gmail.com>
6
6
  #
7
7
  # SPDX-License-Identifier: MIT
8
- __version__ = "4.8.6"
8
+ __version__ = "4.8.7"
@@ -412,9 +412,7 @@ def UploadField(**kw: t.Unpack[FieldSettings]) -> TypedField[str]:
412
412
  Upload = UploadField
413
413
 
414
414
 
415
- def ReferenceField[
416
- T_subclass: (TypedTable, Table)
417
- ](
415
+ def ReferenceField[T_subclass: (TypedTable, Table)](
418
416
  other_table: str | t.Type[TypedTable] | TypedTable | Table | T_subclass,
419
417
  **kw: t.Unpack[FieldSettings],
420
418
  ) -> TypedField[int]:
@@ -880,12 +880,13 @@ class TypedTable(_TypedTable, metaclass=TableMeta):
880
880
  }
881
881
 
882
882
  def _setup_instance_methods(self) -> None:
883
- self.as_dict = self._as_dict # type: ignore
884
- self.__json__ = self.as_json = self._as_json # type: ignore
885
- # self.as_yaml = self._as_yaml # type: ignore
886
- self.as_xml = self._as_xml # type: ignore
887
-
888
883
  # use setattr instead of self.x = y to make the typecheckers happier
884
+ setattr(self, "as_dict", self._as_dict)
885
+ setattr(self, "__json__", self._as_json)
886
+ setattr(self, "as_json", self._as_json)
887
+ setattr(self, "as_xml", self._as_xml)
888
+ # setattr(self, "as_yaml", self._as_yaml)
889
+
889
890
  setattr(self, "update", self._update)
890
891
  setattr(self, "delete_record", self._delete_record)
891
892
  setattr(self, "update_record", self._update_record)
@@ -1,10 +1,10 @@
1
1
  import datetime as dt
2
- from datetime import datetime
3
2
  import os
4
3
  import shutil
5
4
  import sqlite3
6
5
  import tempfile
7
6
  import uuid
7
+ from datetime import datetime
8
8
  from pathlib import Path
9
9
 
10
10
  import pytest
@@ -198,7 +198,6 @@ def test_timestamp_fields_sqlite(at_temp_dir):
198
198
  assert '"ts" timestamp NOT NULL' in Timestamp._sql()
199
199
 
200
200
 
201
-
202
201
  def test_timestamp_fields_psql(at_temp_dir):
203
202
  examples = Path(__file__).parent / "configs"
204
203
  shutil.copy(examples / "valid.env", "./.env")
@@ -229,7 +228,6 @@ def test_timestamp_fields_psql(at_temp_dir):
229
228
  assert '"ts" timestamp NOT NULL' in Timestamp._sql()
230
229
 
231
230
 
232
-
233
231
  def test_point_fields_sqlite(at_temp_dir):
234
232
  db = TypeDAL("sqlite:memory")
235
233
 
@@ -1 +0,0 @@
1
- *
Binary file
Binary file
typedal-4.8.6/.crush/init DELETED
File without changes
@@ -1,37 +0,0 @@
1
- {"time":"2026-01-20T14:19:21.359487106+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/config.(*catwalkSync).Get.func1","file":"github.com/charmbracelet/crush/internal/config/catwalk.go","line":55},"msg":"Fetching providers from Catwalk"}
2
- {"time":"2026-01-20T14:19:21.518115889+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/config.(*catwalkSync).Get.func1","file":"github.com/charmbracelet/crush/internal/config/catwalk.go","line":63},"msg":"Catwalk providers not modified"}
3
- {"time":"2026-01-20T14:19:21.52626179+01:00","level":"INFO","msg":"OK 20250424200609_initial.sql (1.52ms)"}
4
- {"time":"2026-01-20T14:19:21.526651475+01:00","level":"INFO","msg":"OK 20250515105448_add_summary_message_id.sql (330.71µs)"}
5
- {"time":"2026-01-20T14:19:21.526995425+01:00","level":"INFO","msg":"OK 20250624000000_add_created_at_indexes.sql (325.29µs)"}
6
- {"time":"2026-01-20T14:19:21.527303588+01:00","level":"INFO","msg":"OK 20250627000000_add_provider_to_messages.sql (293.15µs)"}
7
- {"time":"2026-01-20T14:19:21.52790648+01:00","level":"INFO","msg":"OK 20250810000000_add_is_summary_message.sql (495.71µs)"}
8
- {"time":"2026-01-20T14:19:21.528316924+01:00","level":"INFO","msg":"OK 20250812000000_add_todos_to_sessions.sql (389.38µs)"}
9
- {"time":"2026-01-20T14:19:21.528324939+01:00","level":"INFO","msg":"goose: successfully migrated database to version: 20250812000000"}
10
- {"time":"2026-01-20T14:19:21.528356959+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/app.(*App).initLSPClients","file":"github.com/charmbracelet/crush/internal/app/lsp.go","line":21},"msg":"LSP clients initialization started in background"}
11
- {"time":"2026-01-20T14:19:21.52843831+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/app.New.func1","file":"github.com/charmbracelet/crush/internal/app/app.go","line":102},"msg":"Initializing MCP clients"}
12
- {"time":"2026-01-20T14:21:06.413595152+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/agent.(*sessionAgent).generateTitle","file":"github.com/charmbracelet/crush/internal/agent/agent.go","line":788},"msg":"generated title with small model"}
13
- {"time":"2026-01-20T14:21:14.539289381+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/agent.(*sessionAgent).generateTitle","file":"github.com/charmbracelet/crush/internal/agent/agent.go","line":788},"msg":"generated title with small model"}
14
- {"time":"2026-01-20T14:21:15.710688424+01:00","level":"WARN","source":{"function":"github.com/charmbracelet/crush/internal/agent/tools.init.func1","file":"github.com/charmbracelet/crush/internal/agent/tools/rg.go","line":18},"msg":"Ripgrep (rg) not found in $PATH. Some grep features might be limited or slower."}
15
- {"time":"2026-01-20T14:21:17.08089755+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/agent.(*sessionAgent).generateTitle","file":"github.com/charmbracelet/crush/internal/agent/agent.go","line":788},"msg":"generated title with small model"}
16
- {"time":"2026-01-20T14:21:17.151106375+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/agent.(*sessionAgent).generateTitle","file":"github.com/charmbracelet/crush/internal/agent/agent.go","line":788},"msg":"generated title with small model"}
17
- {"time":"2026-01-20T14:22:05.503761296+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/agent.(*sessionAgent).generateTitle","file":"github.com/charmbracelet/crush/internal/agent/agent.go","line":788},"msg":"generated title with small model"}
18
- {"time":"2026-01-20T14:26:05.030425805+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/agent.(*sessionAgent).generateTitle","file":"github.com/charmbracelet/crush/internal/agent/agent.go","line":788},"msg":"generated title with small model"}
19
- {"time":"2026-01-20T14:36:26.778665189+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/agent.(*sessionAgent).generateTitle","file":"github.com/charmbracelet/crush/internal/agent/agent.go","line":788},"msg":"generated title with small model"}
20
- {"time":"2026-01-20T14:38:51.314473736+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/agent.(*sessionAgent).generateTitle","file":"github.com/charmbracelet/crush/internal/agent/agent.go","line":788},"msg":"generated title with small model"}
21
- {"time":"2026-01-20T15:02:22.602405814+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/app.(*App).Shutdown.func1","file":"github.com/charmbracelet/crush/internal/app/app.go","line":403},"msg":"Shutdown took 6.62949ms"}
22
- {"time":"2026-01-20T15:02:23.719585648+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/config.(*catwalkSync).Get.func1","file":"github.com/charmbracelet/crush/internal/config/catwalk.go","line":55},"msg":"Fetching providers from Catwalk"}
23
- {"time":"2026-01-20T15:02:23.881789126+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/config.(*catwalkSync).Get.func1","file":"github.com/charmbracelet/crush/internal/config/catwalk.go","line":63},"msg":"Catwalk providers not modified"}
24
- {"time":"2026-01-20T15:02:23.884044691+01:00","level":"INFO","msg":"goose: no migrations to run. current version: 20250812000000"}
25
- {"time":"2026-01-20T15:02:23.884082792+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/app.(*App).initLSPClients","file":"github.com/charmbracelet/crush/internal/app/lsp.go","line":21},"msg":"LSP clients initialization started in background"}
26
- {"time":"2026-01-20T15:02:23.884273487+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/app.New.func1","file":"github.com/charmbracelet/crush/internal/app/app.go","line":102},"msg":"Initializing MCP clients"}
27
- {"time":"2026-01-20T15:04:13.024457515+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/agent.(*sessionAgent).generateTitle","file":"github.com/charmbracelet/crush/internal/agent/agent.go","line":788},"msg":"generated title with small model"}
28
- {"time":"2026-01-20T15:04:14.232072885+01:00","level":"WARN","source":{"function":"github.com/charmbracelet/crush/internal/agent/tools.init.func1","file":"github.com/charmbracelet/crush/internal/agent/tools/rg.go","line":18},"msg":"Ripgrep (rg) not found in $PATH. Some grep features might be limited or slower."}
29
- {"time":"2026-01-20T15:11:24.612161916+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/app.(*App).Shutdown.func1","file":"github.com/charmbracelet/crush/internal/app/app.go","line":403},"msg":"Shutdown took 9.537141ms"}
30
- {"time":"2026-01-20T15:11:25.263960575+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/config.(*catwalkSync).Get.func1","file":"github.com/charmbracelet/crush/internal/config/catwalk.go","line":55},"msg":"Fetching providers from Catwalk"}
31
- {"time":"2026-01-20T15:11:25.431990051+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/config.(*catwalkSync).Get.func1","file":"github.com/charmbracelet/crush/internal/config/catwalk.go","line":63},"msg":"Catwalk providers not modified"}
32
- {"time":"2026-01-20T15:11:25.434282035+01:00","level":"INFO","msg":"goose: no migrations to run. current version: 20250812000000"}
33
- {"time":"2026-01-20T15:11:25.434366662+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/app.(*App).initLSPClients","file":"github.com/charmbracelet/crush/internal/app/lsp.go","line":21},"msg":"LSP clients initialization started in background"}
34
- {"time":"2026-01-20T15:11:25.434579879+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/app.New.func1","file":"github.com/charmbracelet/crush/internal/app/app.go","line":102},"msg":"Initializing MCP clients"}
35
- {"time":"2026-01-20T15:24:40.456010578+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/agent.(*sessionAgent).generateTitle","file":"github.com/charmbracelet/crush/internal/agent/agent.go","line":788},"msg":"generated title with small model"}
36
- {"time":"2026-01-20T15:24:51.673808433+01:00","level":"WARN","source":{"function":"github.com/charmbracelet/crush/internal/agent/tools.init.func1","file":"github.com/charmbracelet/crush/internal/agent/tools/rg.go","line":18},"msg":"Ripgrep (rg) not found in $PATH. Some grep features might be limited or slower."}
37
- {"time":"2026-01-20T15:26:03.868420566+01:00","level":"INFO","source":{"function":"github.com/charmbracelet/crush/internal/agent.(*sessionAgent).Cancel","file":"github.com/charmbracelet/crush/internal/agent/agent.go","line":907},"msg":"Request cancellation initiated","session_id":"4c2d1684-8db2-4ffd-83bb-9c08fe850f29"}
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="122" height="20" role="img" aria-label="coverage: 100.00%"><title>coverage: 100.00%</title><filter id="blur"><feGaussianBlur in="SourceGraphic" stdDeviation="16"/></filter><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="122" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="61" height="20" fill="#4b0"/><rect width="122" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="315" y="150" fill="#010101" fill-opacity=".80" filter="url(#blur)" transform="scale(.1)" textLength="510">coverage</text><text aria-hidden="true" x="315" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">coverage</text><text x="315" y="140" transform="scale(.1)" fill="#fff" textLength="510">coverage</text><text aria-hidden="true" x="905" y="150" fill="#010101" fill-opacity=".80" filter="url(#blur)" transform="scale(.1)" textLength="510">100.00%</text><text aria-hidden="true" x="905" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">100.00%</text><text x="905" y="140" transform="scale(.1)" fill="#fff" textLength="510">100.00%</text></g></svg>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes