Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve startuptime: don't import IPython/ipykernal if not in jupyter #1001

Merged
merged 3 commits into from
Oct 16, 2023

Conversation

zakstucke
Copy link
Contributor

Importing Ipython/ipykernal when running from terminal slows startup a fair bit on my machine.

If in jupyter IPython will already be imported, so can skip the imports directly when not needed.

time python -c "import loguru"

Before:

0.31s user 0.06s system 99% cpu 0.374 total
0.22s user 0.02s system 99% cpu 0.242 total
0.20s user 0.03s system 99% cpu 0.237 total
0.21s user 0.03s system 99% cpu 0.242 total
0.22s user 0.03s system 99% cpu 0.245 total

After:

0.04s user 0.01s system 97% cpu 0.053 total
0.05s user 0.00s system 98% cpu 0.051 total
0.04s user 0.01s system 98% cpu 0.053 total
0.05s user 0.00s system 98% cpu 0.054 total
0.04s user 0.01s system 98% cpu 0.054 total

Copy link
Owner

@Delgan Delgan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You'll also need to change the unit tests for the coverage check to pass.

Two modifications are probably required:

  • Update test_jupyter_fixed() and add monkeypatch.setitem(builtins, "__IPYTHON__", True).
  • Right below test_jupyter_fixed(), add a new test_jupyter_missing_lib() function which mocks __IPYTHON__ and sys.stdout but without monkeypatching sys.modules. The idea is to force an ImportError to be raised in should_colorize() and ensure it's properly hanlded.

@@ -6,7 +6,7 @@ def should_colorize(stream):
if stream is None:
return False

if stream is sys.stdout or stream is sys.stderr:
if "IPython" in sys.modules and (stream is sys.stdout or stream is sys.stderr):
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would suggest to use getattr(builtins, "__IPYTHON__", False) instead of "IPython" in sys.modules. That way, we also avoid the additional checks when IPython is imported in a regular Python script or shell.

@Delgan
Copy link
Owner

Delgan commented Oct 2, 2023

Great suggestion, thanks!

@zakstucke
Copy link
Contributor Author

@Delgan I think i've fixed the coverage with something similar to your test_jupyter_missing_lib() suggestion.

But the change from sys.modules is a bit tricker, I just tried it out and the mocking in tests doesn't seem to work.

monkeypatch.setitem(builtins, "__IPYTHON__", True) leads to:
AttributeError: module 'builtins' has no attribute 'get'

Similar with setitem: AttributeError: <module 'builtins' (built-in)> has no attribute '__IPYTHON__'

Any ideas? I personally don't think there's an issue leaving with the sys.modules check, the load cost is actually importing the packages, so if its already loaded in, the actual check itself is quick.

@zakstucke zakstucke force-pushed the startup_optimise branch 2 times, most recently from 21499e3 to 8df54f1 Compare October 3, 2023 13:11
@zakstucke
Copy link
Contributor Author

@Delgan tests should be working, looks like something's going wrong with the CI itself

@Delgan
Copy link
Owner

Delgan commented Oct 15, 2023

@zakstucke Thanks for the update regarding code coverage, and sorry for the delay.

But the change from sys.modules is a bit tricker, I just tried it out and the mocking in tests doesn't seem to work.

monkeypatch.setitem(builtins, "__IPYTHON__", True) leads to: AttributeError: module 'builtins' has no attribute 'get'

Similar with setitem: AttributeError: <module 'builtins' (built-in)> has no attribute '__IPYTHON__'

Any ideas? I personally don't think there's an issue leaving with the sys.modules check, the load cost is actually importing the packages, so if its already loaded in, the actual check itself is quick.

Apologies, I made a mistake by suggesting monkeypatch.setitem(), it should have been monkeypatch.setattr(). Because the builtins.__IPYTHON__ variable does not exist by default, it indeed raises an AttributeError. However, this behavior can be disabled by specifying raising=False.

I agree that checking sys.modules is an equally appropriate solution. However, when possible I prefer not to rely on it. It's not impossible for the user to call sys.modules.clear() for some reason, therefore the solution relying on builtins seems more robust to me (as it's not possible to inadvertently remove __IPYTHON__).
However it's certainly not a problem in practice, I'm mostly nitpicking.

