Skip to content

Commit 2071628

Browse files
authored
Merge pull request #1881 from abhisrkckl/hints
Sourcery and type hints
2 parents 5e4d4a3 + a5c0c03 commit 2071628

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+413
-560
lines changed

CHANGELOG-unreleased.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ the released changes.
1515
### Fixed
1616
- Made `TimingModel.is_binary()` more robust.
1717
### Removed
18-
18+
- Definition of `@cached_property` to support Python<=3.7

src/pint/__init__.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,21 @@
1111
or how-to documentation, please see other sections of the online documentation.
1212
"""
1313

14+
from pathlib import Path
15+
1416
import astropy
1517
import astropy.constants as c
1618
import astropy.time as time
1719
import astropy.units as u
1820
import numpy as np
1921
from astropy.units import si
20-
from pathlib import Path
2122

2223
from pint import logging
2324
from pint.extern._version import get_versions
2425
from pint.pulsar_ecliptic import PulsarEcliptic
2526
from pint.pulsar_mjd import PulsarMJD, time_to_longdouble # ensure always loaded
26-
2727
from pint.utils import info_string
2828

29-
3029
__all__ = [
3130
"__version__",
3231
"ls",

src/pint/binaryconvert.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,21 @@
66
77
"""
88

9+
import copy
10+
from typing import List, Optional, Tuple, Union
11+
912
import numpy as np
1013
from astropy import units as u
1114
from astropy.time import Time
12-
import copy
13-
from uncertainties import ufloat, umath
1415
from loguru import logger as log
15-
from typing import Optional, List, Tuple, Union
16+
from uncertainties import ufloat, umath
1617

18+
import pint.models
1719
from pint import Tsun
1820
from pint.models.binary_bt import BinaryBT
19-
from pint.models.binary_dd import BinaryDD, BinaryDDS, BinaryDDH
21+
from pint.models.binary_dd import BinaryDD, BinaryDDH, BinaryDDS
2022
from pint.models.binary_ddk import BinaryDDK
2123
from pint.models.binary_ell1 import BinaryELL1, BinaryELL1H, BinaryELL1k
22-
import pint.models
2324

2425
# output types
2526
# DDGR is not included as there is not a well-defined way to get a unique output

src/pint/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""Functions related to PINT configuration."""
22

3-
import os
43
import importlib.resources
4+
import os
55

66
__all__ = ["datadir", "examplefile", "runtimefile"]
77

src/pint/derived_quantities.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
"""Functions to compute various derived quantities from pulsar spin parameters, masses, etc.
22
"""
33

4+
from typing import Optional, Union
5+
46
import astropy.constants as const
57
import astropy.units as u
68
import numpy as np
7-
from typing import Optional, Union
89

910
import pint
1011

src/pint/erfautils.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
"""Observatory position and velocity calculation."""
22

33
import erfa
4-
54
import numpy as np
65
from astropy import table
76
from astropy.coordinates import EarthLocation

src/pint/event_toas.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
from functools import partial
2323

2424
import astropy.io.fits as pyfits
25-
from astropy.time import Time
26-
from astropy.coordinates import EarthLocation
27-
from astropy import units as u
2825
import numpy as np
26+
from astropy import units as u
27+
from astropy.coordinates import EarthLocation
28+
from astropy.time import Time
2929
from loguru import logger as log
3030

3131
import pint.toa as toa

src/pint/eventstats.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"""
55

66
import numpy as np
7-
from numpy import exp, arange, log
7+
from numpy import arange, exp, log
88
from scipy.special import erfc, gamma
99
from scipy.stats import chi2, norm
1010

src/pint/fermi_toas.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
"""Work with Fermi TOAs."""
22

3-
from astropy.coordinates import SkyCoord, EarthLocation
4-
from astropy.time import Time
5-
from astropy.io import fits
63
import astropy.units as u
74
import numpy as np
5+
from astropy.coordinates import EarthLocation, SkyCoord
6+
from astropy.io import fits
7+
from astropy.time import Time
88
from loguru import logger as log
99

1010
import pint.toa as toa

src/pint/fits_utils.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
"""FITS handling functions"""
22

33
import numpy as np
4-
from loguru import logger as log
5-
6-
from erfa import DAYSEC as SECS_PER_DAY
7-
84
from astropy.io import fits
5+
from erfa import DAYSEC as SECS_PER_DAY
6+
from loguru import logger as log
97

108
from pint.pulsar_mjd import fortran_float
119

