Package: crapi
**Welcome to CRAPI!**=====================**CRAPI** (spelled "crap-i" - and hoping not to be such one despite itsname) or **Common Range API** is a library meant to ease the developmentin various areas of Linux and Windows using one common API. The libraryaims to be a highly stable version of common programming practices,constructs and OS native functions & tools with a dedicated mindset in:-  Portability in Windows since Windows API is huge and complicated-  Portability in both OSes (Windows & Linux alike)-  PerformanceWe aim to cover most common scenarios beyond the basic API mechanisms(i.e. building a multithreaded pipe server, Windows services/Linuxdaemon etc) that will be provided to you however not every scenario willbe covered. Minimally, priority will be given to the foundationmechanisms so you may be able to build whatever you want (hopefully).**Security issues** and **implementation correctness** are always apriority and will be taken into account however do note that until wereach a production/stable status we do not accept input butsuggestions/comments and/or feedback are always welcome :)**Operating system support**----------------------------Windows 7/8/8.1/10, Windows Server 2008 R2/2012 R2/2016 & major Linuxvariants:       Debian 7.x and 8.x (untested) & CentOS/RHEL 6.6 and 6.7(tested). Mac OS X is **NOT** supported (unless you buy me one maybe?).**Prerequisites**------------------  Python 2.6 or 2.7 with latest version of pip, wheel and setuptools.**Windows distributions**: Guess what? You need Mark Hammond'spywin32 module. Please use the one provided here: pywin32-Build 219by Christoph Gohlke and make sure to follow the installationinstructions correctly.**Why another library?**------------------------How many times have you been forced to see this (non-parameterizedexample code for illustration purposes)?.. code:: pythonself.sa = win32security.SECURITY_ATTRIBUTES()self.sa.bInheritHandle = Trueself.__hPipe = win32pipe.CreateNamedPipe('\\\\.\\pipe\\mypipe'win32pipe.PIPE_ACCESS_DUPLEX | win32file.FILE_FLAG_OVERLAPPED,win32pipe.PIPE_TYPE_MESSAGE | win32pipe.PIPE_READMODE_MESSAGE,win32pipe.PIPE_UNLIMITED_INSTANCES,65535,65535,60000,sa)or maybe this (from the MessageBroker library which uses MSMQ):.. code:: pythonpywintypes.com_error: (-2147352567, 'Exception occurred.', (0, u'MSMQQueueInfo',u'The queue does not exist or you do not have sufficient permissions to perform''the operation.', None, 0, -1072824317), None)A Python developer shouldn't have to figure this out especially whenit's crafted in a non-Pythonic, untypical way.Noone should have to do this. That's why we have attempted to do it FORyou WITHOUT you :P.P.S.: The above are not meant to criticize Mark Hammond's **pywin32**excellent library. Merely, they indicate the difficulties a developerhas to deal with by being forced to use heterogeneous components andsource code due to different OSes with incompatible APIs and nativeimplementation.**LICENSE**===========It's based on Apache Software License 2.0 (ASF 2.0) so withoutsuggesting that this constitutes a legal advice in any way, shape orform: Do whatever the f\*\*\* you want with it as long as you give usproper credit! :}**DISCLAIMER**==============The authors strive for a stable and coherent source code base however itshould be considered experimental and pre-alpha and, as such, notproduction-ready so use at your own risk! In addition, the authors makesno guarantees that the code is of top-notch quality (any Win folkshere?). You have been (fore)warned!!! :]**NOTE**========Currently, only MS Windows is supported. Linux support coming soon :]