I took the liberty of pushing a commit on your personal branch to update the PR. I wanted to check that it was working properly and not bother you any further.
Are you OK with the state of the PR?
If so, I'll merge it.

@zakstucke
Copy link
Contributor Author

Thanks @Delgan, i'm all good if you are!

@Delgan Delgan merged commit db0c848 into Delgan:master Oct 16, 2023
29 of 30 checks passed
@Delgan
Copy link
Owner

Delgan commented Oct 16, 2023

Great, thanks for the improvement!

@i-newton
Copy link

i-newton commented Feb 7, 2024

Hi guys!
Could you please tell me when this feature is going to be released? It saves us ~20Mb of RAM from every app that uses loguru.
Seems like important feature to release asap.

@Delgan
Copy link
Owner

Delgan commented Feb 8, 2024

@i-newton Sorry, I have no ETA for now, but you can install and use the latest version:

pip install git+https://github.com/loguru/master.git@master

@i-newton
Copy link

i-newton commented Feb 26, 2024

@Delgan Thanks for the info! Unfortunately, loguru version must be fixed in my current project due to project policy. That's why I am looking forward for the version 0.7.3. Otherwise, i will have to fork the project (which is nor right option imo)

@Delgan
Copy link
Owner

Delgan commented Mar 2, 2024

@i-newton You can pin a specific hash commit as well:

pip install git+https://github.com/loguru/master.git@bd66b55094c4f431e88dd0091f2b8b84fceee624

I hope to be able to release 0.7.3 in the near future, but I can't guarantee anything.

@i-newton
Copy link

@Delgan sorry, for bothering you, do you still plan 0.7.3 release in near future? unfortunately, i can't use commit tag due to customer policy

