semvec/pypi-packages huggingface dataset:
fnsignal 2.5.5
A powerful function signal system for Python
License: MIT
Requires Python: >=3.7

# fnsignal

간단하고 강력한 Python 시그널/이벤트 시스템

## 설치

```bash
pip install fnsignal
```

## 빠른 시작

### 1. 기본 사용법

```python
from fnsignal.fnsignal import signal_manager

# 콜백 함수 정의
def my_callback(signal_name, data, sender):
    print(f"시그널명: {signal_name}, 데이터: {data}, 보낸이: {sender}")

# 콜백 등록
signal_manager.register_callback("hello", my_callback)

# 시그널 발송
signal_manager.send_signal("hello", data={"foo": "bar"}, sender="나")
```

### 2. 여러 콜백 등록

```python
def cb1(signal_name, data, sender):
    print("cb1:", data)

def cb2(signal_name, data, sender):
    print("cb2:", data)

signal_manager.register_callback("event", cb1)
signal_manager.register_callback("event", cb2)
signal_manager.send_signal("event", 123, sender="user")
```

### 3. 콜백 해제

```python
signal_manager.unregister_callback("event", cb1)
signal_manager.send_signal("event", 456, sender="user")
```

### 4. 비동기 콜백

```python
import asyncio

async def async_cb(signal_name, data, sender):
    print("비동기 콜백:", data)

signal_manager.register_callback("async_event", async_cb)
signal_manager.send_signal("async_event", "async data", sender="user")
```

## 주요 기능

### 1. 시그널 관리
- 시그널 발송/수신
- 콜백 등록/해제
- 우선순위 기반 콜백 실행
- 필터 조건 지원

### 2. 비동기 지원
- 동기/비동기 콜백 모두 지원
- asyncio 이벤트 루프 자동 관리
- Thread-safe 설계

### 3. 통계 및 모니터링
- 시그널/콜백 실행 통계
- 에러 카운트 및 로깅
- 실행 시간 측정

### 4. 안전성
- 자동 에러 처리
- 연속 에러 시 자동 재초기화
- Thread-safe 동작

## API 문서

### signal_manager.register_callback(signal_name, callback, sender=None, priority=SignalPriority.NORMAL, filter_condition=None, stop_propagation=False)
- 시그널에 콜백을 등록합니다.
- 우선순위, 필터, 전파 중단 옵션 지정 가능

### signal_manager.unregister_callback(signal_name, callback)
- 특정 시그널의 콜백을 해제합니다.

### signal_manager.send_signal(signal_name, data=None, sender=None, priority=SignalPriority.NORMAL)
- 시그널을 발송합니다.
- 등록된 콜백들이 우선순위에 따라 실행됩니다.

### signal_manager.get_signal_stats()
- 현재 시그널 시스템의 통계 정보를 반환합니다.

## 라이선스

MIT License
enlyze 3.0.1
Python SDK for interacting with the ENLYZE platform https://www.enlyze.com
License: MIT
Requires Python: >=3.10

ENLYZE Python SDK
=================

Python SDK for interacting with the `ENLYZE platform <https://www.enlyze.com>`_

Getting started with development
--------------------------------

We use `tox <https://tox.wiki/en/latest/>`_ to manage most of the tasks in a development
workflow.

To start developing locally, we suggest that you have tox installed in your environment
(you can install it globally or in a virtualenv) and then you can run the following
command to create a development `virtualenv` for the project with the required
dependencies installed.

.. code-block:: console

    $ tox --devenv .venv -e dev

which will create a virtualenv for you under the `.venv` directory. Afterwards you can
activate the virtualenv and start hacking away

.. code-block:: console

    $ source .venv/bin/activate

Running the test suite
~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: console

    $ tox

Running the linters
~~~~~~~~~~~~~~~~~~~

.. code-block:: console

    $ tox p -e flake8,black,isort,bandit,tox-fmt,pyproject-fmt

Running `mypy`
~~~~~~~~~~~~~~

.. code-block:: console

    $ tox -e mypy

Generating the documentation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: console

    $ tox -e docs

Note that this requires the `Enchant C library
<https://pyenchant.github.io/pyenchant/install.html>` to be installed.

*Note for M1 users, the* ``Enchant`` *library doesn't work out of the box and the
workaround in the official docs is brittle, I suggest installing the library from*
``homebrew`` *and setting the environment variable* ``PYENCHANT_LIBRARY_PATH`` *like
so:*

.. code-block:: console

    $ export PYENCHANT_LIBRARY_PATH=/opt/homebrew/lib/libenchant-2.dylib

Examples
--------

You can find examples of how to use the Python SDK here: `Notebooks
<examples/notebooks>`_