Skip to main content

AOP (Aspect-Oriented Programming) helper for Python

Project description

AOPHelper – Python을 위한 강력한 AOP 라이브러리

AOPHelper는 Python에서 **Aspect-Oriented Programming(AOP, 관점 지향 프로그래밍)**을 쉽게 적용할 수 있도록 도와주는 라이브러리입니다.
@Aspect 데코레이터를 사용하여 로깅, 성능 측정, 예외 처리 등을 간편하게 적용하세요!


🚀 설치 방법

pip install aophelper

🔥 빠른 시작

✅ 기본 AOP 적용 예제

from aophelper import Aspect, BaseAdvice

class LoggingAdvice(BaseAdvice):
    def before(self, func, *args, **kwargs):
        print(f"🚀 {func.__name__} 실행 시작!")

    def after(self, func, result, *args, **kwargs):
        print(f"✅ {func.__name__} 실행 완료! 결과: {result}")

aspect = Aspect()
aspect.set_advice(LoggingAdvice())

@aspect.apply
def add(x, y):
    return x + y

print(add(10, 20))

출력 결과

🚀 add 실행 시작! ✅ add 실행 완료! 결과: 30

📌 주요 기능

기능 설명

  • ✅ before() 함수 실행 전에 수행할 작업 추가
  • ⚡ around() 함수 실행 시간 측정 및 실행 방식 제어 가능
  • 🛑 on_exception() 예외 발생 시 자동 처리 및 로깅 가능
  • 📢 after() 함수 실행 후 결과를 후처리 가능
  • 🔄 비동기 지원 async def 함수에도 AOP 적용 가능

🛠 각 기능의 예제 코드

✅ before() – 함수 실행 전에 동작 추가

from aophelper import Aspect, BaseAdvice

class MyAdvice(BaseAdvice):
    def before(self, func, *args, **kwargs):
        print(f"{func.__name__} 실행 전! 매개변수: {args}, {kwargs}")

aspect = Aspect()
aspect.set_advice(MyAdvice())

@aspect.apply
def greet(name):
    print(f"안녕하세요, {name}님!")

greet("Alice")

출력 결과

greet 실행 전! 매개변수: ('Alice',), {}
안녕하세요, Alice님!

⚡ around() – 실행 시간 측정 및 동작 변경

import time

class TimerAdvice(BaseAdvice):
    def around(self, func, *args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        end = time.time()
        print(f"{func.__name__} 실행 시간: {end - start:.4f}초")
        return result

aspect.set_advice(TimerAdvice())

@aspect.apply
def slow_function():
    time.sleep(2)
    print("작업 완료!")

slow_function()

출력 결과

작업 완료!
slow_function 실행 시간: 2.0050초

🛑 on_exception() – 예외 발생 시 자동 처리

class ErrorHandlerAdvice(BaseAdvice):
    def on_exception(self, func, exception, *args, **kwargs):
        print(f"{func.__name__}에서 오류 발생: {exception}")

aspect.set_advice(ErrorHandlerAdvice())

@aspect.apply
def error_function():
    raise ValueError("잘못된 값!")

error_function()

출력 결과

error_function에서 오류 발생: 잘못된 값!

📢 after() – 실행 후 후처리

class PostProcessingAdvice(BaseAdvice):
    def after(self, func, result, *args, **kwargs):
        print(f"{func.__name__} 실행 완료! 결과: {result}")

aspect.set_advice(PostProcessingAdvice())

@aspect.apply
def multiply(x, y):
    return x * y

print(multiply(5, 10))

출력 결과

multiply 실행 완료! 결과: 50
50

🔄 비동기 함수(async def) 지원

AOPHelper는 async def 함수에도 적용할 수 있습니다.

import asyncio

class AsyncAdvice(BaseAdvice):
    async def before(self, func, *args, **kwargs):
        print(f"(비동기) {func.__name__} 실행 전!")

aspect.set_advice(AsyncAdvice())

@aspect.apply
async def async_task():
    await asyncio.sleep(1)
    print("비동기 작업 완료!")

asyncio.run(async_task())

출력 결과

(비동기) async_task 실행 전!
비동기 작업 완료!

이제 더 강력한 AOP 기능을 활용해 보세요! 🚀

기여 방법

버그 리포트나 기능 제안은 GitHub Issues에 남겨주세요

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aophelper-0.4.0.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aophelper-0.4.0-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file aophelper-0.4.0.tar.gz.

File metadata

  • Download URL: aophelper-0.4.0.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.10

File hashes

Hashes for aophelper-0.4.0.tar.gz
Algorithm Hash digest
SHA256 0f5e0adb19b117a75ea12097a03ad101892e4be36176bba47b550f034cce7b11
MD5 3460e4620ee43b0a913e56cb77457d3b
BLAKE2b-256 994cf632bd5ab9534219e78a1db12aa921be96e1c4092302d49f739566872a89

See more details on using hashes here.

File details

Details for the file aophelper-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: aophelper-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.10

File hashes

Hashes for aophelper-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f8f27e959c4fc0aadeefda718aab53f08c81dd83b8158c33d2e64130fe832140
MD5 995dcf4ffa148f9fe5c35ef656fd09fe
BLAKE2b-256 c3393bd8ee596d9dd2c5f2ffd9ad02ffa95272983743af6e9bc0e5c9cd3d547b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page