o
    e                     @  s   d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	 ddl
mZ ddlZddlZddlmZ ddlmZmZ G dd	 d	ejZddddZdddZg dZdS )zPlugin manager using pluggy.    )annotationsN)Path)Sequence)
pluginspec)
get_parserplugins_only_parserc                      s@   e Zd ZdZddd fdd	Zd
d Zdd Zdd Z  ZS )OcrmypdfPluginManagerzpluggy.PluginManager that can fork.

    Capable of reconstructing itself in child workers.

    Arguments:
        setup_func: callback that initializes the plugin manager with all
            standard plugins
    T)builtinspluginslist[str | Path]r	   boolc                  s6   || _ || _|| _|| _t j|i | |   d S )N)!_OcrmypdfPluginManager__init_args#_OcrmypdfPluginManager__init_kwargs_OcrmypdfPluginManager__plugins _OcrmypdfPluginManager__builtinssuper__init__setup_plugins)selfr
   r	   argskwargs	__class__ HD:\Projects\ConvertPro\env\Lib\site-packages\ocrmypdf/_plugin_manager.pyr   !   s   zOcrmypdfPluginManager.__init__c                 C  s   t | j| j| j| jd}|S )N)	init_argsr
   r	   init_kwargs)dictr   r   r   r   r   stater   r   r   __getstate__/   s   z"OcrmypdfPluginManager.__getstate__c                 C  s*   | j |d |d |d d|d  d S )Nr   r
   r	   r
   r	   r   )r   r   r   r   r   __setstate__8   s   
z"OcrmypdfPluginManager.__setstate__c                 C  s   |  t | jr$tttjjD ]}d|j	 }t
|}| | qz	ddlm} ~W n ty>   | t
d Y nw | d | jD ]4}t|tsS|drqt|j}t
j||}t
j|}|tj|< |j| nt
|}| | qGd S )Nzocrmypdf.builtin_plugins.r   )SemLockzocrmypdf.extra_plugins.semfreeocrmypdfz.py)Zadd_hookspecsr   r   sortedpkgutiliter_modulesr$   Zbuiltin_plugins__path__name	importlibimport_moduleregisterZmultiprocessing.synchronizer#   ImportErrorZload_setuptools_entrypointsr   
isinstancer   endswithstemutilspec_from_file_locationmodule_from_specsysmodulesloaderexec_module)r   moduler)   r#   module_namespecr   r   r   r   @   s2   






z#OcrmypdfPluginManager.setup_plugins)r
   r   r	   r   )	__name__
__module____qualname____doc__r   r    r"   r   __classcell__r   r   r   r   r      s    	r   Tr
   r   c                 C  s   t d| |dS )Nr$   )project_namer
   r	   )r   r!   r   r   r   get_plugin_managerg   s
   rA   r   Sequence[str]returnHtuple[argparse.ArgumentParser, argparse.Namespace, pluggy.PluginManager]c                 C  sR   t j| d\}}t|j}t }|jj|d |jj|d |j| d}|||fS )N)r   )plugin_manager)parser)	r   Zparse_known_argsrA   r
   r   hookZ
initializeadd_options
parse_args)r   Zpre_optionsZ_unusedrE   rF   optionsr   r   r   get_parser_options_pluginso   s   

rK   )r   rA   rK   )T)r
   r   )r   rB   rC   rD   )r>   
__future__r   argparser*   importlib.utilr&   r4   pathlibr   typingr   ZpluggyZocrmypdf.builtin_pluginsr$   r   Zocrmypdf.clir   r   ZPluginManagerr   rA   rK   __all__r   r   r   r   <module>   s"   P
