codecov[bot]: # [Codecov](https://codecov.io/gh/poliastro/poliastro/pull/804?src=pr&el=h1) Report
> Merging [#804](https://codecov.io/gh/poliastro/poliastro/pull/804?src=pr&el=desc) into [master](https://codecov.io/gh/poliastro/poliastro/commit/e6a76337041517b639d65af52921911f313f9649?src=pr&el=desc) will **decrease** coverage by `0.1%`.
> The diff coverage is `14.28%`.

[![Impacted file tree graph](https://codecov.io/gh/poliastro/poliastro/pull/804/graphs/tree.svg?width=650&token=4XOJCBTQ3o&height=150&src=pr)](https://codecov.io/gh/poliastro/poliastro/pull/804?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #804      +/-   ##
==========================================
- Coverage   87.13%   87.03%   -0.11%     
==========================================
  Files          65       65              
  Lines        3288     3293       +5     
  Branches      277      278       +1     
==========================================
+ Hits         2865     2866       +1     
- Misses        348      352       +4     
  Partials       75       75
```


| [Impacted Files](https://codecov.io/gh/poliastro/poliastro/pull/804?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/poliastro/frames/fixed.py](https://codecov.io/gh/poliastro/poliastro/pull/804/diff?src=pr&el=tree#diff-c3JjL3BvbGlhc3Ryby9mcmFtZXMvZml4ZWQucHk=) | `32.02% <14.28%> (-0.35%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/poliastro/poliastro/pull/804?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/poliastro/poliastro/pull/804?src=pr&el=footer). Last update [e6a7633...0959ad2](https://codecov.io/gh/poliastro/poliastro/pull/804?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

Juanlu001: Thanks for the PR @noc0lour! I see that you also fixed another problem: the lack of differentials.

My advice is that you write tests for both cases (they should be simplified cases of the code that made you discover the failure). I anticipate that testing the first problem will be easy, but the second will not :) Also, I don't agree with setting the derivatives to zero, and would rather prefer to not return the velocity if the differentials are not present.
noc0lour: @Juanlu001 the differentials are quite important for usage with `transform_to` since even though you have no differentials in your fixed frame (if you are not moving w.r.t the body) a transformation to an inertial frame will give you differentials due to the orbit of the body & rotation of the body. Adding zero velocities is more or less what I took from `astropy` (which is of course only applicable for non-moving objects as it is the case for EarthLocation). Thus I assumed if one does not give differentials the velocity is 0? 
noc0lour: Ah, that was a misconception on my side. I'll update my PR to provide a clean solution.
diff --git a/src/poliastro/frames/fixed.py b/src/poliastro/frames/fixed.py
index ec62bae5..b632bff5 100644
--- a/src/poliastro/frames/fixed.py
+++ b/src/poliastro/frames/fixed.py
@@ -1,5 +1,4 @@
-import math
-
+import numpy as np
 from astropy import units as u
 from astropy.coordinates import (
     HCRS,
@@ -10,7 +9,6 @@ from astropy.coordinates import (
     FunctionTransform,
     TimeAttribute,
     frame_transform_graph,
-    get_body_barycentric_posvel,
 )
 from astropy.coordinates.builtin_frames.utils import DEFAULT_OBSTIME
 
@@ -70,57 +68,55 @@ class _PlanetaryFixed(BaseRADecFrame):
 
     @staticmethod
     def to_equatorial(fixed_coo, equatorial_frame):
-        assert fixed_coo.body == equatorial_frame.body
+        # TODO replace w/ something smart (Sun/Earth special cased)
+        # assert fixed_coo.body == equatorial_frame.body
 
-        r = fixed_coo.data.xyz
-        v = fixed_coo.data.differentials["s"].d_xyz
+        r = fixed_coo.cartesian.xyz
 
         ra, dec, W = fixed_coo.rot_elements_at_epoch(fixed_coo.obstime)
+        equatorial_frame._obstime = fixed_coo.obstime
 
         r = transform_vector(r, -W, "z")
-        v = transform_vector(v, -W, "z")
 
         r_trans1 = transform_vector(r, -(90 * u.deg - dec), "x")
-        r_trans2 = transform_vector(r_trans1, -(90 * u.deg + ra), "z")
-
-        v_trans1 = transform_vector(v, -(90 * u.deg - dec), "x")
-        v_trans2 = transform_vector(v_trans1, -(90 * u.deg + ra), "z")
-
-        icrs_frame_pos_coord, icrs_frame_vel_coord = get_body_barycentric_posvel(
-            fixed_coo.body.name, time=fixed_coo.obstime
-        )
-
-        r_f = icrs_frame_pos_coord.xyz + r_trans2
-        v_f = icrs_frame_vel_coord.xyz + v_trans2
-
-        data = CartesianRepresentation(r_f, differentials=CartesianDifferential(v_f))
+        r_f = transform_vector(r_trans1, -(90 * u.deg + ra), "z")
+
+        if fixed_coo.data.differentials:
+            v = fixed_coo.differentials["s"].d_xyz
+            v = transform_vector(v, -W, "z")
+            v_trans1 = transform_vector(v, -(90 * u.deg - dec), "x")
+            v_f = transform_vector(v_trans1, -(90 * u.deg + ra), "z")
+
+            data = CartesianRepresentation(
+                r_f, differentials=CartesianDifferential(v_f)
+            )
+        else:
+            data = CartesianRepresentation(r_f)
         return equatorial_frame.realize_frame(data)
 
     @staticmethod
     def from_equatorial(equatorial_coo, fixed_frame):
-        assert equatorial_coo.body == fixed_frame.body
+        # TODO replace w/ something smart (Sun/Earth special cased)
+        # assert equatorial_coo.body == fixed_frame.body
 
-        r = equatorial_coo.data.xyz
-        v = equatorial_coo.data.differentials["s"].d_xyz
+        r = equatorial_coo.cartesian.xyz
 
         ra, dec, W = fixed_frame.rot_elements_at_epoch(equatorial_coo.obstime)
 
-        icrs_frame_pos_coord, icrs_frame_vel_coord = get_body_barycentric_posvel(
-            equatorial_coo.body.name, time=equatorial_coo.obstime
-        )
-
-        r_trans1 = r - icrs_frame_pos_coord.xyz
-        r_trans2 = transform_vector(r_trans1, (90 * u.deg + ra), "z")
+        r_trans2 = transform_vector(r, (90 * u.deg + ra), "z")
         r_f = transform_vector(r_trans2, (90 * u.deg - dec), "x")
-
-        v_trans1 = v - icrs_frame_vel_coord.xyz
-        v_trans2 = transform_vector(v_trans1, (90 * u.deg + ra), "z")
-        v_f = transform_vector(v_trans2, (90 * u.deg - dec), "x")
-
         r_f = transform_vector(r_f, W, "z")
-        v_f = transform_vector(v_f, W, "z")
 
-        data = CartesianRepresentation(r_f, differentials=CartesianDifferential(v_f))
+        if equatorial_coo.data.differentials:
+            v = equatorial_coo.data.differentials["s"].d_xyz
+            v_trans1 = transform_vector(v, (90 * u.deg + ra), "z")
+            v_f = transform_vector(v_trans1, (90 * u.deg - dec), "x")
+            v_f = transform_vector(v_f, W, "z")
+            data = CartesianRepresentation(
+                r_f, differentials=CartesianDifferential(v_f)
+            )
+        else:
+            data = CartesianRepresentation(r_f)
         return fixed_frame.realize_frame(data)
 
     @classmethod
@@ -176,11 +172,11 @@ class MercuryFixed(_PlanetaryFixed):
         ra = (281.0103 - 0.0328 * T) * u.deg
         dec = (61.45 - 0.005 * T) * u.deg
         W = (329.5988 + 6.1385108 * d) * u.deg + (
-            0.01067257 * math.sin(M1.to("rad").value)
-            - 0.00112309 * math.sin(M2.to("rad").value)
-            - 0.00011040 * math.sin(M3.to("rad").value)
-            - 0.00002539 * math.sin(M4.to("rad").value)
-            - 0.00000571 * math.sin(M5.to("rad").value)
+            0.01067257 * np.sin(M1.to("rad").value)
+            - 0.00112309 * np.sin(M2.to("rad").value)
+            - 0.00011040 * np.sin(M3.to("rad").value)
+            - 0.00002539 * np.sin(M4.to("rad").value)
+            - 0.00000571 * np.sin(M5.to("rad").value)
         ) * u.deg
 
         return ra, dec, W
@@ -214,11 +210,11 @@ class MarsFixed(_PlanetaryFixed):
         ra = (
             317.269202
             - 0.10927547 * T
-            + 0.000068 * math.sin(M1.to("rad").value)
-            + 0.000238 * math.sin(M2.to("rad").value)
-            + 0.000052 * math.sin(M3.to("rad").value)
-            + 0.000009 * math.sin(M4.to("rad").value)
-            + 0.419057 * math.sin(M5.to("rad").value)
+            + 0.000068 * np.sin(M1.to("rad").value)
+            + 0.000238 * np.sin(M2.to("rad").value)
+            + 0.000052 * np.sin(M3.to("rad").value)
+            + 0.000009 * np.sin(M4.to("rad").value)
+            + 0.419057 * np.sin(M5.to("rad").value)
         ) * u.deg
 
         K1 = (122.433576 + 19139.9407476 * T) * u.deg
@@ -230,11 +226,11 @@ class MarsFixed(_PlanetaryFixed):
         dec = (
             54.432516
             - 0.05827105 * T
-            + 0.000051 * math.cos(K1.to("rad").value)
-            + 0.000141 * math.cos(K2.to("rad").value)
-            + 0.000031 * math.cos(K3.to("rad").value)
-            + 0.000005 * math.cos(K4.to("rad").value)
-            + 1.591274 * math.cos(K5.to("rad").value)
+            + 0.000051 * np.cos(K1.to("rad").value)
+            + 0.000141 * np.cos(K2.to("rad").value)
+            + 0.000031 * np.cos(K3.to("rad").value)
+            + 0.000005 * np.cos(K4.to("rad").value)
+            + 1.591274 * np.cos(K5.to("rad").value)
         ) * u.deg
 
         J1 = (129.071773 + 19140.0328244 * T) * u.deg
@@ -247,12 +243,12 @@ class MarsFixed(_PlanetaryFixed):
         W = (
             176.049863
             + 350.891982443297 * d
-            + 0.000145 * math.sin(J1.to("rad").value)
-            + 0.000157 * math.sin(J2.to("rad").value)
-            + 0.000040 * math.sin(J3.to("rad").value)
-            + 0.000001 * math.sin(J4.to("rad").value)
-            + 0.000001 * math.sin(J5.to("rad").value)
-            + 0.584542 * math.sin(J6.to("rad").value)
+            + 0.000145 * np.sin(J1.to("rad").value)
+            + 0.000157 * np.sin(J2.to("rad").value)
+            + 0.000040 * np.sin(J3.to("rad").value)
+            + 0.000001 * np.sin(J4.to("rad").value)
+            + 0.000001 * np.sin(J5.to("rad").value)
+            + 0.584542 * np.sin(J6.to("rad").value)
         ) * u.deg
 
         return ra, dec, W
@@ -273,20 +269,20 @@ class JupiterFixed(_PlanetaryFixed):
         ra = (
             268.056595
             - 0.006499 * T
-            + 0.000117 * math.sin(Ja.to("rad").value)
-            + 0.000938 * math.sin(Jb.to("rad").value)
-            + 0.001432 * math.sin(Jc.to("rad").value)
-            + 0.000030 * math.sin(Jd.to("rad").value)
-            + 0.002150 * math.sin(Je.to("rad").value)
+            + 0.000117 * np.sin(Ja.to("rad").value)
+            + 0.000938 * np.sin(Jb.to("rad").value)
+            + 0.001432 * np.sin(Jc.to("rad").value)
+            + 0.000030 * np.sin(Jd.to("rad").value)
+            + 0.002150 * np.sin(Je.to("rad").value)
         ) * u.deg
         dec = (
             64.495303
             + 0.002413 * T
-            + 0.000050 * math.cos(Ja.to("rad").value)
-            + 0.000404 * math.cos(Jb.to("rad").value)
-            + 0.000617 * math.cos(Jc.to("rad").value)
-            - 0.000013 * math.cos(Jd.to("rad").value)
-            + 0.000926 * math.cos(Je.to("rad").value)
+            + 0.000050 * np.cos(Ja.to("rad").value)
+            + 0.000404 * np.cos(Jb.to("rad").value)
+            + 0.000617 * np.cos(Jc.to("rad").value)
+            - 0.000013 * np.cos(Jd.to("rad").value)
+            + 0.000926 * np.cos(Je.to("rad").value)
         ) * u.deg
         W = (284.95 + 870.536 * d) * u.deg
 
@@ -327,9 +323,9 @@ class NeptuneFixed(_PlanetaryFixed):
     def _rot_elements_at_epoch(T, d):
         N = (357.85 + 52.316 * T) * u.deg
 
-        ra = (299.36 + 0.70 * math.sin(N.to("rad").value)) * u.deg
-        dec = (43.46 - 0.51 * math.cos(N.to("rad").value)) * u.deg
-        W = (249.978 + 541.1397757 * d - 0.48 * math.sin(N.to("rad").value)) * u.deg
+        ra = (299.36 + 0.70 * np.sin(N.to("rad").value)) * u.deg
+        dec = (43.46 - 0.51 * np.cos(N.to("rad").value)) * u.deg
+        W = (249.978 + 541.1397757 * d - 0.48 * np.sin(N.to("rad").value)) * u.deg
 
         return ra, dec, W
 
@@ -370,43 +366,43 @@ class MoonFixed(_PlanetaryFixed):
         ra = (
             269.9949
             + 0.0031 * T
-            - 3.8787 * math.sin(E1.to("rad").value)
-            - 0.1204 * math.sin(E2.to("rad").value)
-            + 0.0700 * math.sin(E3.to("rad").value)
-            - 0.0172 * math.sin(E4.to("rad").value)
-            + 0.0072 * math.sin(E6.to("rad").value)
-            - 0.0052 * math.sin(E10.to("rad").value)
-            + 0.0043 * math.sin(E13.to("rad").value)
+            - 3.8787 * np.sin(E1.to("rad").value)
+            - 0.1204 * np.sin(E2.to("rad").value)
+            + 0.0700 * np.sin(E3.to("rad").value)
+            - 0.0172 * np.sin(E4.to("rad").value)
+            + 0.0072 * np.sin(E6.to("rad").value)
+            - 0.0052 * np.sin(E10.to("rad").value)
+            + 0.0043 * np.sin(E13.to("rad").value)
         ) * u.deg
         dec = (
             66.5392
             + 0.0130 * T
-            + 1.5419 * math.cos(E1.to("rad").value)
-            + 0.0239 * math.cos(E2.to("rad").value)
-            - 0.0278 * math.cos(E3.to("rad").value)
-            + 0.0068 * math.cos(E4.to("rad").value)
-            - 0.0029 * math.cos(E6.to("rad").value)
-            + 0.0009 * math.cos(E7.to("rad").value)
-            + 0.0008 * math.cos(E10.to("rad").value)
-            - 0.0009 * math.cos(E13.to("rad").value)
+            + 1.5419 * np.cos(E1.to("rad").value)
+            + 0.0239 * np.cos(E2.to("rad").value)
+            - 0.0278 * np.cos(E3.to("rad").value)
+            + 0.0068 * np.cos(E4.to("rad").value)
+            - 0.0029 * np.cos(E6.to("rad").value)
+            + 0.0009 * np.cos(E7.to("rad").value)
+            + 0.0008 * np.cos(E10.to("rad").value)
+            - 0.0009 * np.cos(E13.to("rad").value)
         ) * u.deg
         W = (
             38.321
             + 13.17635815 * d
             - 1.4e-12 * d ** 2
-            + 3.5610 * math.sin(E1.to("rad").value)
-            + 0.1208 * math.sin(E2.to("rad").value)
-            - 0.0642 * math.sin(E3.to("rad").value)
-            + 0.0158 * math.sin(E4.to("rad").value)
-            + 0.0252 * math.sin(E5.to("rad").value)
-            - 0.0066 * math.sin(E6.to("rad").value)
-            - 0.0047 * math.sin(E7.to("rad").value)
-            - 0.0046 * math.sin(E8.to("rad").value)
-            + 0.0028 * math.sin(E9.to("rad").value)
-            + 0.0052 * math.sin(E10.to("rad").value)
-            + 0.0040 * math.sin(E11.to("rad").value)
-            + 0.0019 * math.sin(E12.to("rad").value)
-            - 0.0044 * math.sin(E13.to("rad").value)
+            + 3.5610 * np.sin(E1.to("rad").value)
+            + 0.1208 * np.sin(E2.to("rad").value)
+            - 0.0642 * np.sin(E3.to("rad").value)
+            + 0.0158 * np.sin(E4.to("rad").value)
+            + 0.0252 * np.sin(E5.to("rad").value)
+            - 0.0066 * np.sin(E6.to("rad").value)
+            - 0.0047 * np.sin(E7.to("rad").value)
+            - 0.0046 * np.sin(E8.to("rad").value)
+            + 0.0028 * np.sin(E9.to("rad").value)
+            + 0.0052 * np.sin(E10.to("rad").value)
+            + 0.0040 * np.sin(E11.to("rad").value)
+            + 0.0019 * np.sin(E12.to("rad").value)
+            - 0.0044 * np.sin(E13.to("rad").value)
         ) * u.deg
 
         return ra, dec, W

Fixed planetary frame transformation error
When creating a coordinate in a planetary fixed frame a transformation is not possible due to 
an error in `frames/fixed.py`

🐞 **Problem**

```
testloc = frames.fixed.MarsFixed(10 * u.deg, 20 * u.deg, distance=bodies.Mars.R, obstime=start_time)
testloc.transform_to(frames.ICRS)
```

```
~/git/misc/poliastro/src/poliastro/frames/fixed.py in to_equatorial(fixed_coo, equatorial_frame)
     73         assert fixed_coo.body == equatorial_frame.body
     74 
---> 75         r = fixed_coo.data.xyz
     76         v = fixed_coo.data.differentials["s"].d_xyz
     77 

AttributeError: 'SphericalRepresentation' object has no attribute 'xyz'
```

💡 **Possible solutions**

Converting to CartesianRepresentation and filling in the CartesianDifferentials. Possibly similar to how it is handled for `EarthLocation` in `earth.py` in astropy.

diff --git a/src/poliastro/tests/test_frames.py b/src/poliastro/tests/test_frames.py
index 720a9542..37dfb06a 100644
--- a/src/poliastro/tests/test_frames.py
+++ b/src/poliastro/tests/test_frames.py
@@ -35,6 +35,18 @@ from poliastro.frames import (
     UranusICRS,
     VenusICRS,
 )
+from poliastro.frames.fixed import (
+    ITRS,
+    JupiterFixed,
+    MarsFixed,
+    MercuryFixed,
+    NeptuneFixed,
+    PlutoFixed,
+    SaturnFixed,
+    SunFixed,
+    UranusFixed,
+    VenusFixed,
+)
 
 
 @pytest.mark.parametrize(
@@ -113,6 +125,66 @@ def test_icrs_body_position_to_planetary_frame_yields_zeros(body, frame):
     assert_quantity_allclose(vector_result.xyz, [0, 0, 0] * u.km, atol=1e-7 * u.km)
 
 
+@pytest.mark.parametrize(
+    "body, fixed_frame, inertial_frame",
+    [
+        (Sun, SunFixed, HCRS),
+        (Mercury, MercuryFixed, MercuryICRS),
+        (Venus, VenusFixed, VenusICRS),
+        (Earth, ITRS, GCRS),
+        (Mars, MarsFixed, MarsICRS),
+        (Jupiter, JupiterFixed, JupiterICRS),
+        (Saturn, SaturnFixed, SaturnICRS),
+        (Uranus, UranusFixed, UranusICRS),
+        (Neptune, NeptuneFixed, NeptuneICRS),
+        (Pluto, PlutoFixed, PlutoICRS),
+    ],
+)
+def test_planetary_fixed_inertial_conversion(body, fixed_frame, inertial_frame):
+    with solar_system_ephemeris.set("builtin"):
+        epoch = J2000
+        fixed_position = fixed_frame(
+            0 * u.deg, 0 * u.deg, body.R, obstime=epoch, representation_type="spherical"
+        )
+        inertial_position = fixed_position.transform_to(inertial_frame)
+        assert_quantity_allclose(
+            fixed_position.spherical.distance, body.R, atol=1e-7 * u.km
+        )
+        assert_quantity_allclose(
+            inertial_position.spherical.distance, body.R, atol=1e-7 * u.km
+        )
+
+
+@pytest.mark.parametrize(
+    "body, fixed_frame, inertial_frame",
+    [
+        (Sun, SunFixed, HCRS),
+        (Mercury, MercuryFixed, MercuryICRS),
+        (Venus, VenusFixed, VenusICRS),
+        (Earth, ITRS, GCRS),
+        (Mars, MarsFixed, MarsICRS),
+        (Jupiter, JupiterFixed, JupiterICRS),
+        (Saturn, SaturnFixed, SaturnICRS),
+        (Uranus, UranusFixed, UranusICRS),
+        (Neptune, NeptuneFixed, NeptuneICRS),
+        (Pluto, PlutoFixed, PlutoICRS),
+    ],
+)
+def test_planetary_inertial_fixed_conversion(body, fixed_frame, inertial_frame):
+    with solar_system_ephemeris.set("builtin"):
+        epoch = J2000
+        inertial_position = inertial_frame(
+            0 * u.deg, 0 * u.deg, body.R, obstime=epoch, representation_type="spherical"
+        )
+        fixed_position = inertial_position.transform_to(fixed_frame)
+        assert_quantity_allclose(
+            fixed_position.spherical.distance, body.R, atol=1e-7 * u.km
+        )
+        assert_quantity_allclose(
+            inertial_position.spherical.distance, body.R, atol=1e-7 * u.km
+        )
+
+
 def test_round_trip_from_GeocentricSolarEcliptic_gives_same_results():
     gcrs = GCRS(ra="02h31m49.09s", dec="+89d15m50.8s", distance=200 * u.km)
     gse = gcrs.transform_to(GeocentricSolarEcliptic(obstime=Time("J2000")))

pip install -e .[dev]
parse_log_pytest
pytest
pytest pytest-cov pytest-doctestplus pytest-mpl pytest-mypy pytest-remotedata
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.13
astropy==3.2.3
astroquery==0.4.3
attrs @ file:///croot/attrs_1668696182826/work
Babel==2.14.0
backcall==0.2.0
beautifulsoup4==4.13.3
black==23.3.0
bleach==6.0.0
cachetools==5.5.2
certifi @ file:///croot/certifi_1671487769961/work/certifi
cffi==1.15.1
chardet==5.2.0
charset-normalizer==3.4.1
click==8.1.8
colorama==0.4.6
comm==0.1.4
coverage==7.2.7
cryptography==44.0.2
cycler==0.11.0
debugpy==1.7.0
decorator==5.1.1
defusedxml==0.7.1
distlib==0.3.9
docutils==0.19
entrypoints==0.4
fastjsonschema==2.21.1
filelock==3.12.2
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
fonttools==4.38.0
html5lib==1.1
idna==3.10
imagesize==1.4.1
importlib-metadata==6.7.0
importlib-resources==5.12.0
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
ipykernel==6.16.2
ipython==7.34.0
ipywidgets==8.1.5
isort==5.11.5
jaraco.classes==3.2.3
jedi==0.19.2
jeepney==0.9.0
Jinja2==3.1.6
jplephem==2.22
jsonschema==4.17.3
jupyter_client==7.4.9
jupyter_core==4.12.0
jupyterlab-pygments==0.2.2
jupyterlab_widgets==3.0.13
keyring==24.1.1
kiwisolver==1.4.5
llvmlite==0.39.1
MarkupSafe==2.1.5
matplotlib==3.5.3
matplotlib-inline==0.1.6
mimeparse==0.1.3
mistune==3.0.2
more-itertools==9.1.0
mypy==1.4.1
mypy-extensions==1.0.0
nbclient==0.7.4
nbconvert==7.6.0
nbformat==5.8.0
nbsphinx==0.9.7
nest-asyncio==1.6.0
numba==0.56.4
numpy==1.21.6
packaging==24.0
pandas==1.3.5
pandocfilters==1.5.1
parso==0.8.4
pathspec==0.11.2
pexpect==4.9.0
pickleshare==0.7.5
Pillow==9.5.0
pkgutil_resolve_name==1.3.10
platformdirs==4.0.0
plotly==4.14.3
pluggy==1.2.0
-e git+https://github.com/poliastro/poliastro.git@5341717b03f7208717087e4fe0f140b735b67298#egg=poliastro
prompt_toolkit==3.0.48
psutil==7.0.0
ptyprocess==0.7.0
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pycodestyle==2.10.0
pycparser==2.21
Pygments==2.17.2
pyparsing==3.1.4
pyproject-api==1.5.3
pyrsistent==0.19.3
pytest==7.1.2
pytest-cov==2.5.1
pytest-doctestplus==1.0.0
pytest-mpl==0.17.0
pytest-mypy==0.10.3
pytest-remotedata==0.4.1
python-dateutil==2.9.0.post0
pytz==2025.2
pyvo==1.1
pyzmq==26.2.1
requests==2.31.0
retrying==1.3.4
scipy==1.7.3
SecretStorage==3.3.3
six==1.17.0
snowballstemmer==2.2.0
soupsieve==2.4.1
Sphinx==5.3.0
sphinx-hoverxref @ https://github.com/readthedocs/sphinx-hoverxref/archive/master.zip
sphinx-notfound-page==0.8.3
sphinx-rtd-theme @ https://github.com/Juanlu001/sphinx_rtd_theme/archive/avoid-require-redefinition.zip
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.0
sphinxcontrib-jquery==4.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
tinycss2==1.2.1
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
tornado==6.2
tox==4.8.0
traitlets==5.9.0
typed-ast==1.5.5
typing_extensions==4.7.1
urllib3==2.0.7
virtualenv==20.26.6
wcwidth==0.2.13
webencodings==0.5.1
widgetsnbextension==4.0.13
zipp @ file:///croot/zipp_1672387121353/work

name: poliastro
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=22.1.0=py37h06a4308_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - py=1.11.0=pyhd3eb1b0_0
  - pytest=7.1.2=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py37h06a4308_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.13
      - astropy==3.2.3
      - astroquery==0.4.3
      - babel==2.14.0
      - backcall==0.2.0
      - beautifulsoup4==4.13.3
      - black==23.3.0
      - bleach==6.0.0
      - cachetools==5.5.2
      - cffi==1.15.1
      - chardet==5.2.0
      - charset-normalizer==3.4.1
      - click==8.1.8
      - colorama==0.4.6
      - comm==0.1.4
      - coverage==7.2.7
      - cryptography==44.0.2
      - cycler==0.11.0
      - debugpy==1.7.0
      - decorator==5.1.1
      - defusedxml==0.7.1
      - distlib==0.3.9
      - docutils==0.19
      - entrypoints==0.4
      - fastjsonschema==2.21.1
      - filelock==3.12.2
      - fonttools==4.38.0
      - html5lib==1.1
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==6.7.0
      - importlib-resources==5.12.0
      - ipykernel==6.16.2
      - ipython==7.34.0
      - ipywidgets==8.1.5
      - isort==5.11.5
      - jaraco-classes==3.2.3
      - jedi==0.19.2
      - jeepney==0.9.0
      - jinja2==3.1.6
      - jplephem==2.22
      - jsonschema==4.17.3
      - jupyter-client==7.4.9
      - jupyter-core==4.12.0
      - jupyterlab-pygments==0.2.2
      - jupyterlab-widgets==3.0.13
      - keyring==24.1.1
      - kiwisolver==1.4.5
      - llvmlite==0.39.1
      - markupsafe==2.1.5
      - matplotlib==3.5.3
      - matplotlib-inline==0.1.6
      - mimeparse==0.1.3
      - mistune==3.0.2
      - more-itertools==9.1.0
      - mypy==1.4.1
      - mypy-extensions==1.0.0
      - nbclient==0.7.4
      - nbconvert==7.6.0
      - nbformat==5.8.0
      - nbsphinx==0.9.7
      - nest-asyncio==1.6.0
      - numba==0.56.4
      - numpy==1.21.6
      - packaging==24.0
      - pandas==1.3.5
      - pandocfilters==1.5.1
      - parso==0.8.4
      - pathspec==0.11.2
      - pexpect==4.9.0
      - pickleshare==0.7.5
      - pillow==9.5.0
      - pkgutil-resolve-name==1.3.10
      - platformdirs==4.0.0
      - plotly==4.14.3
      - pluggy==1.2.0
      - prompt-toolkit==3.0.48
      - psutil==7.0.0
      - ptyprocess==0.7.0
      - pycodestyle==2.10.0
      - pycparser==2.21
      - pygments==2.17.2
      - pyparsing==3.1.4
      - pyproject-api==1.5.3
      - pyrsistent==0.19.3
      - pytest-cov==2.5.1
      - pytest-doctestplus==1.0.0
      - pytest-mpl==0.17.0
      - pytest-mypy==0.10.3
      - pytest-remotedata==0.4.1
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - pyvo==1.1
      - pyzmq==26.2.1
      - requests==2.31.0
      - retrying==1.3.4
      - scipy==1.7.3
      - secretstorage==3.3.3
      - six==1.17.0
      - snowballstemmer==2.2.0
      - soupsieve==2.4.1
      - sphinx==5.3.0
      - sphinx-hoverxref==1.4.2
      - sphinx-notfound-page==0.8.3
      - sphinx-rtd-theme==0.4.3+require.redef
      - sphinxcontrib-applehelp==1.0.2
      - sphinxcontrib-devhelp==1.0.2
      - sphinxcontrib-htmlhelp==2.0.0
      - sphinxcontrib-jquery==4.1
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==1.0.3
      - sphinxcontrib-serializinghtml==1.1.5
      - tinycss2==1.2.1
      - tornado==6.2
      - tox==4.8.0
      - traitlets==5.9.0
      - typed-ast==1.5.5
      - typing-extensions==4.7.1
      - urllib3==2.0.7
      - virtualenv==20.26.6
      - wcwidth==0.2.13
      - webencodings==0.5.1
      - widgetsnbextension==4.0.13
prefix: /opt/conda/envs/poliastro

src/poliastro/tests/test_frames.py::test_planetary_fixed_inertial_conversion[body0-SunFixed-HCRS] src/poliastro/tests/test_frames.py::test_planetary_fixed_inertial_conversion[body1-MercuryFixed-MercuryICRS] src/poliastro/tests/test_frames.py::test_planetary_fixed_inertial_conversion[body2-VenusFixed-VenusICRS] src/poliastro/tests/test_frames.py::test_planetary_fixed_inertial_conversion[body4-MarsFixed-MarsICRS] src/poliastro/tests/test_frames.py::test_planetary_fixed_inertial_conversion[body5-JupiterFixed-JupiterICRS] src/poliastro/tests/test_frames.py::test_planetary_fixed_inertial_conversion[body6-SaturnFixed-SaturnICRS] src/poliastro/tests/test_frames.py::test_planetary_fixed_inertial_conversion[body7-UranusFixed-UranusICRS] src/poliastro/tests/test_frames.py::test_planetary_fixed_inertial_conversion[body8-NeptuneFixed-NeptuneICRS] src/poliastro/tests/test_frames.py::test_planetary_fixed_inertial_conversion[body9-PlutoFixed-PlutoICRS] src/poliastro/tests/test_frames.py::test_planetary_inertial_fixed_conversion[body0-SunFixed-HCRS] src/poliastro/tests/test_frames.py::test_planetary_inertial_fixed_conversion[body1-MercuryFixed-MercuryICRS] src/poliastro/tests/test_frames.py::test_planetary_inertial_fixed_conversion[body2-VenusFixed-VenusICRS] src/poliastro/tests/test_frames.py::test_planetary_inertial_fixed_conversion[body4-MarsFixed-MarsICRS] src/poliastro/tests/test_frames.py::test_planetary_inertial_fixed_conversion[body5-JupiterFixed-JupiterICRS] src/poliastro/tests/test_frames.py::test_planetary_inertial_fixed_conversion[body6-SaturnFixed-SaturnICRS] src/poliastro/tests/test_frames.py::test_planetary_inertial_fixed_conversion[body7-UranusFixed-UranusICRS] src/poliastro/tests/test_frames.py::test_planetary_inertial_fixed_conversion[body8-NeptuneFixed-NeptuneICRS] src/poliastro/tests/test_frames.py::test_planetary_inertial_fixed_conversion[body9-PlutoFixed-PlutoICRS]
src/poliastro/tests/test_frames.py::test_planetary_frames_have_proper_string_representations[body0-MercuryICRS] src/poliastro/tests/test_frames.py::test_planetary_frames_have_proper_string_representations[body1-VenusICRS] src/poliastro/tests/test_frames.py::test_planetary_frames_have_proper_string_representations[body2-MarsICRS] src/poliastro/tests/test_frames.py::test_planetary_frames_have_proper_string_representations[body3-JupiterICRS] src/poliastro/tests/test_frames.py::test_planetary_frames_have_proper_string_representations[body4-SaturnICRS] src/poliastro/tests/test_frames.py::test_planetary_frames_have_proper_string_representations[body5-UranusICRS] src/poliastro/tests/test_frames.py::test_planetary_frames_have_proper_string_representations[body6-NeptuneICRS] src/poliastro/tests/test_frames.py::test_planetary_frames_have_proper_string_representations[body7-PlutoICRS] src/poliastro/tests/test_frames.py::test_planetary_icrs_frame_is_just_translation[body0-HCRS] src/poliastro/tests/test_frames.py::test_planetary_icrs_frame_is_just_translation[body1-MercuryICRS] src/poliastro/tests/test_frames.py::test_planetary_icrs_frame_is_just_translation[body2-VenusICRS] src/poliastro/tests/test_frames.py::test_planetary_icrs_frame_is_just_translation[body3-GCRS] src/poliastro/tests/test_frames.py::test_planetary_icrs_frame_is_just_translation[body4-MarsICRS] src/poliastro/tests/test_frames.py::test_planetary_icrs_frame_is_just_translation[body5-JupiterICRS] src/poliastro/tests/test_frames.py::test_planetary_icrs_frame_is_just_translation[body6-SaturnICRS] src/poliastro/tests/test_frames.py::test_planetary_icrs_frame_is_just_translation[body7-UranusICRS] src/poliastro/tests/test_frames.py::test_planetary_icrs_frame_is_just_translation[body8-NeptuneICRS] src/poliastro/tests/test_frames.py::test_icrs_body_position_to_planetary_frame_yields_zeros[body0-HCRS] src/poliastro/tests/test_frames.py::test_icrs_body_position_to_planetary_frame_yields_zeros[body1-MercuryICRS] src/poliastro/tests/test_frames.py::test_icrs_body_position_to_planetary_frame_yields_zeros[body2-VenusICRS] src/poliastro/tests/test_frames.py::test_icrs_body_position_to_planetary_frame_yields_zeros[body3-GCRS] src/poliastro/tests/test_frames.py::test_icrs_body_position_to_planetary_frame_yields_zeros[body4-MarsICRS] src/poliastro/tests/test_frames.py::test_icrs_body_position_to_planetary_frame_yields_zeros[body5-JupiterICRS] src/poliastro/tests/test_frames.py::test_icrs_body_position_to_planetary_frame_yields_zeros[body6-SaturnICRS] src/poliastro/tests/test_frames.py::test_icrs_body_position_to_planetary_frame_yields_zeros[body7-UranusICRS] src/poliastro/tests/test_frames.py::test_icrs_body_position_to_planetary_frame_yields_zeros[body8-NeptuneICRS] src/poliastro/tests/test_frames.py::test_planetary_fixed_inertial_conversion[body3-ITRS-GCRS] src/poliastro/tests/test_frames.py::test_planetary_inertial_fixed_conversion[body3-ITRS-GCRS] src/poliastro/tests/test_frames.py::test_round_trip_from_GeocentricSolarEcliptic_gives_same_results src/poliastro/tests/test_frames.py::test_GeocentricSolarEcliptic_against_data src/poliastro/tests/test_frames.py::test_GeocentricSolarEcliptic_raises_error_nonscalar_obstime
src/poliastro/frames/fixed.py
src/poliastro/frames/fixed.py