
    gA                        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
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 d	dlmZ  ej        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*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,dS )0    N)Path)DEFAULT_PROTOCOLPicklingError)AnyDictListOptionalUnion)version)	constantssnapshot_download)HfApi)SoftTemporaryDirectoryget_fastai_versionget_fastcore_versionget_python_version   )loggingvalidate_hf_hub_args)_PY_VERSION2.41.3.27fastai_min_versionfastcore_min_versionc                    t                      pt                      dk    r4t          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          dS )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.

    </Tip>
    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       X/var/www/html/ai-engine/env/lib/python3.11/site-packages/huggingface_hub/fastai_utils.py_check_fastai_fastcore_versionsr#      s\   , 	6"4"6"65@@4) 4 4:N 4 42D2F2F4 4.004 4 4
 
 	
 %_-?-A-ABB&/C/E/EFF0B C CCC* "$$  
 
 	
  '/2F"G"GGG/./ /,../ / /
 
 	
 HG    storage_folderc                    	 ddl }n# t          $ r t          d          w xY wt          j                            |  d          st                              d           dS |                    |  d          }d|	                                vrt                              d           dS |d         }d|	                                vrt                              d	           dS |d         }d
 |D             }t          |          dk    rt                              d           ntt          |d                                       d          d         }|dk    r@t          j        |          t          j        |          k     rt          d| d| d          d |D             }	t          |	          dk    rt                              d           dS t          |	d                                       d          d         }
|
dk    r@t          j        |
          t          j        |          k     rt          d| d|
 d          dS dS )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.

    </Tip>
    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.c                 <    g | ]}|                     d           |S )fastai
startswith.0pcks     r"   
<listcomp>z=_check_fastai_fastcore_pyproject_versions.<locals>.<listcomp>   s)    SSSs#..:R:RSsSSSr$   zPThe 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.c                 <    g | ]}|                     d           |S )fastcorer*   r,   s     r"   r/   z=_check_fastai_fastcore_pyproject_versions.<locals>.<listcomp>   s)    WWWCNN:<V<VWWWWr$   zRThe 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lenstr	partitionr   r   )r%   r   r   r5   pyproject_tomlbuild_system_tomlpackage_versionsfastai_packagesfastai_versionfastcore_packagesfastcore_versions              r"   )_check_fastai_fastcore_pyproject_versionsrH   J   s   :
 
 
 
3
 
 	

 7>>^<<<== 	
 	
 	
 	YY.AAABBN^002222.	
 	
 	
 	&~6*//1111.	
 	
 	
 	(4 TS&6SSSO
?q  ijjjj _Q/00::3??BRGON$C$CgoVhFiFi$i$i<.< <"< < <   XW(8WWW
""klllll 0344>>sCCAFr!!go6F&G&G'/ZnJoJo&o&oF2F F,F F F   "!&o&os    !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  }|                                 sL|                    dd          5 }|                    t                     ddd           dS # 1 swxY w Y   dS dS )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)rI   readme_pathfs      r"   _create_model_cardrU      s     [(K %cG44 	%GGO$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%% %   AA Ac                     | dz  }|                                 sL|                    dd          5 }|                    t                     ddd           dS # 1 swxY w Y   dS dS )z
    Creates a `pyproject.toml` for the repository.

    Args:
        repo_dir (`Path`):
            Directory where `pyproject.toml` is created.
    zpyproject.tomlrK   rL   rM   N)rO   rP   rQ   PYPROJECT_TEMPLATE)rI   pyproject_pathrT   s      r"   _create_model_pyprojectrZ      s      00N  "" (  w 77 	(1GG&'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(( (rV   save_directoryconfigc                    t                       t          j        |d           |t          |t                    s t          dt          |           d          t          j                            |t          j
                  }t          |d          5 }t          j        ||           ddd           n# 1 swxY w Y   t          t          |                     t!          t          |                     t          |          | _        t          j        |d           	 |                     dt$                     dS # 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.

    </Tip>
    T)exist_okNz(Provided config should be a dict. Got: ''rK   	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#   r7   makedirs
isinstancedictRuntimeErrortyper8   joinr   CONFIG_NAMErP   jsondumprU   r   rZ   exportr   r   )learnerr[   r\   r8   rT   s        r"   _save_pretrained_fastairn      s   2 $%%%K.... &$'' 	[Y$v,,YYYZZZw||NI,ABB$__ 	!Ifa   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! tN++,,,D00111 ''GLK....

, 	 	
 	
 	
 	
 	
  
 
 
E
 
 	

s   B88B<?B<&E Erepo_idrevisionc                    t                       t          j                            |           s t	          | |dt                                }n| }t          |           ddlm}  |t          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)   )ro   rp   library_namelibrary_versionr   )load_learnerr`   )
r#   r7   r8   isdirr   r   rH   fastai.learnerrt   rh   )ro   rp   r%   rt   s       r"   from_pretrained_fastairw   )  s    . $%%%
 7==!! !*!.00	
 
 
 !-n===++++++<^[AABBBr$   z(Push FastAI model using huggingface_hub.F)
commit_messageprivatetokenr\   branch	create_prallow_patternsignore_patternsdelete_patternsapi_endpointrx   ry   rz   r{   r|   r}   r~   r   r   c                N   t                       t          |          }|                    |||d          j        }t	                      5 }t          |          |z  }t          | ||           |                    ||||||||	|
	  	        cddd           S # 1 swxY w Y   dS )ac	  
    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*, defaults to `False`):
            Whether or not the repository created should be 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.

    </Tip>
    )endpointT)ro   rz   ry   r^   )r\   )	ro   rz   folder_pathrx   rp   r|   r}   r~   r   N)r#   r   create_reporo   r   r   rn   upload_folder)rm   ro   rx   ry   rz   r\   r{   r|   r}   r~   r   r   apitmp
saved_paths                  r"   push_to_hub_fastair   V  s   @ $%%%

&
&
&CoogUGVZo[[cG 
 	!	! 
S#YY(
FCCCC  "))++ ! 

 


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   ABB!B)r   r   )N)-rj   r7   pathlibr   pickler   r   typingr   r   r   r	   r
   	packagingr   huggingface_hubr   r   huggingface_hub.hf_apir   huggingface_hub.utilsr   r   r   r   utilsr   r   utils._runtimer   
get_logger__name__r:   r?   r#   rH   rR   rX   rU   rZ   rn   rw   boolre   r    r$   r"   <module>r      s    				       2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3       8 8 8 8 8 8 8 8 ( ( ( ( ( (            1 0 0 0 0 0 0 0 ' ' ' ' ' ' 
	H	%	% $ (.
 .
.
.
 .
 .
 .
f $ (^ ^^^ ^ ^ ^ ^B D4F4F4H4H UgUgUiUi  yM  yM  yO  yO   % % % % %(d ( ( ( ($ (,5
 5
#t)$5
 T#s(^$5
 5
 5
 5
p  #)C )C)Csm)C )C )C )CX 
 E!  $6:7;7;"&Q
 Q
 Q
 Q
 	Q

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