<pre style='margin:0'>
petrrr pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/8d20dbfc680b7cc5a6449316d4754943b43e79a2">https://github.com/macports/macports-ports/commit/8d20dbfc680b7cc5a6449316d4754943b43e79a2</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 8d20dbfc680 py-obspy: update to 1.4.1, drop py39 subport
</span>8d20dbfc680 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 8d20dbfc680b7cc5a6449316d4754943b43e79a2
</span>Author: Peter Danecek <peter.danecek@ingv.it>
AuthorDate: Wed Nov 27 15:34:15 2024 +0100

<span style='display:block; white-space:pre;color:#404040;'>    py-obspy: update to 1.4.1, drop py39 subport
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    py39 subport dropped due to issue #71411.
</span>---
 python/py-obspy/Portfile                |  14 ++--
 python/py-obspy/files/sqlalchemy2.patch | 118 ++++++++++++++++++++++++++++++++
 2 files changed, 126 insertions(+), 6 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-obspy/Portfile b/python/py-obspy/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 14388101b34..84fb6e5b03c 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-obspy/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-obspy/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,8 +5,8 @@ PortGroup           python 1.0
</span> PortGroup           select 1.0
 
 name                py-obspy
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version             1.4.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             1.4.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span> 
 categories-append   science
 license             LGPL-3
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -22,11 +22,11 @@ long_description    \
</span> 
 homepage            https://github.com/obspy/obspy/wiki/
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           rmd160  3e861220a8616ba1e68f16851296c197e3d80b90 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  336a6e1d9a485732b08173cb5dc1dd720a8e53f3b54c180a62bb8ceaa5fe5c06 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    16984057
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  078c909880c7722daa9471779dfb9e4f3e118690 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  9cf37b0ce03de43d80398703c006bfddbd709f32e8460a9404b27df998d3f747 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    17035765
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions     39 310 311 312 313
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions     310 311 312 313
</span> 
 # aic_simple.c: error: redefinition of ā€˜i’
 compiler.c_standard 2011
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -50,6 +50,8 @@ if {${name} ne ${subport}} {
</span>                             port:py${python.version}-pytest \
                             port:py${python.version}-pytest-json-report
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles              sqlalchemy2.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     test.run                yes
     test.args               -k \"not test_tsindex.py"\
 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-obspy/files/sqlalchemy2.patch b/python/py-obspy/files/sqlalchemy2.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..6a72d421e54
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-obspy/files/sqlalchemy2.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,118 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- obspy/clients/filesystem/db.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ obspy/clients/filesystem/db.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -11,22 +11,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import datetime
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from sqlalchemy import Column, String, Integer, Float
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-from sqlalchemy.ext.declarative import declarative_base
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++from sqlalchemy.orm import declarative_base
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from sqlalchemy.schema import PrimaryKeyConstraint
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# we pinned our dependency to sqlalchemy <2.0 for now, so these warnings are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# irrelevant. eventually code should be migrated to work with sqlalchemy >=2.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# as well
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    from sqlalchemy.exc import MovedIn20Warning
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-except ImportError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    pass
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    import warnings
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    warnings.filterwarnings('ignore', category=MovedIn20Warning)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Base = declarative_base()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Every declarative class should only be instantiated once. Thus we just use a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- obspy/clients/filesystem/tsindex.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ obspy/clients/filesystem/tsindex.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1544,18 +1544,22 @@ def _fetch_index_rows(self, query_rows=None, bulk_params=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Create a CTE that contains the request
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             stmts = [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                sa.select([
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                sa.select(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     sa.literal(a).label("network"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     sa.literal(b).label("station"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     sa.literal(c).label("location"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     sa.literal(d).label("channel"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    sa.literal(e).label("starttime")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    if e != '*' else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    sa.literal('0000-00-00T00:00:00').label("starttime"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    sa.literal(f).label("endtime")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    if f != '*' else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    sa.literal('5000-00-00T00:00:00').label("endtime")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                ])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    sa.case(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        (sa.literal(e) == '*',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                            sa.literal('0000-00-00T00:00:00')),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        (sa.literal(e) != '*', sa.literal(e))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        ).label("starttime"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    sa.case(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        (sa.literal(f) == '*',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                            sa.literal('5000-00-00T00:00:00')),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        (sa.literal(f) != '*', sa.literal(f))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        ).label("endtime")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 for idx, (a, b, c, d, e, f) in enumerate(query_rows)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             requests = sa.union_all(*stmts)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1724,18 +1728,22 @@ def _fetch_summary_rows(self, query_rows):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             request_cte_name = "request_cte"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             stmts = [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                sa.select([
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                sa.select(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     sa.literal(a).label("network"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     sa.literal(b).label("station"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     sa.literal(c).label("location"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     sa.literal(d).label("channel"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    sa.literal(e).label("starttime")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    if e != '*' else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    sa.literal('0000-00-00T00:00:00').label("starttime"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    sa.literal(f).label("endtime")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    if f != '*' else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    sa.literal('5000-00-00T00:00:00').label("endtime")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                ])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    sa.case(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        (sa.literal(e) == '*',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                            sa.literal('0000-00-00T00:00:00')),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        (sa.literal(e) != '*', sa.literal(e))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        ).label("starttime"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    sa.case(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        (sa.literal(f) == '*',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                            sa.literal('5000-00-00T00:00:00')),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        (sa.literal(f) != '*', sa.literal(f))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        ).label("endtime")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 for idx, (a, b, c, d, e, f) in enumerate(query_rows)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             requests = sa.union_all(*stmts)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- obspy/pytest.ini
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ obspy/pytest.ini
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -22,14 +22,6 @@ filterwarnings =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ignore:Auto-removal of grids
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # see issue 3164, can be removed when NRL online tests get removed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ignore:(?s).*Direct access to online NRL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# sqlalchemy showing deprecation warnings, seems like big API change with version 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# fixed sqlalchemy<2 for now in setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# also suppressing these warnings directly in clients.filesystem.db because
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# they get raised before test execution during test discovery
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# see https://docs.sqlalchemy.org/en/20/errors.html#error-b8d9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# see https://docs.sqlalchemy.org/en/20/changelog/migration_20.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    ignore:Deprecated API features .* are not compatible with SQLAlchemy 2.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    ignore:function is now available as sqlalchemy.orm.declarative_base
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # ignore DeprecationWarnings and PendingDeprecationWarnings triggered by other modules
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ignore::DeprecationWarning:(?!obspy).*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ignore::PendingDeprecationWarning:(?!obspy).*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -92,7 +92,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     'matplotlib>=3.3',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     'lxml',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     'setuptools',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    'sqlalchemy<2',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    'sqlalchemy>=1.4',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     'decorator',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     'requests',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ]
</span></pre><pre style='margin:0'>

</pre>