Skyfield

Latest version: v1.52

Safety actively analyzes 722491 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 11

1.52

---------------------

* Fix: on rare occasions the :func:`~skyfield.almanac.find_risings()`
and :func:`~skyfield.almanac.find_settings()` routines could return an
invalid result if no rising or setting was found, instead of returning
the moment of transit as their fallback result.
`1057 <https://github.com/skyfielders/python-skyfield/issues/1057>`_

* Fix: if the :meth:`~skyfield.positionlib.ICRF.altaz()` method was
given a position with a NaN coordinate, and was passed
``temperature_C`` and ``pressure_mbar`` parameters with which to
compute refraction, then it would loop forever.
`1046 <https://github.com/skyfielders/python-skyfield/issues/1046>`_

* Fix: the new :class:`~skyfield.framelib.mean_equator_and_equinox_of_date`
reference frame was off by nearly 0.02 arcseconds because it applied
precession but forgot to apply the frame tie between ICRS and J2000.

* To avoid deprecation warnings on recent Pythons, Skyfield now avoids
Python’s ``datetime.utcnow()`` method, and avoids applying the ``~``
unary operator.

1.51

------------------------

* Skyfield now supports ephemeris files like ``de441.bsp`` that have two
or more segments per target. In earlier versions of Skyfield, only
one segment per target would get used, which for ``de441.bsp`` was
cutting the range of supported dates in half.
`691 <https://github.com/skyfielders/python-skyfield/issues/691>`_

* The documentation now uses the newer name ``.xyz``, which has been
quietly supported for around three years, for the
:class:`~skyfield.positionlib.ICRF` attribute that was originally
named ``.position`` and holds its position vector. The old name
(which will continue to be supported) could lead to code that looked a
little redundant, asking for the ``position`` of a ``position``::

position = mars.at(t)
x, y, z = position.position

So Skyfield now encourages code to ask for ``position.xyz`` instead.
An advantage is that the new name is self-documenting: the name
reminds the user that it is a 3-vector of Cartesian components.

* Skyfield’s internal table for the ∆T Earth orientation parameter has
been updated, so that its predictions now extend to 2026-02-28.

* Fix: the :meth:`~skyfield.sgp4lib.EarthSatellite.find_events()` Earth
satellite method was returning an empty list of events if the only
event in the time period was a lone rising or setting. It should now
detect and return them.
`856 <https://github.com/skyfielders/python-skyfield/issues/856>`_
`996 <https://github.com/skyfielders/python-skyfield/issues/996>`_
`1017 <https://github.com/skyfielders/python-skyfield/issues/1017>`_

* Fix: the :meth:`~skyfield.sgp4lib.EarthSatellite.find_events()` Earth
satellite method, faced with a single pass that was very close to the
start time, was returning an inaccurate setting time. It should now
return an accurate setting time.
`1000 <https://github.com/skyfielders/python-skyfield/issues/1000>`_

* Fix: the :meth:`~skyfield.sgp4lib.EarthSatellite.find_events()` Earth
satellite method would miss a rising that came a fraction of a second
before the corresponding culmination. It should now find both.
`559 <https://github.com/skyfielders/python-skyfield/issues/559>`_

* Fix: bodies with Kepler orbits (like comets and asteroids) were
incorrectly returning positions with only a single dimension if given
a :class:`~skyfield.timelib.Time` that was an array but had only one
element. This could cause the rising and setting almanac routines to
raise a ``ValueError`` if they found only a single rising or setting.
`959 <https://github.com/skyfielders/python-skyfield/issues/959>`_

* Fix: the position vectors for Kepler orbit bodies, like comets and
asteroids, now have a useful ``.target_name`` like ``'Ceres'`` or
``'1P/Halley'`` instead of the less informative value ``'str'``.

1.50

------------------------

* A new :class:`~skyfield.framelib.mean_equator_and_equinox_of_date`
coordinate frame lets users generate the same coordinates that an
almanac might give.

* Skyfield now offers a Solar System Barycenter object, so users don’t
have to construct the position themselves: ``SSB.at(t)`` returns a
position whose coordinates and velocity are both zero in the ICRS.

