
    Lg                    Z    d dl mZ d dlZd dlmZ d dlmZ 	 	 	 	 	 	 d	dZd Zd
dZ	ddZ
y)    )annotationsN)Version)import_requiredc           
     ^    ddl m} |t        t        t        t        d} |d| |||||d|S )a  Create timeseries dataframe with random data

    Parameters
    ----------
    start : datetime (or datetime-like string)
        Start of time series
    end : datetime (or datetime-like string)
        End of time series
    dtypes : dict (optional)
        Mapping of column names to types.
        Valid types include {float, int, str, 'category'}
    freq : string
        String like '2s' or '1H' or '12W' for the time series frequency
    partition_freq : string
        String like '1M' or '2Y' to divide the dataframe into partitions
    seed : int (optional)
        Randomstate seed
    kwargs:
        Keywords to pass down to individual column creation functions.
        Keywords should be prefixed by the column name and then an underscore.

    Examples
    --------
    >>> import dask
    >>> df = dask.datasets.timeseries()
    >>> df.head()  # doctest: +SKIP
              timestamp    id     name         x         y
    2000-01-01 00:00:00   967    Jerry -0.031348 -0.040633
    2000-01-01 00:00:01  1066  Michael -0.262136  0.307107
    2000-01-01 00:00:02   988    Wendy -0.526331  0.128641
    2000-01-01 00:00:03  1016   Yvonne  0.620456  0.767270
    2000-01-01 00:00:04   998   Ursula  0.684902 -0.463278
    >>> df = dask.datasets.timeseries(
    ...     '2000', '2010',
    ...     freq='2h', partition_freq='1D', seed=1,  # data frequency
    ...     dtypes={'value': float, 'name': str, 'id': int},  # data types
    ...     id_lam=1000  # control number of items in id column
    ... )
    r   )make_timeseries)nameidxy)startendfreqpartition_freqseeddtypes )dask.dataframe.io.demor   strintfloat)r   r   r   r   r   r   kwargsr   s           -lib/python3.12/site-packages/dask/datasets.py
timeseriesr   
   sI    ` 7~Su5A %      c                    ddl }ddlm}m}  |d
d|i  i i }}t	        |j
                        t	        d      k  rd|d<   nd|d<    |d
d fd	i|}	t        |      D 
cg c]  }
 |	j                  d
i |d    c}
S c c}
w )zdGenerate data for a single partition of a dask bag

    See Also
    --------
    _make_mimesis
    r   N)FieldSchemar   z9.0.0   
iterationsschemac                             S Nr   )fieldschema_descriptions   r   <lambda>z#_generate_mimesis.<locals>.<lambda>\   s    #5e#<r   r   )mimesismimesis.schemar   r   r   __version__rangecreate)r#   r$   records_per_partitionr   r&   r   r   schema_kwargscreate_kwargsr    is   ``         r   _generate_mimesisr/   J   s     ,%t%u%E $&r=Mw""#gg&66&'l#&'l#N<NNF7<=R7ST7S!MFMM*M*1-7STTTs   $Bc           
     L   ddl m} ddlm} | xs i } t	        j
                  |      }t        |      D cg c]  }|j                  dd       }	}d || ||||      z   }
t        |	      D ci c]  \  }}|
|ft        | |||f }}}|j                  ||
|      S c c}w c c}}w )a  
    Make a Dask Bag filled with data randomly generated by the mimesis project

    Parameters
    ----------
    field: dict
        keyword arguments to pass to ``mimesis.Field``
    schema: Callable[Field] -> dict
        The schema to use to generate the data
    npartitions: int
    records_per_partition: int
    seed: int, None
        Seed for random data

    Returns
    -------
    Dask Bag

    See Also
    --------
    make_people
    r   N)tokenizel        zmimesis-)dask.bagbag	dask.baser1   randomRandomr)   randint	enumerater/   Bag)r#   r    npartitionsr+   r   dbr1   random_state_seedsr   r.   dsks                r   _make_mimesisr@   `   s    . "KRE==&L7<[7IJ7I!\!!!W-7IEJv{$94 D
 !''GAt 
q	%uf6KTRR'  
 66#t[)) K
s   B-B c                B    t        dd       d }t        d|i|| ||      S )a  Make a dataset of random people

    This makes a Dask Bag with dictionary records of randomly generated people.
    This requires the optional library ``mimesis`` to generate records.

    Parameters
    ----------
    npartitions : int
        Number of partitions
    records_per_partition : int
        Number of records in each partition
    seed : int, (optional)
        Random seed
    locale : str
        Language locale, like 'en', 'fr', 'zh', or 'ru'

    Returns
    -------
    b: Dask Bag
    r&   zWThe mimesis module is required for this function.  Try:
  python -m pip install mimesisc           	          | ddd       | d       | d      f | d       | d       | d	       | d
      d | d       | d      ddS )Nzrandom.randintr   x   )abzperson.namezperson.surnamezperson.occupationzperson.telephonezaddress.addresszaddress.city)addresscityzpayment.credit_card_numberz#payment.credit_card_expiration_date)numberzexpiration-date)ager   
occupation	telephonerF   zcredit-cardr   )r#   s    r   r%   zmake_people.<locals>.<lambda>   sc    %c2}%u-='>?/0-.$%67~AVW89$%JK

r   locale)r   r@   )r:   r+   r   rL   r    s        r   make_peoplerM      s;    * 	*
F 	6FK1F r   )z
2000-01-01z
2000-01-311s1DNNr"   )
   i  Nen)
__future__r   r5   packaging.versionr   
dask.utilsr   r   r/   r@   rM   r   r   r   <module>rU      s<    "  % & 		=@U,'*T)r   