github-actions bot added a commit to Sygil-Dev/whoosh-reloaded that referenced this pull request Dec 9, 2024
Bumps [loguru](https://github.com/Delgan/loguru) from 0.7.2 to 0.7.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Delgan/loguru/releases">loguru's
releases</a>.</em></p>
<blockquote>
<h2>0.7.3</h2>
<ul>
<li>Fix Cython incompatibility caused by the absence of underlying stack
frames, which resulted in a <code>ValueError</code> during logging (<a
href="https://redirect.github.com/Delgan/loguru/issues/88">#88</a>).</li>
<li>Fix possible <code>RuntimeError</code> when removing all handlers
with <code>logger.remove()</code> due to thread-safety issue (<a
href="https://redirect.github.com/Delgan/loguru/issues/1183">#1183</a>,
thanks <a
href="https://github.com/jeremyk"><code>@​jeremyk</code></a>).</li>
<li>Fix <code>diagnose=True</code> option of exception formatting not
working as expected with Python 3.13 (<a
href="https://redirect.github.com/Delgan/loguru/issues/1235">#1235</a>,
thanks <a
href="https://github.com/etianen"><code>@​etianen</code></a>).</li>
<li>Fix non-standard level names not fully compatible with
<code>logging.Formatter()</code> (<a
href="https://redirect.github.com/Delgan/loguru/issues/1231">#1231</a>,
thanks <a
href="https://github.com/yechielb2000"><code>@​yechielb2000</code></a>).</li>
<li>Fix inability to display a literal <code>&quot;\&quot;</code>
immediately before color markups (<a
href="https://redirect.github.com/Delgan/loguru/issues/988">#988</a>).</li>
<li>Fix possible infinite recursion when an exception is raised from a
<code>__repr__</code> method decorated with <code>logger.catch()</code>
(<a
href="https://redirect.github.com/Delgan/loguru/issues/1044">#1044</a>).</li>
<li>Improve performance of <code>datetime</code> formatting while
logging messages (<a
href="https://redirect.github.com/Delgan/loguru/issues/1201">#1201</a>,
thanks <a
href="https://github.com/trim21"><code>@​trim21</code></a>).</li>
<li>Reduce startup time in the presence of installed but unused
<code>IPython</code> third-party library (<a
href="https://redirect.github.com/Delgan/loguru/issues/1001">#1001</a>,
thanks <a
href="https://github.com/zakstucke"><code>@​zakstucke</code></a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Delgan/loguru/blob/master/CHANGELOG.rst">loguru's
changelog</a>.</em></p>
<blockquote>
<h1><code>0.7.3</code>_ (2024-12-06)</h1>
<ul>
<li>Fix Cython incompatibility caused by the absence of underlying stack
frames, which resulted in a <code>ValueError</code> during logging
(<code>[#88](Delgan/loguru#88)
&lt;https://github.com/Delgan/loguru/issues/88&gt;</code>_).</li>
<li>Fix possible <code>RuntimeError</code> when removing all handlers
with <code>logger.remove()</code> due to thread-safety issue
(<code>[#1183](Delgan/loguru#1183)
&lt;https://github.com/Delgan/loguru/issues/1183&gt;</code><em>, thanks
<code>@jeremyk &lt;https://github.com/jeremyk&gt;</code></em>).</li>
<li>Fix <code>diagnose=True</code> option of exception formatting not
working as expected with Python 3.13
(<code>[#1235](Delgan/loguru#1235)
&lt;https://github.com/Delgan/loguru/issues/1235&gt;</code><em>, thanks
<code>@etianen &lt;https://github.com/etianen&gt;</code></em>).</li>
<li>Fix non-standard level names not fully compatible with
<code>logging.Formatter()</code>
(<code>[#1231](Delgan/loguru#1231)
&lt;https://github.com/Delgan/loguru/issues/1231&gt;</code><em>, thanks
<code>@yechielb2000
&lt;https://github.com/yechielb2000&gt;</code></em>).</li>
<li>Fix inability to display a literal <code>&quot;\&quot;</code>
immediately before color markups
(<code>[#988](Delgan/loguru#988)
&lt;https://github.com/Delgan/loguru/issues/988&gt;</code>_).</li>
<li>Fix possible infinite recursion when an exception is raised from a
<code>__repr__</code> method decorated with <code>logger.catch()</code>
(<code>[#1044](Delgan/loguru#1044)
&lt;https://github.com/Delgan/loguru/issues/1044&gt;</code>_).</li>
<li>Improve performance of <code>datetime</code> formatting while
logging messages
(<code>[#1201](Delgan/loguru#1201)
&lt;https://github.com/Delgan/loguru/issues/1201&gt;</code><em>, thanks
<code>@trim21 &lt;https://github.com/trim21&gt;</code></em>).</li>
<li>Reduce startup time in the presence of installed but unused
<code>IPython</code> third-party library
(<code>[#1001](Delgan/loguru#1001)
&lt;https://github.com/Delgan/loguru/issues/1001&gt;</code><em>, thanks
<code>@zakstucke &lt;https://github.com/zakstucke&gt;</code></em>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Delgan/loguru/commit/ae3bfd1b85b6b4a3db535f69b975687c79498be4"><code>ae3bfd1</code></a>
Bump version to 0.7.3</li>
<li><a
href="https://github.com/Delgan/loguru/commit/ccca3566cc00c22eed8659705e45386fa2101b5d"><code>ccca356</code></a>
Replace &quot;notifiers&quot; (seems unmaintained) with
&quot;apprise&quot; in docs (<a
href="https://redirect.github.com/Delgan/loguru/issues/1251">#1251</a>)</li>
<li><a
href="https://github.com/Delgan/loguru/commit/a372814bf79d47628e66ca9a91072f53fba032f8"><code>a372814</code></a>
Configure &quot;trusted publishing&quot; in Github workflow</li>
<li><a
href="https://github.com/Delgan/loguru/commit/633016db07e5dff63bc05dd3c4d5aa81b6190700"><code>633016d</code></a>
Use tox to define the &quot;release&quot; command</li>
<li><a
href="https://github.com/Delgan/loguru/commit/ef12cbbaf54fb2e64ca66b0a90675cdf9e8a522f"><code>ef12cbb</code></a>
Convert README from RST to MD (fix PyPI packaging)</li>
<li><a
href="https://github.com/Delgan/loguru/commit/cb3314a5af107ad175a9bafa11b1b79670e3067a"><code>cb3314a</code></a>
Add Github action to verify packaging</li>
<li><a
href="https://github.com/Delgan/loguru/commit/6161a13b79e1a3a29e922926b44f26edbcc3c06a"><code>6161a13</code></a>
Complete the &quot;Troubleshooting&quot; docs with more examples</li>
<li><a
href="https://github.com/Delgan/loguru/commit/7f5001fe46393627ced287bba2c4064442c3fd25"><code>7f5001f</code></a>
Simplify the example of dynamic handler level</li>
<li><a
href="https://github.com/Delgan/loguru/commit/2e0cd7bb5105461057c56aefb225da569882ad29"><code>2e0cd7b</code></a>
Move &quot;Introduction to logging&quot; docs to a new section</li>
<li><a
href="https://github.com/Delgan/loguru/commit/72b93d1a24d1491ce7ba752fe36c14f9570a5d63"><code>72b93d1</code></a>
Correct outdated instructions for reporting a vulnerability</li>
<li>Additional commits viewable in <a
href="https://github.com/Delgan/loguru/compare/0.7.2...0.7.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=loguru&package-manager=pip&previous-version=0.7.2&new-version=0.7.3)](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>
github-actions bot pushed a commit to afonasev/deta_todo_service that referenced this pull request Jan 1, 2025
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [loguru](https://github.com/Delgan/loguru) from 0.6.0 to 0.7.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Delgan/loguru/releases">loguru's
releases</a>.</em></p>
<blockquote>
<h2>0.7.3</h2>
<ul>
<li>Fix Cython incompatibility caused by the absence of underlying stack
frames, which resulted in a <code>ValueError</code> during logging (<a
href="https://redirect.github.com/Delgan/loguru/issues/88">#88</a>).</li>
<li>Fix possible <code>RuntimeError</code> when removing all handlers
with <code>logger.remove()</code> due to thread-safety issue (<a
href="https://redirect.github.com/Delgan/loguru/issues/1183">#1183</a>,
thanks <a
href="https://github.com/jeremyk"><code>@​jeremyk</code></a>).</li>
<li>Fix <code>diagnose=True</code> option of exception formatting not
working as expected with Python 3.13 (<a
href="https://redirect.github.com/Delgan/loguru/issues/1235">#1235</a>,
thanks <a
href="https://github.com/etianen"><code>@​etianen</code></a>).</li>
<li>Fix non-standard level names not fully compatible with
<code>logging.Formatter()</code> (<a
href="https://redirect.github.com/Delgan/loguru/issues/1231">#1231</a>,
thanks <a
href="https://github.com/yechielb2000"><code>@​yechielb2000</code></a>).</li>
<li>Fix inability to display a literal <code>&quot;\&quot;</code>
immediately before color markups (<a
href="https://redirect.github.com/Delgan/loguru/issues/988">#988</a>).</li>
<li>Fix possible infinite recursion when an exception is raised from a
<code>__repr__</code> method decorated with <code>logger.catch()</code>
(<a
href="https://redirect.github.com/Delgan/loguru/issues/1044">#1044</a>).</li>
<li>Improve performance of <code>datetime</code> formatting while
logging messages (<a
href="https://redirect.github.com/Delgan/loguru/issues/1201">#1201</a>,
thanks <a
href="https://github.com/trim21"><code>@​trim21</code></a>).</li>
<li>Reduce startup time in the presence of installed but unused
<code>IPython</code> third-party library (<a
href="https://redirect.github.com/Delgan/loguru/issues/1001">#1001</a>,
thanks <a
href="https://github.com/zakstucke"><code>@​zakstucke</code></a>).</li>
</ul>
<h2>0.7.2</h2>
<ul>
<li>Add support for formatting of <code>ExceptionGroup</code> errors (<a
href="https://redirect.github.com/Delgan/loguru/issues/805">#805</a>).</li>
<li>Fix possible <code>RuntimeError</code> when using
<code>multiprocessing.set_start_method()</code> after importing the
<code>logger</code> (<a
href="https://redirect.github.com/Delgan/loguru/issues/974">#974</a>).</li>
<li>Fix formatting of possible <code>__notes__</code> attached to an
<code>Exception</code> (<a
href="https://redirect.github.com/Delgan/loguru/issues/980">#980</a>).</li>
</ul>
<h2>0.7.1</h2>
<ul>
<li>Add a new <code>context</code> optional argument to
<code>logger.add()</code> specifying <code>multiprocessing</code>
context (like <code>&quot;spawn&quot;</code> or
<code>&quot;fork&quot;</code>) to be used internally instead of the
default one (<a
href="https://redirect.github.com/Delgan/loguru/issues/851">#851</a>).</li>
<li>Add support for true colors on Windows using ANSI/VT console when
available (<a
href="https://redirect.github.com/Delgan/loguru/issues/934">#934</a>,
thanks <a
href="https://github.com/tunaflsh"><code>@​tunaflsh</code></a>).</li>
<li>Fix possible deadlock when calling <code>logger.complete()</code>
with concurrent logging of an asynchronous sink (<a
href="https://redirect.github.com/Delgan/loguru/issues/906">#906</a>).</li>
<li>Fix file possibly rotating too early or too late when re-starting an
application around midnight (<a
href="https://redirect.github.com/Delgan/loguru/issues/894">#894</a>).</li>
<li>Fix inverted <code>&quot;&lt;hide&gt;&quot;</code> and
<code>&quot;&lt;strike&gt;&quot;</code> color tags (<a
href="https://redirect.github.com/Delgan/loguru/issues/943">#943</a>,
thanks <a
href="https://github.com/tunaflsh"><code>@​tunaflsh</code></a>).</li>
<li>Fix possible untraceable errors raised when logging non-unpicklable
<code>Exception</code> instances while using <code>enqueue=True</code>
(<a
href="https://redirect.github.com/Delgan/loguru/issues/329">#329</a>).</li>
<li>Fix possible errors raised when logging non-picklable
<code>Exception</code> instances while using <code>enqueue=True</code>
(<a
href="https://redirect.github.com/Delgan/loguru/issues/342">#342</a>,
thanks <a
href="https://github.com/ncoudene"><code>@​ncoudene</code></a>).</li>
<li>Fix missing seconds and microseconds when formatting timezone offset
that requires such accuracy (<a
href="https://redirect.github.com/Delgan/loguru/issues/961">#961</a>).</li>
<li>Raise <code>ValueError</code> if an attempt to use nanosecond
precision for time formatting is detected (<a
href="https://redirect.github.com/Delgan/loguru/issues/855">#855</a>).</li>
</ul>
<h2>0.7.0</h2>
<ul>
<li>Update <code>InterceptHandler</code> recipe to make it compatible
with Python 3.11 (<a
href="https://redirect.github.com/Delgan/loguru/issues/654">#654</a>).</li>
<li>Add a new <code>watch</code> optional argument to file sinks in
order to automatically re-create possibly deleted or changed file (<a
href="https://redirect.github.com/Delgan/loguru/issues/471">#471</a>).</li>
<li>Make <code>patch()</code> calls cumulative instead of overriding the
possibly existing patching function (<a
href="https://redirect.github.com/Delgan/loguru/issues/462">#462</a>).</li>
<li>Make sinks added with <code>enqueue=True</code> and
<code>catch=False</code> still process logged messages in case of
internal exception (<a
href="https://redirect.github.com/Delgan/loguru/issues/833">#833</a>).</li>
<li>Avoid possible deadlocks caused by re-using the logger inside a
sink, a signal handler or a <code>__del__</code> method. Since the
logger is not re-entrant, such misuse will be detected and will now
generate a <code>RuntimeError</code> (<a
href="https://redirect.github.com/Delgan/loguru/issues/712">#712</a>,
thanks <a
href="https://github.com/jacksmith15"><code>@​jacksmith15</code></a>).</li>
<li>Fix file sink rotation using an aware <code>datetime.time</code> for
which the timezone was ignored (<a
href="https://redirect.github.com/Delgan/loguru/issues/697">#697</a>).</li>
<li>Fix logs colorization not automatically enabled for Jupyter Notebook
and Google Colab (<a
href="https://redirect.github.com/Delgan/loguru/issues/494">#494</a>).</li>
<li>Fix logs colorization not automatically enabled for Github Actions
and others CI platforms (<a
href="https://redirect.github.com/Delgan/loguru/issues/604">#604</a>).</li>
<li>Fix <code>logger.complete()</code> possibly hanging forever when
<code>enqueue=True</code> and <code>catch=False</code> if internal
thread killed due to <code>Exception</code> raised by sink (<a
href="https://redirect.github.com/Delgan/loguru/issues/647">#647</a>).</li>
<li>Fix incompatibility with <code>freezegun</code> library used to
simulate time (<a
href="https://redirect.github.com/Delgan/loguru/issues/600">#600</a>).</li>
<li>Raise exception if <code>logger.catch()</code> is used to wrap a
class instead of a function to avoid unexpected behavior (<a
href="https://redirect.github.com/Delgan/loguru/issues/623">#623</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Delgan/loguru/blob/master/CHANGELOG.rst">loguru's
changelog</a>.</em></p>
<blockquote>
<h1><code>0.7.3</code>_ (2024-12-06)</h1>
<ul>
<li>Fix Cython incompatibility caused by the absence of underlying stack
frames, which resulted in a <code>ValueError</code> during logging
(<code>[#88](Delgan/loguru#88)
&lt;https://github.com/Delgan/loguru/issues/88&gt;</code>_).</li>
<li>Fix possible <code>RuntimeError</code> when removing all handlers
with <code>logger.remove()</code> due to thread-safety issue
(<code>[#1183](Delgan/loguru#1183)
&lt;https://github.com/Delgan/loguru/issues/1183&gt;</code><em>, thanks
<code>@jeremyk &lt;https://github.com/jeremyk&gt;</code></em>).</li>
<li>Fix <code>diagnose=True</code> option of exception formatting not
working as expected with Python 3.13
(<code>[#1235](Delgan/loguru#1235)
&lt;https://github.com/Delgan/loguru/issues/1235&gt;</code><em>, thanks
<code>@etianen &lt;https://github.com/etianen&gt;</code></em>).</li>
<li>Fix non-standard level names not fully compatible with
<code>logging.Formatter()</code>
(<code>[#1231](Delgan/loguru#1231)
&lt;https://github.com/Delgan/loguru/issues/1231&gt;</code><em>, thanks
<code>@yechielb2000
&lt;https://github.com/yechielb2000&gt;</code></em>).</li>
<li>Fix inability to display a literal <code>&quot;\&quot;</code>
immediately before color markups
(<code>[#988](Delgan/loguru#988)
&lt;https://github.com/Delgan/loguru/issues/988&gt;</code>_).</li>
<li>Fix possible infinite recursion when an exception is raised from a
<code>__repr__</code> method decorated with <code>logger.catch()</code>
(<code>[#1044](Delgan/loguru#1044)
&lt;https://github.com/Delgan/loguru/issues/1044&gt;</code>_).</li>
<li>Improve performance of <code>datetime</code> formatting while
logging messages
(<code>[#1201](Delgan/loguru#1201)
&lt;https://github.com/Delgan/loguru/issues/1201&gt;</code><em>, thanks
<code>@trim21 &lt;https://github.com/trim21&gt;</code></em>).</li>
<li>Reduce startup time in the presence of installed but unused
<code>IPython</code> third-party library
(<code>[#1001](Delgan/loguru#1001)
&lt;https://github.com/Delgan/loguru/issues/1001&gt;</code><em>, thanks
<code>@zakstucke &lt;https://github.com/zakstucke&gt;</code></em>).</li>
</ul>
<h1><code>0.7.2</code>_ (2023-09-11)</h1>
<ul>
<li>Add support for formatting of <code>ExceptionGroup</code> errors
(<code>[#805](Delgan/loguru#805)
&lt;https://github.com/Delgan/loguru/issues/805&gt;</code>_).</li>
<li>Fix possible <code>RuntimeError</code> when using
<code>multiprocessing.set_start_method()</code> after importing the
<code>logger</code>
(<code>[#974](Delgan/loguru#974)
&lt;https://github.com/Delgan/loguru/issues/974&gt;</code>_).</li>
<li>Fix formatting of possible <code>__notes__</code> attached to an
<code>Exception</code>
(<code>[#980](Delgan/loguru#980)
&lt;https://github.com/Delgan/loguru/issues/980&gt;</code>_).</li>
</ul>
<h1><code>0.7.1</code>_ (2023-09-04)</h1>
<ul>
<li>Add a new <code>context</code> optional argument to
<code>logger.add()</code> specifying <code>multiprocessing</code>
context (like <code>&quot;spawn&quot;</code> or
<code>&quot;fork&quot;</code>) to be used internally instead of the
default one (<code>[#851](Delgan/loguru#851)
&lt;https://github.com/Delgan/loguru/issues/851&gt;</code>_).</li>
<li>Add support for true colors on Windows using ANSI/VT console when
available (<code>[#934](Delgan/loguru#934)
&lt;https://github.com/Delgan/loguru/issues/934&gt;</code><em>, thanks
<code>@tunaflsh &lt;https://github.com/tunaflsh&gt;</code></em>).</li>
<li>Fix possible deadlock when calling <code>logger.complete()</code>
with concurrent logging of an asynchronous sink
(<code>[#906](Delgan/loguru#906)
&lt;https://github.com/Delgan/loguru/issues/906&gt;</code>_).</li>
<li>Fix file possibly rotating too early or too late when re-starting an
application around midnight
(<code>[#894](Delgan/loguru#894)
&lt;https://github.com/Delgan/loguru/issues/894&gt;</code>_).</li>
<li>Fix inverted <code>&quot;&lt;hide&gt;&quot;</code> and
<code>&quot;&lt;strike&gt;&quot;</code> color tags
(<code>[#943](Delgan/loguru#943)
&lt;https://github.com/Delgan/loguru/pull/943&gt;</code><em>, thanks
<code>@tunaflsh &lt;https://github.com/tunaflsh&gt;</code></em>).</li>
<li>Fix possible untraceable errors raised when logging non-unpicklable
<code>Exception</code> instances while using <code>enqueue=True</code>
(<code>[#329](Delgan/loguru#329)
&lt;https://github.com/Delgan/loguru/issues/329&gt;</code>_).</li>
<li>Fix possible errors raised when logging non-picklable
<code>Exception</code> instances while using <code>enqueue=True</code>
(<code>[#342](Delgan/loguru#342)
&lt;https://github.com/Delgan/loguru/issues/342&gt;</code><em>, thanks
<code>@ncoudene &lt;https://github.com/ncoudene&gt;</code></em>).</li>
<li>Fix missing seconds and microseconds when formatting timezone offset
that requires such accuracy
(<code>[#961](Delgan/loguru#961)
&lt;https://github.com/Delgan/loguru/issues/961&gt;</code>_).</li>
<li>Raise <code>ValueError</code> if an attempt to use nanosecond
precision for time formatting is detected
(<code>[#855](Delgan/loguru#855)
&lt;https://github.com/Delgan/loguru/issues/855&gt;</code>_).</li>
</ul>
<h1><code>0.7.0</code>_ (2023-04-10)</h1>
<ul>
<li>Update <code>InterceptHandler</code> recipe to make it compatible
with Python 3.11
(<code>[#654](Delgan/loguru#654)
&lt;https://github.com/Delgan/loguru/issues/654&gt;</code>_).</li>
<li>Add a new <code>watch</code> optional argument to file sinks in
order to automatically re-create possibly deleted or changed file
(<code>[#471](Delgan/loguru#471)
&lt;https://github.com/Delgan/loguru/issues/471&gt;</code>_).</li>
<li>Make <code>patch()</code> calls cumulative instead of overriding the
possibly existing patching function
(<code>[#462](Delgan/loguru#462)
&lt;https://github.com/Delgan/loguru/issues/462&gt;</code>_).</li>
<li>Make sinks added with <code>enqueue=True</code> and
<code>catch=False</code> still process logged messages in case of
internal exception
(<code>[#833](Delgan/loguru#833)
&lt;https://github.com/Delgan/loguru/issues/833&gt;</code>_).</li>
<li>Avoid possible deadlocks caused by re-using the logger inside a
sink, a signal handler or a <code>__del__</code> method. Since the
logger is not re-entrant, such misuse will be detected and will now
generate a <code>RuntimeError</code>
(<code>[#712](Delgan/loguru#712)
&lt;https://github.com/Delgan/loguru/issues/712&gt;</code><em>, thanks
<code>@jacksmith15
&lt;https://github.com/jacksmith15&gt;</code></em>).</li>
<li>Fix file sink rotation using an aware <code>datetime.time</code> for
which the timezone was ignored
(<code>[#697](Delgan/loguru#697)
&lt;https://github.com/Delgan/loguru/issues/697&gt;</code>_).</li>
<li>Fix logs colorization not automatically enabled for Jupyter Notebook
and Google Colab
(<code>[#494](Delgan/loguru#494)
&lt;https://github.com/Delgan/loguru/issues/494&gt;</code>_).</li>
<li>Fix logs colorization not automatically enabled for Github Actions
and others CI platforms
(<code>[#604](Delgan/loguru#604)
&lt;https://github.com/Delgan/loguru/issues/604&gt;</code>_).</li>
<li>Fix <code>logger.complete()</code> possibly hanging forever when
<code>enqueue=True</code> and <code>catch=False</code> if internal
thread killed due to <code>Exception</code> raised by sink
(<code>[#647](Delgan/loguru#647)
&lt;https://github.com/Delgan/loguru/issues/647&gt;</code>_).</li>
<li>Fix incompatibility with <code>freezegun</code> library used to
simulate time (<code>[#600](Delgan/loguru#600)
&lt;https://github.com/Delgan/loguru/issues/600&gt;</code>_).</li>
<li>Raise exception if <code>logger.catch()</code> is used to wrap a
class instead of a function to avoid unexpected behavior
(<code>[#623](Delgan/loguru#623)
&lt;https://github.com/Delgan/loguru/issues/623&gt;</code>_).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Delgan/loguru/commit/ae3bfd1b85b6b4a3db535f69b975687c79498be4"><code>ae3bfd1</code></a>
Bump version to 0.7.3</li>
<li><a
href="https://github.com/Delgan/loguru/commit/ccca3566cc00c22eed8659705e45386fa2101b5d"><code>ccca356</code></a>
Replace &quot;notifiers&quot; (seems unmaintained) with
&quot;apprise&quot; in docs (<a
href="https://redirect.github.com/Delgan/loguru/issues/1251">#1251</a>)</li>
<li><a
href="https://github.com/Delgan/loguru/commit/a372814bf79d47628e66ca9a91072f53fba032f8"><code>a372814</code></a>
Configure &quot;trusted publishing&quot; in Github workflow</li>
<li><a
href="https://github.com/Delgan/loguru/commit/633016db07e5dff63bc05dd3c4d5aa81b6190700"><code>633016d</code></a>
Use tox to define the &quot;release&quot; command</li>
<li><a
href="https://github.com/Delgan/loguru/commit/ef12cbbaf54fb2e64ca66b0a90675cdf9e8a522f"><code>ef12cbb</code></a>
Convert README from RST to MD (fix PyPI packaging)</li>
<li><a
href="https://github.com/Delgan/loguru/commit/cb3314a5af107ad175a9bafa11b1b79670e3067a"><code>cb3314a</code></a>
Add Github action to verify packaging</li>
<li><a
href="https://github.com/Delgan/loguru/commit/6161a13b79e1a3a29e922926b44f26edbcc3c06a"><code>6161a13</code></a>
Complete the &quot;Troubleshooting&quot; docs with more examples</li>
<li><a
href="https://github.com/Delgan/loguru/commit/7f5001fe46393627ced287bba2c4064442c3fd25"><code>7f5001f</code></a>
Simplify the example of dynamic handler level</li>
<li><a
href="https://github.com/Delgan/loguru/commit/2e0cd7bb5105461057c56aefb225da569882ad29"><code>2e0cd7b</code></a>
Move &quot;Introduction to logging&quot; docs to a new section</li>
<li><a
href="https://github.com/Delgan/loguru/commit/72b93d1a24d1491ce7ba752fe36c14f9570a5d63"><code>72b93d1</code></a>
Correct outdated instructions for reporting a vulnerability</li>
<li>Additional commits viewable in <a
href="https://github.com/Delgan/loguru/compare/0.6.0...0.7.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=loguru&package-manager=pip&previous-version=0.6.0&new-version=0.7.3)](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>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants