
     hb                     j    d Z ddlmZ ddlmZmZmZ  G d de      Z G d de      Z G d d	e      Z	y
)zD
This module is for building datums to be used when
building a CRS.
    )Any)Datum	EllipsoidPrimeMeridianc                   ,    e Zd ZdZ	 	 	 ddededefdZy)CustomDatumzg
    .. versionadded:: 2.5.0

    Class to build a datum based on an ellipsoid and prime meridian.
    name	ellipsoidprime_meridianc                     dd|t        j                  |      j                         t        j                  |      j                         d}| j	                  |      S )a  
        Parameters
        ----------
        name: str, default="undefined"
            Name of the datum.
        ellipsoid: Any, default="WGS 84"
            Anything accepted by :meth:`pyproj.crs.Ellipsoid.from_user_input`
            or a :class:`pyproj.crs.datum.CustomEllipsoid`.
        prime_meridian: Any, default="Greenwich"
            Anything accepted by :meth:`pyproj.crs.PrimeMeridian.from_user_input`.
        2https://proj.org/schemas/v0.2/projjson.schema.jsonGeodeticReferenceFrame)$schematyper	   r
   r   )r   from_user_inputto_json_dictr   from_json_dict)clsr	   r
   r   
datum_jsons        l/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/pyproj/crs/datum.py__new__zCustomDatum.__new__   sW    $ L,"229=JJL+;;ln

 !!*--    N)	undefinedzWGS 84	Greenwich)__name__
__module____qualname____doc__strr   r    r   r   r   r      s3      !)	.. . 	.r   r   c                   P    e Zd ZdZ	 	 	 	 	 d	dededz  dedz  dedz  dedz  f
dZy)
CustomEllipsoidzI
    .. versionadded:: 2.5.0

    Class to build a custom ellipsoid.
    Nr	   semi_major_axisinverse_flatteningsemi_minor_axisradiusc                 h    dd|d}|||d<   |||d<   |||d<   |||d<   | j                  |      S )a  
        Parameters
        ----------
        name: str, default="undefined"
            Name of the ellipsoid.
        semi_major_axis: float, optional
            The semi major axis in meters. Required if missing radius.
        inverse_flattening: float, optional
            The inverse flattening in meters.
            Required if missing semi_minor_axis and radius.
        semi_minor_axis: float, optional
            The semi minor axis in meters.
            Required if missing inverse_flattening and radius.
        radius: float, optional
            The radius in meters. Can only be used alone.
            Cannot be mixed with other parameters.
        r   r   )r   r   r	   r#   r$   r%   r&   r   )r   r	   r#   r$   r%   r&   ellipsoid_jsons          r   r   zCustomEllipsoid.__new__6   sk    4 L2

 &0?N,-)3EN/0&0?N,-'-N8$!!.11r   )r   NNNN)r   r   r   r   r   floatr   r    r   r   r"   r"   /   s]      (,+/(,#&2&2 &2 "DL	&2
 &2 &2r   r"   c                   "    e Zd ZdZddedefdZy)CustomPrimeMeridianz\
    .. versionadded:: 2.5.0

    Class to build a prime meridian based on a longitude.
    	longituder	   c                 2    dd||d}| j                  |      S )z
        Parameters
        ----------
        longitude: float
            Longitude of prime meridian.
        name: str, optional
            Name of the prime meridian.
        r   r   )r   r   r	   r-   r(   )r   r-   r	   r   s       r   r   zCustomPrimeMeridian.__new__f   s+     L#"	

 !!*--r   N)r   )r   r   r   r   r*   r   r   r    r   r   r,   r,   _   s    . .S .r   r,   N)
r   typingr   pyproj._crsr   r   r   r   r"   r,   r    r   r   <module>r1      s;   
  7 7!.% !.H-2i -2`.- .r   