Repository: PlasmaPy/PlasmaPy

Issue:
Add python 3.8 to testing matrix

Test against minimum versions of required packages
We have defined minimum versions for many of our required packages in our `requirements` directory.  However, to the best of my knowledge we do not explicitly test against the minimum versions to make sure that PlasmaPy works with them.  It would be really helpful to add a test to Travis CI or AppVeyer that specifically tests the minimum supported versions as listed in those files.

One thing that we should be careful of is that the version on PyPI for the `roman` package differs from the `roman.__version__` attribute.

It would be most helpful to set things up so that the minimum versions are taken directly from `automated-code-tests.txt` rather than us having to type in and update the minimum versions somewhere else manually.

Thanks!


Discussion:

I think this is best solved by specifying the minimal versions for the Travis env, so it downloads those, and then running another test suite on current latest releases. I'll deal with that once I'm back.
It's probably better to just bump it up for now. Not a priority thing.

Resolving patch:
diff --git a/plasmapy/atomic/atomic.py b/plasmapy/atomic/atomic.py
--- a/plasmapy/atomic/atomic.py
+++ b/plasmapy/atomic/atomic.py
@@ -197,9 +197,9 @@ def standard_atomic_weight(element: Particle) -> u.Quantity:
     Examples
     --------
     >>> standard_atomic_weight("H")
-    <Quantity 1.67382335e-27 kg>
+    <Quantity 1.6738233e-27 kg>
     >>> standard_atomic_weight("lead")
-    <Quantity 3.44063689e-25 kg>
+    <Quantity 3.440636e-25 kg>
 
     """
     # TODO: Put in ReST links into above docstring
@@ -417,7 +417,7 @@ def electric_charge(particle: Particle) -> u.Quantity:
     Examples
     --------
     >>> electric_charge('p+')
-    <<class 'astropy.constants.codata2014.EMCODATA2014'> name='Electron charge' value=1.6021766208e-19 uncertainty=9.8e-28 unit='C' reference='CODATA 2014'>
+    <<class 'astropy.constants.codata...'> name='Electron charge' ...>
     >>> electric_charge('H-')
     <Quantity -1.60217662e-19 C>
 
@@ -882,7 +882,7 @@ def reduced_mass(test_particle, target_particle) -> u.Quantity:
     -------
     >>> from astropy import units as u
     >>> reduced_mass('p+', 'e-')
-    <Quantity 9.10442514e-31 kg>
+    <Quantity 9.104425e-31 kg>
     >>> reduced_mass(5.4e-27 * u.kg, 8.6e-27 * u.kg)
     <Quantity 3.31714286e-27 kg>
 
diff --git a/plasmapy/atomic/nuclear.py b/plasmapy/atomic/nuclear.py
--- a/plasmapy/atomic/nuclear.py
+++ b/plasmapy/atomic/nuclear.py
@@ -60,16 +60,16 @@ def nuclear_binding_energy(particle: Particle, mass_numb: Optional[int] = None)
     --------
     >>> from astropy import units as u
     >>> nuclear_binding_energy('Fe-56').to(u.MeV)
-    <Quantity 492.25957876 MeV>
+    <Quantity 492.25957 MeV>
     >>> nuclear_binding_energy(26, 56)
-    <Quantity 7.88686788e-11 J>
+    <Quantity 7.8868678e-11 J>
     >>> nuclear_binding_energy('p')  # proton
     <Quantity 0. J>
     >>> from astropy import units as u
     >>> before = nuclear_binding_energy("D") + nuclear_binding_energy("T")
     >>> after = nuclear_binding_energy("alpha")
     >>> (after - before).to(u.MeV)  # released energy from D + T --> alpha + n
-    <Quantity 17.58932778 MeV>
+    <Quantity 17.589 MeV>
 
     """
     return particle.binding_energy.to(u.J)
@@ -109,7 +109,7 @@ def mass_energy(particle: Particle, mass_numb: Optional[int] = None) -> u.Quanti
         If the inputs are not of the correct types.
 
     >>> mass_energy('He-4')
