Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-skyfield for openSUSE:Factory
checked in at 2022-08-11 18:32:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-skyfield (Old)
and /work/SRC/openSUSE:Factory/.python-skyfield.new.1521 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-skyfield"
Thu Aug 11 18:32:55 2022 rev:16 rq:994500 version:1.43.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-skyfield/python-skyfield.changes
2022-04-20 16:57:54.174655156 +0200
+++
/work/SRC/openSUSE:Factory/.python-skyfield.new.1521/python-skyfield.changes
2022-08-11 18:33:13.374206585 +0200
@@ -1,0 +2,60 @@
+Thu Aug 11 09:14:22 UTC 2022 - Ben Greiner <[email protected]>
+
+- Update to v1.43.1
+ * An attempt at overly clever scripting resulted in a Skyfield
+ 1.43 release without a setup.py in its .tar.gz; within an hour,
+ a Python 2.7 user had reported that Skyfield could no longer
+ install. This release is identical to 1.43 but (hopefully)
+ installs correctly for everyone!
+- Changelog v1.43
+ * Fixed planetary_magnitude() so it works for Saturn even when
+ the time is an array rather than a single time; also, improved
+ its calculation slightly with respect to Uranus. #739
+ * Improved load_comets_dataframe() so that parsing CometEls.txt
+ with the most recent version of Pandas doesn???t stumble over the
+ commas in the final field of (for example) Halley???s Comet and
+ give the error ParserError: Error tokenizing data. C error:
+ Expected 12 fields???saw 13. #707
+- Changelog v1.42
+ * Added two new position methods phase_angle() and
+ fraction_illuminated() that, given an illuminator (usually the
+ Sun) as their argument, compute whether the observer is looking
+ at the bright side or the dark side of the target body. They
+ replace a pair of old functions in the almanac module.
+ * The almanac routine moon_nodes() would sometimes skip nodes
+ that were closer together than 14.0 days. It has been tightened
+ down and should now detect all lunar nodes. #662
+ * Time objects now feature a to_astropy() method.
+ * The position method to_skycoord() now sets the frame attribute
+ of the sky coordinate it returns, and for now only supports
+ barycentric and geocentric positions. #577
+- Changelog v1.41
+ * Times now support arithmetic: you can add or subtract from a
+ time either a number representing days of Terrestrial Time (TT)
+ or a Python timedelta which Skyfield interprets as TT days and
+ seconds. #568
+ * Fixed the .itrs_xyz vector of the geographic position returned
+ by the subpoint_of() method. #673
+ * Skyfield now uses HTTPS instead of FTP to download JPL
+ ephemeris files like de421.bsp. This does risk raising an error
+ for users whose machines have out-of-date root certificates.
+ But it protects the connection from outside tampering, and will
+ keep working if the ssd.jpl.nasa.gov FTP service is ever shut
+ down ??? as happened earlier this year to FTP on NASA???s
+ cddis.nasa.gov server. #666
+- Changelog v1.40
+ * Extended the planetary_magnitude() routine to work with all the
+ major planets, which upgrades it from a prototype feature to a
+ production feature of Skyfield.
+ * The subpoint() method has been deprecated, because users
+ reported that its name was a poor match for its behavior. Four
+ new methods have replaced it: latlon_of(), height_of(),
+ geographic_position_of(), and subpoint_of(). #644
+ * Added a timescale method linspace(). #617
+ * The oppositions_conjunctions() routine, which was originally
+ designed only for planets, can now also handle the Moon (which
+ moves from opposition to conjunction much faster).
+- Update assay to 264.bb62d1f: better pickling handling
+- Update finals200A.all data
+
+-------------------------------------------------------------------
Old:
----
assay-master-259.d61a16e.tar.gz
skyfield-1.39.tar.gz
New:
----
assay-master-264.bb62d1f.tar.gz
skyfield-1.43.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-skyfield.spec ++++++
--- /var/tmp/diff_new_pack.9Jnn8Q/_old 2022-08-11 18:33:14.510204842 +0200
+++ /var/tmp/diff_new_pack.9Jnn8Q/_new 2022-08-11 18:33:14.518204830 +0200
@@ -17,13 +17,11 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%define assaycommit d61a16e060c50f9c1a97df84ad9960825031915e
-%define assayver 259.d61a16e
+%define assaycommit bb62d1f7d51d798b05a88045fff3a2ff92c299c3
+%define assayver 264.bb62d1f
%define skip_python2 1
-# current astropy in TW requires python >= 3.7
-%define skip_python36 1
Name: python-skyfield
-Version: 1.39
+Version: 1.43.1
Release: 0
Summary: Elegant astronomy for Python
License: MIT
@@ -33,13 +31,13 @@
Source1:
https://naif.jpl.nasa.gov/pub/naif/generic_kernels/fk/satellites/moon_080317.tf
Source2:
https://naif.jpl.nasa.gov/pub/naif/generic_kernels/pck/moon_pa_de421_1900-2050.bpc
Source3:
https://naif.jpl.nasa.gov/pub/naif/generic_kernels/pck/a_old_versions/pck00008.tpc
-Source4: ftp://ssd.jpl.nasa.gov/pub/eph/planets/bsp/de405.bsp
-Source5: ftp://ssd.jpl.nasa.gov/pub/eph/planets/bsp/de421.bsp
+Source4: https://ssd.jpl.nasa.gov/ftp/eph/planets/bsp/de405.bsp
+Source5: https://ssd.jpl.nasa.gov/ftp/eph/planets/bsp/de421.bsp
# use generate-hipparcos.sh to download and truncate the test data
Source6: hip_main.dat.gz
Source7: https://datacenter.iers.org/data/9/finals2000A.all
# Original with invalid https certificate or http url:
http://astro.ukho.gov.uk/nao/lvm/Table-S15.2020.txt
-Source8:
https://raw.githubusercontent.com/skyfielders/python-skyfield/master/Table-S15.2020.txt
+Source8:
https://github.com/skyfielders/python-skyfield/raw/%{version}/Table-S15.2020.txt
Source97: generate-hipparcos.sh
# upstreams custom test runner assay: gh#skyfielders/python-skyfield#405
Source98:
https://github.com/brandon-rhodes/assay/archive/%{assaycommit}.tar.gz#/assay-master-%{assayver}.tar.gz
@@ -84,20 +82,17 @@
sed -i 's/assert abs(distance.au - 1) < 1e-16/assert abs(distance.au - 1) <
1e-15/' skyfield/tests/test_positions.py
%build
+export SKYFIELD_USE_SETUPTOOLS=1
%python_build
%install
+export SKYFIELD_USE_SETUPTOOLS=1
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
export PYTHONPATH="../assay-%{assaycommit}"
-%{python_expand # run assay up to 3 times in case of flaky pickling errors
-failed=0
-for i in {1..3}; do
- $python -m assay --batch skyfield.tests && break || [ $((++failed)) -lt 3 ]
-done
-}
+%python_exec -m assay --batch skyfield.tests
%files %{python_files}
%doc README.rst
++++++ assay-master-259.d61a16e.tar.gz -> assay-master-264.bb62d1f.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/.gitignore
new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/.gitignore
--- old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/.gitignore
2021-04-13 15:57:54.000000000 +0200
+++ new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/.gitignore
2022-01-19 11:26:53.000000000 +0100
@@ -1,2 +1,4 @@
-*.egg-info
-htmlcov
+/*.egg-info
+/MANIFEST
+/dist/
+/htmlcov/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/assay/assertion.py
new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/assay/assertion.py
--- old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/assay/assertion.py
2021-04-13 15:57:54.000000000 +0200
+++ new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/assay/assertion.py
2022-01-19 11:26:53.000000000 +0100
@@ -97,7 +97,7 @@
op.pop_top, # stack: ...
])
-else:
+elif _python_version < (3,9):
assert_pattern_text = assemble_pattern([
op.compare_op, b'(.)',
@@ -105,14 +105,31 @@
op.pop_jump_if_true, b'.',
op.load_global, b'(.)',
op.raise_varargs, 1,
- ])
+ ])
replacement = assemble_replacement([
op.load_const, b'%%', # stack: ... op1 op2 function
op.rot_three, 0, # stack: ... function op1 op2
op.call_function, 2, # stack: ... return_value
op.pop_top, 0, # stack: ...
- ])
+ ])
+
+else:
+
+ assert_pattern_text = assemble_pattern([
+ op.compare_op, b'(.)',
+ b'(?:', op.extended_arg, b'.)?',
+ op.pop_jump_if_true, b'.',
+ op.load_assertion_error, b'.',
+ op.raise_varargs, 1,
+ ])
+
+ replacement = assemble_replacement([
+ op.load_const, b'%%', # stack: ... op1 op2 function
+ op.rot_three, 0, # stack: ... function op1 op2
+ op.call_function, 2, # stack: ... return_value
+ op.pop_top, 0, # stack: ...
+ ])
# Note that "re.S" is crucial when compiling this pattern, as a byte we
# are trying to match with "." might happen to have the numeric value of
@@ -122,7 +139,8 @@
def rewrite_asserts_in(function):
def replace(match):
- match.group(2) # TODO: make sure this is the right symbol
+ # TODO: if there's a second group in the match, should we verify
+ # that it really loads `AssertionError`?
compare_op = match.group(1)
if _python_version <= (3,5):
msb, lsb = divmod(offset + ord(compare_op), 256)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/assay/fixes.py
new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/assay/fixes.py
--- old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/assay/fixes.py
1970-01-01 01:00:00.000000000 +0100
+++ new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/assay/fixes.py
2022-01-19 11:26:53.000000000 +0100
@@ -0,0 +1,41 @@
+"""Workarounds for Python 3."""
+
+import sys
+_python3 = sys.version_info >= (3,)
+
+# We are extremely fortunate that Mercurial ran into this issue before
+# assay did, as they figured out both how to reproduce the problem and
+# how to fix it!
+
+# https://phab.mercurial-scm.org/rHG12491abf93bd87b057cb6826e36606afa1cee88a
+# https://phab.mercurial-scm.org/rHGc2bf211c74bf97be0a24e2446b75867cb4f588ee
+
+# We are less fortunate that Mercurial's license isn't compatible with
+# ours, as we must re-implement this rather than use their code. But
+# requiring us to re-implement is, after all, their right under the
+# current copyright regime.
+
+if _python3:
+ class _accumulating_reader:
+ def __init__(self, pipe):
+ self._read = pipe.read
+ self.readline = pipe.readline
+ self.close = pipe.close
+
+ def read(self, size=-1):
+ read = self._read
+ if size < 0:
+ return read(-1)
+ pieces = []
+ while size:
+ data = read(size)
+ n = len(data)
+ if not n:
+ break
+ size -= n
+ pieces.append(data)
+ return b''.join(pieces)
+
+else:
+ def _accumulating_reader(pipe):
+ return pipe
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/assay/samples.py
new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/assay/samples.py
--- old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/assay/samples.py
2021-04-13 15:57:54.000000000 +0200
+++ new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/assay/samples.py
2022-01-19 11:26:53.000000000 +0100
@@ -4,6 +4,9 @@
flags = set()
+def mul(a, b):
+ return a * b
+
def test_passing():
pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/assay/tests.py
new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/assay/tests.py
--- old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/assay/tests.py
2021-04-13 15:57:54.000000000 +0200
+++ new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/assay/tests.py
2022-01-19 11:26:53.000000000 +0100
@@ -15,7 +15,10 @@
from .discovery import interpret_argument
from .importation import improve_order, list_module_paths
from .runner import run_tests_of, run_test
+from .samples import mul
+from .worker import Worker
+_python3 = sys.version_info >= (3,)
_python33 = sys.version_info >= (3, 3)
_python38 = sys.version_info >= (3, 8)
@@ -487,6 +490,45 @@
self.assertEqual(improve_order(events),
['A', 'X', 'B', 'C', 'Y', 'Z', 'D', 'E'])
+PRETEND_PIPE_LIMIT = 256
+
+class BlockReader(object):
+ """Challenge: can we survive a pipe that splits long data into blocks?"""
+ def __init__(self, file):
+ self.file = file
+ self.close = file.close
+
+ def read(self, n=-1):
+ n = min(n, PRETEND_PIPE_LIMIT)
+ return self.file.read(n)
+
+ def readline(self, n=-1):
+ raise NotImplementedError()
+
+class WorkerTests(unittest.TestCase):
+ def test_worker_can_call_simple_function(self):
+ w = Worker()
+ try:
+ answer = w.call(mul, 3, 4)
+ self.assertEqual(answer, 12)
+ finally:
+ w.close()
+
+ def test_worker_survive_narrow_pipe(self):
+ # This simulates a difficult-to-reproduce problem: until we
+ # enhanced the Worker, on Python 3 on GitHub Actions the main
+ # process would sometimes raise "_pickle.UnpicklingError: pickle
+ # data was truncated".
+ if not _python3:
+ return
+ n = 5 * PRETEND_PIPE_LIMIT
+ w = Worker()
+ w.from_worker = BlockReader(w.from_worker)
+ try:
+ answer = w.call(mul, 'a', n)
+ finally:
+ w.close()
+ self.assertEqual(answer, 'a' * n)
if __name__ == '__main__':
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/assay/unix.py
new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/assay/unix.py
--- old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/assay/unix.py
2021-04-13 15:57:54.000000000 +0200
+++ new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/assay/unix.py
2022-01-19 11:26:53.000000000 +0100
@@ -63,7 +63,9 @@
except OSError:
pass
fcntl.fcntl(fd, fcntl.F_SETFL, 0)
- return os.fdopen(os.dup(fd), fileobj.mode, bufsize)
+ new_fd = os.dup(fd)
+ fileobj.close()
+ return os.fdopen(new_fd, fileobj.mode, bufsize)
def kill_dash_9(pid):
"""Kill a process with a signal that cannot be caught or ignored."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/assay/worker.py
new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/assay/worker.py
--- old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/assay/worker.py
2021-04-13 15:57:54.000000000 +0200
+++ new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/assay/worker.py
2022-01-19 11:26:53.000000000 +0100
@@ -3,6 +3,7 @@
import os
import sys
from . import unix
+from .fixes import _accumulating_reader
from types import GeneratorType
_python3 = sys.version_info >= (3,)
@@ -74,7 +75,7 @@
"""Run a function in the worker process and return its result."""
pickle.dump((function, args, kw), self.to_worker)
self.to_worker.flush()
- return pickle.load(self.from_worker)
+ return pickle.load(_accumulating_reader(self.from_worker))
def start(self, generator, *args, **kw):
"""Start a generator in the worker process."""
@@ -83,7 +84,7 @@
def next(self):
"""Return the next item from the generator given to `start()`."""
- return pickle.load(self.from_worker)
+ return pickle.load(_accumulating_reader(self.from_worker))
def fileno(self):
"""Return the incoming file descriptor, for `epoll()` objects."""
@@ -108,6 +109,15 @@
def worker_process(from_parent, to_parent, sync_to_parent):
"""Run functions piped to us from the parent process.
+ This is the entire control loop of an assay worker process, which is
+ launched when this module is run with "-m" by the "Worker" class.
+ It listens to a pipe over which it is given a series of functions to
+ invoke, and sends back their return values. Sometimes the function
+ is `fork()`, in which case a worker child process is launched; in
+ that case, the child takes control of the conversation, with the
+ parent waiting idle and only resuming control of the conversation
+ once the child is finished.
+
Both `to_parent` and `from_parent` should be integer file
descriptors of the pipes connecting us to the parent process.
@@ -116,7 +126,7 @@
from_parent = os.fdopen(from_parent, 'rb')
while True:
- function, args, kw = pickle.load(from_parent)
+ function, args, kw = pickle.load(_accumulating_reader(from_parent))
result = function(*args, **kw)
if function is os.fork:
if result:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/setup.py
new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/setup.py
--- old/assay-d61a16e060c50f9c1a97df84ad9960825031915e/setup.py 2021-04-13
15:57:54.000000000 +0200
+++ new/assay-bb62d1f7d51d798b05a88045fff3a2ff92c299c3/setup.py 2022-01-19
11:26:53.000000000 +0100
@@ -17,7 +17,12 @@
'Programming Language :: Python :: 3.2',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
- ],
+ 'Programming Language :: Python :: 3.5',
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
+ 'Programming Language :: Python :: 3.8',
+ 'Programming Language :: Python :: 3.9',
+ ],
packages=['assay'],
entry_points = {
'console_scripts': ['assay=assay.command:main'],
++++++ finals2000A.all ++++++
++++ 2089 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/python-skyfield/finals2000A.all
++++ and /work/SRC/openSUSE:Factory/.python-skyfield.new.1521/finals2000A.all
++++++ skyfield-1.39.tar.gz -> skyfield-1.43.1.tar.gz ++++++
++++ 5134 lines of diff (skipped)