Source code for aladhan.methods

__all__ = (
    "Method",
    "JAFARI",
    "KARACHI",
    "ISNA",
    "MWL",
    "MAKKAH",
    "EGYPT",
    "TEHRAN",
    "GULF",
    "KUWAIT",
    "QATAR",
    "SINGAPORE",
    "FRANCE",
    "TURKEY",
    "RUSSIA",
    "MOONSIGHTING",
    "all_methods",
)


[docs]class Method: """ Represents a Method Calculation obj. Can be used to create a Custom Method. To make a custom method: .. code:: py params = { "fajr": ..., # can be either an `int` or "null", \ if it was not giving it will be set to "null". "maghrib": ..., "isha": ... } # id must be 99. Name param doesn't effect. custom_method = Method("Custom", 99, params=params) Attributes ---------- name: :class:`str` Method name. id: :class:`int` Method id that will be used to get response. Can be only from 0 to 15. """ __slots__ = ("name", "id", "__params", "__params_str") def __init__(self, name: str, id: int, params: dict): self.name = name self.id = id self.__params = params lst = [] for t in ("fajr", "magrib", "isha"): v = params.get(t, "null") if not isinstance(v, int) and v != "null": raise TypeError( ( "params '{}' expected to be type of `int` or " '"null", got `{}`' ).format(t, type(v).__name__) ) lst.append(str(v)) self.__params_str = ",".join(lst) @property def params(self): """ Method parameters. *Changed in v1.0.0 to a property.* """ return self.__params @property def params_str(self): """ A string in "fajr,maghrib,isha" format. *New in v1.0.0* """ return self.__params_str def __repr__(self): # pragma: no cover return "<Method name={0.name!r}, id={0.id}>".format(self) def __hash__(self): # pragma: no cover return hash((self.name, self.id))
JAFARI = Method( name="Shia Ithna-Ashari, Leva Institute, Qum", id=0, params={"Fajr": 16, "Isha": 14, "Maghrib": 4, "Midnight": "JAFARI"}, ) KARACHI = Method( name="University of Islamic Sciences, Karachi", id=1, params={"Fajr": 18, "Isha": 18}, ) ISNA = Method( name="Islamic Society of North America (ISNA)", id=2, params={"Fajr": 15, "Isha": 15}, ) MWL = Method(name="Muslim World League", id=3, params={"Fajr": 18, "Isha": 17}) MAKKAH = Method( name="Umm Al-Qura University, Makkah", id=4, params={"Fajr": 18.5, "Isha": "90 min"}, ) EGYPT = Method( name="Egyptian General Authority of Survey", id=5, params={"Fajr": 19.5, "Isha": 17.5}, ) # there is no 6 (method 6 is apparently same as 2) TEHRAN = Method( name="Institute of Geophysics, University of Tehran", id=7, params={"Fajr": 17.7, "Isha": 14, "Maghrib": 4.5, "Midnight": "JAFARI"}, ) GULF = Method(name="Gulf Region", id=8, params={"Fajr": 19.5, "Isha": "90 min"}) KUWAIT = Method(name="Kuwait", id=9, params={"Fajr": 18, "Isha": 17.5}) QATAR = Method(name="Qatar", id=10, params={"Fajr": 18, "Isha": "90 min"}) SINGAPORE = Method( name="Majlis Ugama Islam Singapura, Singapore", id=11, params={"Fajr": 20, "Isha": 18}, ) FRANCE = Method( name="Union Organization Islamic de France", id=12, params={"Fajr": 12, "Isha": 12}, ) TURKEY = Method( name="Diyanet \u0130\u015fleri Ba\u015fkanl\u0131\u011f\u0131, Turkey", id=13, params={"Fajr": 18, "Isha": 17}, ) RUSSIA = Method( name="Spiritual Administration of Muslims of Russia", id=14, params={"Fajr": 16, "Isha": 15}, ) MOONSIGHTING = Method( name="Moonsighting Committee Worldwide (Moonsighting.com)", id=15, params={"shafaq": "general"}, ) all_methods = { 0: JAFARI, 1: KARACHI, 2: ISNA, 3: MWL, 4: MAKKAH, 5: EGYPT, # rip 6 7: TEHRAN, 8: GULF, 9: KUWAIT, 10: QATAR, 11: SINGAPORE, 12: FRANCE, 13: TURKEY, 14: RUSSIA, 15: MOONSIGHTING, }