import datetime

from .ذرائع import مرکسم۵_جال, مرکسم۵, ناسا
from .ذریعہ import ذریعہ
from .کوائف import کوائف


class مقام(object):
    """
    ایک مقام، جس کے ليے آب وہوا کے کوائف درکار ہيں۔
    """

    def __init__(خود, عرض, طول, بلندی):
        خود.بلندی = بلندی
        خود.طول = طول
        خود.عرض = عرض

    def کوائف_پانا(خود, سے, تک, ذرائع=None, خاکے='۸۔۵'):
        """
        آبوہوا کے کوائف ليناا۔

        Parameters
        ----------
        سے: str | datetime.date
            وہ تاریخ جب سے کوائف چاہيں۔
        تک: str | datetime.date
            وہ تاریخ جب تک کوائف چاہيں۔
        ذرائع: ذریعہ | list
            وہ ذرائع جن سے کوائف لينےا ہيں۔ یا :class:`~تقدیر.ذریعہ.ذریعہ`، یا انکی فہرست ہو سکتی ہے۔
        خاکے: str | float
            آب وہوا کی تبدیلی کے خاکے۔مثال کے طور پر ۸۔۵

        Returns
        -------
        کوائف
            آب وہوا کے :class:`~تقدیر.کوائف.کوائف`۔

        """
        # ذرائع کی تیاری
        if isinstance(ذرائع, ذریعہ):
            ذرائع = [ذرائع]
        if isinstance(ذرائع, list):
            ذرائع += [ناسا(), مرکسم۵(), مرکسم۵_جال()]

        # ھر ذریعہ کے کوائف پانا
        اعداد = کوائف(None, سے, تک)
        for ذر in ذرائع:
            نئے = ذر.کوائف_پانا(سے, تک, خود.عرض, خود.طول, خود.بلندی, خاکے=خاکے)
            if نئے is not None:
                اعداد += نئے
            # رکنا اگر نامعلوم کچھ نہیں یے
            if اعداد.لاپتہ().size == 0:
                break

        return اعداد