-    <Quantity 5.97191997e-10 J>
+    <Quantity 5.9719e-10 J>
 
     """
     return particle.mass_energy
@@ -172,19 +172,19 @@ def nuclear_reaction_energy(*args, **kwargs):
     >>> from astropy import units as u
 
     >>> nuclear_reaction_energy("D + T --> alpha + n")
-    <Quantity 2.81812097e-12 J>
+    <Quantity 2.8181e-12 J>
 
     >>> triple_alpha1 = '2*He-4 --> Be-8'
     >>> triple_alpha2 = 'Be-8 + alpha --> carbon-12'
     >>> energy_triplealpha1 = nuclear_reaction_energy(triple_alpha1)
     >>> energy_triplealpha2 = nuclear_reaction_energy(triple_alpha2)
     >>> print(energy_triplealpha1, energy_triplealpha2)
-    -1.4714307834388437e-14 J 1.1802573526724632e-12 J
+    -1.471430e-14 J 1.1802573e-12 J
     >>> energy_triplealpha2.to(u.MeV)
-    <Quantity 7.36658704 MeV>
+    <Quantity 7.3665870 MeV>
 
     >>> nuclear_reaction_energy(reactants=['n'], products=['p+', 'e-'])
-    <Quantity 1.25343511e-13 J>
+    <Quantity 1.25343e-13 J>
 
     """
 
diff --git a/plasmapy/formulary/parameters.py b/plasmapy/formulary/parameters.py
--- a/plasmapy/formulary/parameters.py
+++ b/plasmapy/formulary/parameters.py
@@ -802,7 +802,7 @@ def gyrofrequency(B: u.T, particle='e-', signed=False, Z=None):
     >>> gyrofrequency(0.1*u.T)
     <Quantity 1.75882002e+10 rad / s>
     >>> gyrofrequency(0.1*u.T, to_hz=True)
-    <Quantity 2799249007.6528206 Hz>
+    <Quantity 2.79924901e+09 Hz>
     >>> gyrofrequency(0.1*u.T, signed=True)
     <Quantity -1.75882002e+10 rad / s>
     >>> gyrofrequency(0.01*u.T, 'p')
@@ -812,7 +812,7 @@ def gyrofrequency(B: u.T, particle='e-', signed=False, Z=None):
     >>> gyrofrequency(0.01*u.T, particle='T+')
     <Quantity 319964.54975911 rad / s>
     >>> gyrofrequency(0.01*u.T, particle='T+', to_hz=True)
-    <Quantity 50923.93970833496 Hz>
+    <Quantity 50923.93970833 Hz>
     >>> omega_ce = gyrofrequency(0.1*u.T)
     >>> print(omega_ce)
     17588200236.02124 rad / s
@@ -1046,13 +1046,13 @@ def plasma_frequency(n: u.m**-3, particle='e-', z_mean=None):
     >>> plasma_frequency(1e19*u.m**-3, particle='p')
     <Quantity 4.16329453e+09 rad / s>
     >>> plasma_frequency(1e19*u.m**-3, particle='p', to_hz=True)
-    <Quantity 662608904.1071696 Hz>
+    <Quantity 6.62608904e+08 Hz>
     >>> plasma_frequency(1e19*u.m**-3, particle='D+')
     <Quantity 2.94462452e+09 rad / s>
     >>> plasma_frequency(1e19*u.m**-3)
     <Quantity 1.78398636e+11 rad / s>
     >>> plasma_frequency(1e19*u.m**-3, to_hz=True)
-    <Quantity 28393024835.274036 Hz>
+    <Quantity 2.83930248e+10 Hz>
 
     """
 
@@ -1461,7 +1461,7 @@ def upper_hybrid_frequency(B: u.T, n_e: u.m**-3):
     >>> upper_hybrid_frequency(0.2*u.T, n_e=5e19*u.m**-3)
     <Quantity 4.00459419e+11 rad / s>
     >>> upper_hybrid_frequency(0.2*u.T, n_e=5e19*u.m**-3, to_hz = True)
-    <Quantity 63735096112.815445 Hz>
+    <Quantity 6.37350961e+10 Hz>
 
     """
 


Test patch: