L iddlmZddlZddlmZmZmZddlmZm Z er"ddl Z ddl Z ddlmZmZddlmZddlmZddlmZGd d ej.Z dd ZGd d ZddZy)) annotationsN) TYPE_CHECKINGAnyNoReturn)Version parse_version)SelfTypeIsInterchangeSeries)DType) DataFrameLikec(eZdZdZdZdZdZdZdZdZ y) DtypeKindrN) __name__ __module__ __qualname__INTUINTFLOATBOOLSTRINGDATETIME CATEGORICALe/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/narwhals/_interchange/dataframe.pyrrs% C D E D FHKr"rc8tjj}|dtjk(rm|ddk(r|j S|ddk(r|j S|ddk(r|jS|ddk(r|jSd}t||dtjk(rm|ddk(r|jS|ddk(r|jS|ddk(r|jS|ddk(r|jSd}t||dtjk(r=|ddk(r|j!S|ddk(r|j#Sd }t||dtj$k(r|j'S|dtj(k(r|j+S|dtj,k(r|j/S|dtj0k(r|j3Sd |}t|) Nrr@ zInvalid bit width for INTzInvalid bit width for UINTzInvalid bit width for FLOATzInvalid dtype, got: )rV1dtypesrrInt64Int32Int16Int8AssertionErrorrUInt64UInt32UInt16UInt8rFloat64Float32rBooleanrStringrDatetimer Categorical)interchange_dtyper*msgs r#'map_interchange_dtype_to_narwhals_dtyper<s ZZ  Fy}}, Q 2 %<<> ! Q 2 %<<> ! Q 2 %<<> ! Q 1 $;;= )S!!y~~- Q 2 %==? " Q 2 %==? " Q 2 %==? " Q 1 $<<> !*S!!y. Q 2 %>># # Q 2 %>># #+S!!y~~-~~y///}}y111  y444!!## !2 3 4C  r"ceZdZejZd dZddZddZddZ ddZ ddZ e ddZ e ddZdd Zdd Zdd Zy )InterchangeFramec.|j|_yN) __dataframe___interchange_frame)selfdfs r#__init__zInterchangeFrame.__init__Ns"$"2"2"4r"c|Sr@r!rCs r#__narwhals_dataframe__z'InterchangeFrame.__narwhals_dataframe__Qs r"cd}t|)NzCannot access native namespace for interchange-level dataframes with unknown backend.If you would like to see this kind of object supported in Narwhals, please open a feature request at https://github.com/narwhals-dev/narwhals/issues.NotImplementedError)rCr;s r#__native_namespace__z%InterchangeFrame.__native_namespace__Ts Y "#&&r"cPddlm}||jj|S)Nrr )narwhals._interchange.seriesr rBget_column_by_name)rCnamer s r# get_columnzInterchangeFrame.get_column\s!B !8!8!K!KD!QRRr"cddl}t|dkrd|j}t||jj j |jS)Nr)rrzpConversion to pandas is achieved via interchange protocol which requires 'pandas>=1.5.0' to be installed, found )pandasr __version__rKapi interchangefrom_dataframerB)rCpdr;s r# to_pandaszInterchangeFrame.to_pandasasZ  y (;;=>>:JL &c* *vv!!001H1HIIr"c2ddlm}||jS)Nr)rX)"pyarrow.interchange.from_dataframerXrB)rCrXs r#to_arrowzInterchangeFrame.to_arrowls d5566r"c |jjDcic]1}|t|jj|j3c}Scc}wr@)rB column_namesr<rOdtype)rC column_names r#schemazInterchangeFrame.schemass\ $66CCE   @''::;GMM    s6AcHt|jjSr@)listrBr_rGs r#columnszInterchangeFrame.columns|sD++88:;;r"c$d|d}t|)Nz Attribute aK is not supported for interchange-level dataframes. Hint: you probably called `nw.from_native` on an object which isn't fully supported by Narwhals, yet implements `__dataframe__`. If you would like to see this kind of object supported in Narwhals, please open a feature request at https://github.com/narwhals-dev/narwhals/issues.rJ)rCattrr;s r# __getattr__zInterchangeFrame.__getattr__s'B B "#&&r"c|jjt|}t|ds d}t ||j |j S)N_dfzExpected interchange object to implement `_df` property to allow for recovering original object. See https://github.com/data-apis/dataframe-api/issues/360.)rBselect_columns_by_namerdhasattrrK __class__rj)rCr_framer;s r# simple_selectzInterchangeFrame.simple_selectsR''>>tL?QRue$M &c* *~~eii((r"cd}t|)Nz`select`-ing not by name is not supported for interchange-only level. If you would like to see this kind of object better supported in Narwhals, please open a feature request at https://github.com/narwhals-dev/narwhals/issues.rJ)rCexprsr;s r#selectzInterchangeFrame.selects B "#&&r"N)rDrreturnNone)rsr )rsr)rPstrrsr )rsz pd.DataFrame)rszpa.Table)rszdict[str, DType])rsz list[str])rgrursr)r_rursr )rqrursr )rrrrr)_versionrErHrLrQrZr]propertyrbrerhrorrr!r"r#r>r>KsbzzH5'S J7  <<')'r"r>ct|dS)NrA)rl)objs r#supports_dataframe_interchangerzs 3 ((r")r:ztuple[DtypeKind, int, Any, Any]rsr )ryrrszTypeIs[DataFrameLike]) __future__renumtypingrrrnarwhals._utilsrrrTrYpyarrowpatyping_extensionsr r rNr narwhals.dtypesr narwhals.stable.v1.typingrIntEnumrr<r>rzr!r"r#rsa" //2.>%7 +6+ +\P'P'f)r"