a
    tDf                     @  sV   d dl mZ d dlZd dlmZ d dlmZ dd	d
Zdd ZdddZ	dddZ
dS )    )annotationsN)Version)import_required
2000-01-01
2000-01-311s1dc              	   K  s>   ddl m} |du r"ttttd}|f | |||||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_timeseriesN)nameidxy)startendfreqpartition_freqseeddtypes)Zdask.dataframe.io.demor	   strintfloat)r   r   r   r   r   r   kwargsr	    r   Z/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/dask/datasets.py
timeseries
   s    0r   c                   s   ddl }ddlm}m} |f d|ii i  } t|jtdk rPd d< nd|d< |f dfd	d
i| fddt|D S )zdGenerate data for a single partition of a dask bag

    See Also
    --------
    _make_mimesis
    r   N)FieldSchemar   z9.0.0   Z
iterationsschemac                     s    S )Nr   r   )fieldschema_descriptionr   r   <lambda>\       z#_generate_mimesis.<locals>.<lambda>c                   s    g | ]}j f i  d  qS )r   )create).0i)create_kwargsr   r   r   
<listcomp>]   r"   z%_generate_mimesis.<locals>.<listcomp>)mimesisZmimesis.schemar   r   r   __version__range)r   r    records_per_partitionr   r(   r   r   Zschema_kwargsr   )r&   r   r   r    r   _generate_mimesisJ   s    

r,   c           	        s~   ddl m} ddlm}  pi  t|fddt|D }d| ||  fddt|D }|||S )	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)tokenizec                   s   g | ]}  d dqS )r   l        )randint)r$   _)random_stater   r   r'   }   r"   z!_make_mimesis.<locals>.<listcomp>zmimesis-c                   s$   i | ]\}}|ft  |fqS r   )r,   )r$   r%   r   )r   r
   r+   r   r   r   
<dictcomp>   s   z!_make_mimesis.<locals>.<dictcomp>)	Zdask.bagZbagZ	dask.baser-   randomRandomr*   	enumerateZBag)	r   r   npartitionsr+   r   dbr-   ZseedsZdskr   )r   r
   r0   r+   r   r   _make_mimesis`   s    

r7   
     enc                 C  s&   t d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                 S  sL   | d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)addressZcityzpayment.credit_card_numberz#payment.credit_card_expiration_date)numberzexpiration-date)Zager
   Z
occupationZ	telephoner>   zcredit-cardr   )r   r   r   r   r!      s    zmake_people.<locals>.<lambda>locale)r   r7   )r5   r+   r   r@   r   r   r   r   make_people   s    rA   )r   r   r   r   NN)N)r8   r9   Nr:   )
__future__r   r2   Zpackaging.versionr   Z
dask.utilsr   r   r,   r7   rA   r   r   r   r   <module>   s         
@
*