`L i9jddlZddlmZddlmZmZddlZddlm Z ddl m Z ddl m Z d Zd ZeGd d eZGd dZGddZGddZeZej+eej+edZddZddZdZdZdZGddZdddZy)Nwraps)Protocolruntime_checkable)issparse) get_config) available_ifcv tj|S#t$r}td|d|d|d}~wwxYw)zCheck library is installed.zSetting output container to 'z ' requires z to be installedN) importlib import_module ImportError)libraryexcs _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/utils/_set_output.pycheck_library_installedrsR&&w// +G9KyI   s 838cJt|r |S|S#t$rYywxYwN)callable Exceptioncolumnss r get_columnsrs2 9  N  s  ""c2eZdZUeed<ddZdZdZdZy)ContainerAdapterProtocol container_libcy)aCreate container from `X_output` with additional metadata. Parameters ---------- X_output : {ndarray, dataframe} Data to wrap. X_original : {ndarray, dataframe} Original input dataframe. This is used to extract the metadata that should be passed to `X_output`, e.g. pandas row index. columns : callable, ndarray, or None The column names or a callable that returns the column names. The callable is useful if the column names require some computation. If `None`, then no columns are passed to the container's constructor. inplace : bool, default=False Whether or not we intend to modify `X_output` in-place. However, it does not guarantee that we return the same object if the in-place operation is not possible. Returns ------- wrapped_output : container_type `X_output` wrapped into the container type. N)selfX_output X_originalrinplaces rcreate_containerz)ContainerAdapterProtocol.create_container'cy)a Return True if X is a supported container. Parameters ---------- Xs: container Containers to be checked. Returns ------- is_supported_container : bool True if X is a supported container. Nr)r Xs ris_supported_containerz/ContainerAdapterProtocol.is_supported_containerCr%r&cy)aQRename columns in `X`. Parameters ---------- X : container Container which columns is updated. columns : ndarray of str Columns to update the `X`'s columns with. Returns ------- updated_container : container Container with new names. Nrr r(rs rrename_columnsz'ContainerAdapterProtocol.rename_columnsQr%r&cy)aStack containers horizontally (column-wise). Parameters ---------- Xs : list of containers List of containers to stack. Returns ------- stacked_Xs : container Stacked containers. Nr)r Xss rhstackzContainerAdapterProtocol.hstackbr%r&N)F) __name__ __module__ __qualname__str__annotations__r$r)r,r/rr&rrr#s 8   "  r&rc*eZdZdZddZdZdZdZy) PandasAdapterpandasc\td}t|}|rt||jsit||jr |j}n1t||j|j fr |j}nd}|j||| }||j ||S|S)Nr7)indexcopy)rr isinstance DataFramer9Seriesr,)r r!r"rr#pdr9s rr$zPandasAdapter.create_containerts $X .g&j2<<@ (BLL1 Jryy(AB"((||HEG |LH  &&x9 9r&cDtd}t||jS)Nr7rr;r<)r r(r>s rr)z$PandasAdapter.is_supported_container $X .!R\\**r&c||_|Srrr+s rr,zPandasAdapter.rename_columns r&c>td}|j|dS)Nr7r )axisrconcat)r r.r>s rr/zPandasAdapter.hstacks $X .yy!y$$r&NTr0r1r2rr$r)r,r/rr&rr6r6qsM0+ %r&r6c*eZdZdZddZdZdZdZy) PolarsAdapterpolarsc td}t|}t|tjr|j n|}|rt||j s|j ||dS||j||S|S)NrLrow)schemaorient)rrr;npndarraytolistr<r,)r r!r"rr#pls rr$zPolarsAdapter.create_containerst $X .g&&0"**&E'.."7j2<<@<<<G G  &&x9 9r&cDtd}t||jS)NrLr@)r r(rTs rr)z$PolarsAdapter.is_supported_containerrAr&c||_|Srrr+s rr,zPolarsAdapter.rename_columnsrCr&c>td}|j|dS)NrL horizontal)howrF)r r.rTs rr/zPolarsAdapter.hstacks $X .yyy..r&NrHrIrr&rrKrKsM + /r&rKc(eZdZdZedZdZy)ContainerAdaptersManagerci|_yr)adaptersr s r__init__z!ContainerAdaptersManager.__init__s  r&c4dht|jzS)Ndefault)setr]r^s rsupported_outputsz*ContainerAdaptersManager.supported_outputss{S///r&c6||j|j<yr)r]r)r adapters rregisterz!ContainerAdaptersManager.registers/6 g++,r&N)r0r1r2r_propertyrcrfrr&rr[r[s 007r&r[c|jjjdd} tj|S#t $r?}t tjj}td|d|d|d}~wwxYw)zGet the adapter that knows how to handle such container. See :class:`sklearn.utils._set_output.ContainerAdapterProtocol` for more details. .rzZThe container does not have a registered adapter in scikit-learn. Available adapters are: z" while the container provided is: N) __class__r1splitADAPTERS_MANAGERr]KeyErrorlistkeys ValueError) container module_nameravailable_adapterss r_get_adapter_from_containerrts %%0066s;A>K((55 !"2";";"@"@"BC ''9&:;%= +   s= B:BBcft||d} tj|S#t$rYywxYw)zGet container adapter.denseN)_get_output_configrlr]rm)method estimator dense_configs r_get_container_adapterr{s;%fi8AL((66 s $ 00ct|di}||vr||}nt|d}tj}||vrt dt |d|d|iS)aGet output config based on estimator and global configuration. Parameters ---------- method : {"transform"} Estimator's method for which the output container is looked up. estimator : estimator instance or None Estimator to get the output configuration from. If `None`, check global configuration is used. Returns ------- config : dict Dictionary with keys: - "dense": specifies the dense container for `method`. This can be `"default"` or `"pandas"`. _sklearn_output_config_outputzoutput config must be in z, got rv)getattrr rlrcrpsorted)rxryest_sklearn_output_configrzrcs rrwrws(!( 3KR P **08 !|vhg$67 (::,,'/@(A'B& W   \ ""r&ct||}|ddk(s t|s|S|d}t|rtd|j dt j |}|j|||jS)aWrap output with container based on an estimator's or global config. Parameters ---------- method : {"transform"} Estimator's method to get container output for. data_to_wrap : {ndarray, dataframe} Data to wrap with container. original_input : {ndarray, dataframe} Original input of function. estimator : estimator instance Estimator with to get the output configuration from. Returns ------- output : {ndarray, dataframe} If the output config is "default" or the estimator is not configured for wrapping return `data_to_wrap` unchanged. If the output config is "pandas", return `data_to_wrap` as a pandas DataFrame. rvrazmThe transformer outputs a scipy sparse matrix. Try to set the transformer output to a dense array or disable z- output with set_output(transform='default').r) rw_auto_wrap_is_configuredrrp capitalizerlr]r$get_feature_names_out)rx data_to_wraporiginal_inputry output_configrzres r_wrap_data_with_containerr s2'vy9MW*2J92U )L  M&&())V X  '' 5G  # #// $ r&c2tfd}|S)z@Wrapper used by `_SetOutputMixin` to automatically wrap methods.c||g|i|}t|trIt|d||g|dd}tt |drt |j |S|St|||S)Nrr _make)r;tuplerhasattrtyper)r r(argskwargsr return_tuplefrxs rwrappedz$_wrap_method_output..wrapped:sq24262 lE **&,q/1dKab!L tL)73L)// == (q$GGr&r)rrxrs`` r_wrap_method_outputr7s$ 1XHH Nr&cPt|dt}t|dxrd|vS)zReturn True if estimator is configured for auto-wrapping the transform method. `_SetOutputMixin` sets `_sklearn_auto_wrap_output_keys` to `set()` if auto wrapping is manually disabled. _sklearn_auto_wrap_output_keysr transform)rrbr)ryauto_wrap_output_keyss rrrNs6 $I/OQTQVW 23 1 0 0r&cFeZdZdZdfd ZeedddZxZS)_SetOutputMixina\Mixin that dynamically wraps methods to return container based on config. Currently `_SetOutputMixin` wraps `transform` and `fit_transform` and configures it based on `set_output` of the global configuration. `set_output` is only defined if `get_feature_names_out` is defined and `auto_wrap_output_keys` is the default value. rc t|di|t|ts | t d|t |_yddd}t |_|jD]c\}}t||r||vr|j j|||jvrAtt|||}t|||ey)Nz6auto_wrap_output_keys must be None or a tuple of keys.r)r fit_transformr)super__init_subclass__r;rrprbritemsradd__dict__rrsetattr)clsrr method_to_keyrxkeywrapped_methodrjs rrz!_SetOutputMixin.__init_subclass__es !+F+ ,e 48M8UUV V (14C . %( .1U*(..0 1KFC3'36K+K  . . 2 23 7S\\)0f1EsKN C 0 1r&NcR||St|dsi|_||jd<|S)aSet output container. See :ref:`sphx_glr_auto_examples_miscellaneous_plot_set_output.py` for an example on how to use the API. Parameters ---------- transform : {"default", "pandas", "polars"}, default=None Configure output of `transform` and `fit_transform`. - `"default"`: Default output format of a transformer - `"pandas"`: DataFrame output - `"polars"`: Polars output - `None`: Transform configuration is unchanged .. versionadded:: 1.4 `"polars"` option was added. Returns ------- self : estimator instance Estimator instance. r}r)rr})r rs r set_outputz_SetOutputMixin.set_outputs72  Kt56*,D '3<##K0 r&)r) r0r1r2__doc__rr rr __classcell__)rjs@rrr[s+1@*+&*,r&rrct|dxst|dxr|du}|syt|dstd|d|j|S)a)Safely call estimator.set_output and error if it not available. This is used by meta-estimators to set the output for child estimators. Parameters ---------- estimator : estimator instance Estimator instance. transform : {"default", "pandas", "polars"}, default=None Configure output of the following estimator's methods: - `"transform"` - `"fit_transform"` If `None`, this operation is a no-op. Returns ------- estimator : estimator instance Estimator instance. rrNrzUnable to configure output for z' because `set_output` is not available.r)rrpr)ryrset_output_for_transforms r_safe_set_outputrst. 'y+>  ?+E 0E $  9l +-i[9       )  44r&r)r functoolsrtypingrrnumpyrQ scipy.sparser_configr _available_ifr rrrr6rKr[rlrfrtr{rwrrrrrrr&rrs.! 'J xJ J Z'%'%T//> 7 7,--/*-/*$ #F+\. JJZ.2$5r&