
    AF[iA                     H   d dl Z d dlZd dlmZ d dlmZmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlmZmZmZmZ d	d
lmZmZ  ej4                  e      Z	 	 d*dedefdZ	 	 d*dededefdZdZ d e        d e        d e        dZ!defdZ"defdZ#	 d+de
eef   de	e$eef      fdZ%e	 d+dede	e   fd       Z&eddddddddddd
ded ed!e	e'   d"e	e   de	e$   d#e	e   d$e	e'   d%e	e
e(e   ef      d&e	e
e(e   ef      d'e	e
e(e   ef      d(e	e   fd)       Z)y),    N)Path)DEFAULT_PROTOCOLPicklingError)AnyOptionalUnion)version)	constantssnapshot_download)HfApi)SoftTemporaryDirectoryget_fastai_versionget_fastcore_versionget_python_version   )loggingvalidate_hf_hub_argsfastai_min_versionfastcore_min_versionc                    t               xs
 t               dk(  r(t        d|  d| dt                dt                d	      t        j                  t                     }t        j                  t                     }|t        j                  |       k  rt        d|  dt                d	      |t        j                  |      k  rt        d
| dt                d      y)a-  
    Checks that the installed fastai and fastcore versions are compatible for pickle serialization.

    Args:
        fastai_min_version (`str`, *optional*):
            The minimum fastai version supported.
        fastcore_min_version (`str`, *optional*):
            The minimum fastcore version supported.

    > [!TIP]
    > Raises the following error:
    >
    >     - [`ImportError`](https://docs.python.org/3/library/exceptions.html#ImportError)
    >       if the fastai or fastcore libraries are not available or are of an invalid version.
    zN/Azfastai>=z and fastcore>=z' are required. Currently using fastai==z and fastcore==.zD`push_to_hub_fastai` and `from_pretrained_fastai` require a fastai>=z+ version, but you are using fastai version zA which is incompatible. Upgrade with `pip install fastai==2.5.6`.zF`push_to_hub_fastai` and `from_pretrained_fastai` require a fastcore>=- version, but you are using fastcore version zD which is incompatible. Upgrade with `pip install fastcore==1.3.27`.N)r   r   ImportErrorr	   Version)r   r   current_fastai_versioncurrent_fastcore_versions       e/var/www/html/chatbot/moweb-chatbot/venv/lib/python3.12/site-packages/huggingface_hub/fastai_utils.py_check_fastai_fastcore_versionsr      s   ( 	6"4"65@)*/:N9O P22D2F1G H.014
 	
 %__-?-AB&/C/EF0B CC*+ ,"$% &
 	
  '//2F"GG./ 0,./ 0//
 	
 H    storage_folderc                 <   	 ddl }t        j                  j                  |  d      st        j                  d       y|j                  |  d      }d|j                         vrt        j                  d       y|d   }d|j                         vrt        j                  d	       y|d   }|D cg c]  }|j                  d
      s| }}t        |      dk(  rt        j                  d       nbt        |d         j                  d      d   }	|	dk7  r=t        j                  |	      t        j                  |      k  rt        d| d|	 d      |D cg c]  }|j                  d      s| }
}t        |
      dk(  rt        j                  d       yt        |
d         j                  d      d   }|dk7  r>t        j                  |      t        j                  |      k  rt        d| d| d      yy# t        $ r t        d      w xY wc c}w c c}w )a  
    Checks that the `pyproject.toml` file in the directory `storage_folder` has fastai and fastcore versions
    that are compatible with `from_pretrained_fastai` and `push_to_hub_fastai`. If `pyproject.toml` does not exist
    or does not contain versions for fastai and fastcore, then it logs a warning.

    Args:
        storage_folder (`str`):
            Folder to look for the `pyproject.toml` file.
        fastai_min_version (`str`, *optional*):
            The minimum fastai version supported.
        fastcore_min_version (`str`, *optional*):
            The minimum fastcore version supported.

    > [!TIP]
    > Raises the following errors:
    >
    >     - [`ImportError`](https://docs.python.org/3/library/exceptions.html#ImportError)
    >       if the `toml` module is not installed.
    >     - [`ImportError`](https://docs.python.org/3/library/exceptions.html#ImportError)
    >       if the `pyproject.toml` indicates a lower than minimum supported version of fastai or fastcore.
    r   Nzn`push_to_hub_fastai` and `from_pretrained_fastai` require the toml module. Install it with `pip install toml`.z/pyproject.tomlzThere is no `pyproject.toml` in the repository that contains the fastai `Learner`. The `pyproject.toml` would allow us to verify that your fastai and fastcore versions are compatible with those of the model you want to load.zbuild-systemzThere is no `build-system` section in the pyproject.toml of the repository that contains the fastai `Learner`. The `build-system` would allow us to verify that your fastai and fastcore versions are compatible with those of the model you want to load.requireszThere is no `requires` section in the pyproject.toml of the repository that contains the fastai `Learner`. The `requires` would allow us to verify that your fastai and fastcore versions are compatible with those of the model you want to load.fastaizPThe repository does not have a fastai version specified in the `pyproject.toml`.=    z*`from_pretrained_fastai` requires fastai>=z$ version but the model to load uses z which is incompatible.fastcorezRThe repository does not have a fastcore version specified in the `pyproject.toml`.z,`from_pretrained_fastai` requires fastcore>=r   )tomlModuleNotFoundErrorr   ospathisfileloggerwarningloadkeys
startswithlenstr	partitionr	   r   )r    r   r   r(   pyproject_tomlbuild_system_tomlpackage_versionspckfastai_packagesfastai_versionfastcore_packagesfastcore_versions               r   )_check_fastai_fastcore_pyproject_versionsr=   G   sD   6
 77>>^,O<=	
 	YY.!1ABN^0022.	
 	&~6*//11.	
 	(4 '7Ss#..:RsSOS
?q ij _Q/0::3?BRGOON$CgooVhFi$i./ 0"##:<  )9WCNN:<VWW
"kl 034>>sCAFr!goo6F&G'//ZnJo&o23 4,--DF  'p!u  
3
 	

N T Xs#   G< 0HHH.H<Hu   ---
tags:
- fastai
---

# Amazing!

🥳 Congratulations on hosting your fastai model on the Hugging Face Hub!

# Some next steps
1. Fill out this model card with more information (see the template below and the [documentation here](https://huggingface.co/docs/hub/model-repos))!

2. Create a demo in Gradio or Streamlit using 🤗 Spaces ([documentation here](https://huggingface.co/docs/hub/spaces)).

3. Join the fastai community on the [Fastai Discord](https://discord.com/invite/YKrxeNn)!

Greetings fellow fastlearner 🤝! Don't forget to delete this content from your model card.


---


# Model card

## Model description
More information needed

## Intended uses & limitations
More information needed

## Training and evaluation data
More information needed
zB[build-system]
requires = ["setuptools>=40.8.0", "wheel", "python=z", "fastai=z", "fastcore=z6"]
build-backend = "setuptools.build_meta:__legacy__"
repo_dirc                     | dz  }|j                         s2|j                  dd      5 }|j                  t               ddd       yy# 1 sw Y   yxY w)z
    Creates a model card for the repository.

    Args:
        repo_dir (`Path`):
            Directory where model card is created.
    z	README.mdwutf-8encodingN)existsopenwriteREADME_TEMPLATE)r>   readme_pathfs      r   _create_model_cardrJ      sZ     [(KcG4 	%GGO$	% 	%  	% 	%   A		Ac                     | dz  }|j                         s2|j                  dd      5 }|j                  t               ddd       yy# 1 sw Y   yxY w)z
    Creates a `pyproject.toml` for the repository.

    Args:
        repo_dir (`Path`):
            Directory where `pyproject.toml` is created.
    zpyproject.tomlr@   rA   rB   N)rD   rE   rF   PYPROJECT_TEMPLATE)r>   pyproject_pathrI   s      r   _create_model_pyprojectrO      s\      00N  "  w 7 	(1GG&'	( 	( #	( 	(rK   save_directoryconfigc                 b   t                t        j                  |d       |t        |t              st        dt        |       d      t        j                  j                  |t        j                        }t        |d      5 }t        j                  ||       ddd       t        t        |             t!        t        |             t        |      | _        t        j                  |d       	 | j#                  dt$               y# 1 sw Y   qxY w# t&        $ r t'        d	      w xY w)