12-
1310
__all__ = ["read_fits_event_mjds", "read_fits_event_mjds_tuples"]
1411

1512

src/pint/fitter.py

Lines changed: 10 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import contextlib
6262
import copy
6363
from warnings import warn
64+
from functools import cached_property
6465

6566
import astropy.units as u
6667
import numpy as np
@@ -70,13 +71,20 @@
7071
from numdifftools import Hessian
7172

7273
import pint
73-
import pint.utils
7474
import pint.derived_quantities
75+
import pint.utils
76+
from pint.exceptions import (
77+
ConvergenceFailure,
78+
CorrelatedErrors,
79+
DegeneracyWarning,
80+
MaxiterReached,
81+
StepProblem,
82+
)
7583
from pint.models.parameter import (
7684
AngleParameter,
85+
InvalidModelParameters,
7786
boolParameter,
7887
strParameter,
79-
InvalidModelParameters,
8088
)
8189
from pint.pint_matrix import (
8290
CorrelationMatrix,
@@ -90,14 +98,6 @@
9098
from pint.residuals import Residuals, WidebandTOAResiduals
9199
from pint.toa import TOAs
92100
from pint.utils import FTest, normalize_designmatrix
93-
from pint.exceptions import (
94-
DegeneracyWarning,
95-
ConvergenceFailure,
96-
MaxiterReached,
97-
StepProblem,
98-
CorrelatedErrors,
99-
)
100-
101101

102102
__all__ = [
103103
"Fitter",
@@ -115,64 +115,6 @@
115115
"MaxiterReached",
116116
]
117117

118-
try:
119-
from functools import cached_property
120-
except ImportError:
121-
# not supported in python 3.7
122-
# This is just the code from python 3.8
123-
from _thread import RLock
124-
125-
_NOT_FOUND = object()
126-
127-
class cached_property:
128-
def __init__(self, func):
129-
self.func = func
130-
self.attrname = None
131-
self.__doc__ = func.__doc__
132-
self.lock = RLock()
133-
134-
def __set_name__(self, owner, name):
135-
if self.attrname is None:
136-
self.attrname = name
137-
elif name != self.attrname:
138-
raise TypeError(
139-
"Cannot assign the same cached_property to two different names "
140-
f"({self.attrname!r} and {name!r})."
141-
)
142-
143-
def __get__(self, instance, owner=None):
144-
if instance is None:
145-
return self
146-
if self.attrname is None:
147-
raise TypeError(
148-
"Cannot use cached_property instance without calling __set_name__ on it."
149-
)
150-
try:
151-
cache = instance.__dict__
152-
except AttributeError:
153-
# not all objects have __dict__ (e.g. class defines slots)
154-
msg = (
155-
f"No '__dict__' attribute on {type(instance).__name__!r} "
156-
f"instance to cache {self.attrname!r} property."
157-
)
158-
raise TypeError(msg) from None
159-
val = cache.get(self.attrname, _NOT_FOUND)
160-
if val is _NOT_FOUND:
161-
with self.lock:
162-
# check if another thread filled cache while we awaited lock
163-
val = cache.get(self.attrname, _NOT_FOUND)
164-
if val is _NOT_FOUND:
165-
val = self.func(instance)
166-
try:
167-
cache[self.attrname] = val
168-
except TypeError:
169-
msg = (
170-
f"The '__dict__' attribute on {type(instance).__name__!r} instance "
171-
f"does not support item assignment for caching {self.attrname!r} property."
172-
)
173-
raise TypeError(msg) from None
174-
return val
175-
176118

177119
class Fitter:
178120
"""Base class for objects encapsulating fitting problems.

src/pint/gridutils.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,18 @@
55
import multiprocessing
66
import subprocess
77
import sys
8-
9-
from typing import List, Tuple, Optional, Dict
8+
from typing import Dict, List, Optional, Tuple
109

1110
import numpy as np
12-
1311
from loguru import logger as log
1412

1513
try:
1614
from tqdm import tqdm
1715
except ModuleNotFoundError:
1816
tqdm = None
1917

20-
from astropy.utils.console import ProgressBar
2118
from astropy import units as u
19+
from astropy.utils.console import ProgressBar
2220

2321
from pint import fitter
2422

src/pint/logging.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,10 @@
5353
import re
5454
import sys
5555
import warnings
56+
from typing import Dict, List, Optional, Union
57+
5658
from loguru import logger as log
57-
from typing import Union, Optional, Dict, List
59+
5860
import pint.types
5961

6062
__all__ = ["LogFilter", "setup", "format", "levels", "get_level"]

src/pint/mcmc_fitter.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import matplotlib.pyplot as plt
66
import numpy as np
77
from astropy.table import vstack
8-
from scipy.stats import norm, uniform
98
from loguru import logger as log
9+
from scipy.stats import norm, uniform
1010

1111
import pint.plot_utils as plot_utils
1212
from pint.eventstats import hm, hmw
@@ -15,7 +15,6 @@
1515
from pint.residuals import Residuals
1616
from pint.templates.lctemplate import LCTemplate
1717

18-
1918
__all__ = [
2019
"MCMCFitter",
2120
"MCMCFitterAnalyticTemplate",

src/pint/models/__init__.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
# Import all standard model components here
2323
from pint.models.astrometry import AstrometryEcliptic, AstrometryEquatorial
2424
from pint.models.binary_bt import BinaryBT, BinaryBTPiecewise
25-
from pint.models.binary_dd import BinaryDD, BinaryDDS, BinaryDDGR, BinaryDDH
25+
from pint.models.binary_dd import BinaryDD, BinaryDDGR, BinaryDDH, BinaryDDS
2626
from pint.models.binary_ddk import BinaryDDK
2727
from pint.models.binary_ell1 import BinaryELL1, BinaryELL1H, BinaryELL1k
2828
from pint.models.chromatic_model import ChromaticCM, ChromaticCMX
@@ -34,24 +34,24 @@
3434
FDJumpDM,
3535
)
3636
from pint.models.dmwavex import DMWaveX
37+
from pint.models.fdjump import FDJump
3738
from pint.models.frequency_dependent import FD
3839
from pint.models.glitch import Glitch
39-
from pint.models.phase_offset import PhaseOffset
40-
from pint.models.piecewise import PiecewiseSpindown
4140
from pint.models.ifunc import IFunc
4241
from pint.models.jump import DelayJump, PhaseJump
4342
from pint.models.model_builder import get_model, get_model_and_toas
4443
from pint.models.noise_model import (
4544
EcorrNoise,
46-
PLRedNoise,
47-
PLDMNoise,
4845
PLChromNoise,
46+
PLDMNoise,
47+
PLRedNoise,
4948
ScaleToaError,
5049
)
50+
from pint.models.phase_offset import PhaseOffset
51+
from pint.models.piecewise import PiecewiseSpindown
5152
from pint.models.solar_system_shapiro import SolarSystemShapiro
5253
from pint.models.solar_wind_dispersion import SolarWindDispersion, SolarWindDispersionX
5354
from pint.models.spindown import Spindown
54-
from pint.models.fdjump import FDJump
5555

5656
# Import the main timing model classes
5757
from pint.models.timing_model import DEFAULT_ORDER, TimingModel

src/pint/models/absolute_phase.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
from loguru import logger as log
55

66
import pint.toa as toa
7+
from pint.exceptions import MissingParameter
78
from pint.models.parameter import MJDParameter, floatParameter, strParameter
89
from pint.models.timing_model import PhaseComponent
9-
from pint.exceptions import MissingParameter
1010

1111

1212
class AbsPhase(PhaseComponent):

src/pint/models/astrometry.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,27 @@
66
from typing import Optional
77

88
import astropy.constants as const
9+
import astropy.constants as consts
910
import astropy.coordinates as coords
1011
import astropy.units as u
11-
import astropy.constants as consts
1212
import numpy as np
1313
from astropy.time import Time
14-
14+
from erfa import ErfaWarning, pmsafe
1515
from loguru import logger as log
1616

17-
from erfa import ErfaWarning, pmsafe
17+
import pint.toa
1818
from pint import ls
19-
from pint.types import time_like
19+
from pint.exceptions import MissingParameter
2020
from pint.models.parameter import (
2121
AngleParameter,
2222
MJDParameter,
2323
floatParameter,
2424
strParameter,
2525
)
26-
import pint.toa
2726
from pint.models.timing_model import DelayComponent
2827
from pint.pulsar_ecliptic import OBL, PulsarEcliptic
28+
from pint.types import time_like
2929
from pint.utils import add_dummy_distance, remove_dummy_distance
30-
from pint.exceptions import MissingParameter
3130

3231
astropy_version = sys.modules["astropy"].__version__
3332
mas_yr = u.mas / u.yr

0 commit comments

Comments
 (0)