+
    Dfj$              
           . ROt ^ RIt^ RIt^ RIt^ RIHt ^ RIHt R R ltRRR	RR
R
RRRR/t	 ! R R4      t
]
! 4       t]P                  4       tR# )secondsPlatformN)time)Optionalc                $    V ^8  d   QhR\         /#    return)str)formats   "8/usr/lib/python3/dist-packages/twisted/python/runtime.py__annotate__r      s     - -C -    c                 >    R\         P                  R,          ,          # )z7
Returns the Python version as a dot-separated string.
z%s.%s.%s:N   N)sysversion_info r   r   shortPythonVersionr      s     ((,,,r   ntwin32ceposixjavazorg.python.modules.osc                   n  a  ] tR t^#t o Rt]P                  ]P                  4      t	]
! ]4      t]P                  tRV 3R lR lltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRV 3R lR lltV 3R lR ltV 3R lR ltV 3R lR ltV 3R ltRtV tR# )r   z;
Gives us information about the platform we're running on.
Nc                J   < V ^8  d   QhRS[ S[,          RS[ S[,          RR/# )r   nameplatformr	   Nr   r
   )r   __classdict__s   "r   r   Platform.__annotate__,   s-     & &SM&4<SM&	&r   c                Z    Ve   \         P                  V4      V n        Ve	   W n        R # R # )N)knownPlatformsgettype	_platform)selfr   r   s   &&&r   __init__Platform.__init__,   s,     &**40DI%N  r   c                    < V ^8  d   QhRS[ /# r   bool)r   r   s   "r   r   r    4   s     ! ! !r   c                     V P                   R8g  # )zg
Do we know about this platform?

@return: Boolean indicating whether this is a known platform or not.
Nr$   r&   s   &r   isKnownPlatform.isKnown4   s     yyD  r   c                0   < V ^8  d   QhRS[ S[,          /# r   r   )r   r   s   "r   r   r    <   s      # r   c                    V P                   # )z@
Get platform type.

@return: Either 'posix', 'win32' or 'java'
r-   r.   s   &r   getTypePlatform.getType<   s     yyr   c                    < V ^8  d   QhRS[ /# r   r*   )r   r   s   "r   r   r    D   s     * *$ *r   c                     V P                   R8H  # )zk
Check if current platform is macOS.

@return: C{True} if the current platform has been detected as macOS.
darwin)r%   r.   s   &r   isMacOSXPlatform.isMacOSXD   s     ~~))r   c                    < V ^8  d   QhRS[ /# r   r*   )r   r   s   "r   r   r    L   s          r   c                \    \         P                  ! R\        ^R7       V P                  4       # )z
Are we running in Windows NT?

This is deprecated and always returns C{True} on win32 because
Twisted only supports Windows NT-derived platforms at this point.

@return: C{True} if the current platform has been detected as
    Windows NT.
zgtwisted.python.runtime.Platform.isWinNT was deprecated in Twisted 13.0. Use Platform.isWindows instead.)
stacklevel)warningswarnDeprecationWarning	isWindowsr.   s   &r   isWinNTPlatform.isWinNTL   s*     	<		
 ~~r   c                    < V ^8  d   QhRS[ /# r   r*   )r   r   s   "r   r   r    ^   s     ) )4 )r   c                (    V P                  4       R8H  # )zh
Are we running in Windows?

@return: C{True} if the current platform has been detected as
    Windows.
r   )r3   r.   s   &r   r@   Platform.isWindows^   s     ||~((r   c                    < V ^8  d   QhRS[ /# r   r*   )r   r   s   "r   r   r    g   s     N N Nr   c                |    \         P                  R8H  ;'       d#    \         P                  ! 4       P                  ^8H  # )z
Check if current platform is Windows Vista or Windows Server 2008.

@return: C{True} if the current platform has been detected as Vista
r   )r   r   getwindowsversionmajorr.   s   &r   isVistaPlatform.isVistag   s/     ||w&MM3+@+@+B+H+HA+MMr   c                    < V ^8  d   QhRS[ /# r   r*   )r   r   s   "r   r   r    o   s     2 2 2r   c                8    V P                   P                  R4      # )zk
Check if current platform is Linux.

@return: C{True} if the current platform has been detected as Linux.
linux)r%   
startswithr.   s   &r   isLinuxPlatform.isLinuxo   s     ~~((11r   c                &   < V ^8  d   QhRS[ RS[/# )r   _initCGroupLocationr	   )r
   r+   )r   r   s   "r   r   r    w   s      C t r   c                x   V P                  4       '       g   R# ^ RIHp V! V4      pVP                  4       '       dy   VP	                  4       P                  R4       Uu. uF  qDP                  R4      NK  	  ppV F6  p\        V4      ^8X  g   K  V^,          P                  R4      '       g   K5   R# 	  R# u upi )z
Check if the current platform is Linux in a Docker container.

@return: C{True} if the current platform has been detected as Linux
    inside a Docker container.
F)FilePath   
   :s   /docker/T)rP   twisted.python.filepathrU   exists
getContentsplitlenrO   )r&   rS   rU   initCGroupsxcontrolGroupsgroups   &&     r   isDockerPlatform.isDockerw   s     ||~~4 23 (3'='='?'E'Ee'L'L!'L   'u:?uQx':':;'G'G '
 s   B7c                    < V ^8  d   QhRS[ /# r   r*   )r   r   s   "r   r   r       s      4 r   c                |    V P                  4       '       d   R#  \        P                   R#   \         d     R# i ; i)z
Check for symlink support usable for Twisted's purposes.

@return: C{True} if symlinks are supported on the current platform,
         otherwise C{False}.
FT)r@   ossymlinkAttributeErrorr.   s   &r   _supportsSymlinksPlatform._supportsSymlinks   s;     >> 

  " s   , ;;c                    < V ^8  d   QhRS[ /# r   r*   )r   r   s   "r   r   r       s       r   c                8     ^ RI pVRJ#   \         d     R# i ; i)za
Can threads be created?

@return: C{True} if the threads are supported on the current platform.
NF)	threadingImportError)r&   rl   s   & r   supportsThreadsPlatform.supportsThreads   s'    	D(( 		s   
 c                    < V ^8  d   QhRS[ /# r   r*   )r   r   s   "r   r   r       s       r   c                     ^ RI HpHp  \        P
                  ! T! 4       4       R#   \         d     R# i ; i  T d     R# i ; i)zN
Return C{True} if we can use the inotify API on this platform.

@since: 10.1
)INotifyErrorinitFT)twisted.python._inotifyrr   rs   rm   re   close)r&   rr   rs   s   &  r   supportsINotifyPlatform.supportsINotify   sI    	B	HHTV   		
  		s   ( : 77AAc                6   < V ^8  d   Qh/ S[ S[,          ;R&   # )r   r$   r   )r   r   s   "r   r   r    #   s     
 3-5 r   )r%   r$   )NN)z/proc/1/cgroup)__name__
__module____qualname____firstlineno____doc__r"   r#   re   r   r$   staticmethodr   r   r   r%   r'   r/   r3   r8   rA   r@   rJ   rP   ra   rh   rn   rv   __annotate_func____static_attributes____classdictcell__)r   s   @r   r   r   #   s      ),,RWW5D7#GI& &! ! * *   $) )N N2 2 8 2  m  r   )r   r   r   r   platformType)__all__re   r   r=   r   r   typingr   r   r"   r   r   r3   r   r   r   r   <module>r      sh   
 
 
    - 	''W
FVe eP :!r   