Skip to content

Commit

Permalink
Merge pull request #1881 from abhisrkckl/hints
Browse files Browse the repository at this point in the history
Sourcery and type hints
  • Loading branch information
dlakaplan authored Feb 7, 2025
2 parents 5e4d4a3 + a5c0c03 commit 2071628
Show file tree
Hide file tree
Showing 71 changed files with 413 additions and 560 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG-unreleased.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ the released changes.
### Fixed
- Made `TimingModel.is_binary()` more robust.
### Removed

- Definition of `@cached_property` to support Python<=3.7
5 changes: 2 additions & 3 deletions src/pint/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,21 @@
or how-to documentation, please see other sections of the online documentation.
"""

from pathlib import Path

import astropy
import astropy.constants as c
import astropy.time as time
import astropy.units as u
import numpy as np
from astropy.units import si
from pathlib import Path

from pint import logging
from pint.extern._version import get_versions
from pint.pulsar_ecliptic import PulsarEcliptic
from pint.pulsar_mjd import PulsarMJD, time_to_longdouble # ensure always loaded

from pint.utils import info_string


__all__ = [
"__version__",
"ls",
Expand Down
11 changes: 6 additions & 5 deletions src/pint/binaryconvert.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,21 @@
"""

import copy
from typing import List, Optional, Tuple, Union

import numpy as np
from astropy import units as u
from astropy.time import Time
import copy
from uncertainties import ufloat, umath
from loguru import logger as log
from typing import Optional, List, Tuple, Union
from uncertainties import ufloat, umath

import pint.models
from pint import Tsun
from pint.models.binary_bt import BinaryBT
from pint.models.binary_dd import BinaryDD, BinaryDDS, BinaryDDH
from pint.models.binary_dd import BinaryDD, BinaryDDH, BinaryDDS
from pint.models.binary_ddk import BinaryDDK
from pint.models.binary_ell1 import BinaryELL1, BinaryELL1H, BinaryELL1k
import pint.models

# output types
# DDGR is not included as there is not a well-defined way to get a unique output
Expand Down
2 changes: 1 addition & 1 deletion src/pint/config.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Functions related to PINT configuration."""

import os
import importlib.resources
import os

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

Expand Down
3 changes: 2 additions & 1 deletion src/pint/derived_quantities.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
"""Functions to compute various derived quantities from pulsar spin parameters, masses, etc.
"""

from typing import Optional, Union

import astropy.constants as const
import astropy.units as u
import numpy as np
from typing import Optional, Union

import pint

Expand Down
1 change: 0 additions & 1 deletion src/pint/erfautils.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
"""Observatory position and velocity calculation."""

import erfa

import numpy as np
from astropy import table
from astropy.coordinates import EarthLocation
Expand Down
6 changes: 3 additions & 3 deletions src/pint/event_toas.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@
from functools import partial

import astropy.io.fits as pyfits
from astropy.time import Time
from astropy.coordinates import EarthLocation
from astropy import units as u
import numpy as np
from astropy import units as u
from astropy.coordinates import EarthLocation
from astropy.time import Time
from loguru import logger as log

import pint.toa as toa
Expand Down
2 changes: 1 addition & 1 deletion src/pint/eventstats.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"""

import numpy as np
from numpy import exp, arange, log
from numpy import arange, exp, log
from scipy.special import erfc, gamma
from scipy.stats import chi2, norm

Expand Down
6 changes: 3 additions & 3 deletions src/pint/fermi_toas.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
"""Work with Fermi TOAs."""

from astropy.coordinates import SkyCoord, EarthLocation
from astropy.time import Time
from astropy.io import fits
import astropy.units as u
import numpy as np
from astropy.coordinates import EarthLocation, SkyCoord
from astropy.io import fits
from astropy.time import Time
from loguru import logger as log

import pint.toa as toa
Expand Down
7 changes: 2 additions & 5 deletions src/pint/fits_utils.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
"""FITS handling functions"""