a  
    Saves a fastai learner to `save_directory` in pickle format using the default pickle protocol for the version of python used.

    Args:
        learner (`Learner`):
            The `fastai.Learner` you'd like to save.
        save_directory (`str` or `Path`):
            Specific directory in which you want to save the fastai learner.
        config (`dict`, *optional*):
            Configuration object. Will be uploaded as a .json file. Example: 'https://huggingface.co/espejelomar/fastai-pet-breeds-classification/blob/main/config.json'.

    > [!TIP]
    > Raises the following error:
    >
    >     - [`RuntimeError`](https://docs.python.org/3/library/exceptions.html#RuntimeError)
    >       if the config file provided is not a dictionary.
    T)exist_okNz(Provided config should be a dict. Got: ''r@   	model.pkl)fnamepickle_protocolzYou are using a lambda function, i.e., an anonymous function. `pickle` cannot pickle function objects and requires that all functions have names. One possible solution is to name the function.)r   r*   makedirs
isinstancedictRuntimeErrortyper+   joinr
   CONFIG_NAMErE   jsondumprJ   r   rO   exportr   r   )learnerrP   rQ   r+   rI   s        r   _save_pretrained_fastairc      s   , $%KK. &$'!I$v,WXYZZww||NI,A,AB$_ 	!IIfa 	! tN+,D01 'GLKK.

, 	 	
	! 	!  
E
 	

