Bumps [djlint](https://github.com/djlint/djLint) from 1.35.2 to 1.36.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/djlint/djLint/releases">djlint's
releases</a>.</em></p>
<blockquote>
<h2>v1.36.1</h2>
<ul>
<li>Improve performance by ~30%. Thanks, <a
href="https://github.com/oliverhaas"><code>@oliverhaas</code></a>.</li>
</ul>
<h2>v1.36.0</h2>
<h3>Feature</h3>
<ul>
<li>Add support for <code>djlint.toml</code> config file. The format is
identical to <code>pyproject.toml</code>, but it does not use
<code>[tool.djlint]</code> table.</li>
</ul>
<h3>Fix</h3>
<ul>
<li>Do not format HTML in attributes. Thanks, <a
href="https://github.com/oliverhaas"><code>@oliverhaas</code></a>.</li>
<li>Fix using <code>js_config</code> instead of
<code>css_config</code>.</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Increase performance by ~30% by using regex more efficiently and
caching more stuff.</li>
</ul>
<h2>v1.35.4</h2>
<p>Compiled <a
href="https://mypyc.readthedocs.io/en/stable/introduction.html">mypyc</a>
wheels are now also available, which improve performance by ~21% over
Pure Python. They will be automatically installed by your package
manager when available for your platform. Pure Python wheel is still
available.</p>
<p>Other changes have been made to improve performance, thanks to <a
href="https://github.com/JCWasmx86"><code>@JCWasmx86</code></a>. See
the <a
href="https://github.com/djlint/djLint/compare/v1.35.3...v1.35.4">commits</a>
for more details.</p>
<p>Formatting performance comparison with the previous version (tested
on <a
href="https://github.com/openedx/edx-platform">https://github.com/openedx/edx-platform</a>
with single thread):</p>
<table>
<thead>
<tr>
<th>Version</th>
<th>Seconds</th>
</tr>
</thead>
<tbody>
<tr>
<td>v1.35.3</td>
<td>20.39</td>
</tr>
<tr>
<td>v1.35.4 pure Python</td>
<td>14.39</td>
</tr>
<tr>
<td>v1.35.4 compiled</td>
<td>11.35</td>
</tr>
</tbody>
</table>
<h2>v1.35.3</h2>
<p>This release significantly improves performance, especially for large
files and large projects.</p>
<p>Formatting <a
href="https://github.com/openedx/edx-platform">https://github.com/openedx/edx-platform</a>
took 87 seconds in the previous version, now it takes only 4 seconds
(>2000% speedup)! Tested on a 32-core computer.</p>
<ul>
<li>Performance improved by caching some functions. Thanks to <a
href="https://github.com/JCWasmx86"><code>@JCWasmx86</code></a>!</li>
<li>Removed the limitation on the number of workers introduced in
v1.35.0.</li>
<li>Drop Python 3.8 support.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/djlint/djLint/blob/master/CHANGELOG.md">djlint's
changelog</a>.</em></p>
<blockquote>
<h2>[1.36.1] - 2024-11-07</h2>
<ul>
<li>Improve performance by ~30%. Thanks, <a
href="https://github.com/oliverhaas"><code>@oliverhaas</code></a>.</li>
</ul>
<h2>[1.36.0] - 2024-11-05</h2>
<h3>Feature</h3>
<ul>
<li>Add support for <code>djlint.toml</code> config file. The format is
identical to <code>pyproject.toml</code>, but it does not use
<code>[tool.djlint]</code> table.</li>
</ul>
<h3>Fix</h3>
<ul>
<li>Do not format HTML in attributes. Thanks, <a
href="https://github.com/oliverhaas"><code>@oliverhaas</code></a>.</li>
<li>Fix using <code>js_config</code> instead of
<code>css_config</code>.</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Increase performance by ~30% by using regex more efficiently and
caching more stuff.</li>
</ul>
<h2>[1.35.4] - 2024-11-01</h2>
<p>Compiled <a
href="https://mypyc.readthedocs.io/en/stable/introduction.html">mypyc</a>
wheels are now also available, which improve performance by ~21% over
Pure Python. They will be automatically installed by your package
manager when available for your platform. Pure Python wheel is still
available.</p>
<p>Other changes have been made to improve performance, thanks to <a
href="https://github.com/JCWasmx86"><code>@JCWasmx86</code></a>. See
the <a
href="https://github.com/djlint/djLint/compare/v1.35.3...v1.35.4">commits</a>
for more details.</p>
<p>Formatting performance comparison with the previous version (tested
on <a
href="https://github.com/openedx/edx-platform">https://github.com/openedx/edx-platform</a>
with single thread):</p>
<table>
<thead>
<tr>
<th>Version</th>
<th>Seconds</th>
</tr>
</thead>
<tbody>
<tr>
<td>v1.35.3</td>
<td>20.39</td>
</tr>
<tr>
<td>v1.35.4 pure Python</td>
<td>14.39</td>
</tr>
<tr>
<td>v1.35.4 compiled</td>
<td>11.35</td>
</tr>
</tbody>
</table>
<h2>[1.35.3] - 2024-10-30</h2>
<p>This release significantly improves performance, especially for large
files and large projects.</p>
<p>Formatting <a
href="https://github.com/openedx/edx-platform">https://github.com/openedx/edx-platform</a>
took 87 seconds in the previous version, now it takes only 4 seconds
(>2000% speedup)! Tested on a 32-core computer.</p>
<ul>
<li>Performance improved by caching some functions. Thanks to <a
href="https://github.com/JCWasmx86"><code>@JCWasmx86</code></a>!</li>
<li>Removed the limitation on the number of workers introduced in
v1.35.0.</li>
<li>Drop Python 3.8 support.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f908697f4e"><code>f908697</code></a>
chore: v1.36.1</li>
<li><a
href="92e2e84f64"><code>92e2e84</code></a>
chore(deps): lock file maintenance</li>
<li><a
href="96fec0e0e1"><code>96fec0e</code></a>
chore(deps): update dependency
<code>@ianvs/prettier-plugin-sort-imports</code> to v4.4.0</li>
<li><a
href="a7050555f8"><code>a705055</code></a>
chore(deps): lock file maintenance</li>
<li><a
href="21dc6a12d7"><code>21dc6a1</code></a>
perf: simple skip for unformatted blocks (<a
href="https://redirect.github.com/djlint/djLint/issues/1005">#1005</a>)</li>
<li><a
href="9dc7ea3cb6"><code>9dc7ea3</code></a>
chore(deps): lock file maintenance</li>
<li><a
href="14530c8356"><code>14530c8</code></a>
chore: v1.36.0</li>
<li><a
href="d97be3b90e"><code>d97be3b</code></a>
fix: types.py -> types.pyi</li>
<li><a
href="012ee62d47"><code>012ee62</code></a>
chore(deps): lock file maintenance</li>
<li><a
href="1afeeb87cf"><code>1afeeb8</code></a>
fix: fix type hint</li>
<li>Additional commits viewable in <a
href="https://github.com/djlint/djLint/compare/v1.35.2...v1.36.1">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Bumps [django](https://github.com/django/django) from 5.1.2 to 5.1.3.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="69bf08e3a3"><code>69bf08e</code></a>
[5.1.x] Bumped version for 5.1.3 release.</li>
<li><a
href="e3984ca5d1"><code>e3984ca</code></a>
[5.1.x] Added release date for 5.1.3.</li>
<li><a
href="4ae358122b"><code>4ae3581</code></a>
[5.1.x] Made minor edits to form fields docs.</li>
<li><a
href="9fa2d235c9"><code>9fa2d23</code></a>
[5.1.x] Fixed <a
href="https://redirect.github.com/django/django/issues/35876">#35876</a>
-- Displayed non-ASCII fieldset names when rendering Mod...</li>
<li><a
href="5045dab4f9"><code>5045dab</code></a>
[5.1.x] Added missing lang attributes to html elements in docs.</li>
<li><a
href="ffc67aac1e"><code>ffc67aa</code></a>
[5.1.x] Fixed <a
href="https://redirect.github.com/django/django/issues/35864">#35864</a>
-- Documented EmailMessage.connection is ignored when us...</li>
<li><a
href="4915feaaf7"><code>4915fea</code></a>
[5.1.x] Fixed <a
href="https://redirect.github.com/django/django/issues/35873">#35873</a>
-- Corrected Form.as_table() call in form docs.</li>
<li><a
href="b57a8395b5"><code>b57a839</code></a>
[5.1.x] Refs <a
href="https://redirect.github.com/django/django/issues/35844">#35844</a>
-- Expanded compatibility for expected error messages in ...</li>
<li><a
href="c5ddc8550c"><code>c5ddc85</code></a>
[5.1.x] Corrected note on importing fields in model field reference
docs.</li>
<li><a
href="0a1091f118"><code>0a1091f</code></a>
[5.1.x] Removed unneeded OS reference on running the test suite in
contributi...</li>
<li>Additional commits viewable in <a
href="https://github.com/django/django/compare/5.1.2...5.1.3">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
The last refactor of the save process
(0fdb70ce66) has introduced a bug: the
save flow was not more stopped when a layer fail to save. This ends with
a broken UI, as the map is not dirty anymore, so the save button is not
active anymore, while at least one layer still needs to be saved.
Save can fail in two scenarios:
- there is a conflict (status 412)
- the server is down or as an issue (eg. disk is full)
I tried a more modest scenario (listening for status in map.save and
recallign the map save after a conflict), but this ended with calling
map.save uselessly even more.
So I decided to try this refactor, which also totally remove the useless
map.save we were sending at each save until now.
Bumps [uwsgi](https://uwsgi-docs.readthedocs.io/en/latest/) from 2.0.27
to 2.0.28.
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
The last refactor of the save process (0fdb70ce66)
has introduced a bug: the save flow was not more stopped when a layer fail to save.
This ends with a broken UI, as the map is not dirty anymore, so the save button
is not active anymore, while at least one layer still needs to be saved.
Save can fail in two scenarios:
- there is a conflict (status 412)
- the server is down or as an issue (eg. disk is full)
I tried a more modest scenario (listening for status in map.save and
recallign the map save after a conflict), but this ended with calling
map.save uselessly even more.
So I decided to try this refactor, which also totally remove the useless
map.save we were sending at each save until now.
And only this panel.
This was creating a weird bug, steps to reproduce:
- create a marker
- shift-click on the marker to edit the layer (so without explicitly
closing the panel)
- try to type the layer name: the panel would close
This is also because currently the schema and render() are too dump, and
when any `name` is changed then the `data` reflow is called, while it
should not when editing the datalayer name.
We want to:
- have more targeted schema
- have more specific reflow in render
But that's for other PRs!
When finishing drawing a polygon/line, Leaflet.Editable will send
both `editable:drawing:end` and `editable:drawing:commit`. In normal
flow, we only need to listen to the later, and we only need to
listen for the former in the case of pressing escape while drawing.
And only this panel.
This was creating a weird bug, steps to reproduce:
- create a marker
- shift-click on the marker to edit the layer (so without explicitly
closing the panel)
- try to type the layer name: the panel would close
This is also because currently the schema and render() are too
dump, and when any `name` is changed then the `data` reflow is
called, while it should not when editing the datalayer name.
We want to:
- have more targeted schema
- have more specific reflow in render
But that's for other PRs!
fix#2232
A classified layer needs to have compiled the data to known its
classes/categories.
This commit review the way we build the legend: instead of creating with
the whole caption panel, we just set a container and we populate it
later. This opens the door for live changing the legend when editing the
layer.
But we have to clarify that "reactive" pattern at some point, as we have
some concurrent pattern laying around: the `render()`, which coupled
with the schema and this is nice, but for now it's a bit rough (changing
the whole UI each time); the `propagate` way, which is more specific,
but not coupled to the schema; the `dataChanged`; and the `onDataLoaded`
now, which is a bit different, as it's about the data being loaded, not
changed/modified, but for the DOM it may at the end be the same. Well,
food for thoughts…
fix#2232
A classified layer needs to have compiled the data to known its
classes/categories.
This commit review the way we build the legend: instead of creating
with the whole caption panel, we just set a container and we populate
it later. This opens the door for live changing the legend when
editing the layer.
But we have to clarify that "reactive" pattern at some point, as we
have some concurrent pattern laying around: the `render()`, which
coupled with the schema and this is nice, but for now it's a bit rough
(changing the whole UI each time); the `propagate` way, which is
more specific, but not coupled to the schema; the `dataChanged`; and
the `onDataLoaded` now, which is a bit different, as it's about the
data being loaded, not changed/modified, but for the DOM it may at
the end be the same. Well, food for thoughts…