l
 ¸çNc               @   s²  d  Z  d+ Z d d l m Z m Z m Z m Z d d l m Z d d l m	 Z
 d d l Z d d l Z d d l Z d d l Z d, Z d „  Z d „  Z d „  Z g  Z d d l Z d- d- d „ Z e j j e j j e ƒ e j j e j j ƒ Z  e j j! e  ƒ f Z  d „  Z" d d. d- d „ Z d „  Z% e j j e  d d  ƒ Z& d! „  Z' d d" „ Z( d d d# „ Z) d- d$ „ Z* d% „  Z+ d& d- d' „ Z	 d- d( „ Z, d- d) „ Z- d- d* „ Z. d S(/   ul   
This module contains utility functions specific to blender but
not assosiated with blenders internal data.
u   blend_pathsu   keyconfig_setu   load_scriptsu   modules_from_pathu   preset_findu   preset_pathsu   refresh_script_pathsu   register_classu   register_moduleu   resource_pathu   script_pathsu   smpte_from_frameu   smpte_from_secondsu   unregister_classu   unregister_moduleu   user_resourceu   user_script_pathi    (   u   register_classu   unregister_classu   blend_pathsu   resource_path(   u   script_paths(   u   user_resourceNu   startupu   modulesc             C   sË   t  j j } |  | k r d  Sd |  k r: t d |  ƒ d  S| r[ d d  l } | j ƒ  } n  y t |  ƒ } Wn" d d  l } | j ƒ  d  SYn X| r· t d |  | j ƒ  | f ƒ n  | j	 | j
 ƒ | S(   Nu   .u=   Ignoring '%s', can't import files containing multiple periodsi    u   time %s %.4f(   u   _bpyu   appu   debugu   Noneu   printu   timeu
   __import__u	   tracebacku	   print_excu   addu   __name__(   u   module_nameu   loaded_modulesu   use_timeu   timeu   tu   modu	   traceback(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   _test_import;   s(    
	!c             C   s)   |  t  j k r% t  j j d |  ƒ n  d  S(   Ni    (   u   _sysu   pathu   insert(   u   path(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   _sys_path_ensureW   s    c             C   sR   g  } xE t  j j |  ƒ D]1 \ } } t | | ƒ } | r | j | ƒ q q W| S(   uN  
    Load all modules in a path and return them as a list.

    :arg path: this path is scanned for scripts and packages.
    :type path: string
    :arg loaded_modules: already loaded module names, files matching these
       names will be ignored.
    :type loaded_modules: set
    :return: all loaded modules.
    :rtype: list
    (   u   _bpyu   pathu   module_namesu   _test_importu   append(   u   pathu   loaded_modulesu   modulesu   mod_nameu   mod_pathu   mod(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   modules_from_path\   s    c                s\  t  j j } t  j j } | r9 d d l } | j ƒ  } n  t ƒ  } ˆ rZ t j j	 ƒ  ‰ n  ˆ r¡ t
 j j ƒ  x1 d „  | j Dƒ D] } t j | d d ƒq Wn  d „  ‰ d „  } d „  ‰  ‡ ‡ ‡ ‡  ‡ f d †  }	 ˆ rJd	 „  t Dƒ t d d … <t j ƒ  x t D] }
 | |
 ƒ qWx t D] }
 ˆ  |
 ƒ q#Wg  t d d … <n  xŒ t ƒ  D] } xx t D]p } t j j | | ƒ } t j j | ƒ rat | ƒ | d
 k rªqan  x$ t | | ƒ D] }
 |	 |
 ƒ qºWqaqaWqTWt j ˆ ƒ t | j j d ƒ } | rt | ƒ n  ˆ r7d d l  } t! d | j" ƒ  ƒ n  | rXt! d | j ƒ  | ƒ n  d S(   uD  
    Load scripts and run each modules register function.

    :arg reload_scripts: Causes all scripts to have their unregister method
       called before loading.
    :type reload_scripts: bool
    :arg refresh_scripts: only load scripts which are not already loaded
       as modules.
    :type refresh_scripts: bool
    i    Nc             S   s   g  |  ] } | j  ‘ q S(    (   u   module(   u   .0u   ext(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu
   <listcomp>•   s   	 u   default_setc          	   S   s\   t  |  d d  ƒ } | rG y | ƒ  WqX d d  l } | j ƒ  YqX Xn t d |  j ƒ d  S(   Nu   registeri    u[   
Warning! '%s' has no register function, this is now a requirement for registerable scripts(   u   getattru   Noneu	   tracebacku	   print_excu   printu   __file__(   u   modu   registeru	   traceback(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   register_module_call˜   s    c          	   S   sK   t  |  d d  ƒ } | rG y | ƒ  WqG d d  l } | j ƒ  YqG Xn  d  S(   Nu
   unregisteri    (   u   getattru   Noneu	   tracebacku	   print_exc(   u   modu
   unregisteru	   traceback(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   unregister_module_call¥   s    c          	   S   sR   d d  l  } |  t k r |  Sy | j |  ƒ SWn d d  l } | j ƒ  Yn Xd  S(   Ni    (   u   impu
   _bpy_typesu   reloadu	   tracebacku	   print_exc(   u   modu   impu	   traceback(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   test_reload®   s    c                se   ˆ r |  ˆ k r d  Sˆ  r> |  r> t  d |  ƒ ˆ |  ƒ }  n  |  ra ˆ |  ƒ t j |  j ƒ n  d  S(   Nu
   Reloading:(   u   printu   _global_loaded_modulesu   appendu   __name__(   u   mod(   u   reload_scriptsu   register_module_callu   refresh_scriptsu   test_reloadu   original_modules(    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   test_register¼   s    
c             S   s   g  |  ] } t  j | ‘ q S(    (   u   _sysu   modules(   u   .0u   mod_name(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu
   <listcomp>Ì   s   	u   modulesu	   keyconfigu   gc.collect() -> %du   Python Script Load Time %.4fF(#   u   _bpyu   appu   debugu   contextu   user_preferencesu   timeu   setu   _sysu   modulesu   valuesu
   _bpy_typesu   TypeMapu   clearu   addonsu   _addon_utilsu   disableu   Falseu   _global_loaded_modulesu   reverseu   script_pathsu   _script_module_dirsu   _osu   pathu   joinu   isdiru   _sys_path_ensureu   modules_from_pathu	   reset_allu   preset_findu   inputsu   active_keyconfigu   keyconfig_setu   gcu   printu   collect(   u   reload_scriptsu   refresh_scriptsu   use_timeu   prefsu   timeu   t_mainu   loaded_modulesu   module_nameu   unregister_module_callu   test_registeru   modu	   base_pathu   path_subdiru   pathu   filepathu   gc(    (   u   test_reloadu   original_modulesu   reload_scriptsu   register_module_callu   refresh_scriptsu^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   load_scriptsv   sV    					

c              C   s<   t  j j }  |  j j } | r4 t j j | ƒ } | Sd  Sd  S(   N(	   u   _bpyu   contextu   user_preferencesu	   filepathsu   script_directoryu   _osu   pathu   normpathu   None(   u   prefsu   path(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   user_script_pathÿ   s    c       
      C   s  t  t ƒ } t j j } | r- | j j } n d } | rR t d „  d Dƒ ƒ } n	 t	 ƒ  } x^ | | f D]O } | ri t
 j j | ƒ } | | k r¸ t
 j j | ƒ r¸ | j | ƒ q¸ qi qi W|  d k rÌ | Sg  } xE | D]= } t
 j j | |  ƒ }	 t
 j j |	 ƒ rÙ | j |	 ƒ qÙ qÙ W| S(   ul  
    Returns a list of valid script paths.

    :arg subdir: Optional subdir.
    :type subdir: string
    :arg user_pref: Include the user preference script path.
    :type user_pref: bool
    :arg check_all: Include local, user and system paths rather just the paths
       blender uses.
    :type check_all: bool
    :return: script paths.
    :rtype: list
    c             s   s*   |  ]  } t  j j t | ƒ d  ƒ Vq d S(   u   scriptsN(   u   _osu   pathu   joinu   resource_path(   u   .0u   res(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu	   <genexpr>#  s   u   LOCALu   USERu   SYSTEMN(   u   LOCALu   USERu   SYSTEM(   u   listu   _scriptsu   _bpyu   contextu   user_preferencesu	   filepathsu   script_directoryu   Noneu   tupleu   _bpy_script_pathsu   _osu   pathu   normpathu   isdiru   appendu   join(
   u   subdiru	   user_prefu	   check_allu   scriptsu   prefsu   user_script_pathu
   base_pathsu   pathu   script_pathsu   path_subdir(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   script_paths
  s,    		c              C   s²   xV t  ƒ  D]K }  xB t D]: } t j j |  | ƒ } t j j | ƒ r t | ƒ q q Wq
 WxR t j ƒ  D]D } t | ƒ t j j | d ƒ } t j j | ƒ rf t | ƒ qf qf Wd S(   uE   
    Run this after creating new script paths to update sys.path
    u   modulesN(	   u   script_pathsu   _script_module_dirsu   _osu   pathu   joinu   isdiru   _sys_path_ensureu   _addon_utilsu   paths(   u	   base_pathu   path_subdiru   path(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   refresh_script_paths;  s    
u   presetsc             C   s€   g  } xs t  d d d ƒD]_ } t j j | |  ƒ } | j | ƒ sV t d |  ƒ ‚ q t j j | ƒ r | j | ƒ q q W| S(   uÃ   
    Returns a list of paths for a specific preset.

    :arg subdir: preset subdirectory (must not be an absolute path).
    :type subdir: string
    :return: script paths.
    :rtype: list
    u   presetsu	   check_allu   invalid subdir given %rT(	   u   script_pathsu   Trueu   _osu   pathu   joinu
   startswithu	   Exceptionu   isdiru   append(   u   subdiru   dirsu   pathu	   directory(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   preset_pathsP  s    	c             C   sù   d d l  } | d k r- t j j j j } n  d } } } } |  d k  r[ |  }  d } n d } |  d k rŠ t |  d ƒ } |  d }  n  |  d k r³ t |  d ƒ } |  d }  n  t |  ƒ } t t | j	 |  | | ƒ ƒ ƒ } d | | | | | f S(   uŽ   
    Returns an SMPTE formatted string from the time in seconds: "HH:MM:SS:FF".

    If the *fps* is not given the current scene is used.
    i    Nu   -u    g      ¬@g      N@u   %s%02d:%02d:%02d:%02d(
   u   mathu   Noneu   _bpyu   contextu   sceneu   renderu   fpsu   intu   roundu   floor(   u   timeu   fpsu   mathu   hoursu   minutesu   secondsu   framesu   neg(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   smpte_from_secondsc  s"    	#c             C   sW   | d k r! t j j j j } n  | d k rB t j j j j } n  t |  | | | ƒ S(   u   
    Returns an SMPTE formatted string from the frame: "HH:MM:SS:FF".

    If *fps* and *fps_base* are not given the current scene is used.
    N(   u   Noneu   _bpyu   contextu   sceneu   renderu   fpsu   fps_baseu   smpte_from_seconds(   u   frameu   fpsu   fps_base(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   smpte_from_frameƒ  s
    c             C   s½   |  s
 d  Sx¬ t | ƒ D]ž } | rw d } xU t j | ƒ D]7 } | j d ƒ r9 |  t j j | ƒ k r9 | } Pq9 q9 Wn
 |  d } | r t j j | | ƒ } t j j	 | ƒ rµ | Sq q Wd  S(   Nu    u   .py(
   u   Noneu   preset_pathsu   _osu   listdiru   endswithu   _bpyu   pathu   display_nameu   joinu   exists(   u   nameu   preset_pathu   display_nameu	   directoryu   filenameu   fnu   filepath(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   preset_find“  s    '
c       	         s-  d d l  m } m } t j j r2 t d |  ƒ n  t j j j	 } | d  d  … ‰  y@ t
 |  ƒ } t t | j ƒ  |  d ƒ i |  d 6ƒ | j ƒ  Wn d d  l } | j ƒ  Yn X‡  f d †  | Dƒ d } d | _ | | |  ƒ ƒ d } x) | j | ƒ } | r| j | ƒ qî Pqî | | _ | | _ d  S(   Ni    (   u   basenameu   splitextu   loading preset:u   execu   __file__c                s"   g  |  ] } | ˆ  k r | ‘ q S(    (    (   u   .0u   kc(   u   keyconfigs_old(    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu
   <listcomp>º  s   	 u    (   u   os.pathu   basenameu   splitextu   _bpyu   appu   debugu   printu   contextu   window_manageru
   keyconfigsu   openu   execu   compileu   readu   closeu	   tracebacku	   print_excu   nameu   getu   removeu   active(	   u   filepathu   basenameu   splitextu
   keyconfigsu   keyfileu	   tracebacku   kc_newu   nameu   kc_dupe(    (   u   keyconfigs_oldu^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   keyconfig_set¨  s,    &		u    c          	   C   s›   t  |  | ƒ } | r— | r— t j j | ƒ sh y t j | ƒ Wq‘ d d l } | j ƒ  d } Yq‘ Xq” t j j | ƒ s” t d | ƒ d } q” q— n  | S(   u“  
    Return a user resource path (normally from the users home directory).

    :arg type: Resource type in ['DATAFILES', 'CONFIG', 'SCRIPTS', 'AUTOSAVE'].
    :type type: string
    :arg subdir: Optional subdirectory.
    :type subdir: string
    :arg create: Treat the path as a directory and create
       it if its not existing.
    :type create: boolean
    :return: a path.
    :rtype: string
    i    Nu    u$   Path %r found but isn't a directory!(	   u   _user_resourceu   _osu   pathu   existsu   makedirsu	   tracebacku	   print_excu   isdiru   print(   u   typeu   pathu   createu   target_pathu	   traceback(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   user_resourceË  s    
c             c   s‚   t  j j |  d ƒ } d } x` | t | ƒ k  r} | | } | ƒ  } | d  k rY | | =q | | j k rp | Vn  | d 7} q Wd  S(   Ni    i   (    (   u
   _bpy_typesu   TypeMapu   getu   lenu   Noneu   is_registered(   u   moduleu   is_registeredu   typemap_listu   iu   cls_weakrefu   cls(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   _bpy_module_classesî  s    
	
c          
   C   sÄ   | r t  d |  ƒ n  d  } xn t |  d d ƒD]Z } | rM t  d | ƒ n  y t | ƒ Wq0 t  d | ƒ d d  l } | j ƒ  Yq0 Xq0 W| r¡ t  d ƒ n  | d  k rÀ t d |  ƒ ‚ n  d  S(	   Nu"   bpy.utils.register_module(%r): ...u   is_registeredu       %ru;   bpy.utils.register_module(): failed to registering class %ri    u   done.
u'   register_module(%r): defines no classesF(   u   printu   Noneu   _bpy_module_classesu   Falseu   register_classu	   tracebacku	   print_excu	   Exception(   u   moduleu   verboseu   clsu	   traceback(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   register_moduleý  s"    c          
   C   sŸ   | r t  d |  ƒ n  xn t |  d d ƒD]Z } | rG t  d | ƒ n  y t | ƒ Wq* t  d | ƒ d d  l } | j ƒ  Yq* Xq* W| r› t  d ƒ n  d  S(   Nu$   bpy.utils.unregister_module(%r): ...u   is_registeredu       %ru?   bpy.utils.unregister_module(): failed to unregistering class %ri    u   done.
T(   u   printu   _bpy_module_classesu   Trueu   unregister_classu	   tracebacku	   print_exc(   u   moduleu   verboseu   clsu	   traceback(    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   unregister_module  s    (   u   blend_pathsu   keyconfig_setu   load_scriptsu   modules_from_pathu   preset_findu   preset_pathsu   refresh_script_pathsu   register_classu   register_moduleu   resource_pathu   script_pathsu   smpte_from_frameu   smpte_from_secondsu   unregister_classu   unregister_moduleu   user_resourceu   user_script_path(   u   startupu   modulesFT(/   u   __doc__u   __all__u   _bpyu   register_classu   unregister_classu   blend_pathsu   resource_pathu   script_pathsu   _bpy_script_pathsu   user_resourceu   _user_resourceu   bpyu   osu   _osu   sysu   _sysu   addon_utilsu   _addon_utilsu   _script_module_dirsu   _test_importu   _sys_path_ensureu   modules_from_pathu   _global_loaded_modulesu	   bpy_typesu
   _bpy_typesu   Falseu   load_scriptsu   pathu   joinu   dirnameu   __file__u   pardiru   _scriptsu   normpathu   user_script_pathu   Noneu   Trueu   refresh_script_pathsu   _presetsu   preset_pathsu   smpte_from_secondsu   smpte_from_frameu   preset_findu   keyconfig_setu   _bpy_module_classesu   register_moduleu   unregister_module(    (    (    u^   I:\Didattica\Lezioni\Software\blender-2.61-release-windows32\2.61\scripts\modules\bpy\utils.pyu   <module>   s`                   "			‚		1		 	##