openSUSE Commits
Threads by month
- ----- 2024 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
July 2024
- 1 participants
- 1521 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-authheaders for openSUSE:Factory checked in at 2024-07-01 11:21:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-authheaders (Old)
and /work/SRC/openSUSE:Factory/.python-authheaders.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-authheaders"
Mon Jul 1 11:21:57 2024 rev:12 rq:1184160 version:0.16.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-authheaders/python-authheaders.changes 2024-01-30 18:26:51.081051005 +0100
+++ /work/SRC/openSUSE:Factory/.python-authheaders.new.18349/python-authheaders.changes 2024-07-01 11:22:46.056292507 +0200
@@ -1,0 +2,8 @@
+Sun Jun 30 21:41:05 UTC 2024 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 0.16.3:
+ * Update expected test results to also be compatible with
+ dkimpy >= 1.1.7
+ * Update PSL from upstream
+
+-------------------------------------------------------------------
Old:
----
authheaders-0.16.2.tar.gz
New:
----
authheaders-0.16.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-authheaders.spec ++++++
--- /var/tmp/diff_new_pack.G5jHpK/_old 2024-07-01 11:22:46.676314946 +0200
+++ /var/tmp/diff_new_pack.G5jHpK/_new 2024-07-01 11:22:46.680315091 +0200
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-authheaders
-Version: 0.16.2
+Version: 0.16.3
Release: 0
Summary: A library wrapping email authentication header verification and generation
License: MIT
++++++ authheaders-0.16.2.tar.gz -> authheaders-0.16.3.tar.gz ++++++
++++ 2869 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-apsw for openSUSE:Factory checked in at 2024-07-01 11:21:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-apsw (Old)
and /work/SRC/openSUSE:Factory/.python-apsw.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-apsw"
Mon Jul 1 11:21:57 2024 rev:26 rq:1184155 version:3.46.0.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-apsw/python-apsw.changes 2024-06-06 12:35:09.590030642 +0200
+++ /work/SRC/openSUSE:Factory/.python-apsw.new.18349/python-apsw.changes 2024-07-01 11:22:45.308265434 +0200
@@ -1,0 +2,18 @@
+Sun Jun 30 21:32:30 UTC 2024 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 3.46.0.1:
+ * :func:`apsw.ext.query_info` provides the count and names of
+ bindings parameters. (:issue:`528`)
+ * Address how errors are handled in VFS xRandomness routine,
+ that is only called once by SQLite to seed its random number
+ generator. (:issue:`526`)
+ * Added :meth:`Connection.vfsname` and updated corresponding
+ shell command to get the diagnostic names of the vfs stack
+ for the connection. (:issue:`525`)
+ * Do not cache :meth:`Connection.pragma` statements to avoid
+ encryption keys, or pragmas that run during prepare from
+ being retained. (:issue:`522`)
+ * :meth:`Connection.pragma` adds keyword schema argument to run
+ pragma against attached databases. (:issue:`524`)
+
+-------------------------------------------------------------------
Old:
----
apsw-3.46.0.0.tar.gz
New:
----
apsw-3.46.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-apsw.spec ++++++
--- /var/tmp/diff_new_pack.RSXsUz/_old 2024-07-01 11:22:45.776282373 +0200
+++ /var/tmp/diff_new_pack.RSXsUz/_new 2024-07-01 11:22:45.780282517 +0200
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-apsw
-Version: 3.46.0.0
+Version: 3.46.0.1
Release: 0
Summary: Another Python SQLite Wrapper
License: Zlib
++++++ apsw-3.46.0.0.tar.gz -> apsw-3.46.0.1.tar.gz ++++++
++++ 1700 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package trufflehog for openSUSE:Factory checked in at 2024-07-01 11:21:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/trufflehog (Old)
and /work/SRC/openSUSE:Factory/.trufflehog.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "trufflehog"
Mon Jul 1 11:21:54 2024 rev:40 rq:1184157 version:3.79.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/trufflehog/trufflehog.changes 2024-06-25 23:10:04.135973639 +0200
+++ /work/SRC/openSUSE:Factory/.trufflehog.new.18349/trufflehog.changes 2024-07-01 11:22:43.796210710 +0200
@@ -1,0 +2,7 @@
+Thu Jun 27 06:31:25 UTC 2024 - felix.niederwanger(a)suse.de
+
+- Update to version 3.79.0:
+ * Add endorlabs detector (#3015)
+ * added "example" (#3010)
+
+-------------------------------------------------------------------
Old:
----
trufflehog-3.78.2.obscpio
New:
----
trufflehog-3.79.0.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ trufflehog.spec ++++++
--- /var/tmp/diff_new_pack.MWzXCY/_old 2024-07-01 11:22:44.784246469 +0200
+++ /var/tmp/diff_new_pack.MWzXCY/_new 2024-07-01 11:22:44.784246469 +0200
@@ -17,7 +17,7 @@
Name: trufflehog
-Version: 3.78.2
+Version: 3.79.0
Release: 0
Summary: CLI tool to find exposed secrets in source and archives
License: AGPL-3.0-or-later
++++++ _service ++++++
--- /var/tmp/diff_new_pack.MWzXCY/_old 2024-07-01 11:22:44.820247771 +0200
+++ /var/tmp/diff_new_pack.MWzXCY/_new 2024-07-01 11:22:44.824247916 +0200
@@ -3,7 +3,7 @@
<param name="url">https://github.com/trufflesecurity/trufflehog.git</param>
<param name="scm">git</param>
<param name="revision">main</param>
- <param name="version">v3.78.2</param>
+ <param name="version">v3.79.0</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="changesgenerate">enable</param>
</service>
++++++ trufflehog-3.78.2.obscpio -> trufflehog-3.79.0.obscpio ++++++
/work/SRC/openSUSE:Factory/trufflehog/trufflehog-3.78.2.obscpio /work/SRC/openSUSE:Factory/.trufflehog.new.18349/trufflehog-3.79.0.obscpio differ: char 50, line 1
++++++ trufflehog.obsinfo ++++++
--- /var/tmp/diff_new_pack.MWzXCY/_old 2024-07-01 11:22:44.868249509 +0200
+++ /var/tmp/diff_new_pack.MWzXCY/_new 2024-07-01 11:22:44.872249653 +0200
@@ -1,5 +1,5 @@
name: trufflehog
-version: 3.78.2
-mtime: 1719253183
-commit: f210767394df1e3001dc9c91f3460f6640be9e03
+version: 3.79.0
+mtime: 1719462499
+commit: e9206c66bb03bd56b095fcc27640fe80491fe8af
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/trufflehog/vendor.tar.gz /work/SRC/openSUSE:Factory/.trufflehog.new.18349/vendor.tar.gz differ: char 5, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package papirus-folders for openSUSE:Factory checked in at 2024-07-01 11:21:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/papirus-folders (Old)
and /work/SRC/openSUSE:Factory/.papirus-folders.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "papirus-folders"
Mon Jul 1 11:21:52 2024 rev:6 rq:1184163 version:1.13.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/papirus-folders/papirus-folders.changes 2023-02-16 16:55:57.054724372 +0100
+++ /work/SRC/openSUSE:Factory/.papirus-folders.new.18349/papirus-folders.changes 2024-07-01 11:22:42.888177846 +0200
@@ -1,0 +2,6 @@
+Tue Jan 23 11:20:58 UTC 2024 - Andrea Manzini <andrea.manzini(a)suse.com>
+
+- update to 1.13.1:
+ * Fixed a potential issue with the color auto-detect feature
+
+-------------------------------------------------------------------
Old:
----
papirus-folders-1.12.1.tar.gz
New:
----
papirus-folders-1.13.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ papirus-folders.spec ++++++
--- /var/tmp/diff_new_pack.LjJyIX/_old 2024-07-01 11:22:43.284192178 +0200
+++ /var/tmp/diff_new_pack.LjJyIX/_new 2024-07-01 11:22:43.288192323 +0200
@@ -1,7 +1,7 @@
#
# spec file for package papirus-folders
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: papirus-folders
-Version: 1.12.1
+Version: 1.13.1
Release: 0
Summary: Change folders color of Papirus icon theme
License: MIT
++++++ papirus-folders-1.12.1.tar.gz -> papirus-folders-1.13.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/papirus-folders-1.12.1/README.md new/papirus-folders-1.13.1/README.md
--- old/papirus-folders-1.12.1/README.md 2023-02-06 13:43:01.000000000 +0100
+++ new/papirus-folders-1.13.1/README.md 2023-11-06 18:34:28.000000000 +0100
@@ -1,6 +1,6 @@
# Papirus Folders
-papirus-folders is a bash script that allows changing the color of folders in [Papirus icon theme](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme) and its forks (which based on version 20171007 and newer).
+papirus-folders is a handy bash script that lets you change the colors of folders in the [Papirus icon theme](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme) and similar themes based on version 20171007 or newer. It's an easy way to customize how your folders look.
## Table of contents
@@ -11,25 +11,28 @@
- [Third-party packages](#third-party-packages)
- [Script usage](#script-usage)
- [Related projects](#related-projects)
+- [Donate](#donate)
## Preview
| Name | Preview | Name | Preview |
|:-----|:-------:|:-----|:-------:|
-| **adwaita** | ![folder-adwaita](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-adwaita.svg) ![user-adwaita-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-adwaita-home.svg) ![folder-adwaita-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-adwaita-download.svg) | **black** | ![folder-black](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-black.svg) ![user-black-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-black-home.svg) ![folder-black-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-black-download.svg) | **blue** | ![folder-blue](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48
x48/places/folder-blue.svg) ![user-blue-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-blue-home.svg) ![folder-blue-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-blue-download.svg) |
-| **bluegrey** | ![folder-bluegrey](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-bluegrey.svg) ![user-bluegrey-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-bluegrey-home.svg) ![folder-bluegrey-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-bluegrey-download.svg) | **breeze** | ![folder-breeze](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-breeze.svg) ![user-breeze-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-breeze-home.svg) ![folder-breeze-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-breeze-download.svg) |
-| **brown** | ![folder-brown](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-brown.svg) ![user-brown-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-brown-home.svg) ![folder-brown-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-brown-download.svg) | **carmine** | ![folder-carmine](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-carmine.svg) ![user-carmine-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-carmine-home.svg) ![folder-carmine-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-carmine-download.svg) |
-| **cyan** | ![folder-cyan](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-cyan.svg) ![user-cyan-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-cyan-home.svg) ![folder-cyan-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-cyan-download.svg) | **darkcyan** | ![folder-darkcyan](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-darkcyan.svg) ![user-darkcyan-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-darkcyan-home.svg) ![folder-darkcyan-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-darkcyan-download.svg) |
-| **deeporange** | ![folder-deeporange](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-deeporange.svg) ![user-deeporange-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-deeporange-home.svg) ![folder-deeporange-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-deeporange-download.svg) | **green** | ![folder-green](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-green.svg) ![user-green-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-green-home.svg) ![folder-green-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-green-download.svg) |
-| **grey** | ![folder-grey](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-grey.svg) ![user-grey-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-grey-home.svg) ![folder-grey-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-grey-download.svg) | **indigo** | ![folder-indigo](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-indigo.svg) ![user-indigo-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-indigo-home.svg) ![folder-indigo-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-indigo-download.svg) |
-| **magenta** | ![folder-magenta](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-magenta.svg) ![user-magenta-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-magenta-home.svg) ![folder-magenta-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-magenta-download.svg) | **nordic** | ![folder-nordic](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-nordic.svg) ![user-nordic-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-nordic-home.svg) ![folder-nordic-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-nordic-download.svg) |
-| **orange** | ![folder-orange](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-orange.svg) ![user-orange-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-orange-home.svg) ![folder-orange-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-orange-download.svg) | **palebrown** | ![folder-palebrown](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-palebrown.svg) ![user-palebrown-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-palebrown-home.svg) ![folder-palebrown-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-palebrown-download.svg) |
-| **paleorange** | ![folder-paleorange](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-paleorange.svg) ![user-paleorange-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-paleorange-home.svg) ![folder-paleorange-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-paleorange-download.svg) | **pink** | ![folder-pink](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-pink.svg) ![user-pink-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-pink-home.svg) ![folder-pink-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-pink-download.svg) |
-| **red** | ![folder-red](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-red.svg) ![user-red-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-red-home.svg) ![folder-red-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-red-download.svg) | **teal** | ![folder-teal](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-teal.svg) ![user-teal-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-teal-home.svg) ![folder-teal-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-teal-download.svg) |
-| **violet** | ![folder-violet](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-violet.svg) ![user-violet-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-violet-home.svg) ![folder-violet-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-violet-download.svg) | **white** | ![folder-white](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-white.svg) ![user-white-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-white-home.svg) ![folder-white-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-white-download.svg) |
-| **yaru** | ![folder-yaru](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-yaru.svg) ![user-yaru-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-yaru-home.svg) ![folder-yaru-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-yaru-download.svg) | **yellow** | ![folder-yellow](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-yellow.svg) ![user-yellow-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-yellow-home.svg) ![folder-yellow-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-yellow-download.svg) |
+| **adwaita** | ![folder-adwaita](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-adwaita.svg) ![user-adwaita-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-adwaita-home.svg) ![folder-adwaita-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-adwaita-download.svg) | **black** | ![folder-black](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-black.svg) ![user-black-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-black-home.svg) ![folder-black-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-black-download.svg) |
+| **blue** | ![folder-blue](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-blue.svg) ![user-blue-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-blue-home.svg) ![folder-blue-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-blue-download.svg) | **bluegrey** | ![folder-bluegrey](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-bluegrey.svg) ![user-bluegrey-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-bluegrey-home.svg) ![folder-bluegrey-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-bluegrey-download.svg) |
+| **breeze** | ![folder-breeze](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-breeze.svg) ![user-breeze-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-breeze-home.svg) ![folder-breeze-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-breeze-download.svg) | **brown** | ![folder-brown](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-brown.svg) ![user-brown-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-brown-home.svg) ![folder-brown-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-brown-download.svg) |
+| **carmine** | ![folder-carmine](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-carmine.svg) ![user-carmine-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-carmine-home.svg) ![folder-carmine-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-carmine-download.svg) | **cyan** | ![folder-cyan](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-cyan.svg) ![user-cyan-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-cyan-home.svg) ![folder-cyan-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-cyan-download.svg) |
+| **darkcyan** | ![folder-darkcyan](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-darkcyan.svg) ![user-darkcyan-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-darkcyan-home.svg) ![folder-darkcyan-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-darkcyan-download.svg) | **deeporange** | ![folder-deeporange](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-deeporange.svg) ![user-deeporange-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-deeporange-home.svg) ![folder-deeporange-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-deeporange-download.svg) |
+| **green** | ![folder-green](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-green.svg) ![user-green-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-green-home.svg) ![folder-green-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-green-download.svg) | **grey** | ![folder-grey](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-grey.svg) ![user-grey-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-grey-home.svg) ![folder-grey-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-grey-download.svg) |
+| **indigo** | ![folder-indigo](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-indigo.svg) ![user-indigo-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-indigo-home.svg) ![folder-indigo-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-indigo-download.svg) | **magenta** | ![folder-magenta](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-magenta.svg) ![user-magenta-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-magenta-home.svg) ![folder-magenta-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-magenta-download.svg) |
+| **nordic** | ![folder-nordic](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-nordic.svg) ![user-nordic-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-nordic-home.svg) ![folder-nordic-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-nordic-download.svg) | **orange** | ![folder-orange](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-orange.svg) ![user-orange-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-orange-home.svg) ![folder-orange-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-orange-download.svg) |
+| **palebrown** | ![folder-palebrown](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-palebrown.svg) ![user-palebrown-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-palebrown-home.svg) ![folder-palebrown-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-palebrown-download.svg) | **paleorange** | ![folder-paleorange](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-paleorange.svg) ![user-paleorange-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-paleorange-home.svg) ![folder-paleorange-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-paleorange-download.svg) |
+| **pink** | ![folder-pink](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-pink.svg) ![user-pink-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-pink-home.svg) ![folder-pink-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-pink-download.svg) | **red** | ![folder-red](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-red.svg) ![user-red-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-red-home.svg) ![folder-red-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-red-download.svg) |
+| **teal** | ![folder-teal](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-teal.svg) ![user-teal-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-teal-home.svg) ![folder-teal-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-teal-download.svg) | **violet** | ![folder-violet](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-violet.svg) ![user-violet-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-violet-home.svg) ![folder-violet-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-violet-download.svg) |
+| **white** | ![folder-white](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-white.svg) ![user-white-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-white-home.svg) ![folder-white-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-white-download.svg) | **yaru** | ![folder-yaru](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-yaru.svg) ![user-yaru-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-yaru-home.svg) ![folder-yaru-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-yaru-download.svg) |
+| **yellow** | ![folder-yellow](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-yellow.svg) ![user-yellow-home](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/user-yellow-home.svg) ![folder-yellow-download](https://cdn.jsdelivr.net/gh/PapirusDevelopmentTeam/papirus-icon-theme@master/Papirus/48x48/places/folder-yellow-download.svg) |
-**NOTE:** This project doesn't provide any folder icons. If you want to request a new folder icon or a new color of folder please open an issue [here](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/issues/n….
+> [!IMPORTANT]
+> This project doesn't provide any folder icons. If you want to request a new folder icon or a new color of folder please open an issue [here](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/issues/n….
## Installation
@@ -79,16 +82,18 @@
Please note that some packages in the list may be outdated, open [Repology](https://repology.org/project/papirus-folders/versions) to find out package versions.
-| **Distro** | **Maintainer** | **Package** |
-| :--------- | :------------- | :----------- |
-| Arch Linux | Piotr Górski | [papirus-folders-git](https://aur.archlinux.org/packages/papirus-folders-git) <sup>AUR</sup> |
-| MX Linux | Steven Pusser | `sudo apt-get install papirus-folders` |
-| NetBSD | Nia Alarie | [papirus-folders](http://pkgsrc.se/graphics/papirus-folders) <sup>pkgsrc</sup> |
+| **Distro** | **Maintainer** | **Package** |
+| :--------- | :---------------- | :----------- |
+| Arch Linux | Piotr Górski | [papirus-folders-git](https://aur.archlinux.org/packages/papirus-folders-git) <sup>AUR</sup> |
+| MX Linux | Steven Pusser | `sudo apt-get install papirus-folders` |
+| NetBSD | Nia Alarie | [papirus-folders](http://pkgsrc.se/graphics/papirus-folders) <sup>pkgsrc</sup> |
+| NixOS | Alexandre Acebedo | `nix-env -iA nixos.papirus-folders` |
| openSUSE | andy great | [papirus-folders](https://software.opensuse.org/package/papirus-folders) <sup>OBS [[link](https://build.opensuse.org/package/show/openSUSE:Factory/papirus-fold…)]</sub> |
| Void Linux | Benjamín Albiñana | `sudo xbps-install -S papirus-folders` |
-**NOTE:** If you are a maintainer and want to be in the list, please create an issue or make a pull request.
+> [!NOTE]
+> If you are a maintainer and want to be in the list, please create an issue or make a pull request.
### Script usage
@@ -129,3 +134,11 @@
Graphical application for generating folders icon with to your own colors or with presets for popular themes | [Oomox theme designer](https://github.com/themix-project/oomox)
A context menu for Nautilus, Nemo or Caja File Browser for changing the color of an individual folder | [Folder Color](http://foldercolor.tuxfamily.org)
Dolphin contextual menu for coloring a selected folders | [Dolphin Folder Color](https://github.com/audoban/dolphin-folder-color)
+
+## Donate
+
+If you would like to support development by making one-time donation or by becoming a supporter, please visit our page on [Buy Me a Coffee](https://www.buymeacoffee.com/papirus) and [Liberapay](https://liberapay.com/Papirus).
+
+<a href="https://liberapay.com/Papirus/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
+
+<a href="https://www.buymeacoffee.com/papirus"><img alt="Buy me a coffee" src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=papirus&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff" /></a>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/papirus-folders-1.12.1/debian/changelog new/papirus-folders-1.13.1/debian/changelog
--- old/papirus-folders-1.12.1/debian/changelog 2023-02-06 13:43:01.000000000 +0100
+++ new/papirus-folders-1.13.1/debian/changelog 2023-11-06 18:34:28.000000000 +0100
@@ -1,6 +1,6 @@
-papirus-folders (1.12.1-1) UNRELEASED; urgency=low
+papirus-folders (1.13.1-1) UNRELEASED; urgency=low
- [ Alexey Varfolomeev ]
- * Added Adwaita color
+ [ Sergei Eremenko ]
+ * New release.
- -- Sergei Eremenko <finalitik(a)gmail.com> Mon, 06 Feb 2023 14:43:01 +0200
+ -- Serhii Yeremenko <finalitik(a)gmail.com> Mon, 06 Nov 2023 19:34:28 +0200
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/papirus-folders-1.12.1/debian/compat new/papirus-folders-1.13.1/debian/compat
--- old/papirus-folders-1.12.1/debian/compat 2023-02-06 13:43:01.000000000 +0100
+++ new/papirus-folders-1.13.1/debian/compat 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/papirus-folders-1.12.1/debian/control new/papirus-folders-1.13.1/debian/control
--- old/papirus-folders-1.12.1/debian/control 2023-02-06 13:43:01.000000000 +0100
+++ new/papirus-folders-1.13.1/debian/control 2023-11-06 18:34:28.000000000 +0100
@@ -1,15 +1,20 @@
Source: papirus-folders
Section: universe/x11
Priority: optional
-Maintainer: Sergei Eremenko <finalitik(a)gmail.com>
-Build-Depends: debhelper (>= 9)
-Standards-Version: 4.1.4
+Maintainer: Serhii Yeremenko <finalitik(a)gmail.com>
+Build-Depends: debhelper-compat (= 13)
+Standards-Version: 4.6.2
Homepage: https://github.com/PapirusDevelopmentTeam/papirus-folders
Bugs: https://github.com/PapirusDevelopmentTeam/papirus-folders/issues
+Rules-Requires-Root: no
Package: papirus-folders
Architecture: all
Multi-Arch: foreign
Depends: ${misc:Depends}, bash (>= 4.0)
Recommends: papirus-icon-theme (>= 20171007)
-Description: This package allows you to change the color of folders
+Description: a tool that lets you change the colors of folders
+ Papirus-folders is a handy bash script that lets you change the
+ colors of folders in the Papirus icon theme and its forks based on
+ version 20171007 or newer.
+ It's an easy way to customize how your folders look.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/papirus-folders-1.12.1/debian/copyright new/papirus-folders-1.13.1/debian/copyright
--- old/papirus-folders-1.12.1/debian/copyright 2023-02-06 13:43:01.000000000 +0100
+++ new/papirus-folders-1.13.1/debian/copyright 2023-11-06 18:34:28.000000000 +0100
@@ -3,6 +3,6 @@
Source: https://github.com/PapirusDevelopmentTeam/papirus-folders
Files: *
-Copyright: 2017 Sergei Eremenko <finalitik(a)gmail.com>
+Copyright: 2017-2023 Serhii Yeremenko <finalitik(a)gmail.com>
License: MIT
See /usr/share/doc/papirus-folders/LICENSE for a full copy of the license.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/papirus-folders-1.12.1/papirus-folders new/papirus-folders-1.13.1/papirus-folders
--- old/papirus-folders-1.12.1/papirus-folders 2023-02-06 13:43:01.000000000 +0100
+++ new/papirus-folders-1.13.1/papirus-folders 2023-11-06 18:34:28.000000000 +0100
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
-# This script allows changing the color of folders in Papirus icon theme
+# This script lets you change the colors of folders in the Papirus icon theme
#
# @author: Sergei Eremenko (https://github.com/SmartFinn)
# @license: MIT license (MIT)
@@ -22,7 +22,7 @@
readonly THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
readonly PROGNAME="$(basename "${BASH_SOURCE[0]}")"
-readonly VERSION="1.12.1"
+readonly VERSION="1.13.1"
readonly -a ARGS=("$@")
msg() {
@@ -114,16 +114,14 @@
}
declare_colors() {
- local color=''
local -a colors=()
- local -a valid_colors=("adwaita" "black" "blue" "bluegrey" "breeze" "brown"
- "carmine" "cyan" "darkcyan" "deeporange" "green" "grey"
- "indigo" "magenta" "nordic" "orange" "palebrown" "paleorange"
- "pink" "purple" "red" "teal" "violet" "white" "yaru" "yellow")
-
- for color in "${valid_colors[@]}"; do
- if [ -e "$THEME_DIR/48x48/places/folder-$color.svg" ]; then
- colors=( "${colors[@]}" "$color" )
+
+ for f in "$THEME_DIR/48x48/places/folder-"*"-documents.svg"; do
+ [ -e "$f" ] || continue
+
+ # Extract color from the path
+ if [[ $f =~ .*/folder-(.+)-documents.svg ]]; then
+ colors=( "${colors[@]}" "${BASH_REMATCH[1]}" )
fi
done
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-astropy-iers-data for openSUSE:Factory checked in at 2024-07-01 11:21:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-astropy-iers-data (Old)
and /work/SRC/openSUSE:Factory/.python-astropy-iers-data.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-astropy-iers-data"
Mon Jul 1 11:21:50 2024 rev:7 rq:1184147 version:0.2024.6.24.0.31.11
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-astropy-iers-data/python-astropy-iers-data.changes 2024-06-07 15:03:22.147777916 +0200
+++ /work/SRC/openSUSE:Factory/.python-astropy-iers-data.new.18349/python-astropy-iers-data.changes 2024-07-01 11:22:41.668133690 +0200
@@ -1,0 +2,6 @@
+Sun Jun 30 20:52:51 UTC 2024 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 0.2024.06.24.00.31.11:
+ * Update IERS Earth rotation and leap second tables
+
+-------------------------------------------------------------------
Old:
----
astropy_iers_data-0.2024.6.3.0.31.14.tar.gz
New:
----
astropy_iers_data-0.2024.6.24.0.31.11.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-astropy-iers-data.spec ++++++
--- /var/tmp/diff_new_pack.tZYDeo/_old 2024-07-01 11:22:42.184152366 +0200
+++ /var/tmp/diff_new_pack.tZYDeo/_new 2024-07-01 11:22:42.188152511 +0200
@@ -17,7 +17,7 @@
Name: python-astropy-iers-data
-Version: 0.2024.6.3.0.31.14
+Version: 0.2024.6.24.0.31.11
Release: 0
Summary: IERS Earth Rotation and Leap Second tables for the astropy core package
License: BSD-3-Clause
++++++ astropy_iers_data-0.2024.6.3.0.31.14.tar.gz -> astropy_iers_data-0.2024.6.24.0.31.11.tar.gz ++++++
++++ 1699 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-pipx for openSUSE:Factory checked in at 2024-07-01 11:21:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pipx (Old)
and /work/SRC/openSUSE:Factory/.python-pipx.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pipx"
Mon Jul 1 11:21:49 2024 rev:11 rq:1184143 version:1.6.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pipx/python-pipx.changes 2024-04-03 17:21:01.050827269 +0200
+++ /work/SRC/openSUSE:Factory/.python-pipx.new.18349/python-pipx.changes 2024-07-01 11:22:40.532092575 +0200
@@ -1,0 +2,24 @@
+Sun Jun 30 20:48:31 UTC 2024 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 1.6.0:
+ * Add `install-all` command to install packages according to
+ spec metadata file.
+ * Introduce `pipx pin` and `pipx unpin` commands, which can be
+ used to pin or unpin the version
+ * of an installed package, so it will not be upgraded by `pipx
+ upgrade` or `pipx upgrade-all`.
+ * Add a new option `--pinned` to `pipx list` command for
+ listing pinned packages only.
+ * Add `pipx interpreter upgrade` command to upgrade local
+ standalone python in micro/patch level
+ * Add `--requirement` option to `inject` command to read list
+ of packages from a text file.
+ * Add `pipx upgrade-shared` command, to create/upgrade shared
+ libraries as a standalone command.
+ * Allow `upgrade` command to accept multiple packages as
+ arguments.
+ * Support Python version for `--python` arg when py launcher is
+ not available
+ * Make `install-all` gather errors in batch
+
+-------------------------------------------------------------------
Old:
----
pipx-1.5.0.tar.gz
New:
----
pipx-1.6.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pipx.spec ++++++
--- /var/tmp/diff_new_pack.kFmUro/_old 2024-07-01 11:22:41.004109658 +0200
+++ /var/tmp/diff_new_pack.kFmUro/_new 2024-07-01 11:22:41.008109802 +0200
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-pipx
-Version: 1.5.0
+Version: 1.6.0
Release: 0
Summary: Install and Run Python Applications in Isolated Environments
License: MIT
++++++ pipx-1.5.0.tar.gz -> pipx-1.6.0.tar.gz ++++++
++++ 2501 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-jsonschema-path for openSUSE:Factory checked in at 2024-07-01 11:21:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jsonschema-path (Old)
and /work/SRC/openSUSE:Factory/.python-jsonschema-path.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jsonschema-path"
Mon Jul 1 11:21:48 2024 rev:2 rq:1184139 version:0.3.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jsonschema-path/python-jsonschema-path.changes 2023-12-17 21:35:25.792353451 +0100
+++ /work/SRC/openSUSE:Factory/.python-jsonschema-path.new.18349/python-jsonschema-path.changes 2024-07-01 11:22:39.632060001 +0200
@@ -1,0 +2,6 @@
+Sun Jun 30 20:35:36 UTC 2024 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 0.3.3:
+ * Relax dependency constraint to support referencing 0.35 #138
+
+-------------------------------------------------------------------
Old:
----
jsonschema-path-0.3.2.tar.gz
New:
----
jsonschema-path-0.3.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jsonschema-path.spec ++++++
--- /var/tmp/diff_new_pack.b7A3bv/_old 2024-07-01 11:22:40.096076795 +0200
+++ /var/tmp/diff_new_pack.b7A3bv/_new 2024-07-01 11:22:40.100076939 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jsonschema-path
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-jsonschema-path
-Version: 0.3.2
+Version: 0.3.3
Release: 0
Summary: JSONSchema Spec with object-oriented paths
License: Apache-2.0
++++++ jsonschema-path-0.3.2.tar.gz -> jsonschema-path-0.3.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonschema-path-0.3.2/.bumpversion.cfg new/jsonschema-path-0.3.3/.bumpversion.cfg
--- old/jsonschema-path-0.3.2/.bumpversion.cfg 2023-11-15 08:56:01.000000000 +0100
+++ new/jsonschema-path-0.3.3/.bumpversion.cfg 2024-06-25 14:23:09.000000000 +0200
@@ -1,5 +1,5 @@
[bumpversion]
-current_version = 0.3.2
+current_version = 0.3.3
tag = True
tag_name = {new_version}
commit = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonschema-path-0.3.2/jsonschema_path/__init__.py new/jsonschema-path-0.3.3/jsonschema_path/__init__.py
--- old/jsonschema-path-0.3.2/jsonschema_path/__init__.py 2023-11-15 08:56:01.000000000 +0100
+++ new/jsonschema-path-0.3.3/jsonschema_path/__init__.py 2024-06-25 14:23:09.000000000 +0200
@@ -4,7 +4,7 @@
__author__ = "Artur Maciag"
__email__ = "maciag.artur(a)gmail.com"
-__version__ = "0.3.2"
+__version__ = "0.3.3"
__url__ = "https://github.com/p1c2u/jsonschema-path"
__license__ = "Apache-2.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonschema-path-0.3.2/jsonschema_path/accessors.py new/jsonschema-path-0.3.3/jsonschema_path/accessors.py
--- old/jsonschema-path-0.3.2/jsonschema_path/accessors.py 2023-11-15 08:56:01.000000000 +0100
+++ new/jsonschema-path-0.3.3/jsonschema_path/accessors.py 2024-06-25 14:23:09.000000000 +0200
@@ -1,4 +1,5 @@
"""JSONSchema spec accessors module."""
+
from collections import deque
from contextlib import contextmanager
from typing import Any
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonschema-path-0.3.2/jsonschema_path/handlers/file.py new/jsonschema-path-0.3.3/jsonschema_path/handlers/file.py
--- old/jsonschema-path-0.3.2/jsonschema_path/handlers/file.py 2023-11-15 08:56:01.000000000 +0100
+++ new/jsonschema-path-0.3.3/jsonschema_path/handlers/file.py 2024-06-25 14:23:09.000000000 +0200
@@ -1,4 +1,5 @@
"""JSONSchema spec handlers file module."""
+
from json import dumps
from json import loads
from typing import Any
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonschema-path-0.3.2/jsonschema_path/handlers/protocols.py new/jsonschema-path-0.3.3/jsonschema_path/handlers/protocols.py
--- old/jsonschema-path-0.3.2/jsonschema_path/handlers/protocols.py 2023-11-15 08:56:01.000000000 +0100
+++ new/jsonschema-path-0.3.3/jsonschema_path/handlers/protocols.py 2024-06-25 14:23:09.000000000 +0200
@@ -3,5 +3,4 @@
class SupportsRead(Protocol):
- def read(self, amount: Optional[int] = 0) -> str:
- ...
+ def read(self, amount: Optional[int] = 0) -> str: ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonschema-path-0.3.2/jsonschema_path/handlers/requests.py new/jsonschema-path-0.3.3/jsonschema_path/handlers/requests.py
--- old/jsonschema-path-0.3.2/jsonschema_path/handlers/requests.py 2023-11-15 08:56:01.000000000 +0100
+++ new/jsonschema-path-0.3.3/jsonschema_path/handlers/requests.py 2024-06-25 14:23:09.000000000 +0200
@@ -1,4 +1,5 @@
"""JSONSchema spec handlers requests module."""
+
from contextlib import closing
from io import StringIO
from typing import ContextManager
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonschema-path-0.3.2/jsonschema_path/handlers/urllib.py new/jsonschema-path-0.3.3/jsonschema_path/handlers/urllib.py
--- old/jsonschema-path-0.3.2/jsonschema_path/handlers/urllib.py 2023-11-15 08:56:01.000000000 +0100
+++ new/jsonschema-path-0.3.3/jsonschema_path/handlers/urllib.py 2024-06-25 14:23:09.000000000 +0200
@@ -1,4 +1,5 @@
"""JSONSchema spec handlers urllib module."""
+
from contextlib import closing
from typing import ContextManager
from typing import Optional
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonschema-path-0.3.2/jsonschema_path/paths.py new/jsonschema-path-0.3.3/jsonschema_path/paths.py
--- old/jsonschema-path-0.3.2/jsonschema_path/paths.py 2023-11-15 08:56:01.000000000 +0100
+++ new/jsonschema-path-0.3.3/jsonschema_path/paths.py 2024-06-25 14:23:09.000000000 +0200
@@ -1,4 +1,5 @@
"""JSONSchema spec paths module."""
+
import warnings
from contextlib import contextmanager
from pathlib import Path
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonschema-path-0.3.2/jsonschema_path/readers.py new/jsonschema-path-0.3.3/jsonschema_path/readers.py
--- old/jsonschema-path-0.3.2/jsonschema_path/readers.py 2023-11-15 08:56:01.000000000 +0100
+++ new/jsonschema-path-0.3.3/jsonschema_path/readers.py 2024-06-25 14:23:09.000000000 +0200
@@ -1,4 +1,5 @@
"""JSONSchema spec readers module."""
+
from pathlib import Path
from typing import Any
from typing import Hashable
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonschema-path-0.3.2/poetry.lock new/jsonschema-path-0.3.3/poetry.lock
--- old/jsonschema-path-0.3.2/poetry.lock 2023-11-15 08:56:01.000000000 +0100
+++ new/jsonschema-path-0.3.3/poetry.lock 2024-06-25 14:23:09.000000000 +0200
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
[[package]]
name = "astor"
@@ -31,29 +31,33 @@
[[package]]
name = "black"
-version = "23.10.1"
+version = "24.4.0"
description = "The uncompromising code formatter."
optional = false
python-versions = ">=3.8"
files = [
- {file = "black-23.10.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:ec3f8e6234c4e46ff9e16d9ae96f4ef69fa328bb4ad08198c8cee45bb1f08c69"},
- {file = "black-23.10.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:1b917a2aa020ca600483a7b340c165970b26e9029067f019e3755b56e8dd5916"},
- {file = "black-23.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c74de4c77b849e6359c6f01987e94873c707098322b91490d24296f66d067dc"},
- {file = "black-23.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:7b4d10b0f016616a0d93d24a448100adf1699712fb7a4efd0e2c32bbb219b173"},
- {file = "black-23.10.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b15b75fc53a2fbcac8a87d3e20f69874d161beef13954747e053bca7a1ce53a0"},
- {file = "black-23.10.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:e293e4c2f4a992b980032bbd62df07c1bcff82d6964d6c9496f2cd726e246ace"},
- {file = "black-23.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d56124b7a61d092cb52cce34182a5280e160e6aff3137172a68c2c2c4b76bcb"},
- {file = "black-23.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:3f157a8945a7b2d424da3335f7ace89c14a3b0625e6593d21139c2d8214d55ce"},
- {file = "black-23.10.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:cfcce6f0a384d0da692119f2d72d79ed07c7159879d0bb1bb32d2e443382bf3a"},
- {file = "black-23.10.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:33d40f5b06be80c1bbce17b173cda17994fbad096ce60eb22054da021bf933d1"},
- {file = "black-23.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:840015166dbdfbc47992871325799fd2dc0dcf9395e401ada6d88fe11498abad"},
- {file = "black-23.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:037e9b4664cafda5f025a1728c50a9e9aedb99a759c89f760bd83730e76ba884"},
- {file = "black-23.10.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:7cb5936e686e782fddb1c73f8aa6f459e1ad38a6a7b0e54b403f1f05a1507ee9"},
- {file = "black-23.10.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:7670242e90dc129c539e9ca17665e39a146a761e681805c54fbd86015c7c84f7"},
- {file = "black-23.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ed45ac9a613fb52dad3b61c8dea2ec9510bf3108d4db88422bacc7d1ba1243d"},
- {file = "black-23.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:6d23d7822140e3fef190734216cefb262521789367fbdc0b3f22af6744058982"},
- {file = "black-23.10.1-py3-none-any.whl", hash = "sha256:d431e6739f727bb2e0495df64a6c7a5310758e87505f5f8cde9ff6c0f2d7e4fe"},
- {file = "black-23.10.1.tar.gz", hash = "sha256:1f8ce316753428ff68749c65a5f7844631aa18c8679dfd3ca9dc1a289979c258"},
+ {file = "black-24.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6ad001a9ddd9b8dfd1b434d566be39b1cd502802c8d38bbb1ba612afda2ef436"},
+ {file = "black-24.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3a3a092b8b756c643fe45f4624dbd5a389f770a4ac294cf4d0fce6af86addaf"},
+ {file = "black-24.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dae79397f367ac8d7adb6c779813328f6d690943f64b32983e896bcccd18cbad"},
+ {file = "black-24.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:71d998b73c957444fb7c52096c3843875f4b6b47a54972598741fe9a7f737fcb"},
+ {file = "black-24.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8e5537f456a22cf5cfcb2707803431d2feeb82ab3748ade280d6ccd0b40ed2e8"},
+ {file = "black-24.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64e60a7edd71fd542a10a9643bf369bfd2644de95ec71e86790b063aa02ff745"},
+ {file = "black-24.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cd5b4f76056cecce3e69b0d4c228326d2595f506797f40b9233424e2524c070"},
+ {file = "black-24.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:64578cf99b6b46a6301bc28bdb89f9d6f9b592b1c5837818a177c98525dbe397"},
+ {file = "black-24.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f95cece33329dc4aa3b0e1a771c41075812e46cf3d6e3f1dfe3d91ff09826ed2"},
+ {file = "black-24.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4396ca365a4310beef84d446ca5016f671b10f07abdba3e4e4304218d2c71d33"},
+ {file = "black-24.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44d99dfdf37a2a00a6f7a8dcbd19edf361d056ee51093b2445de7ca09adac965"},
+ {file = "black-24.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:21f9407063ec71c5580b8ad975653c66508d6a9f57bd008bb8691d273705adcd"},
+ {file = "black-24.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:652e55bb722ca026299eb74e53880ee2315b181dfdd44dca98e43448620ddec1"},
+ {file = "black-24.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7f2966b9b2b3b7104fca9d75b2ee856fe3fdd7ed9e47c753a4bb1a675f2caab8"},
+ {file = "black-24.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bb9ca06e556a09f7f7177bc7cb604e5ed2d2df1e9119e4f7d2f1f7071c32e5d"},
+ {file = "black-24.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:d4e71cdebdc8efeb6deaf5f2deb28325f8614d48426bed118ecc2dcaefb9ebf3"},
+ {file = "black-24.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6644f97a7ef6f401a150cca551a1ff97e03c25d8519ee0bbc9b0058772882665"},
+ {file = "black-24.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:75a2d0b4f5eb81f7eebc31f788f9830a6ce10a68c91fbe0fade34fff7a2836e6"},
+ {file = "black-24.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb949f56a63c5e134dfdca12091e98ffb5fd446293ebae123d10fc1abad00b9e"},
+ {file = "black-24.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:7852b05d02b5b9a8c893ab95863ef8986e4dda29af80bbbda94d7aee1abf8702"},
+ {file = "black-24.4.0-py3-none-any.whl", hash = "sha256:74eb9b5420e26b42c00a3ff470dc0cd144b80a766128b1771d07643165e08d0e"},
+ {file = "black-24.4.0.tar.gz", hash = "sha256:f07b69fda20578367eaebbd670ff8fc653ab181e1ff95d84497f9fa20e7d0641"},
]
[package.dependencies]
@@ -67,7 +71,7 @@
[package.extras]
colorama = ["colorama (>=0.4.3)"]
-d = ["aiohttp (>=3.7.4)"]
+d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"]
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
uvloop = ["uvloop (>=0.15.2)"]
@@ -292,21 +296,29 @@
[[package]]
name = "deptry"
-version = "0.12.0"
+version = "0.14.2"
description = "A command line utility to check for unused, missing and transitive dependencies in a Python project."
optional = false
-python-versions = ">=3.8,<4.0"
+python-versions = ">=3.8, <4.0"
files = [
- {file = "deptry-0.12.0-py3-none-any.whl", hash = "sha256:69c801a6ae1b39c7b8e0daf40dbe8b75f1f161277d206dd8f921f32cd22dad91"},
- {file = "deptry-0.12.0.tar.gz", hash = "sha256:ac3cd32d149c92a9af12f63cd9486ddd1760f0277ed0cf306c6ef0388f57ff0a"},
+ {file = "deptry-0.14.2-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:6f451ac26990bcb3e4d517271b87f1f02e7272da6644e47755aa72bbb649a8dd"},
+ {file = "deptry-0.14.2-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:7b3eeeace8c3cdb2eafe14d7a0261bb2ec410d1887a4152091e9dcb73325b452"},
+ {file = "deptry-0.14.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb4988bff104bfd3c0b13841f18dbddc6c818b88101cad97f662acc5827209ac"},
+ {file = "deptry-0.14.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f61a6c1165e91753d029c2a598d0ff37b7e6cb436beff5cc3ba6c7b8b4acf93"},
+ {file = "deptry-0.14.2-cp38-abi3-win_amd64.whl", hash = "sha256:65d20f7316b2f2ff545430dd3c2dea6dc668cd6ee3b866dffdf78d39c3b07ee8"},
+ {file = "deptry-0.14.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:95901237482a390611370522d707931eeb1ea7172a56fe1bf84f0d4624b1dd4c"},
+ {file = "deptry-0.14.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f531fd1cdcc980438647cc8c95115989f0a7efbf3456611174cfd54db721657"},
+ {file = "deptry-0.14.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54182741d343bcca73116a13eb905b5bded80ef72e2d13cdb23081c72a486f17"},
+ {file = "deptry-0.14.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6c9a2949d2c0c580981e22c8ceff0461e77e632b94dacd02307f81caaa35f93f"},
+ {file = "deptry-0.14.2.tar.gz", hash = "sha256:1c585d4a5f9ddc75ed0cb27f99e998edda4720d050ba7214503a2bfe5e85d7df"},
]
[package.dependencies]
chardet = ">=4.0.0"
-click = ">=8.0.0,<9.0.0"
+click = ">=8.0.0,<9"
colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""}
pathspec = ">=0.9.0"
-tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""}
+tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""}
[[package]]
name = "distlib"
@@ -398,13 +410,13 @@
[[package]]
name = "idna"
-version = "3.4"
+version = "3.7"
description = "Internationalized Domain Names in Applications (IDNA)"
optional = false
python-versions = ">=3.5"
files = [
- {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
- {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
+ {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"},
+ {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"},
]
[[package]]
@@ -420,20 +432,17 @@
[[package]]
name = "isort"
-version = "5.12.0"
+version = "5.13.2"
description = "A Python utility / library to sort Python imports."
optional = false
python-versions = ">=3.8.0"
files = [
- {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"},
- {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"},
+ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
+ {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
]
[package.extras]
-colors = ["colorama (>=0.4.3)"]
-pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"]
-plugins = ["setuptools"]
-requirements-deprecated-finder = ["pip-api", "pipreqs"]
+colors = ["colorama (>=0.4.6)"]
[[package]]
name = "mccabe"
@@ -448,38 +457,38 @@
[[package]]
name = "mypy"
-version = "1.7.0"
+version = "1.9.0"
description = "Optional static typing for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "mypy-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5da84d7bf257fd8f66b4f759a904fd2c5a765f70d8b52dde62b521972a0a2357"},
- {file = "mypy-1.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a3637c03f4025f6405737570d6cbfa4f1400eb3c649317634d273687a09ffc2f"},
- {file = "mypy-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b633f188fc5ae1b6edca39dae566974d7ef4e9aaaae00bc36efe1f855e5173ac"},
- {file = "mypy-1.7.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d6ed9a3997b90c6f891138e3f83fb8f475c74db4ccaa942a1c7bf99e83a989a1"},
- {file = "mypy-1.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:1fe46e96ae319df21359c8db77e1aecac8e5949da4773c0274c0ef3d8d1268a9"},
- {file = "mypy-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:df67fbeb666ee8828f675fee724cc2cbd2e4828cc3df56703e02fe6a421b7401"},
- {file = "mypy-1.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a79cdc12a02eb526d808a32a934c6fe6df07b05f3573d210e41808020aed8b5d"},
- {file = "mypy-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f65f385a6f43211effe8c682e8ec3f55d79391f70a201575def73d08db68ead1"},
- {file = "mypy-1.7.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e81ffd120ee24959b449b647c4b2fbfcf8acf3465e082b8d58fd6c4c2b27e46"},
- {file = "mypy-1.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:f29386804c3577c83d76520abf18cfcd7d68264c7e431c5907d250ab502658ee"},
- {file = "mypy-1.7.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:87c076c174e2c7ef8ab416c4e252d94c08cd4980a10967754f91571070bf5fbe"},
- {file = "mypy-1.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6cb8d5f6d0fcd9e708bb190b224089e45902cacef6f6915481806b0c77f7786d"},
- {file = "mypy-1.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93e76c2256aa50d9c82a88e2f569232e9862c9982095f6d54e13509f01222fc"},
- {file = "mypy-1.7.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cddee95dea7990e2215576fae95f6b78a8c12f4c089d7e4367564704e99118d3"},
- {file = "mypy-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:d01921dbd691c4061a3e2ecdbfbfad029410c5c2b1ee88946bf45c62c6c91210"},
- {file = "mypy-1.7.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:185cff9b9a7fec1f9f7d8352dff8a4c713b2e3eea9c6c4b5ff7f0edf46b91e41"},
- {file = "mypy-1.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7a7b1e399c47b18feb6f8ad4a3eef3813e28c1e871ea7d4ea5d444b2ac03c418"},
- {file = "mypy-1.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc9fe455ad58a20ec68599139ed1113b21f977b536a91b42bef3ffed5cce7391"},
- {file = "mypy-1.7.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d0fa29919d2e720c8dbaf07d5578f93d7b313c3e9954c8ec05b6d83da592e5d9"},
- {file = "mypy-1.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:2b53655a295c1ed1af9e96b462a736bf083adba7b314ae775563e3fb4e6795f5"},
- {file = "mypy-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1b06b4b109e342f7dccc9efda965fc3970a604db70f8560ddfdee7ef19afb05"},
- {file = "mypy-1.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bf7a2f0a6907f231d5e41adba1a82d7d88cf1f61a70335889412dec99feeb0f8"},
- {file = "mypy-1.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:551d4a0cdcbd1d2cccdcc7cb516bb4ae888794929f5b040bb51aae1846062901"},
- {file = "mypy-1.7.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:55d28d7963bef00c330cb6461db80b0b72afe2f3c4e2963c99517cf06454e665"},
- {file = "mypy-1.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:870bd1ffc8a5862e593185a4c169804f2744112b4a7c55b93eb50f48e7a77010"},
- {file = "mypy-1.7.0-py3-none-any.whl", hash = "sha256:96650d9a4c651bc2a4991cf46f100973f656d69edc7faf91844e87fe627f7e96"},
- {file = "mypy-1.7.0.tar.gz", hash = "sha256:1e280b5697202efa698372d2f39e9a6713a0395a756b1c6bd48995f8d72690dc"},
+ {file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"},
+ {file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"},
+ {file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"},
+ {file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"},
+ {file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"},
+ {file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"},
+ {file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"},
+ {file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"},
+ {file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"},
+ {file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"},
+ {file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"},
+ {file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"},
+ {file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"},
+ {file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"},
+ {file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"},
+ {file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"},
+ {file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"},
+ {file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"},
+ {file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"},
+ {file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"},
+ {file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"},
+ {file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"},
+ {file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"},
+ {file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"},
+ {file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"},
+ {file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"},
+ {file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"},
]
[package.dependencies]
@@ -568,13 +577,13 @@
[[package]]
name = "pluggy"
-version = "1.0.0"
+version = "1.5.0"
description = "plugin and hook calling mechanisms for python"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
- {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
+ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"},
+ {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"},
]
[package.extras]
@@ -623,13 +632,13 @@
[[package]]
name = "pytest"
-version = "7.4.3"
+version = "8.2.1"
description = "pytest: simple powerful testing with Python"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"},
- {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"},
+ {file = "pytest-8.2.1-py3-none-any.whl", hash = "sha256:faccc5d332b8c3719f40283d0d44aa5cf101cec36f88cde9ed8f2bc0538612b1"},
+ {file = "pytest-8.2.1.tar.gz", hash = "sha256:5046e5b46d8e4cac199c373041f26be56fdb81eb4e67dc11d4e10811fc3408fd"},
]
[package.dependencies]
@@ -637,21 +646,21 @@
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
iniconfig = "*"
packaging = "*"
-pluggy = ">=0.12,<2.0"
-tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
+pluggy = ">=1.5,<2.0"
+tomli = {version = ">=1", markers = "python_version < \"3.11\""}
[package.extras]
-testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
+dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
[[package]]
name = "pytest-cov"
-version = "4.1.0"
+version = "5.0.0"
description = "Pytest plugin for measuring coverage."
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"},
- {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"},
+ {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"},
+ {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"},
]
[package.dependencies]
@@ -659,7 +668,7 @@
pytest = ">=4.6"
[package.extras]
-testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"]
+testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"]
[[package]]
name = "pytest-flake8"
@@ -701,6 +710,7 @@
{file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
{file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
{file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
+ {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
{file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
{file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
{file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
@@ -737,13 +747,13 @@
[[package]]
name = "referencing"
-version = "0.30.2"
+version = "0.35.1"
description = "JSON Referencing + Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "referencing-0.30.2-py3-none-any.whl", hash = "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf"},
- {file = "referencing-0.30.2.tar.gz", hash = "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0"},
+ {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"},
+ {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"},
]
[package.dependencies]
@@ -752,13 +762,13 @@
[[package]]
name = "requests"
-version = "2.31.0"
+version = "2.32.0"
description = "Python HTTP for Humans."
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
- {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
+ {file = "requests-2.32.0-py3-none-any.whl", hash = "sha256:f2c3881dddb70d056c5bd7600a4fae312b2a300e39be6a118d30b90bd27262b5"},
+ {file = "requests-2.32.0.tar.gz", hash = "sha256:fa5490319474c82ef1d2c9bc459d3652e3ae4ef4c4ebdd18a21145a47ca4b6b8"},
]
[package.dependencies]
@@ -773,13 +783,13 @@
[[package]]
name = "responses"
-version = "0.24.0"
+version = "0.25.0"
description = "A utility library for mocking out the `requests` Python library."
optional = false
python-versions = ">=3.8"
files = [
- {file = "responses-0.24.0-py3-none-any.whl", hash = "sha256:060be153c270c06fa4d22c1ef8865fdef43902eb595204deeef736cddb62d353"},
- {file = "responses-0.24.0.tar.gz", hash = "sha256:3df82f7d4dcd3e5f61498181aadb4381f291da25c7506c47fe8cb68ce29203e7"},
+ {file = "responses-0.25.0-py3-none-any.whl", hash = "sha256:2f0b9c2b6437db4b528619a77e5d565e4ec2a9532162ac1a131a83529db7be1a"},
+ {file = "responses-0.25.0.tar.gz", hash = "sha256:01ae6a02b4f34e39bffceb0fc6786b67a25eae919c6368d05eabc8d9576c2a66"},
]
[package.dependencies]
@@ -887,24 +897,24 @@
[[package]]
name = "types-pyyaml"
-version = "6.0.12.12"
+version = "6.0.12.20240311"
description = "Typing stubs for PyYAML"
optional = false
-python-versions = "*"
+python-versions = ">=3.8"
files = [
- {file = "types-PyYAML-6.0.12.12.tar.gz", hash = "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062"},
- {file = "types_PyYAML-6.0.12.12-py3-none-any.whl", hash = "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24"},
+ {file = "types-PyYAML-6.0.12.20240311.tar.gz", hash = "sha256:a9e0f0f88dc835739b0c1ca51ee90d04ca2a897a71af79de9aec5f38cb0a5342"},
+ {file = "types_PyYAML-6.0.12.20240311-py3-none-any.whl", hash = "sha256:b845b06a1c7e54b8e5b4c683043de0d9caf205e7434b3edc678ff2411979b8f6"},
]
[[package]]
name = "types-requests"
-version = "2.31.0.10"
+version = "2.31.0.20240406"
description = "Typing stubs for requests"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "types-requests-2.31.0.10.tar.gz", hash = "sha256:dc5852a76f1eaf60eafa81a2e50aefa3d1f015c34cf0cba130930866b1b22a92"},
- {file = "types_requests-2.31.0.10-py3-none-any.whl", hash = "sha256:b32b9a86beffa876c0c3ac99a4cd3b8b51e973fb8e3bd4e0a6bb32c7efad80fc"},
+ {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"},
+ {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"},
]
[package.dependencies]
@@ -912,13 +922,13 @@
[[package]]
name = "typing-extensions"
-version = "4.8.0"
+version = "4.10.0"
description = "Backported and Experimental Type Hints for Python 3.8+"
optional = false
python-versions = ">=3.8"
files = [
- {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"},
- {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"},
+ {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"},
+ {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"},
]
[[package]]
@@ -961,4 +971,4 @@
[metadata]
lock-version = "2.0"
python-versions = "^3.8.0"
-content-hash = "8babf78847ca268e7a86dbbf5cc4522943ab28e182bcc2dcf93507031bd01e64"
+content-hash = "95f62596cb82a0e5144a59c67ef77741d6e2595fedf5084dfe468d92269978be"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonschema-path-0.3.2/pyproject.toml new/jsonschema-path-0.3.3/pyproject.toml
--- old/jsonschema-path-0.3.2/pyproject.toml 2023-11-15 08:56:01.000000000 +0100
+++ new/jsonschema-path-0.3.3/pyproject.toml 2024-06-25 14:23:09.000000000 +0200
@@ -19,7 +19,7 @@
[tool.poetry]
name = "jsonschema-path"
-version = "0.3.2"
+version = "0.3.3"
description = "JSONSchema Spec with object-oriented paths"
authors = ["Artur Maciag <maciag.artur(a)gmail.com>"]
license = "Apache-2.0"
@@ -45,22 +45,22 @@
python = "^3.8.0"
PyYAML = ">=5.1"
requests = {version = "^2.31.0", optional = true}
-referencing = ">=0.28.0,<0.32.0"
+referencing = ">=0.28.0,<0.36.0"
[tool.poetry.dev-dependencies]
pre-commit = "*"
-pytest = "^7.4.3"
+pytest = "^8.2.1"
pytest-flake8 = "=1.1.1"
-pytest-cov = "^4.1.0"
-isort = "^5.12.0"
-black = "^23.10.1"
+pytest-cov = "^5.0.0"
+isort = "^5.13.2"
+black = "^24.4.0"
flynt = "1.0.1"
-mypy = "^1.7.0"
+mypy = "^1.9.0"
types-PyYAML = "^6.0.12"
types-requests = "^2.31.0"
-typing-extensions = "^4.8.0" # required by responses. See https://github.com/p1c2u/jsonschema-path/issues/44
-responses = "^0.24.0"
-deptry = "^0.12.0"
+typing-extensions = "^4.10.0" # required by responses. See https://github.com/p1c2u/jsonschema-path/issues/44
+responses = "^0.25.0"
+deptry = "^0.14.2"
pyflakes = "^2.5.0"
bump2version = "^1.0.1"
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-mdit-py-plugins for openSUSE:Factory checked in at 2024-07-01 11:21:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-mdit-py-plugins (Old)
and /work/SRC/openSUSE:Factory/.python-mdit-py-plugins.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-mdit-py-plugins"
Mon Jul 1 11:21:46 2024 rev:5 rq:1184138 version:0.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-mdit-py-plugins/python-mdit-py-plugins.changes 2023-11-23 21:38:35.758955897 +0100
+++ /work/SRC/openSUSE:Factory/.python-mdit-py-plugins.new.18349/python-mdit-py-plugins.changes 2024-07-01 11:22:37.399979217 +0200
@@ -1,0 +2,6 @@
+Sun Jun 30 20:34:50 UTC 2024 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 0.4.1:
+ * Add option for footnotes references to always be matched
+
+-------------------------------------------------------------------
Old:
----
python-mdit-py-plugins-0.4.0.tar.gz
New:
----
python-mdit-py-plugins-0.4.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-mdit-py-plugins.spec ++++++
--- /var/tmp/diff_new_pack.gpggFw/_old 2024-07-01 11:22:37.951999196 +0200
+++ /var/tmp/diff_new_pack.gpggFw/_new 2024-07-01 11:22:37.951999196 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-mdit-py-plugins
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-mdit-py-plugins
-Version: 0.4.0
+Version: 0.4.1
Release: 0
Summary: Collection of plugins for markdown-it-py
License: MIT
++++++ python-mdit-py-plugins-0.4.0.tar.gz -> python-mdit-py-plugins-0.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/.coveragerc new/mdit-py-plugins-0.4.1/.coveragerc
--- old/mdit-py-plugins-0.4.0/.coveragerc 1970-01-01 01:00:00.000000000 +0100
+++ new/mdit-py-plugins-0.4.1/.coveragerc 2024-05-12 22:13:45.000000000 +0200
@@ -0,0 +1,4 @@
+[report]
+exclude_lines =
+ pragma: no cover
+ if TYPE_CHECKING:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/.github/workflows/tests.yml new/mdit-py-plugins-0.4.1/.github/workflows/tests.yml
--- old/mdit-py-plugins-0.4.0/.github/workflows/tests.yml 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/.github/workflows/tests.yml 2024-05-12 22:13:45.000000000 +0200
@@ -17,12 +17,12 @@
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Python 3.8
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: 3.8
- - uses: pre-commit/action(a)v3.0.0
+ - uses: pre-commit/action(a)v3.0.1
tests:
@@ -30,12 +30,12 @@
strategy:
fail-fast: false
matrix:
- python-version: ['pypy-3.8', '3.8', '3.9', '3.10', '3.11']
+ python-version: ['pypy-3.8', '3.8', '3.9', '3.10', '3.11', '3.12']
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
@@ -48,6 +48,7 @@
- name: Upload to Codecov
uses: codecov/codecov-action@v3
with:
+ token: ${{ secrets.CODECOV_TOKEN }}
name: mdit-py-plugins-pytests
flags: pytests
file: ./coverage.xml
@@ -69,9 +70,9 @@
runs-on: ubuntu-latest
steps:
- name: Checkout source
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.8"
- name: install flit
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/.pre-commit-config.yaml new/mdit-py-plugins-0.4.1/.pre-commit-config.yaml
--- old/mdit-py-plugins-0.4.0/.pre-commit-config.yaml 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/.pre-commit-config.yaml 2024-05-12 22:13:45.000000000 +0200
@@ -12,30 +12,22 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.4.0
+ rev: v4.6.0
hooks:
- id: check-json
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
- - repo: https://github.com/PyCQA/isort
- rev: 5.12.0
+ - repo: https://github.com/astral-sh/ruff-pre-commit
+ rev: v0.4.4
hooks:
- - id: isort
-
- - repo: https://github.com/psf/black
- rev: 23.3.0
- hooks:
- - id: black
-
- - repo: https://github.com/charliermarsh/ruff-pre-commit
- rev: v0.0.270
- hooks:
- - id: ruff
+ - id: ruff
+ args: [--fix]
+ - id: ruff-format
- repo: https://github.com/pre-commit/mirrors-mypy
- rev: v1.3.0
+ rev: v1.10.0
hooks:
- id: mypy
additional_dependencies: [markdown-it-py~=3.0]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/.readthedocs.yml new/mdit-py-plugins-0.4.1/.readthedocs.yml
--- old/mdit-py-plugins-0.4.0/.readthedocs.yml 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/.readthedocs.yml 2024-05-12 22:13:45.000000000 +0200
@@ -1,7 +1,11 @@
version: 2
+build:
+ os: ubuntu-22.04
+ tools:
+ python: "3.8"
+
python:
- version: "3.8"
install:
- method: pip
path: .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/CHANGELOG.md new/mdit-py-plugins-0.4.1/CHANGELOG.md
--- old/mdit-py-plugins-0.4.0/CHANGELOG.md 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/CHANGELOG.md 2024-05-12 22:13:45.000000000 +0200
@@ -1,5 +1,11 @@
# Change Log
+## 0.4.1 - 2024-05-12
+
+* 👌 Add option for footnotes references to always be matched
+
+ Usually footnote references are only matched when a footnote definition of the same label has already been found. If `always_match_refs=True`, any `[^...]` syntax will be treated as a footnote.
+
## 0.4.0 - 2023-06-05
* ⬆️ UPGRADE: Drop python 3.7 and support 3.11 ([#77](https://github.com/executablebooks/mdit-py-plugins/pull/77))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1 +1 @@
-__version__ = "0.4.0"
+__version__ = "0.4.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/admon/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/admon/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/admon/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/admon/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1 +1,3 @@
-from .index import admon_plugin # noqa: F401
+from .index import admon_plugin
+
+__all__ = ("admon_plugin",)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/admon/index.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/admon/index.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/admon/index.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/admon/index.py 2024-05-12 22:13:45.000000000 +0200
@@ -1,6 +1,9 @@
# Process admonitions and pass to cb.
+
from __future__ import annotations
+from contextlib import suppress
+import re
from typing import TYPE_CHECKING, Callable, Sequence
from markdown_it import MarkdownIt
@@ -14,20 +17,34 @@
from markdown_it.utils import EnvType, OptionsDict
-def _get_tag(params: str) -> tuple[str, str]:
+def _get_multiple_tags(params: str) -> tuple[list[str], str]:
+ """Check for multiple tags when the title is double quoted."""
+ re_tags = re.compile(r'^\s*(?P<tokens>[^"]+)\s+"(?P<title>.*)"\S*$')
+ match = re_tags.match(params)
+ if match:
+ tags = match["tokens"].strip().split(" ")
+ return [tag.lower() for tag in tags], match["title"]
+ raise ValueError("No match found for parameters")
+
+
+def _get_tag(_params: str) -> tuple[list[str], str]:
"""Separate the tag name from the admonition title."""
- if not params.strip():
- return "", ""
+ params = _params.strip()
+ if not params:
+ return [""], ""
+
+ with suppress(ValueError):
+ return _get_multiple_tags(params)
- tag, *_title = params.strip().split(" ")
+ tag, *_title = params.split(" ")
joined = " ".join(_title)
title = ""
if not joined:
title = tag.title()
- elif joined != '""':
+ elif joined != '""': # Specifically check for no title
title = joined
- return tag.lower(), title
+ return [tag.lower()], title
def _validate(params: str) -> bool:
@@ -125,12 +142,13 @@
# this will prevent lazy continuations from ever going past our end marker
state.lineMax = next_line
- tag, title = _get_tag(params)
+ tags, title = _get_tag(params)
+ tag = tags[0]
token = state.push("admonition_open", "div", 1)
token.markup = markup
token.block = True
- token.attrs = {"class": " ".join(["admonition", tag, *_extra_classes(markup)])}
+ token.attrs = {"class": " ".join(["admonition", *tags, *_extra_classes(markup)])}
token.meta = {"tag": tag}
token.content = title
token.info = params
@@ -194,7 +212,7 @@
_options: OptionsDict,
env: EnvType,
) -> str:
- return self.renderToken(tokens, idx, _options, env) # type: ignore
+ return self.renderToken(tokens, idx, _options, env) # type: ignore[attr-defined,no-any-return]
render = render or renderDefault
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/amsmath/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/amsmath/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/amsmath/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/amsmath/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1,8 +1,9 @@
"""An extension to capture amsmath latex environments."""
+
from __future__ import annotations
import re
-from typing import TYPE_CHECKING, Callable, Optional, Sequence
+from typing import TYPE_CHECKING, Callable, Sequence
from markdown_it import MarkdownIt
from markdown_it.common.utils import escapeHtml
@@ -57,7 +58,7 @@
def amsmath_plugin(
- md: MarkdownIt, *, renderer: Optional[Callable[[str], str]] = None
+ md: MarkdownIt, *, renderer: Callable[[str], str] | None = None
) -> None:
"""Parses TeX math equations, without any surrounding delimiters,
only for top-level `amsmath <https://ctan.org/pkg/amsmath>`__ environments:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/anchors/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/anchors/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/anchors/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/anchors/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1 +1,3 @@
-from .index import anchors_plugin # noqa F401
+from .index import anchors_plugin
+
+__all__ = ("anchors_plugin",)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/attrs/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/attrs/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/attrs/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/attrs/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1 +1,3 @@
-from .index import attrs_block_plugin, attrs_plugin # noqa: F401
+from .index import attrs_block_plugin, attrs_plugin
+
+__all__ = ("attrs_block_plugin", "attrs_plugin")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/attrs/index.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/attrs/index.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/attrs/index.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/attrs/index.py 2024-05-12 22:13:45.000000000 +0200
@@ -140,7 +140,7 @@
state.pos = labelStart
state.posMax = labelEnd
token = state.push("span_open", "span", 1)
- token.attrs = attrs # type: ignore
+ token.attrs = attrs # type: ignore[assignment]
state.md.inline.tokenize(state)
token = state.push("span_close", "span", -1)
@@ -190,7 +190,7 @@
return True
token = state.push("attrs_block", "", 0)
- token.attrs = attrs # type: ignore
+ token.attrs = attrs # type: ignore[assignment]
token.map = [startLine, startLine + 1]
state.line = startLine + 1
@@ -211,9 +211,9 @@
# classes are appended
if "class" in state.tokens[i].attrs and "class" in next_token.attrs:
- state.tokens[i].attrs[
- "class"
- ] = f"{state.tokens[i].attrs['class']} {next_token.attrs['class']}"
+ state.tokens[i].attrs["class"] = (
+ f"{state.tokens[i].attrs['class']} {next_token.attrs['class']}"
+ )
if next_token.type == "attrs_block":
# subsequent attribute blocks take precedence, when merging
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/attrs/parse.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/attrs/parse.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/attrs/parse.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/attrs/parse.py 2024-05-12 22:13:45.000000000 +0200
@@ -19,6 +19,7 @@
bareval <- (ASCII_ALPHANUM | ':' | '_' | '-')+
quotedval <- '"' ([^"] | '\"') '"'
"""
+
from __future__ import annotations
from enum import Enum
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/container/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/container/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/container/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/container/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1 +1,3 @@
-from .index import container_plugin # noqa F401
+from .index import container_plugin
+
+__all__ = ("container_plugin",)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/container/index.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/container/index.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/container/index.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/container/index.py 2024-05-12 22:13:45.000000000 +0200
@@ -1,4 +1,5 @@
"""Process block-level custom containers."""
+
from __future__ import annotations
from math import floor
@@ -56,7 +57,7 @@
if tokens[idx].nesting == 1:
tokens[idx].attrJoin("class", name)
- return self.renderToken(tokens, idx, _options, env) # type: ignore
+ return self.renderToken(tokens, idx, _options, env) # type: ignore[attr-defined,no-any-return]
min_markers = 3
marker_str = marker
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/deflist/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/deflist/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/deflist/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/deflist/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1 +1,3 @@
-from .index import deflist_plugin # noqa F401
+from .index import deflist_plugin
+
+__all__ = ("deflist_plugin",)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/deflist/index.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/deflist/index.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/deflist/index.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/deflist/index.py 2024-05-12 22:13:45.000000000 +0200
@@ -1,4 +1,5 @@
"""Process definition lists."""
+
from markdown_it import MarkdownIt
from markdown_it.rules_block import StateBlock
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/dollarmath/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/dollarmath/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/dollarmath/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/dollarmath/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1 +1,3 @@
-from .index import dollarmath_plugin # noqa F401
+from .index import dollarmath_plugin
+
+__all__ = ("dollarmath_plugin",)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/dollarmath/index.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/dollarmath/index.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/dollarmath/index.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/dollarmath/index.py 2024-05-12 22:13:45.000000000 +0200
@@ -1,7 +1,7 @@
from __future__ import annotations
import re
-from typing import TYPE_CHECKING, Any, Callable, Dict, Optional, Sequence
+from typing import TYPE_CHECKING, Any, Callable, Sequence
from markdown_it import MarkdownIt
from markdown_it.common.utils import escapeHtml, isWhiteSpace
@@ -24,9 +24,9 @@
allow_digits: bool = True,
allow_blank_lines: bool = True,
double_inline: bool = False,
- label_normalizer: Optional[Callable[[str], str]] = None,
- renderer: Optional[Callable[[str, Dict[str, Any]], str]] = None,
- label_renderer: Optional[Callable[[str], str]] = None,
+ label_normalizer: Callable[[str], str] | None = None,
+ renderer: Callable[[str, dict[str, Any]], str] | None = None,
+ label_renderer: Callable[[str], str] | None = None,
) -> None:
"""Plugin for parsing dollar enclosed math,
e.g. inline: ``$a=1$``, block: ``$$b=2$$``
@@ -53,7 +53,7 @@
"""
if label_normalizer is None:
- label_normalizer = lambda label: re.sub(r"\s+", "-", label)
+ label_normalizer = lambda label: re.sub(r"\s+", "-", label) # noqa: E731
md.inline.ruler.before(
"escape",
@@ -76,8 +76,8 @@
_label_renderer: Callable[[str], str]
if label_renderer is None:
- _label_renderer = (
- lambda label: f'<a href="#{label}" class="mathlabel" title="Permalink to this equation">¶</a>' # noqa: E501
+ _label_renderer = ( # noqa: E731
+ lambda label: f'<a href="#{label}" class="mathlabel" title="Permalink to this equation">¶</a>'
)
else:
_label_renderer = label_renderer
@@ -286,7 +286,7 @@
def math_block_dollar(
allow_labels: bool = True,
- label_normalizer: Optional[Callable[[str], str]] = None,
+ label_normalizer: Callable[[str], str] | None = None,
allow_blank_lines: bool = False,
) -> Callable[[StateBlock, int, int, bool], bool]:
"""Generate block dollar rule."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/field_list/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/field_list/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/field_list/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/field_list/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1,4 +1,5 @@
"""Field list plugin"""
+
from contextlib import contextmanager
from typing import Iterator, Optional, Tuple
@@ -176,7 +177,7 @@
has_first_line = contentStart < maximum
if block_indent is None: # no body content
- if not has_first_line: # noqa SIM108
+ if not has_first_line: # noqa: SIM108
# no body or first line, so just use default
block_indent = 2
else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/footnote/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/footnote/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/footnote/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/footnote/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1 +1,3 @@
-from .index import footnote_plugin # noqa: F401
+from .index import footnote_plugin
+
+__all__ = ("footnote_plugin",)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/footnote/index.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/footnote/index.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/footnote/index.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/footnote/index.py 2024-05-12 22:13:45.000000000 +0200
@@ -1,7 +1,9 @@
"""Process footnotes"""
+
from __future__ import annotations
-from typing import TYPE_CHECKING, List, Optional, Sequence
+from functools import partial
+from typing import TYPE_CHECKING, Sequence, TypedDict
from markdown_it import MarkdownIt
from markdown_it.helpers import parseLinkLabel
@@ -17,7 +19,13 @@
from markdown_it.utils import EnvType, OptionsDict
-def footnote_plugin(md: MarkdownIt) -> None:
+def footnote_plugin(
+ md: MarkdownIt,
+ *,
+ inline: bool = True,
+ move_to_end: bool = True,
+ always_match_refs: bool = False,
+) -> None:
"""Plugin ported from
`markdown-it-footnote <https://github.com/markdown-it/markdown-it-footnote>`__.
@@ -37,13 +45,22 @@
Subsequent paragraphs are indented to show that they
belong to the previous footnote.
+ :param inline: If True, also parse inline footnotes (^[...]).
+ :param move_to_end: If True, move footnote definitions to the end of the token stream.
+ :param always_match_refs: If True, match references, even if the footnote is not defined.
+
"""
md.block.ruler.before(
"reference", "footnote_def", footnote_def, {"alt": ["paragraph", "reference"]}
)
- md.inline.ruler.after("image", "footnote_inline", footnote_inline)
- md.inline.ruler.after("footnote_inline", "footnote_ref", footnote_ref)
- md.core.ruler.after("inline", "footnote_tail", footnote_tail)
+ _footnote_ref = partial(footnote_ref, always_match=always_match_refs)
+ if inline:
+ md.inline.ruler.after("image", "footnote_inline", footnote_inline)
+ md.inline.ruler.after("footnote_inline", "footnote_ref", _footnote_ref)
+ else:
+ md.inline.ruler.after("image", "footnote_ref", _footnote_ref)
+ if move_to_end:
+ md.core.ruler.after("inline", "footnote_tail", footnote_tail)
md.add_render_rule("footnote_ref", render_footnote_ref)
md.add_render_rule("footnote_block_open", render_footnote_block_open)
@@ -57,6 +74,29 @@
md.add_render_rule("footnote_anchor_name", render_footnote_anchor_name)
+class _RefData(TypedDict, total=False):
+ # standard
+ label: str
+ count: int
+ # inline
+ content: str
+ tokens: list[Token]
+
+
+class _FootnoteData(TypedDict):
+ refs: dict[str, int]
+ """A mapping of all footnote labels (prefixed with ``:``) to their ID (-1 if not yet set)."""
+ list: dict[int, _RefData]
+ """A mapping of all footnote IDs to their data."""
+
+
+def _data_from_env(env: EnvType) -> _FootnoteData:
+ footnotes = env.setdefault("footnotes", {})
+ footnotes.setdefault("refs", {})
+ footnotes.setdefault("list", {})
+ return footnotes # type: ignore[no-any-return]
+
+
# ## RULES ##
@@ -96,7 +136,8 @@
pos += 1
label = state.src[start + 2 : pos - 2]
- state.env.setdefault("footnotes", {}).setdefault("refs", {})[":" + label] = -1
+ footnote_data = _data_from_env(state.env)
+ footnote_data["refs"][":" + label] = -1
open_token = Token("footnote_reference_open", "", 1)
open_token.meta = {"label": label}
@@ -181,10 +222,10 @@
# so all that's left to do is to call tokenizer.
#
if not silent:
- refs = state.env.setdefault("footnotes", {}).setdefault("list", {})
+ refs = _data_from_env(state.env)["list"]
footnoteId = len(refs)
- tokens: List[Token] = []
+ tokens: list[Token] = []
state.md.inline.parse(
state.src[labelStart:labelEnd], state.md, state.env, tokens
)
@@ -199,7 +240,9 @@
return True
-def footnote_ref(state: StateInline, silent: bool) -> bool:
+def footnote_ref(
+ state: StateInline, silent: bool, *, always_match: bool = False
+) -> bool:
"""Process footnote references ([^...])"""
maximum = state.posMax
@@ -209,7 +252,9 @@
if start + 3 > maximum:
return False
- if "footnotes" not in state.env or "refs" not in state.env["footnotes"]:
+ footnote_data = _data_from_env(state.env)
+
+ if not (always_match or footnote_data["refs"]):
return False
if state.src[start] != "[":
return False
@@ -218,9 +263,7 @@
pos = start + 2
while pos < maximum:
- if state.src[pos] == " ":
- return False
- if state.src[pos] == "\n":
+ if state.src[pos] in (" ", "\n"):
return False
if state.src[pos] == "]":
break
@@ -233,22 +276,19 @@
pos += 1
label = state.src[start + 2 : pos - 1]
- if (":" + label) not in state.env["footnotes"]["refs"]:
+ if ((":" + label) not in footnote_data["refs"]) and not always_match:
return False
if not silent:
- if "list" not in state.env["footnotes"]:
- state.env["footnotes"]["list"] = {}
-
- if state.env["footnotes"]["refs"][":" + label] < 0:
- footnoteId = len(state.env["footnotes"]["list"])
- state.env["footnotes"]["list"][footnoteId] = {"label": label, "count": 0}
- state.env["footnotes"]["refs"][":" + label] = footnoteId
+ if footnote_data["refs"].get(":" + label, -1) < 0:
+ footnoteId = len(footnote_data["list"])
+ footnote_data["list"][footnoteId] = {"label": label, "count": 0}
+ footnote_data["refs"][":" + label] = footnoteId
else:
- footnoteId = state.env["footnotes"]["refs"][":" + label]
+ footnoteId = footnote_data["refs"][":" + label]
- footnoteSubId = state.env["footnotes"]["list"][footnoteId]["count"]
- state.env["footnotes"]["list"][footnoteId]["count"] += 1
+ footnoteSubId = footnote_data["list"][footnoteId]["count"]
+ footnote_data["list"][footnoteId]["count"] += 1
token = state.push("footnote_ref", "", 0)
token.meta = {"id": footnoteId, "subId": footnoteSubId, "label": label}
@@ -270,7 +310,7 @@
if "footnotes" not in state.env:
return
- current: List[Token] = []
+ current: list[Token] = []
tok_filter = []
for tok in state.tokens:
if tok.type == "footnote_reference_open":
@@ -290,18 +330,18 @@
if insideRef:
current.append(tok)
- tok_filter.append((not insideRef))
+ tok_filter.append(not insideRef)
state.tokens = [t for t, f in zip(state.tokens, tok_filter) if f]
- if "list" not in state.env.get("footnotes", {}):
+ footnote_data = _data_from_env(state.env)
+ if not footnote_data["list"]:
return
- foot_list = state.env["footnotes"]["list"]
token = Token("footnote_block_open", "", 1)
state.tokens.append(token)
- for i, foot_note in foot_list.items():
+ for i, foot_note in footnote_data["list"].items():
token = Token("footnote_open", "", 1)
token.meta = {"id": i, "label": foot_note.get("label", None)}
# TODO propagate line positions of original foot note
@@ -325,11 +365,11 @@
tokens.append(token)
elif "label" in foot_note:
- tokens = refTokens[":" + foot_note["label"]]
+ tokens = refTokens.get(":" + foot_note["label"], [])
state.tokens.extend(tokens)
if state.tokens[len(state.tokens) - 1].type == "paragraph_close":
- lastParagraph: Optional[Token] = state.tokens.pop()
+ lastParagraph: Token | None = state.tokens.pop()
else:
lastParagraph = None
@@ -482,4 +522,4 @@
ident += ":" + str(tokens[idx].meta["subId"])
# ↩ with escape code to prevent display as Apple Emoji on iOS
- return ' <a href="#fnref' + ident + '" class="footnote-backref">\u21a9\uFE0E</a>'
+ return ' <a href="#fnref' + ident + '" class="footnote-backref">\u21a9\ufe0e</a>'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/front_matter/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/front_matter/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/front_matter/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/front_matter/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1 +1,3 @@
-from .index import front_matter_plugin # noqa: F401
+from .index import front_matter_plugin
+
+__all__ = ("front_matter_plugin",)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/front_matter/index.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/front_matter/index.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/front_matter/index.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/front_matter/index.py 2024-05-12 22:13:45.000000000 +0200
@@ -1,4 +1,5 @@
"""Process front matter."""
+
from markdown_it import MarkdownIt
from markdown_it.rules_block import StateBlock
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/myst_blocks/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/myst_blocks/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/myst_blocks/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/myst_blocks/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1 +1,3 @@
-from .index import myst_block_plugin # noqa: F401
+from .index import myst_block_plugin
+
+__all__ = ("myst_block_plugin",)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/myst_role/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/myst_role/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/myst_role/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/myst_role/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1 +1,3 @@
-from .index import myst_role_plugin # noqa: F401
+from .index import myst_role_plugin
+
+__all__ = ("myst_role_plugin",)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/texmath/__init__.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/texmath/__init__.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/texmath/__init__.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/texmath/__init__.py 2024-05-12 22:13:45.000000000 +0200
@@ -1 +1,3 @@
-from .index import texmath_plugin # noqa F401
+from .index import texmath_plugin
+
+__all__ = ("texmath_plugin",)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/mdit_py_plugins/texmath/index.py new/mdit-py-plugins-0.4.1/mdit_py_plugins/texmath/index.py
--- old/mdit-py-plugins-0.4.0/mdit_py_plugins/texmath/index.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/mdit_py_plugins/texmath/index.py 2024-05-12 22:13:45.000000000 +0200
@@ -228,7 +228,7 @@
"rex": re.compile(
r"^`{3}math\s+?([^`]+?)\s+?`{3}\s*?\(([^)$\r\n]+?)\)", re.M
),
- "tmpl": '<section class="eqno">\n<eqn>{0}</eqn><span>({1})</span>\n</section>\n', # noqa: E501
+ "tmpl": '<section class="eqno">\n<eqn>{0}</eqn><span>({1})</span>\n</section>\n',
"tag": "```math",
},
{
@@ -328,7 +328,7 @@
{
"name": "math_block_eqno",
"rex": re.compile(r"^\${2}([^$]*?)\${2}\s*?\(([^)$\r\n]+?)\)", re.M),
- "tmpl": '<section class="eqno">\n<eqn>{0}</eqn><span>({1})</span>\n</section>\n', # noqa: E501
+ "tmpl": '<section class="eqno">\n<eqn>{0}</eqn><span>({1})</span>\n</section>\n',
"tag": "$$",
},
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/pyproject.toml new/mdit-py-plugins-0.4.1/pyproject.toml
--- old/mdit-py-plugins-0.4.0/pyproject.toml 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/pyproject.toml 2024-05-12 22:13:45.000000000 +0200
@@ -18,6 +18,7 @@
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries :: Python Modules",
@@ -53,15 +54,30 @@
"tests/",
]
-[tool.isort]
-profile = "black"
-force_sort_within_sections = true
-known_first_party = ["mdit_py_plugins", "tests"]
-
-[tool.ruff]
-line-length = 110
-extend-select = ["B0", "C4", "ICN", "ISC", "N", "RUF", "SIM"]
-extend-ignore = ["E731", "N802", "N803", "N806"]
+[tool.ruff.lint]
+extend-select = [
+ "B", # flake8-bugbear
+ "C4", # flake8-comprehensions
+ "I", # isort
+ "ICN", # flake8-import-conventions
+ "ISC", # flake8-implicit-str-concat
+ "N", # pep8-naming
+ "PERF", # perflint (performance anti-patterns)
+ "PGH", # pygrep-hooks
+ "PIE", # flake8-pie
+ "PTH", # flake8-use-pathlib
+ "RUF", # Ruff-specific rules
+ "SIM", # flake8-simplify
+ "UP", # pyupgrade
+ "T20", # flake8-print
+]
+extend-ignore = ["ISC001", "N802", "N803", "N806"]
+
+[tool.ruff.lint.per-file-ignores]
+"tests/**.py" = ["T201"]
+
+[tool.ruff.lint.isort]
+force-sort-within-sections = true
[tool.mypy]
show_error_codes = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/tests/fixtures/admon.md new/mdit-py-plugins-0.4.1/tests/fixtures/admon.md
--- old/mdit-py-plugins-0.4.0/tests/fixtures/admon.md 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/tests/fixtures/admon.md 2024-05-12 22:13:45.000000000 +0200
@@ -53,6 +53,32 @@
.
+Removes extra quotes from the title
+.
+!!! danger "Don't try this at home"
+ ...
+
+.
+<div class="admonition danger">
+<p class="admonition-title">Don't try this at home</p>
+<p>...</p>
+</div>
+.
+
+
+Parse additional classes to support Python markdown (https://github.com/executablebooks/mdit-py-plugins/issues/93#issuecomment-1…)
+.
+!!! a b c d inline-classes "Note: note about "foo""
+ ...
+
+.
+<div class="admonition a b c d inline-classes">
+<p class="admonition-title">Note: note about "foo"</p>
+<p>...</p>
+</div>
+.
+
+
Closes block after 2 empty lines
.
!!! note
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/tests/fixtures/footnote.md new/mdit-py-plugins-0.4.1/tests/fixtures/footnote.md
--- old/mdit-py-plugins-0.4.0/tests/fixtures/footnote.md 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/tests/fixtures/footnote.md 2024-05-12 22:13:45.000000000 +0200
@@ -372,3 +372,23 @@
</ol>
</section>
.
+
+refs with no definition standard
+.
+[^1] [^1]
+.
+<p>[^1] [^1]</p>
+.
+
+refs with no definition, ALWAYS_MATCH-REFS
+.
+[^1] [^1]
+.
+<p><sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> <sup class="footnote-ref"><a href="#fn1" id="fnref1:1">[1:1]</a></sup></p>
+<hr class="footnotes-sep">
+<section class="footnotes">
+<ol class="footnotes-list">
+<li id="fn1" class="footnote-item"> <a href="#fnref1" class="footnote-backref">↩︎</a> <a href="#fnref1:1" class="footnote-backref">↩︎</a></li>
+</ol>
+</section>
+.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/tests/test_footnote.py new/mdit-py-plugins-0.4.1/tests/test_footnote.py
--- old/mdit-py-plugins-0.4.0/tests/test_footnote.py 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/tests/test_footnote.py 2024-05-12 22:13:45.000000000 +0200
@@ -96,7 +96,7 @@
"hidden": False,
},
]
- assert state.env == {"footnotes": {"refs": {":a": -1}}}
+ assert state.env == {"footnotes": {"refs": {":a": -1}, "list": {}}}
def test_footnote_ref():
@@ -188,89 +188,79 @@
tokens = [
Token(
- **{
- "type": "footnote_reference_open",
- "tag": "",
- "nesting": 1,
- "attrs": None,
- "map": None,
- "level": 0,
- "children": None,
- "content": "",
- "markup": "",
- "info": "",
- "meta": {"label": "a"},
- "block": False,
- "hidden": False,
- }
- ),
- Token(
- **{
- "type": "paragraph_open",
- "tag": "p",
- "nesting": 1,
- "attrs": None,
- "map": [0, 1],
- "level": 1,
- "children": None,
- "content": "",
- "markup": "",
- "info": "",
- "meta": {},
- "block": True,
- "hidden": False,
- }
- ),
- Token(
- **{
- "type": "inline",
- "tag": "",
- "nesting": 0,
- "attrs": None,
- "map": [0, 1],
- "level": 2,
- "children": [],
- "content": "xyz",
- "markup": "",
- "info": "",
- "meta": {},
- "block": True,
- "hidden": False,
- }
- ),
- Token(
- **{
- "type": "paragraph_close",
- "tag": "p",
- "nesting": -1,
- "attrs": None,
- "map": None,
- "level": 1,
- "children": None,
- "content": "",
- "markup": "",
- "info": "",
- "meta": {},
- "block": True,
- "hidden": False,
- }
- ),
- Token(
- **{
- "type": "footnote_reference_close",
- "tag": "",
- "nesting": -1,
- "attrs": None,
- "map": None,
- "level": 0,
- "children": None,
- "content": "",
- "markup": "",
- "info": "",
- "meta": {},
- "block": False,
- "hidden": False,
- }
+ type="footnote_reference_open",
+ tag="",
+ nesting=1,
+ attrs=None,
+ map=None,
+ level=0,
+ children=None,
+ content="",
+ markup="",
+ info="",
+ meta={"label": "a"},
+ block=False,
+ hidden=False,
+ ),
+ Token(
+ type="paragraph_open",
+ tag="p",
+ nesting=1,
+ attrs=None,
+ map=[0, 1],
+ level=1,
+ children=None,
+ content="",
+ markup="",
+ info="",
+ meta={},
+ block=True,
+ hidden=False,
+ ),
+ Token(
+ type="inline",
+ tag="",
+ nesting=0,
+ attrs=None,
+ map=[0, 1],
+ level=2,
+ children=[],
+ content="xyz",
+ markup="",
+ info="",
+ meta={},
+ block=True,
+ hidden=False,
+ ),
+ Token(
+ type="paragraph_close",
+ tag="p",
+ nesting=-1,
+ attrs=None,
+ map=None,
+ level=1,
+ children=None,
+ content="",
+ markup="",
+ info="",
+ meta={},
+ block=True,
+ hidden=False,
+ ),
+ Token(
+ type="footnote_reference_close",
+ tag="",
+ nesting=-1,
+ attrs=None,
+ map=None,
+ level=0,
+ children=None,
+ content="",
+ markup="",
+ info="",
+ meta={},
+ block=False,
+ hidden=False,
),
Token("other", "", 0),
]
@@ -443,14 +433,16 @@
</li>
</ol>
</section>
- """ # noqa: E501
+ """
)
)
@pytest.mark.parametrize("line,title,input,expected", read_fixture_file(FIXTURE_PATH))
def test_all(line, title, input, expected):
- md = MarkdownIt("commonmark").use(footnote_plugin)
+ md = MarkdownIt().use(
+ footnote_plugin, always_match_refs="ALWAYS_MATCH-REFS" in title
+ )
if "DISABLE-CODEBLOCKS" in title:
md.disable("code")
md.options["xhtmlOut"] = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mdit-py-plugins-0.4.0/tox.ini new/mdit-py-plugins-0.4.1/tox.ini
--- old/mdit-py-plugins-0.4.0/tox.ini 2023-06-05 21:25:03.000000000 +0200
+++ new/mdit-py-plugins-0.4.1/tox.ini 2024-05-12 22:13:45.000000000 +0200
@@ -9,7 +9,7 @@
[testenv]
usedevelop = true
-[testenv:py{37,38,39,310,311}]
+[testenv:py{38,39,310,311,312}]
extras = testing
commands = pytest {posargs}
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-jsonpickle for openSUSE:Factory checked in at 2024-07-01 11:21:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jsonpickle (Old)
and /work/SRC/openSUSE:Factory/.python-jsonpickle.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jsonpickle"
Mon Jul 1 11:21:44 2024 rev:18 rq:1184137 version:3.2.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jsonpickle/python-jsonpickle.changes 2024-06-19 16:41:19.115512821 +0200
+++ /work/SRC/openSUSE:Factory/.python-jsonpickle.new.18349/python-jsonpickle.changes 2024-07-01 11:22:35.659916240 +0200
@@ -1,0 +2,16 @@
+Sun Jun 30 20:34:24 UTC 2024 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 3.2.2:
+ * A bug with the incorrect (de)serialization of NoneType
+ objects has been fixed. (+507)
+ * tests/benchmark.py was updated to avoid Python 2 syntax.
+ (+508)
+ * The unpickler was updated to avoid creating temporary
+ functions. (+508)
+ * Some basic scripts have been made to analyze benchmark
+ results. (+511)
+ * Fix test suite compatibility with Numpy 2.x (+512)
+ * setup.cfg was updated to use license_files instead of
+ license_file.
+
+-------------------------------------------------------------------
Old:
----
jsonpickle-3.2.1.tar.gz
New:
----
jsonpickle-3.2.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jsonpickle.spec ++++++
--- /var/tmp/diff_new_pack.w65CkK/_old 2024-07-01 11:22:36.263938101 +0200
+++ /var/tmp/diff_new_pack.w65CkK/_new 2024-07-01 11:22:36.267938246 +0200
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-jsonpickle
-Version: 3.2.1
+Version: 3.2.2
Release: 0
Summary: Python library for serializing any arbitrary object graph into JSON
License: BSD-3-Clause
++++++ jsonpickle-3.2.1.tar.gz -> jsonpickle-3.2.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/.gitignore new/jsonpickle-3.2.2/.gitignore
--- old/jsonpickle-3.2.1/.gitignore 2024-04-06 12:12:12.000000000 +0200
+++ new/jsonpickle-3.2.2/.gitignore 2024-06-20 06:57:29.000000000 +0200
@@ -23,3 +23,6 @@
# Local benchmarking files for Theelx
kern*.py
*.lprof
+benchmark-*.json
+perf.csv
+perf.svg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/CHANGES.rst new/jsonpickle-3.2.2/CHANGES.rst
--- old/jsonpickle-3.2.1/CHANGES.rst 2024-06-09 09:25:11.000000000 +0200
+++ new/jsonpickle-3.2.2/CHANGES.rst 2024-06-20 07:06:23.000000000 +0200
@@ -1,3 +1,13 @@
+v3.2.2
+======
+ * A bug with the incorrect (de)serialization of NoneType objects has been fixed.
+ (+507)
+ * ``tests/benchmark.py`` was updated to avoid Python 2 syntax. (+508)
+ * The unpickler was updated to avoid creating temporary functions. (+508)
+ * Some basic scripts have been made to analyze benchmark results. (+511)
+ * Fix test suite compatibility with Numpy 2.x (+512)
+ * `setup.cfg` was updated to use `license_files` instead of `license_file`.
+
v3.2.1
======
* The ``ignorereserved`` parameter to the private ``_restore_from_dict()``
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/PKG-INFO new/jsonpickle-3.2.2/PKG-INFO
--- old/jsonpickle-3.2.1/PKG-INFO 2024-06-09 09:27:31.694953200 +0200
+++ new/jsonpickle-3.2.2/PKG-INFO 2024-06-20 07:09:03.596748000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: jsonpickle
-Version: 3.2.1
+Version: 3.2.2
Summary: Python library for serializing arbitrary object graphs into JSON
Home-page: https://github.com/jsonpickle/jsonpickle
Author: David Aguilar
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/SECURITY.md new/jsonpickle-3.2.2/SECURITY.md
--- old/jsonpickle-3.2.1/SECURITY.md 1970-01-01 01:00:00.000000000 +0100
+++ new/jsonpickle-3.2.2/SECURITY.md 2024-06-12 11:01:01.000000000 +0200
@@ -0,0 +1,55 @@
+# Security Policy
+
+## Security contact information
+
+To report a security vulnerability, please use the
+[Tidelift security contact](https://tidelift.com/security).
+Tidelift will coordinate the fix and disclosure.
+
+## Reporting a vulnerability
+
+Even when unsure whether the bug in question is an exploitable
+vulnerability, it is recommended to send the report and not to
+discuss the issue anywhere else.
+
+Vulnerabilities are expected to be discussed _only_ via email,
+and not in public, until an official release to address the
+vulnerability is available.
+
+Examples for details to include:
+
+- Ideally a short description (or a script) to demonstrate an
+ exploit.
+- The affected platforms and scenarios.
+- The name and affiliation of the security researchers who are
+ involved in the discovery, if any.
+- Whether the vulnerability has already been disclosed.
+- How long an embargo would be required to be safe.
+
+## Supported Versions
+
+There are no official "Long Term Support" versions in jsonpickle.
+Instead, the maintenance track (i.e. the versions based on the
+most recently published feature release, also known as ".0"
+version) sees occasional updates with bug fixes.
+
+Fixes to vulnerabilities are made for the maintenance track for
+the latest feature release. The jsonpickle project makes no formal
+guarantee for any older maintenance tracks to receive updates.
+In practice, though, critical vulnerability fixes can be applied not
+only to the most recent track, but to at least a couple more
+maintenance tracks if requested by users.
+
+## Security
+
+The jsonpickle module **is not secure**. Only unpickle data you trust.
+
+It is possible to construct malicious pickle data which will **execute
+arbitrary code during unpickling**. Never unpickle data that could have come
+from an untrusted source, or that could have been tampered with.
+
+Consider signing data with an HMAC if you need to ensure that it has not
+been tampered with.
+
+Safer deserialization approaches, such as reading JSON directly,
+may be more appropriate if you are processing untrusted data.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/benchmarking/analyze_benchmarks.py new/jsonpickle-3.2.2/benchmarking/analyze_benchmarks.py
--- old/jsonpickle-3.2.1/benchmarking/analyze_benchmarks.py 1970-01-01 01:00:00.000000000 +0100
+++ new/jsonpickle-3.2.2/benchmarking/analyze_benchmarks.py 2024-06-20 06:57:29.000000000 +0200
@@ -0,0 +1,63 @@
+import csv
+
+# makes math far easier
+import numpy as np
+
+
+def filter_results_by_name(results, substr):
+ perfs = []
+ for name, perf in results.items():
+ if substr in name:
+ perfs.append(perf)
+ return np.array(perfs)
+
+
+def main():
+ # using dicts seems easier at first but we'd have to eventually convert
+ # to a list for easy elementwise division or use an ugly loop
+ funcs = []
+ main = []
+ new = []
+
+ with open("perf.csv", "r") as f:
+ csv_reader = csv.reader(f)
+ # skip header row
+ next(csv_reader)
+
+ # csv is sorted by name so we can assume even rows are main and odd are new
+ for indx, (func, median) in enumerate(csv_reader):
+ func = func.split("::")[-1]
+ # indx is even
+ if not (indx % 2):
+ funcs.append(func)
+ main.append(float(median))
+ else:
+ new.append(float(median))
+
+ main = np.array(main)
+ new = np.array(new)
+
+ relative_perfs = new / main
+ # more stats will be included when needed
+ print(
+ f"The new branch is {round(relative_perfs.mean(), 4)}x faster than the main branch aross all tests!"
+ )
+
+ results = {}
+
+ for func_name, relative_perf in zip(funcs, relative_perfs):
+ # this allows us to categorize classes of results, such as encode vs decode
+ results[func_name] = relative_perf
+
+ encode_perfs = filter_results_by_name(results, "encode")
+ decode_perfs = filter_results_by_name(results, "decode")
+ print(
+ f"The new branch is {round(encode_perfs.mean(), 4)}x faster than the main branch aross encode tests!"
+ )
+ print(
+ f"The new branch is {round(decode_perfs.mean(), 4)}x faster than the main branch aross decode tests!"
+ )
+
+
+if __name__ == "__main__":
+ main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/benchmarking/analyze_benchmarks.sh new/jsonpickle-3.2.2/benchmarking/analyze_benchmarks.sh
--- old/jsonpickle-3.2.1/benchmarking/analyze_benchmarks.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/jsonpickle-3.2.2/benchmarking/analyze_benchmarks.sh 2024-06-20 06:57:29.000000000 +0200
@@ -0,0 +1,10 @@
+#!/bin/bash
+DATEANDTIME=$(date +%Y-%m-%dT%T%z)
+pytest --benchmark-only --benchmark-disable-gc --benchmark-json=./benchmark-new.json --benchmark-histogram=../images/benchmark-$DATEANDTIME ../jsonpickle_benchmarks.py
+# assuming the user is doing work in a different branch than main
+git checkout main
+pytest --benchmark-only --benchmark-disable-gc --benchmark-json=./benchmark-main.json --benchmark-histogram=../images/benchmark-$DATEANDTIME ../jsonpickle_benchmarks.py
+# return to previous branch
+git checkout -
+pytest-benchmark compare --columns=median --name=long --sort=fullname --csv=perf --histogram=perf benchmark-main.json benchmark-new.json
+python3 analyze_benchmarks.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/jsonpickle/unpickler.py new/jsonpickle-3.2.2/jsonpickle/unpickler.py
--- old/jsonpickle-3.2.1/jsonpickle/unpickler.py 2024-06-09 09:24:22.000000000 +0200
+++ new/jsonpickle-3.2.2/jsonpickle/unpickler.py 2024-06-20 06:57:22.000000000 +0200
@@ -208,6 +208,9 @@
return obj
except (AttributeError, ImportError, ValueError):
continue
+ # NoneType is a special case and can not be imported/created
+ if module_and_name == "builtins.NoneType":
+ return type(None)
return None
@@ -306,6 +309,11 @@
return tag in obj
+def _passthrough(value):
+ """A function that returns its input as-is"""
+ return value
+
+
class Unpickler(object):
def __init__(
self,
@@ -347,14 +355,11 @@
method(obj, attr, proxy)
self._proxies = []
- def _restore(self, obj):
+ def _restore(self, obj, _passthrough=_passthrough):
# if obj isn't in these types, neither it nor nothing in it can have a tag
# don't change the tuple of types to a set, it won't work with isinstance
if not isinstance(obj, (str, list, dict, set, tuple)):
-
- def restore(x):
- return x
-
+ restore = _passthrough
else:
restore = self._restore_tags(obj)
return restore(obj)
@@ -586,7 +591,7 @@
)
return key
- def _restore_key_fn(self):
+ def _restore_key_fn(self, _passthrough=_passthrough):
"""Return a callable that restores keys
This function is responsible for restoring non-string keys
@@ -601,10 +606,7 @@
if self.keys:
restore_key = self._restore_pickled_key
else:
-
- def restore_key(key):
- return key
-
+ restore_key = _passthrough
return restore_key
def _restore_from_dict(
@@ -867,15 +869,11 @@
def _restore_tuple(self, obj):
return tuple([self._restore(v) for v in obj[tags.TUPLE]])
- def _restore_tags(self, obj):
+ def _restore_tags(self, obj, _passthrough=_passthrough):
"""Return the restoration function for the specified object"""
try:
if not tags.RESERVED <= set(obj) and type(obj) not in (list, dict):
-
- def restore(x):
- return x
-
- return restore
+ return _passthrough
except TypeError:
pass
if type(obj) is dict:
@@ -906,8 +904,5 @@
elif util.is_list(obj):
restore = self._restore_list
else:
-
- def restore(x):
- return x
-
+ restore = _passthrough
return restore
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/jsonpickle.egg-info/PKG-INFO new/jsonpickle-3.2.2/jsonpickle.egg-info/PKG-INFO
--- old/jsonpickle-3.2.1/jsonpickle.egg-info/PKG-INFO 2024-06-09 09:27:31.000000000 +0200
+++ new/jsonpickle-3.2.2/jsonpickle.egg-info/PKG-INFO 2024-06-20 07:09:03.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: jsonpickle
-Version: 3.2.1
+Version: 3.2.2
Summary: Python library for serializing arbitrary object graphs into JSON
Home-page: https://github.com/jsonpickle/jsonpickle
Author: David Aguilar
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/jsonpickle.egg-info/SOURCES.txt new/jsonpickle-3.2.2/jsonpickle.egg-info/SOURCES.txt
--- old/jsonpickle-3.2.1/jsonpickle.egg-info/SOURCES.txt 2024-06-09 09:27:31.000000000 +0200
+++ new/jsonpickle-3.2.2/jsonpickle.egg-info/SOURCES.txt 2024-06-20 07:09:03.000000000 +0200
@@ -8,6 +8,7 @@
LICENSE
Makefile
README.rst
+SECURITY.md
appveyor.yml
azure-pipelines.yml
conftest.py
@@ -22,6 +23,8 @@
.github/FUNDING.yml
.github/workflows/lint.yml
.github/workflows/test.yml
+benchmarking/analyze_benchmarks.py
+benchmarking/analyze_benchmarks.sh
contrib/copy-docs
contrib/pyqt-reduce-handler.py
docs/api.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/setup.cfg new/jsonpickle-3.2.2/setup.cfg
--- old/jsonpickle-3.2.1/setup.cfg 2024-06-09 09:27:31.694953200 +0200
+++ new/jsonpickle-3.2.2/setup.cfg 2024-06-20 07:09:03.596748000 +0200
@@ -1,5 +1,5 @@
[metadata]
-license_file = LICENSE
+license_files = LICENSE
name = jsonpickle
author = David Aguilar
author_email = davvid(a)gmail.com
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/tests/benchmark.py new/jsonpickle-3.2.2/tests/benchmark.py
--- old/jsonpickle-3.2.1/tests/benchmark.py 2023-03-26 10:31:27.000000000 +0200
+++ new/jsonpickle-3.2.2/tests/benchmark.py 2024-06-12 11:01:01.000000000 +0200
@@ -23,7 +23,7 @@
pickled = jsonpickle.encode(doc)
unpickled = jsonpickle.decode(pickled)
if doc['feed']['title'] != unpickled['feed']['title']:
- print 'Not a match'
+ print('Not a match')
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/tests/jsonpickle_test.py new/jsonpickle-3.2.2/tests/jsonpickle_test.py
--- old/jsonpickle-3.2.1/tests/jsonpickle_test.py 2024-06-09 06:39:15.000000000 +0200
+++ new/jsonpickle-3.2.2/tests/jsonpickle_test.py 2024-06-12 11:01:01.000000000 +0200
@@ -257,6 +257,12 @@
self.assertEqual(listD, self.pickler.flatten(listD))
self.assertEqual(listD, self.unpickler.restore(listD))
+ def test_nonetype(self):
+ typ = type(None)
+ typ_pickled = jsonpickle.encode(typ)
+ typ_unpickled = jsonpickle.decode(typ_pickled)
+ self.assertEqual(typ, typ_unpickled)
+
def test_set(self):
setlist = ['orange', 'apple', 'grape']
setA = set(setlist)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/tests/numpy_test.py new/jsonpickle-3.2.2/tests/numpy_test.py
--- old/jsonpickle-3.2.1/tests/numpy_test.py 2024-04-11 11:22:13.000000000 +0200
+++ new/jsonpickle-3.2.2/tests/numpy_test.py 2024-06-12 11:01:01.000000000 +0200
@@ -32,9 +32,7 @@
dtypes = [
np.int_,
np.int32,
- np.float_,
np.float64,
- np.complex_,
np.complex128,
np.str_,
np.object_,
@@ -86,15 +84,14 @@
values = [
np.int_(1),
np.int32(-2),
- np.float_(2.5),
+ np.float64(2.5),
np.nan,
-np.inf,
np.inf,
np.datetime64('2014-01-01'),
np.str_('foo'),
- np.unicode_('bar'),
np.object_({'a': 'b'}),
- np.complex_(1 - 2j),
+ np.complex128(1 - 2j),
]
for value in values:
decoded = roundtrip(value)
@@ -309,18 +306,22 @@
def test_byteorder():
"""Test the byteorder for text and binary encodings"""
# small arr is stored as text
- a = np.arange(10).newbyteorder()
- b = a[:].newbyteorder()
- _a, _b = roundtrip([a, b])
- npt.assert_array_equal(a, _a)
- npt.assert_array_equal(b, _b)
+ a = np.arange(10)
+ av = a.view(a.dtype.newbyteorder())
+ b = a[:]
+ bv = b.view(b.dtype.newbyteorder())
+ _av, _bv = roundtrip([av, bv])
+ npt.assert_array_equal(av, _av)
+ npt.assert_array_equal(bv, _bv)
# bigger arr is stored as binary
- a = np.arange(100).newbyteorder()
- b = a[:].newbyteorder()
- _a, _b = roundtrip([a, b])
- npt.assert_array_equal(a, _a)
- npt.assert_array_equal(b, _b)
+ a = np.arange(100)
+ av = a.view(a.dtype.newbyteorder())
+ b = a[:]
+ bv = b.view(b.dtype.newbyteorder())
+ _av, _bv = roundtrip([av, bv])
+ npt.assert_array_equal(av, _av)
+ npt.assert_array_equal(bv, _bv)
def test_zero_dimensional_array():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonpickle-3.2.1/tests/pandas_test.py new/jsonpickle-3.2.2/tests/pandas_test.py
--- old/jsonpickle-3.2.1/tests/pandas_test.py 2024-04-09 09:51:24.000000000 +0200
+++ new/jsonpickle-3.2.2/tests/pandas_test.py 2024-06-12 11:01:01.000000000 +0200
@@ -34,14 +34,13 @@
ser = pd.Series(
{
'an_int': np.int_(1),
- 'a_float': np.float_(2.5),
+ 'a_float': np.float64(2.5),
'a_nan': np.nan,
'a_minus_inf': -np.inf,
'an_inf': np.inf,
'a_str': np.str_('foo'),
- 'a_unicode': np.unicode_('bar'),
'date': np.datetime64('2014-01-01'),
- 'complex': np.complex_(1 - 2j),
+ 'complex': np.complex128(1 - 2j),
# TODO: the following dtypes are not currently supported.
# 'object': np.object_({'a': 'b'}),
}
@@ -54,14 +53,13 @@
df = pd.DataFrame(
{
'an_int': np.int_([1, 2, 3]),
- 'a_float': np.float_([2.5, 3.5, 4.5]),
+ 'a_float': np.float64([2.5, 3.5, 4.5]),
'a_nan': np.array([np.nan] * 3),
'a_minus_inf': np.array([-np.inf] * 3),
'an_inf': np.array([np.inf] * 3),
'a_str': np.str_('foo'),
- 'a_unicode': np.unicode_('bar'),
'date': np.array([np.datetime64('2014-01-01')] * 3, dtype="datetime64[s]"),
- 'complex': np.complex_([1 - 2j, 2 - 1.2j, 3 - 1.3j]),
+ 'complex': np.complex128([1 - 2j, 2 - 1.2j, 3 - 1.3j]),
# TODO: the following dtypes are not currently supported.
# 'object': np.object_([{'a': 'b'}]*3),
}
@@ -76,12 +74,11 @@
'idx_lvl0': ['a', 'b', 'c'],
'idx_lvl1': np.int_([1, 1, 2]),
'an_int': np.int_([1, 2, 3]),
- 'a_float': np.float_([2.5, 3.5, 4.5]),
+ 'a_float': np.float64([2.5, 3.5, 4.5]),
'a_nan': np.array([np.nan] * 3),
'a_minus_inf': np.array([-np.inf] * 3),
'an_inf': np.array([np.inf] * 3),
'a_str': np.str_('foo'),
- 'a_unicode': np.unicode_('bar'),
}
)
df = df.set_index(['idx_lvl0', 'idx_lvl1'])
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-icalendar for openSUSE:Factory checked in at 2024-07-01 11:21:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-icalendar (Old)
and /work/SRC/openSUSE:Factory/.python-icalendar.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-icalendar"
Mon Jul 1 11:21:43 2024 rev:37 rq:1184136 version:5.0.13
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-icalendar/python-icalendar.changes 2024-03-25 21:09:46.868670261 +0100
+++ /work/SRC/openSUSE:Factory/.python-icalendar.new.18349/python-icalendar.changes 2024-07-01 11:22:33.907852831 +0200
@@ -1,0 +2,13 @@
+Sun Jun 30 20:33:27 UTC 2024 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 5.0.13:
+ * Guide to delete the build folder before running tests
+ * Make documentation build with Python 3.12
+ * Update windows to olson conversion for Greenland Standard
+ Time
+ * Extend examples in Usage with alarm and recurrence
+ * Document how to serve the built documentation to view with
+ the browser
+ * Improve test coverage
+
+-------------------------------------------------------------------
Old:
----
icalendar-5.0.12.tar.gz
New:
----
icalendar-5.0.13.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-icalendar.spec ++++++
--- /var/tmp/diff_new_pack.FjU0sH/_old 2024-07-01 11:22:34.527875270 +0200
+++ /var/tmp/diff_new_pack.FjU0sH/_new 2024-07-01 11:22:34.531875414 +0200
@@ -21,7 +21,7 @@
%define modname icalendar
%{?sle15_python_module_pythons}
Name: python-%{modname}
-Version: 5.0.12
+Version: 5.0.13
Release: 0
Summary: Python parser/generator of iCalendar files package
License: BSD-2-Clause
++++++ icalendar-5.0.12.tar.gz -> icalendar-5.0.13.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/CHANGES.rst new/icalendar-5.0.13/CHANGES.rst
--- old/icalendar-5.0.12/CHANGES.rst 2024-03-19 23:10:33.000000000 +0100
+++ new/icalendar-5.0.13/CHANGES.rst 2024-06-20 15:14:34.000000000 +0200
@@ -1,11 +1,38 @@
Changelog
=========
+5.0.13 (2024-06-20)
+-------------------
+
+Minor changes:
+
+- Guide to delete the build folder before running tests
+- Add funding information
+- Make documentation build with Python 3.12
+- Update windows to olson conversion for Greenland Standard Time
+- Extend examples in Usage with alarm and recurrence
+- Document how to serve the built documentation to view with the browser
+- Improve test coverage
+
+Breaking changes:
+
+- ...
+
+New features:
+
+- Create GitHub releases for each tag.
+
+Bug fixes:
+
+- Parse calendars with X-COMMENT properties at the end the file by ignoring these properites
+
+
5.0.12 (2024-03-19)
-------------------
Minor changes:
+- Analyse code coverage of test files
- Added corpus to fuzzing directory
- Added exclusion of fuzzing corpus in MANIFEST.in
- Augmented fuzzer to optionally convert multiple calendars from a source string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/PKG-INFO new/icalendar-5.0.13/PKG-INFO
--- old/icalendar-5.0.12/PKG-INFO 2024-03-19 23:10:41.881808500 +0100
+++ new/icalendar-5.0.13/PKG-INFO 2024-06-20 15:14:42.737296600 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: icalendar
-Version: 5.0.12
+Version: 5.0.13
Summary: iCalendar parser/generator
Home-page: https://github.com/collective/icalendar
Author: Plone Foundation
@@ -148,11 +148,38 @@
Changelog
=========
+5.0.13 (2024-06-20)
+-------------------
+
+Minor changes:
+
+- Guide to delete the build folder before running tests
+- Add funding information
+- Make documentation build with Python 3.12
+- Update windows to olson conversion for Greenland Standard Time
+- Extend examples in Usage with alarm and recurrence
+- Document how to serve the built documentation to view with the browser
+- Improve test coverage
+
+Breaking changes:
+
+- ...
+
+New features:
+
+- Create GitHub releases for each tag.
+
+Bug fixes:
+
+- Parse calendars with X-COMMENT properties at the end the file by ignoring these properites
+
+
5.0.12 (2024-03-19)
-------------------
Minor changes:
+- Analyse code coverage of test files
- Added corpus to fuzzing directory
- Added exclusion of fuzzing corpus in MANIFEST.in
- Augmented fuzzer to optionally convert multiple calendars from a source string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/docs/credits.rst new/icalendar-5.0.13/docs/credits.rst
--- old/icalendar-5.0.12/docs/credits.rst 2024-03-19 23:10:33.000000000 +0100
+++ new/icalendar-5.0.13/docs/credits.rst 2024-06-20 15:14:34.000000000 +0200
@@ -68,10 +68,11 @@
- Michał Górny <mgorny(a)gentoo.org>
- Pronoy <lukex9442(a)gmail.com>
- Abe Hanoka <abe(a)habet.dev>
-- `Natasha Mattson <https://github.com/natashamm`_
+- `Natasha Mattson <https://github.com/natashamm>`_
- `NikEasY <https://github.com/NikEasY>`_
- Matt Lewis <git(a)semiprime.com>
- Felix Stupp <felix.stupp(a)banananet.work>
+- Bastian Wegge <wegge(a)crossbow.de>
Find out who contributed::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/docs/install.rst new/icalendar-5.0.13/docs/install.rst
--- old/icalendar-5.0.12/docs/install.rst 2024-03-19 23:10:33.000000000 +0100
+++ new/icalendar-5.0.13/docs/install.rst 2024-06-20 15:14:34.000000000 +0200
@@ -112,10 +112,10 @@
Type "help", "copyright", "credits" or "license" for more information.
>>> import icalendar
>>> icalendar.__version__
- '5.0.12'
+ '5.0.13'
-Building the documentation locally
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Building the documentation
+--------------------------
To build the documentation follow these steps:
@@ -136,3 +136,10 @@
cd icalendar
tox -e docs
+
+If you would like to serve the documentation and access it from your browser,
+you can run the HTTP server:
+
+.. code-block:: bash
+
+ python3 -m http.server -d docs/_build/html/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/docs/usage.rst new/icalendar-5.0.13/docs/usage.rst
--- old/icalendar-5.0.12/docs/usage.rst 2024-03-19 23:10:33.000000000 +0100
+++ new/icalendar-5.0.13/docs/usage.rst 2024-06-20 15:14:34.000000000 +0200
@@ -309,18 +309,38 @@
>>> cal.add_component(event)
+By extending the event with subcomponents, you can create multiple alarms::
+
+ >>> from icalendar import Alarm
+ >>> from datetime import timedelta
+ >>> alarm_1h_before = Alarm()
+ >>> alarm_1h_before.add('action', 'DISPLAY')
+ >>> alarm_1h_before.add('trigger', timedelta(hours=-1))
+ >>> alarm_1h_before.add('description', 'Reminder: Event in 1 hour')
+ >>> event.add_component(alarm_1h_before)
+
+ >>> alarm_24h_before = Alarm()
+ >>> alarm_24h_before.add('action', 'DISPLAY')
+ >>> alarm_24h_before.add('trigger', timedelta(hours=-24))
+ >>> alarm_24h_before.add('description', 'Reminder: Event in 24 hours')
+ >>> event.add_component(alarm_24h_before)
+
+Or even recurrence::
+
+ >>> event.add('rrule', {'freq': 'daily'})
+
Write to disk::
>>> import tempfile, os
>>> directory = tempfile.mkdtemp()
>>> f = open(os.path.join(directory, 'example.ics'), 'wb')
>>> f.write(cal.to_ical())
- 522
+ 733
>>> f.close()
Print out the calendar::
- >>> print(cal.to_ical().decode("utf-8")) # doctest: +NORMALIZE_WHITESPACE
+ >>> print(cal.to_ical().decode('utf-8')) # doctest: +NORMALIZE_WHITESPACE
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//My calendar product//mxm.dk//
@@ -330,11 +350,22 @@
DTEND:20050404T100000Z
DTSTAMP:20050404T001000Z
UID:20050115T101010/27346262376@mxm.dk
+ RRULE:FREQ=DAILY
ATTENDEE;CN="Max Rasmussen";ROLE=REQ-PARTICIPANT:MAILTO:maxm@example.com
ATTENDEE;CN="The Dude";ROLE=REQ-PARTICIPANT:MAILTO:the-dude@example.com
LOCATION:Odense\, Denmark
ORGANIZER;CN="Max Rasmussen";ROLE=CHAIR:MAILTO:noone@example.com
PRIORITY:5
+ BEGIN:VALARM
+ ACTION:DISPLAY
+ DESCRIPTION:Reminder: Event in 1 hour
+ TRIGGER:-PT1H
+ END:VALARM
+ BEGIN:VALARM
+ ACTION:DISPLAY
+ DESCRIPTION:Reminder: Event in 24 hours
+ TRIGGER:-P1D
+ END:VALARM
END:VEVENT
END:VCALENDAR
<BLANKLINE>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/src/icalendar/__init__.py new/icalendar-5.0.13/src/icalendar/__init__.py
--- old/icalendar-5.0.12/src/icalendar/__init__.py 2024-03-19 23:10:33.000000000 +0100
+++ new/icalendar-5.0.13/src/icalendar/__init__.py 2024-06-20 15:14:34.000000000 +0200
@@ -1,4 +1,4 @@
-__version__ = '5.0.12'
+__version__ = '5.0.13'
from icalendar.cal import (
Calendar,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/src/icalendar/cal.py new/icalendar-5.0.13/src/icalendar/cal.py
--- old/icalendar-5.0.12/src/icalendar/cal.py 2024-03-19 23:10:33.000000000 +0100
+++ new/icalendar-5.0.13/src/icalendar/cal.py 2024-06-20 15:14:34.000000000 +0200
@@ -377,7 +377,12 @@
factory = types_factory.for_property(name)
component = stack[-1] if stack else None
if not component:
- raise ValueError(f'Property "{name}" does not have a parent component.')
+ # only accept X-COMMENT at the end of the .ics file
+ # ignore these components in parsing
+ if uname == 'X-COMMENT':
+ break
+ else:
+ raise ValueError(f'Property "{name}" does not have a parent component.')
datetime_names = ('DTSTART', 'DTEND', 'RECURRENCE-ID', 'DUE',
'RDATE', 'EXDATE')
try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/src/icalendar/tests/calendars/issue_350.ics new/icalendar-5.0.13/src/icalendar/tests/calendars/issue_350.ics
--- old/icalendar-5.0.12/src/icalendar/tests/calendars/issue_350.ics 1970-01-01 01:00:00.000000000 +0100
+++ new/icalendar-5.0.13/src/icalendar/tests/calendars/issue_350.ics 2024-06-20 15:14:34.000000000 +0200
@@ -0,0 +1,36 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Podio API//EN//view-exporter//52593453
+METHOD:REQUEST
+X-WR-CALNAME:view52593586
+X-WR-TIMEZONE:Europe/Berlin
+CALSCALE:GREGORIAN
+X-COMMENT-USAGE:This calendar does not contain recurring events!
+X-COMMENT-GENERATOR:PHP Version 8.0.16
+BEGIN:VEVENT
+STATUS:CONFIRMED
+SEQUENCE:0
+TRANSP:OPAQUE
+CLASS:PUBLIC
+UID:20055546456446
+SUMMARY:Termin 4353 und"so"
+DESCRIPTION;ALTREP="data:text/html,%3Cbody%3E%3Cp%3EToller%20%3Cstron
+ g%20class%3D%22text-bold%22%3ETermin%3C%2Fstrong%3E%20f%C3%BCr%3C%2Fp
+ %3E%3Cblockquote%3E%3Cp%3Emal%20%3Cem%20class%3D%22text-italic%22%3Ez
+ u%22gucken%22%3C%2Fem%3E%3C%2Fp%3E%3C%2Fblockquote%3E%3Cp%3E%3Cu%20cl
+ ass%3D%22text-underline%22%3Eund%3C%2Fu%3E%20%3Cdel%3Eso%3C%2Fdel%3E%
+ 3Cbr%2F%3E%3C%2Fp%3E%3C%2Fbody%3E":Toller Termin fürmal zu\"gucken\"
+ und so
+X-ALT-DESC;FMTTYPE=text/html:<html><head></head><body><p>Toller <stro
+ ng class="text-bold">Termin</strong> für</p><blockquote><p>mal <em c
+ lass="text-italic">zu"gucken"</em></p></blockquote><p><u class="text-
+ underline">und</u> <del>so</del><br/></p></body></html>
+URL:https://podio.com/xxxxxxyyyyyy/zpodio-testgelande/apps/calen
+ dar/items/5
+LOCATION:online
+DTSTART:20220222T183000Z
+DTEND:20220222T193000Z
+DTSTAMP:20220220T142821Z
+END:VEVENT
+END:VCALENDAR
+X-COMMENT:Cached from 2022-02-20 14:28:21 - new at most every 1800sec.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/src/icalendar/tests/calendars/property_params.ics new/icalendar-5.0.13/src/icalendar/tests/calendars/property_params.ics
--- old/icalendar-5.0.12/src/icalendar/tests/calendars/property_params.ics 1970-01-01 01:00:00.000000000 +0100
+++ new/icalendar-5.0.13/src/icalendar/tests/calendars/property_params.ics 2024-06-20 15:14:34.000000000 +0200
@@ -0,0 +1,21 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID://RESEARCH IN MOTION//BIS 3.0
+METHOD:REQUEST
+BEGIN:VEVENT
+SEQUENCE:2
+X-RIM-REVISION:0
+SUMMARY:Test meeting from BB
+X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
+CLASS:PUBLIC
+ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="RembrandXS":MAILTO:rembrand@xs4all.nl
+ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="RembrandDX":MAILTO:rembrand@daxlab.com
+ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="RembrandSB":MAILTO:rembspam@xs4all.nl
+UID:XRIMCAL-628059586-522954492-9750559
+DTSTART;VALUE=DATE:20120814
+DTEND;VALUE=DATE:20120815
+DESCRIPTION:Test meeting from BB
+DTSTAMP:20120813T151458Z
+ORGANIZER:mailto:rembrand@daxlab.com
+END:VEVENT
+END:VCALENDAR
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/src/icalendar/tests/conftest.py new/icalendar-5.0.13/src/icalendar/tests/conftest.py
--- old/icalendar-5.0.12/src/icalendar/tests/conftest.py 2024-03-19 23:10:33.000000000 +0100
+++ new/icalendar-5.0.13/src/icalendar/tests/conftest.py 2024-06-20 15:14:34.000000000 +0200
@@ -110,6 +110,14 @@
@pytest.fixture()
+def x_sometime():
+ """Map x_sometime to time"""
+ icalendar.cal.types_factory.types_map['X-SOMETIME'] = 'time'
+ yield
+ icalendar.cal.types_factory.types_map.pop('X-SOMETIME')
+
+
+(a)pytest.fixture()
def factory():
"""Return a new component factory."""
return icalendar.ComponentFactory()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/src/icalendar/tests/test_issue_350.py new/icalendar-5.0.13/src/icalendar/tests/test_issue_350.py
--- old/icalendar-5.0.12/src/icalendar/tests/test_issue_350.py 1970-01-01 01:00:00.000000000 +0100
+++ new/icalendar-5.0.13/src/icalendar/tests/test_issue_350.py 2024-06-20 15:14:34.000000000 +0200
@@ -0,0 +1,9 @@
+'''Issue #350 - Ignore X-... properties also at end of file?
+
+ https://github.com/collective/icalendar/issues/350
+'''
+from icalendar import Calendar
+
+def test_issue_350(calendars):
+ calendar = list(calendars.issue_350.walk('X-COMMENT'))
+ assert len(calendar) == 0, "X-COMMENT at the end of the file was parsed"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/src/icalendar/tests/test_property_params.py new/icalendar-5.0.13/src/icalendar/tests/test_property_params.py
--- old/icalendar-5.0.12/src/icalendar/tests/test_property_params.py 2024-03-19 23:10:33.000000000 +0100
+++ new/icalendar-5.0.13/src/icalendar/tests/test_property_params.py 2024-06-20 15:14:34.000000000 +0200
@@ -38,17 +38,21 @@
assert parameter.to_ical() == expected
assert Parameters.from_ical(expected.decode('utf-8')) == parameter
+
def test_parse_parameter_string_without_quotes():
assert Parameters.from_ical('PARAM1=Value 1;PARA2=Value 2') == Parameters({'PARAM1': 'Value 1', 'PARA2': 'Value 2'})
+
def test_parametr_is_case_insensitive():
parameter = Parameters(parameter1='Value1')
assert parameter['parameter1'] == parameter['PARAMETER1'] == parameter['PaRaMeTer1']
+
def test_parameter_keys_are_uppercase():
parameter = Parameters(parameter1='Value1')
assert list(parameter.keys()) == ['PARAMETER1']
+
@pytest.mark.parametrize('cn_param, cn_quoted', [
# not double-quoted
('Aramis', 'Aramis'),
@@ -67,68 +71,41 @@
event.add('ATTENDEE', attendee)
assert f'ATTENDEE;CN={cn_quoted}:test@example.com' in event.to_ical().decode('utf-8')
-class TestPropertyParams(unittest.TestCase):
- def test_property_params(self):
- # Property parameters with values containing a COLON character, a
- # SEMICOLON character or a COMMA character MUST be placed in quoted
- # text.
- cal_address = vCalAddress('mailto:john.doe@example.org')
- cal_address.params["CN"] = "Doe, John"
- ical = Calendar()
- ical.add('organizer', cal_address)
-
- ical_str = Calendar.to_ical(ical)
- exp_str = b"""BEGIN:VCALENDAR\r\nORGANIZER;CN="Doe, John":"""\
- b"""mailto:john.doe@example.org\r\nEND:VCALENDAR\r\n"""
-
- self.assertEqual(ical_str, exp_str)
-
- # other way around: ensure the property parameters can be restored from
- # an icalendar string.
- ical2 = Calendar.from_ical(ical_str)
- self.assertEqual(ical2.get('ORGANIZER').params.get('CN'), 'Doe, John')
-
- def test_parse_and_access_property_params(self):
- """Parse an ics string and access some property parameters then.
- This is a follow-up of a question received per email.
-
- """
- ics = """BEGIN:VCALENDAR
-VERSION:2.0
-PRODID://RESEARCH IN MOTION//BIS 3.0
-METHOD:REQUEST
-BEGIN:VEVENT
-SEQUENCE:2
-X-RIM-REVISION:0
-SUMMARY:Test meeting from BB
-X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
-CLASS:PUBLIC
-ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="RembrandXS":MAILTO:rembrand@xs4all.nl
-ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="RembrandDX":MAILTO:rembrand@daxlab.com
-ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="RembrandSB":MAILTO:rembspam@xs4all.nl
-UID:XRIMCAL-628059586-522954492-9750559
-DTSTART;VALUE=DATE:20120814
-DTEND;VALUE=DATE:20120815
-DESCRIPTION:Test meeting from BB
-DTSTAMP:20120813T151458Z
-ORGANIZER:mailto:rembrand@daxlab.com
-END:VEVENT
-END:VCALENDAR"""
-
- cal = icalendar.Calendar.from_ical(ics)
- event = cal.walk("VEVENT")[0]
- event['attendee'][0]
- self.assertEqual(event['attendee'][0].to_ical(),
- b'MAILTO:rembrand@xs4all.nl')
- self.assertEqual(event['attendee'][0].params.to_ical(),
- b'CN=RembrandXS;PARTSTAT=NEEDS-ACTION;RSVP=TRUE')
- self.assertEqual(event['attendee'][0].params['cn'], 'RembrandXS')
-
- def test_repr(self):
- """Test correct class representation.
- """
- it = Parameters(parameter1='Value1')
- self.assertTrue(
- re.match(r"Parameters\({u?'PARAMETER1': u?'Value1'}\)", str(it))
- )
+def test_property_params():
+ """Property parameters with values containing a COLON character, a
+ SEMICOLON character or a COMMA character MUST be placed in quoted
+ text."""
+ cal_address = vCalAddress('mailto:john.doe@example.org')
+ cal_address.params["CN"] = "Doe, John"
+ ical = Calendar()
+ ical.add('organizer', cal_address)
+
+ ical_str = Calendar.to_ical(ical)
+ exp_str = b"""BEGIN:VCALENDAR\r\nORGANIZER;CN="Doe, John":"""\
+ b"""mailto:john.doe@example.org\r\nEND:VCALENDAR\r\n"""
+
+ assert ical_str == exp_str
+
+ # other way around: ensure the property parameters can be restored from
+ # an icalendar string.
+ ical2 = Calendar.from_ical(ical_str)
+ assert ical2.get('ORGANIZER').params.get('CN') == 'Doe, John'
+
+
+def test_parse_and_access_property_params(calendars):
+ """Parse an ics string and access some property parameters then.
+ This is a follow-up of a question received per email.
+
+ """
+ event = calendars.property_params.walk("VEVENT")[0]
+ attendee = event['attendee'][0]
+ assert attendee.to_ical() == b'MAILTO:rembrand@xs4all.nl'
+ assert attendee.params.to_ical() == b'CN=RembrandXS;PARTSTAT=NEEDS-ACTION;RSVP=TRUE'
+ assert attendee.params['cn'] == 'RembrandXS'
+
+def test_repr():
+ """Test correct class representation.
+ """
+ it = Parameters(parameter1='Value1')
+ assert re.match(r"Parameters\({u?'PARAMETER1': u?'Value1'}\)", str(it))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/src/icalendar/tests/test_time.py new/icalendar-5.0.13/src/icalendar/tests/test_time.py
--- old/icalendar-5.0.12/src/icalendar/tests/test_time.py 2024-03-19 23:10:33.000000000 +0100
+++ new/icalendar-5.0.13/src/icalendar/tests/test_time.py 2024-06-20 15:14:34.000000000 +0200
@@ -1,29 +1,28 @@
-import unittest
-
import datetime
import icalendar
import os
+def test_value_type_is_not_mapped():
+ """Usually, the value should be absent."""
+ assert 'X-SOMETIME' not in icalendar.cal.types_factory.types_map
+
+
+def test_value_type_is_mapped(x_sometime):
+ """The value is mapped for the test."""
+ assert 'X-SOMETIME' in icalendar.cal.types_factory.types_map
+
-class TestTime(unittest.TestCase):
+def test_create_from_ical(x_sometime):
+ directory = os.path.dirname(__file__)
+ ics = open(os.path.join(directory, 'calendars', 'time.ics'), 'rb')
+ cal = icalendar.Calendar.from_ical(ics.read())
+ ics.close()
- def setUp(self):
- icalendar.cal.types_factory.types_map['X-SOMETIME'] = 'time'
+ assert cal['X-SOMETIME'].dt == datetime.time(17, 20, 10)
+ assert cal['X-SOMETIME'].to_ical() == '172010'
- def tearDown(self):
- icalendar.cal.types_factory.types_map.pop('X-SOMETIME')
- def test_create_from_ical(self):
- directory = os.path.dirname(__file__)
- ics = open(os.path.join(directory, 'calendars', 'time.ics'), 'rb')
- cal = icalendar.Calendar.from_ical(ics.read())
- ics.close()
-
- self.assertEqual(cal['X-SOMETIME'].dt, datetime.time(17, 20, 10))
- self.assertEqual(cal['X-SOMETIME'].to_ical(), '172010')
-
- def test_create_to_ical(self):
- cal = icalendar.Calendar()
- cal.add('X-SOMETIME', datetime.time(17, 20, 10))
- self.assertTrue(b'X-SOMETIME;VALUE=TIME:172010' in
- cal.to_ical().splitlines())
+def test_create_to_ical(x_sometime):
+ cal = icalendar.Calendar()
+ cal.add('X-SOMETIME', datetime.time(17, 20, 10))
+ assert b'X-SOMETIME;VALUE=TIME:172010' in cal.to_ical().splitlines()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/src/icalendar/tests/test_unit_prop.py new/icalendar-5.0.13/src/icalendar/tests/test_unit_prop.py
--- old/icalendar-5.0.12/src/icalendar/tests/test_unit_prop.py 2024-03-19 23:10:33.000000000 +0100
+++ new/icalendar-5.0.13/src/icalendar/tests/test_unit_prop.py 2024-06-20 15:14:34.000000000 +0200
@@ -49,6 +49,9 @@
self.assertEqual(vBoolean.from_ical(vBoolean(True).to_ical()), True)
self.assertEqual(vBoolean.from_ical('true'), True)
+ # Error: key not exists
+ self.assertRaises(ValueError, vBoolean.from_ical, 'ture')
+
def test_prop_vCalAddress(self):
from ..prop import vCalAddress
txt = b'MAILTO:maxm@mxm.dk'
@@ -65,6 +68,7 @@
self.assertEqual(vFloat(1.0).to_ical(), b'1.0')
self.assertEqual(vFloat.from_ical('42'), 42.0)
self.assertEqual(vFloat(42).to_ical(), b'42.0')
+ self.assertRaises(ValueError, vFloat.from_ical, '1s3')
def test_prop_vInt(self):
from ..prop import vInt
@@ -107,10 +111,16 @@
self.assertTrue(isinstance(vDDDTypes.from_ical('20010101'), date))
+ self.assertEqual(vDDDTypes.from_ical('123000'), time(12, 30))
+ self.assertIsInstance(vDDDTypes.from_ical('123000'), time)
+
self.assertEqual(vDDDTypes.from_ical('P31D'), timedelta(31))
self.assertEqual(vDDDTypes.from_ical('-P31D'), timedelta(-31))
+ invalid_period = (datetime(2000, 1, 1), datetime(2000, 1, 2), datetime(2000, 1, 2))
+ self.assertRaises(ValueError, vDDDTypes(invalid_period).to_ical)
+
# Bad input
self.assertRaises(ValueError, vDDDTypes, 42)
@@ -123,6 +133,7 @@
self.assertEqual(vDate.from_ical('20010102'), date(2001, 1, 2))
self.assertRaises(ValueError, vDate, 'd')
+ self.assertRaises(ValueError, vDate.from_ical, '200102')
def test_prop_vDatetime(self):
from ..prop import vDatetime
@@ -205,6 +216,17 @@
self.assertEqual(vPeriod(per).to_ical(),
b'20000101T000000/20000102T000000')
+ # Error: one of the params is not instance of date/datetime
+ per = ('20000101T000000', datetime(2000, 1, 2))
+ self.assertRaises(ValueError, vPeriod, per)
+
+ per = (datetime(2000, 1, 1), '20000102T000000')
+ self.assertRaises(ValueError, vPeriod, per)
+
+ # Error: first params > second params
+ per = (datetime(2000, 1, 2), datetime(2000, 1, 1))
+ self.assertRaises(ValueError, vPeriod, per)
+
per = (datetime(2000, 1, 1), timedelta(days=31))
self.assertEqual(vPeriod(per).to_ical(), b'20000101T000000/P31D')
@@ -397,6 +419,8 @@
# We should also fail, right?
self.assertRaises(ValueError, vTime.from_ical, '263000')
+ self.assertRaises(ValueError, vTime, '263000')
+
def test_prop_vUri(self):
from ..prop import vUri
@@ -420,6 +444,7 @@
self.assertEqual(vGeo(g).to_ical(), '37.386013;-122.082932')
self.assertRaises(ValueError, vGeo, 'g')
+ self.assertRaises(ValueError, vGeo.from_ical, '1s3;1s3')
def test_prop_vUTCOffset(self):
from ..prop import vUTCOffset
@@ -461,10 +486,13 @@
self.assertRaises(ValueError, vUTCOffset.from_ical, '+2400')
+ self.assertRaises(ValueError, vUTCOffset, '0:00:00')
+
def test_prop_vInline(self):
from ..prop import vInline
self.assertEqual(vInline('Some text'), 'Some text')
+ self.assertEqual(vInline('Some text').to_ical(), b'Some text')
self.assertEqual(vInline.from_ical('Some text'), 'Some text')
t2 = vInline('other text')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/src/icalendar/tests/test_with_doctest.py new/icalendar-5.0.13/src/icalendar/tests/test_with_doctest.py
--- old/icalendar-5.0.12/src/icalendar/tests/test_with_doctest.py 2024-03-19 23:10:33.000000000 +0100
+++ new/icalendar-5.0.13/src/icalendar/tests/test_with_doctest.py 2024-06-20 15:14:34.000000000 +0200
@@ -1,6 +1,6 @@
"""This file tests the source code provided by the documentation.
-See
+See
- doctest documentation: https://docs.python.org/3/library/doctest.html
- Issue 443: https://github.com/collective/icalendar/issues/443
@@ -43,12 +43,15 @@
# This collection needs to exclude .tox and other subdirectories
DOCUMENTATION_PATH = os.path.join(HERE, "../../../")
-DOCUMENT_PATHS = [
- os.path.join(DOCUMENTATION_PATH, subdir, filename)
- for subdir in ["docs", "."]
- for filename in os.listdir(os.path.join(DOCUMENTATION_PATH, subdir))
- if filename.lower().endswith(".rst")
-]
+try:
+ DOCUMENT_PATHS = [
+ os.path.join(DOCUMENTATION_PATH, subdir, filename)
+ for subdir in ["docs", "."]
+ for filename in os.listdir(os.path.join(DOCUMENTATION_PATH, subdir))
+ if filename.lower().endswith(".rst")
+ ]
+except FileNotFoundError:
+ raise EnvironmentError("Could not find the documentation - remove the build folder and try again.")
@pytest.mark.parametrize("filename", [
"README.rst",
@@ -62,6 +65,3 @@
"""This test runs doctest on a documentation file."""
test_result = doctest.testfile(document, module_relative=False)
assert test_result.failed == 0, f"{test_result.failed} errors in {os.path.basename(document)}"
-
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/src/icalendar/windows_to_olson.py new/icalendar-5.0.13/src/icalendar/windows_to_olson.py
--- old/icalendar-5.0.12/src/icalendar/windows_to_olson.py 2024-03-19 23:10:33.000000000 +0100
+++ new/icalendar-5.0.13/src/icalendar/windows_to_olson.py 2024-06-20 15:14:34.000000000 +0200
@@ -51,7 +51,7 @@
'GMT Standard Time': 'Europe/London',
'GTB Standard Time': 'Europe/Bucharest',
'Georgian Standard Time': 'Asia/Tbilisi',
- 'Greenland Standard Time': 'America/Godthab',
+ 'Greenland Standard Time': 'America/Nuuk',
'Greenwich Standard Time': 'Atlantic/Reykjavik',
'Hawaiian Standard Time': 'Pacific/Honolulu',
'India Standard Time': 'Asia/Kolkata',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/src/icalendar.egg-info/PKG-INFO new/icalendar-5.0.13/src/icalendar.egg-info/PKG-INFO
--- old/icalendar-5.0.12/src/icalendar.egg-info/PKG-INFO 2024-03-19 23:10:41.000000000 +0100
+++ new/icalendar-5.0.13/src/icalendar.egg-info/PKG-INFO 2024-06-20 15:14:42.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: icalendar
-Version: 5.0.12
+Version: 5.0.13
Summary: iCalendar parser/generator
Home-page: https://github.com/collective/icalendar
Author: Plone Foundation
@@ -148,11 +148,38 @@
Changelog
=========
+5.0.13 (2024-06-20)
+-------------------
+
+Minor changes:
+
+- Guide to delete the build folder before running tests
+- Add funding information
+- Make documentation build with Python 3.12
+- Update windows to olson conversion for Greenland Standard Time
+- Extend examples in Usage with alarm and recurrence
+- Document how to serve the built documentation to view with the browser
+- Improve test coverage
+
+Breaking changes:
+
+- ...
+
+New features:
+
+- Create GitHub releases for each tag.
+
+Bug fixes:
+
+- Parse calendars with X-COMMENT properties at the end the file by ignoring these properites
+
+
5.0.12 (2024-03-19)
-------------------
Minor changes:
+- Analyse code coverage of test files
- Added corpus to fuzzing directory
- Added exclusion of fuzzing corpus in MANIFEST.in
- Augmented fuzzer to optionally convert multiple calendars from a source string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/src/icalendar.egg-info/SOURCES.txt new/icalendar-5.0.13/src/icalendar.egg-info/SOURCES.txt
--- old/icalendar-5.0.12/src/icalendar.egg-info/SOURCES.txt 2024-03-19 23:10:41.000000000 +0100
+++ new/icalendar-5.0.13/src/icalendar.egg-info/SOURCES.txt 2024-06-20 15:14:42.000000000 +0200
@@ -52,6 +52,7 @@
src/icalendar/tests/test_issue_318_skip_default_parameters.py
src/icalendar/tests/test_issue_322_single_strings_characters_split_into_multiple_categories.py
src/icalendar/tests/test_issue_348_exception_parsing_value.py
+src/icalendar/tests/test_issue_350.py
src/icalendar/tests/test_issue_500_vboolean_for_parameter.py
src/icalendar/tests/test_issue_557_encode_native_parameters.py
src/icalendar/tests/test_multiple.py
@@ -88,6 +89,7 @@
src/icalendar/tests/calendars/issue_27_multiple_periods_in_freebusy_one_freebusy.ics
src/icalendar/tests/calendars/issue_322_expected_calendar.ics
src/icalendar/tests/calendars/issue_348_exception_parsing_value.ics
+src/icalendar/tests/calendars/issue_350.ics
src/icalendar/tests/calendars/issue_466_convert_tzid_with_slash.ics
src/icalendar/tests/calendars/issue_466_respect_unique_timezone.ics
src/icalendar/tests/calendars/issue_526_calendar_with_different_events.ics
@@ -100,6 +102,7 @@
src/icalendar/tests/calendars/parsing_error_in_UTC_offset.ics
src/icalendar/tests/calendars/period_with_timezone.ics
src/icalendar/tests/calendars/pr_480_summary_with_colon.ics
+src/icalendar/tests/calendars/property_params.ics
src/icalendar/tests/calendars/small_bad_calendar.ics
src/icalendar/tests/calendars/time.ics
src/icalendar/tests/calendars/timezone_rdate.ics
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-5.0.12/tox.ini new/icalendar-5.0.13/tox.ini
--- old/icalendar-5.0.12/tox.ini 2024-03-19 23:10:33.000000000 +0100
+++ new/icalendar-5.0.13/tox.ini 2024-06-20 15:14:34.000000000 +0200
@@ -12,13 +12,14 @@
coverage
hypothesis
commands =
- coverage run --source=src/icalendar --omit=*/tests/* --module pytest []
+ coverage run --source=src/icalendar --omit=*/tests/hypothesis/* --omit=*/tests/fuzzed/* --module pytest []
coverage report
coverage html
[testenv:docs]
deps =
-r {toxinidir}/requirements_docs.txt
+ setuptools
changedir = docs
allowlist_externals = make
commands =
1
0