Skip to content

Instantly share code, notes, and snippets.

@Averroes
Averroes / example1.py
Created April 10, 2015 16:58
monkeypatching modules on import
from postimport import when_imported
@when_imported('threading')
def warn_threads(mod):
print('Threads? Are you crazy?')
if __name__ == '__main__':
import threading
@Averroes
Averroes / example2.py
Created April 10, 2015 16:59
monkeypatching modules on import
from postimport import when_imported
from functools import wraps
def logged(func):
@wraps(func)
def wrapper(*args, **kwargs):
print('Calling', func.__name__, args, kwargs)
return func(*args, **kwargs)
return wrapper
@Averroes
Averroes / postimport.py
Created April 10, 2015 17:00
monkeypatching modules on import
# postimport.py
import importlib
import sys
from collections import defaultdict
_post_import_hooks = defaultdict(list)
class PostImportFinder:
def __init__(self):
@Averroes
Averroes / example.py
Created April 10, 2015 17:00
splitting a module into multiple files
import mymodule
a = mymodule.A()
a.spam()
b = mymodule.B()
b.bar()
@Averroes
Averroes / echoclient.py
Created April 10, 2015 17:01
adding ssl to network servers
# echoclient.py
#
# An example of a client that connects to an SSL server
# and verifies its certificate
from socket import socket, AF_INET, SOCK_STREAM
import ssl
s = socket(AF_INET, SOCK_STREAM)
@Averroes
Averroes / echoserv.py
Created April 10, 2015 17:01
adding ssl to network servers
from socket import socket, AF_INET, SOCK_STREAM
from socket import SOL_SOCKET, SO_REUSEADDR
import ssl
KEYFILE = 'server_key.pem' # Private key of the server
CERTFILE = 'server_cert.pem' # Server certificate (given to client)
def echo_client(s):
while True:
data = s.recv(8192)
@Averroes
Averroes / ssl xmlrpc client.py
Created April 10, 2015 17:02
adding ssl to network servers
# ssl_xmlrpc_client.py
#
# An XML-RPC client that verifies the server certificate
from xmlrpc.client import SafeTransport, ServerProxy
import ssl
class VerifyCertSafeTransport(SafeTransport):
def __init__(self, cafile, certfile=None, keyfile=None):
super().__init__()
@Averroes
Averroes / ssl xmlrpc server.py
Created April 10, 2015 17:02
adding ssl to network servers
# ssl_xmlrpc_server.py
#
# An example of an SSL-XMLRPC Server.
import ssl
from xmlrpc.server import SimpleXMLRPCServer
from sslmixin import SSLMixin
class SSLSimpleXMLRPCServer(SSLMixin, SimpleXMLRPCServer):
pass
@Averroes
Averroes / sslmixin.py
Created April 10, 2015 17:03
adding ssl to network servers
import ssl
class SSLMixin:
def __init__(self, *args,
keyfile=None, certfile=None, ca_certs=None, cert_reqs=ssl.CERT_NONE,
**kwargs):
self._keyfile = keyfile
self._certfile = certfile
self._ca_certs = ca_certs
self._cert_reqs = cert_reqs
@Averroes
Averroes / client1.py
Created April 10, 2015 17:03
creating a simple rest based interface
from urllib.request import urlopen
u = urlopen('http://localhost:8080/hello?name=Guido')
print(u.read().decode('utf-8'))
u = urlopen('http://localhost:8080/localtime')
print(u.read().decode('utf-8'))