* The routines added last year, :func:`~skyfield.almanac.find_risings()`
and :func:`~skyfield.almanac.find_settings()`, could occasionally miss
a sunrise or moonrise at high latitudes like 70°N where the Sun or
Moon barely crests the horizon. This has been fixed at a moderate
cost to their runtime.
`998 <https://github.com/skyfielders/python-skyfield/issues/998>`_

* Skyfield no longer tries to protect users by raising an exception if,
contrary to the usual custom in astronomy, they ask for ``ra.degrees``
or ``dec.hours``. So users no longer need to add an underscore prefix
(``_degrees`` or ``_hours``) to bypass the exception, though both
names will keep working to support legacy code.

* The time methods :meth:`~skyfield.timelib.Time.utc_datetime()` and
:meth:`~skyfield.timelib.Time.utc_datetime_and_leap_second()` now
intercept the ``ValueError`` that Python raises for a negative year or
a Julian-only leap day, and replace the generic error message with a
more specific one.
`957 <https://github.com/skyfielders/python-skyfield/issues/957>`_
`992 <https://github.com/skyfielders/python-skyfield/issues/992>`_

* If you call ``load.timescale(builtin=False)`` to download an updated
copy of the IERS ``finals2000A.all`` Earth orientation data file,
Skyfield now fetches the file with HTTPS, since their old FTP server
seems to have disappeared.
`1019 <https://github.com/skyfielders/python-skyfield/issues/1019>`_

1.49

--------------------

* A new :meth:`~skyfield.sgp4lib.EarthSatellite.from_omm()` Earth
Satellite constructor has been added to load satellite elements from
modern OMM data instead of from old TLE data. The Earth satellite
documentation now :ref:`describes two OMM formats
<satellite-element-formats>` and :ref:`shows how to load satellites
from each one <loading-satellite-elements>`. `763
<https://github.com/skyfielders/python-skyfield/issues/763>`_

* If you print an instance of the
:class:`~skyfield.planetarylib.PlanetaryConstants` class to the screen,
it will list all of the segments that it has loaded from binary kernels.
`952 <https://github.com/skyfielders/python-skyfield/issues/952>`_

* The Skyfield documentation is no longer installed alongside the Python
code, reducing the size of Skyfield by around 25%. Users who need
offline access to the documentation will now need to download it
separately.

1.48

-----------------------

* Skyfield is now compatible with NumPy 2.0! (Previous versions of
Skyfield would raise an ``ImportError`` trying to import the symbol
``float_``, which is now named ``float64``.)

* Times now support the ``<`` operator, so Python can sort them.

* For convenience, geoids like :data:`~skyfield.toposlib.wgs84` have a
new attribute :data:`~skyfield.toposlib.Geoid.polar_radius`.

* You can no longer subtract two positions unless they have the same
``.center``. Otherwise, a ``ValueError`` is raised. This check has
always been performed when you subtract vector functions, but it was
missing from the position subtraction routine.

* On days that the Sun fails to rise and set in the Arctic and
Antarctic, the new rising and setting routines now correctly set the
value ``False`` not only for sunrise but also for sunset.

* Fix: Skyfield no longer raises the following exception
if you call :meth:`~skyfield.positionlib.Barycentric.observe()`
on a position whose coordinate and time arrays are empty. ::

ValueError: zero-size array to reduction operation maximum which has no identity

Instead, an empty apparent position is now returned.
The exception was sometimes triggered by almanac routines
if you searched for an event that didn’t occur
between your start and end times.
`991 <https://github.com/skyfielders/python-skyfield/issues/991>`_

1.47

-----------------------

* Added faster and more accurate rising and setting routines!
See `risings-and-settings` for documentation and examples of the new
:func:`~skyfield.almanac.find_risings()` and
:func:`~skyfield.almanac.find_settings()` and
:func:`~skyfield.almanac.find_transits()` functions.
`662 <https://github.com/skyfielders/python-skyfield/issues/662>`_

* Skyfield’s internal table for the ∆T Earth orientation parameter has
been updated, so that its predictions now extend to 2025-01-18.

* Constellation abbreviations are now consistent between the
:func:`~skyfield.api.load_constellation_map()` table and the
:func:`~skyfield.api.load_constellation_names()` list. Previously,
``CVn`` and ``TrA`` had been mis-capitalized in the list as ``Cvn``
and ``Tra``.
`906 <https://github.com/skyfielders/python-skyfield/issues/906>`_

Page 1 of 11

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.