s   D5D DD.repo_idrevisionc                     t                t        j                  j                  |       st	        | |dt                     }n| }t        |       ddlm}  |t        j                  j                  |d            S )ap  
    Load pretrained fastai model from the Hub or from a local directory.

    Args:
        repo_id (`str`):
            The location where the pickled fastai.Learner is. It can be either of the two:
                - Hosted on the Hugging Face Hub. E.g.: 'espejelomar/fatai-pet-breeds-classification' or 'distilgpt2'.
                  You can add a `revision` by appending `@` at the end of `repo_id`. E.g.: `dbmdz/bert-base-german-cased@main`.
                  Revision is the specific model version to use. Since we use a git-based system for storing models and other
                  artifacts on the Hugging Face Hub, it can be a branch name, a tag name, or a commit id.
                - Hosted locally. `repo_id` would be a directory containing the pickle and a pyproject.toml
                  indicating the fastai and fastcore versions used to build the `fastai.Learner`. E.g.: `./my_model_directory/`.
        revision (`str`, *optional*):
            Revision at which the repo's files are downloaded. See documentation of `snapshot_download`.

    Returns:
        The `fastai.Learner` model in the `repo_id` repo.
    r#   )rd   re   library_namelibrary_versionr   )load_learnerrU   )
r   r*   r+   isdirr   r   r=   fastai.learnerri   r]   )rd   re   r    ri   s       r   from_pretrained_fastairl   !  sa    . $%
 77==!*!.0	
 !-n=+^[ABBr   z(Push FastAI model using huggingface_hub.)
commit_messageprivatetokenrQ   branch	create_prallow_patternsignore_patternsdelete_patternsapi_endpointrm   rn   ro   rp   rq   rr   rs   rt   ru   c                   t                t        |      }|j                  |||d      j                  }t	               5 }t        |      |z  }t        | ||       |j                  ||||||||	|
	      cddd       S # 1 sw Y   yxY w)a	  
    Upload learner checkpoint files to the Hub.

    Use `allow_patterns` and `ignore_patterns` to precisely filter which files should be pushed to the hub. Use
    `delete_patterns` to delete existing remote files in the same commit. See [`upload_folder`] reference for more
    details.

    Args:
        learner (`Learner`):
            The `fastai.Learner' you'd like to push to the Hub.
        repo_id (`str`):
            The repository id for your model in Hub in the format of "namespace/repo_name". The namespace can be your individual account or an organization to which you have write access (for example, 'stanfordnlp/stanza-de').
        commit_message (`str`, *optional*):
            Message to commit while pushing. Will default to :obj:`"add model"`.
        private (`bool`, *optional*):
            Whether or not the repository created should be private.
            If `None` (default), will default to been public except if the organization's default is private.
        token (`str`, *optional*):
            The Hugging Face account token to use as HTTP bearer authorization for remote files. If :obj:`None`, the token will be asked by a prompt.
        config (`dict`, *optional*):
            Configuration object to be saved alongside the model weights.
        branch (`str`, *optional*):
            The git branch on which to push the model. This defaults to
            the default branch as specified in your repository, which
            defaults to `"main"`.
        create_pr (`boolean`, *optional*):
            Whether or not to create a Pull Request from `branch` with that commit.
            Defaults to `False`.
        api_endpoint (`str`, *optional*):
            The API endpoint to use when pushing the model to the hub.
        allow_patterns (`list[str]` or `str`, *optional*):
            If provided, only files matching at least one pattern are pushed.
        ignore_patterns (`list[str]` or `str`, *optional*):
            If provided, files matching any of the patterns are not pushed.
        delete_patterns (`list[str]` or `str`, *optional*):
            If provided, remote files matching any of the patterns will be deleted from the repo.

    Returns:
        The url of the commit of your model in the given repository.

    > [!TIP]
    > Raises the following error:
    >
    >     - [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError)
    >       if the user is not log on to the Hugging Face Hub.
    )endpointT)rd   ro   rn   rS   )rQ   )	rd   ro   folder_pathrm   re   rq   rr   rs   rt   N)r   r   create_repord   r   r   rc   upload_folder)rb   rd   rm   rn   ro   rQ   rp   rq   rr   rs   rt   ru   apitmp
saved_paths                  r   push_to_hub_fastair~   N  s    | $%

&CoogUGVZo[ccG 
 	! 
S#Y(
FC  "))++ ! 


 
 
s    6B  B	)z2.4z1.3.27)N)*r_   r*   pathlibr   pickler   r   typingr   r   r   	packagingr	   huggingface_hubr
   r   huggingface_hub.hf_apir   huggingface_hub.utilsr   r   r   r   utilsr   r   
get_logger__name__r-   r3   r   r=   rG   rM   rJ   rO   rZ   rc   rl   boollistr~    r   r   <module>r      sO    	  2 ' '  8 (  1 
		H	% $ (,
,
,
b $ (\\\ \~ D44F4H3IUgUiTjjw  yM  yO  xP P % %(d ($ (,2
#t)$2
 T#s(^$2
j  #)C)Csm)C )CX 
 E"!  $6:7;7;"&O
 O
 	O

 d^O
 C=O
 TNO
 SMO
 ~O
 U49c>23O
 eDIsN34O
 eDIsN34O
 3-O
 O
r   