Introduction to wrap-fn
The wrap-fn
utility is a powerful tool designed to streamline and enhance your development workflow. Whether you’re looking to manipulate functions, handle middleware, or perform higher-order operations, wrap-fn
provides a robust set of APIs to meet your needs.
Key APIs and Their Usage
Here are some of the most commonly used APIs within wrap-fn
, along with code snippets to illustrate their usage:
Basic Wrapping
def wrap_hello(fn): def wrapped(*args, **kwargs): print("Hello from wrapped function!") return fn(*args, **kwargs) return wrapped @wrap_hello def greet(name): print(f"Greetings, {name}!") greet("Alice")
Middleware Wrapping
def log_middleware(fn): def wrapped(*args, **kwargs): print(f"Calling function {fn.__name__}") result = fn(*args, **kwargs) print(f"{fn.__name__} returned {result}") return result return wrapped @log_middleware def add(a, b): return a + b add(3, 4)
Error Handling
def error_handler(fn): def wrapped(*args, **kwargs): try: return fn(*args, **kwargs) except Exception as e: print(f"Function {fn.__name__} raised an error: {str(e)}") return wrapped @error_handler def divide(a, b): return a / b divide(4, 0)
Example Application Using wrap-fn
Let’s look at a comprehensive example where wrap-fn
is used to build a simple application:
Example: Simple Web Server
from flask import Flask, request app = Flask(__name__) def request_logger(fn): def wrapped(*args, **kwargs): print(f"Request URL: {request.url}") return fn(*args, **kwargs) return wrapped def exception_handler(fn): def wrapped(*args, **kwargs): try: return fn(*args, **kwargs) except Exception as e: return f"Error: {str(e)}", 500 return wrapped @app.route('/hello') @request_logger @exception_handler def hello(): name = request.args.get('name', 'world') return f"Hello, {name}!" if __name__ == '__main__': app.run(debug=True)
The above example demonstrates a simple web server with logging and error handling middleware applied to a route.
Hash: 665afc1f82e7268ec21c60261e3f8bf90fe0d8cba91c45143f71d849bc5fc637