
    NgL                        d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZmZ erd dlmZ d dlmZ  ej"                  e      Z G d	 d
      Zy)    )annotationsN)TYPE_CHECKINGAny)NotConfigured)build_component_list)build_from_crawlerload_object)Crawler)Settingsc                       e Zd ZdZddZddZy)AddonManagerz@This class facilitates loading and storing :ref:`topics-addons`.c                     || _         g | _        y )N)crawleraddons)selfr   s     -lib/python3.12/site-packages/scrapy/addons.py__init__zAddonManager.__init__   s     '!#    c                   t        |d         D ]P  }	 t        |      }t        || j                        }|j	                  |       | j
                  j                  |       R t        j                  dd	| j
                  id| j                  i       y# t        $ rJ}|j                  r4t        j                  d||j                  d   dd| j                  i       Y d}~d}~ww xY w)
a  Load add-ons and configurations from a settings object and apply them.

        This will load the add-on for every add-on path in the
        ``ADDONS`` setting and execute their ``update_settings`` methods.

        :param settings: The :class:`~scrapy.settings.Settings` object from             which to read the add-on configuration
        :type settings: :class:`~scrapy.settings.Settings`
        ADDONSzDisabled %(clspath)s: %(eargs)sr   )clspatheargsr   )extraNzEnabled addons:
%(addons)sr   )r   r	   r   r   update_settingsr   appendr   argsloggerwarninginfo)r   settingsr   addonclsaddones         r   load_settingszAddonManager.load_settings   s     ,HX,>?G&w/*8T\\B%%h/""5) @ 	)$++ dll+ 	 	
 ! 66NN9$+affQi@($,,7 # s   AB	C&A C!!C&N)r   r
   returnNone)r    r   r%   r&   )__name__
__module____qualname____doc__r   r$    r   r   r   r      s    J$
r   r   )
__future__r   loggingtypingr   r   scrapy.exceptionsr   scrapy.utils.confr   scrapy.utils.miscr   r	   scrapy.crawlerr
   scrapy.settingsr   	getLoggerr'   r   r   r+   r   r   <module>r5      s>    "  % + 2 =&( 
		8	$$
 $
r   