import numpy as np
from loguru import logger as log

from erfa import DAYSEC as SECS_PER_DAY

from astropy.io import fits
from erfa import DAYSEC as SECS_PER_DAY
from loguru import logger as log

from pint.pulsar_mjd import fortran_float


__all__ = ["read_fits_event_mjds", "read_fits_event_mjds_tuples"]


Expand Down
78 changes: 10 additions & 68 deletions src/pint/fitter.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
import contextlib
import copy
from warnings import warn
from functools import cached_property

import astropy.units as u
import numpy as np
Expand All @@ -70,13 +71,20 @@
from numdifftools import Hessian

import pint
import pint.utils
import pint.derived_quantities
import pint.utils
from pint.exceptions import (
ConvergenceFailure,
CorrelatedErrors,
DegeneracyWarning,
MaxiterReached,
StepProblem,
)
from pint.models.parameter import (
AngleParameter,
InvalidModelParameters,
boolParameter,
strParameter,
InvalidModelParameters,
)
from pint.pint_matrix import (
CorrelationMatrix,
Expand All @@ -90,14 +98,6 @@
from pint.residuals import Residuals, WidebandTOAResiduals
from pint.toa import TOAs
from pint.utils import FTest, normalize_designmatrix
from pint.exceptions import (
DegeneracyWarning,
ConvergenceFailure,
MaxiterReached,
StepProblem,
CorrelatedErrors,
)


__all__ = [
"Fitter",
Expand All @@ -115,64 +115,6 @@
"MaxiterReached",
]

try:
from functools import cached_property
except ImportError:
# not supported in python 3.7
# This is just the code from python 3.8
from _thread import RLock

_NOT_FOUND = object()

class cached_property:
def __init__(self, func):
self.func = func
self.attrname = None
self.__doc__ = func.__doc__
self.lock = RLock()

def __set_name__(self, owner, name):
if self.attrname is None:
self.attrname = name
elif name != self.attrname:
raise TypeError(
"Cannot assign the same cached_property to two different names "
f"({self.attrname!r} and {name!r})."
)

def __get__(self, instance, owner=None):
if instance is None:
return self
if self.attrname is None:
raise TypeError(
"Cannot use cached_property instance without calling __set_name__ on it."
)
try:
cache = instance.__dict__
except AttributeError:
# not all objects have __dict__ (e.g. class defines slots)
msg = (
f"No '__dict__' attribute on {type(instance).__name__!r} "
f"instance to cache {self.attrname!r} property."
)
raise TypeError(msg) from None
val = cache.get(self.attrname, _NOT_FOUND)
if val is _NOT_FOUND:
with self.lock:
# check if another thread filled cache while we awaited lock
val = cache.get(self.attrname, _NOT_FOUND)
if val is _NOT_FOUND:
val = self.func(instance)
try:
cache[self.attrname] = val
except TypeError:
msg = (
f"The '__dict__' attribute on {type(instance).__name__!r} instance "
f"does not support item assignment for caching {self.attrname!r} property."
)
raise TypeError(msg) from None
return val


class Fitter:
"""Base class for objects encapsulating fitting problems.
Expand Down
6 changes: 2 additions & 4 deletions src/pint/gridutils.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,18 @@
import multiprocessing
import subprocess
import sys

from typing import List, Tuple, Optional, Dict
from typing import Dict, List, Optional, Tuple

import numpy as np

from loguru import logger as log

try:
from tqdm import tqdm
except ModuleNotFoundError:
tqdm = None

from astropy.utils.console import ProgressBar
from astropy import units as u
from astropy.utils.console import ProgressBar

from pint import fitter

Expand Down
4 changes: 3 additions & 1 deletion src/pint/logging.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,10 @@
import re
import sys
import warnings
from typing import Dict, List, Optional, Union

from loguru import logger as log
from typing import Union, Optional, Dict, List

import pint.types

__all__ = ["LogFilter", "setup", "format", "levels", "get_level"]
Expand Down
3 changes: 1 addition & 2 deletions src/pint/mcmc_fitter.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import matplotlib.pyplot as plt
import numpy as np
from astropy.table import vstack
from scipy.stats import norm, uniform
from loguru import logger as log
from scipy.stats import norm, uniform

import pint.plot_utils as plot_utils
from pint.eventstats import hm, hmw
Expand All @@ -15,7 +15,6 @@
from pint.residuals import Residuals
from pint.templates.lctemplate import LCTemplate


__all__ = [
"MCMCFitter",
"MCMCFitterAnalyticTemplate",
Expand Down
12 changes: 6 additions & 6 deletions src/pint/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
# Import all standard model components here
from pint.models.astrometry import AstrometryEcliptic, AstrometryEquatorial
from pint.models.binary_bt import BinaryBT, BinaryBTPiecewise
from pint.models.binary_dd import BinaryDD, BinaryDDS, BinaryDDGR, BinaryDDH
from pint.models.binary_dd import BinaryDD, BinaryDDGR, BinaryDDH, BinaryDDS
from pint.models.binary_ddk import BinaryDDK
from pint.models.binary_ell1 import BinaryELL1, BinaryELL1H, BinaryELL1k
from pint.models.chromatic_model import ChromaticCM, ChromaticCMX
Expand All @@ -34,24 +34,24 @@
FDJumpDM,
)
from pint.models.dmwavex import DMWaveX
from pint.models.fdjump import FDJump
from pint.models.frequency_dependent import FD
from pint.models.glitch import Glitch
from pint.models.phase_offset import PhaseOffset
from pint.models.piecewise import PiecewiseSpindown
from pint.models.ifunc import IFunc
from pint.models.jump import DelayJump, PhaseJump
from pint.models.model_builder import get_model, get_model_and_toas
from pint.models.noise_model import (
EcorrNoise,
PLRedNoise,
PLDMNoise,
PLChromNoise,
PLDMNoise,
PLRedNoise,
ScaleToaError,
)
from pint.models.phase_offset import PhaseOffset
from pint.models.piecewise import PiecewiseSpindown
from pint.models.solar_system_shapiro import SolarSystemShapiro
from pint.models.solar_wind_dispersion import SolarWindDispersion, SolarWindDispersionX
from pint.models.spindown import Spindown
from pint.models.fdjump import FDJump

# Import the main timing model classes
from pint.models.timing_model import DEFAULT_ORDER, TimingModel
Expand Down
2 changes: 1 addition & 1 deletion src/pint/models/absolute_phase.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
from loguru import logger as log

import pint.toa as toa
from pint.exceptions import MissingParameter
from pint.models.parameter import MJDParameter, floatParameter, strParameter
from pint.models.timing_model import PhaseComponent
from pint.exceptions import MissingParameter


class AbsPhase(PhaseComponent):
Expand Down
11 changes: 5 additions & 6 deletions src/pint/models/astrometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,27 @@
from typing import Optional

import astropy.constants as const
import astropy.constants as consts
import astropy.coordinates as coords
import astropy.units as u
import astropy.constants as consts
import numpy as np
from astropy.time import Time

from erfa import ErfaWarning, pmsafe
from loguru import logger as log

from erfa import ErfaWarning, pmsafe
import pint.toa
from pint import ls
from pint.types import time_like
from pint.exceptions import MissingParameter
from pint.models.parameter import (
AngleParameter,
MJDParameter,
floatParameter,
strParameter,
)
import pint.toa
from pint.models.timing_model import DelayComponent
from pint.pulsar_ecliptic import OBL, PulsarEcliptic
from pint.types import time_like
from pint.utils import add_dummy_distance, remove_dummy_distance
from pint.exceptions import MissingParameter

astropy_version = sys.modules["astropy"].__version__
mas_yr = u.mas / u.yr
Expand Down
Loading

0 comments on commit 2071628

Please sign in to comment.