semvec/pypi-packages huggingface dataset:
pasarguard-node-bridge 0.4.2
python package to connect your project with PasarGuard node go
Requires Python: >=3.12
Keywords: PasarGuard, PasarGuard API, PasarGuard python, PasarGuard-Node, PasarGuard-panel

# node_bridge_py
Library to connect and use https://github.com/PasarGuard/node

# Usage
```shell
pip install pasarguard-node-bridge
```
Library is fully async for both `gRPC` and `REST API` connection.

# Example
```python
import PasarGuardNodeBridge as Bridge
# or
import PasarGuardNodeBridge as PGNB
```

## Creating Node
```python
node = Bridge.create_node(
    connection=Bridge.NodeType.GRPC, # GRPC or REST
    address=address, # Node ip address or domain
    port=port, 
    client_cert=client_cert_content, # client side ssl certificate as string
    client_key=client_key_content, # client side ssl key as string
    server_ca=server_ca_content, # server side ssl key as string
    extra={}, # a dictionary to hold node data on production, optional, default: None
    )
```

## Proto Structure
If you need to have access proto structure you can use:
```python
from PasarGuardNodeBridge.common import service_pb2 as service
```

## Create User
```python
user = Bridge.create_user(
    email="jeff", 
    proxies=Bridge.create_proxy(
        vmess_id="0d59268a-9847-4218-ae09-65308eb52e08", # UUID converted to str
        vless_id="0d59268a-9847-4218-ae09-65308eb52e08", # UUID converted to str
        vless_flow="",              # Valid vless flow if is set for user (str)
        trojan_password="",         # Trojan password (str)
        shadowsocks_password="",    # Shadowsocks password (str)
        shadowsocks_method="",      # Valid shadowsocks method supported by backend
        ), 
    inbounds=[]                     # List of outbound tag, List[str]
    )
```

## Methods
Before use any method you need to call start method and connect to node unless you will face `NodeAPIError` for every method
```python
await node.start(
    config=config,  # backend config as string 
    backend_type=0, # backend type , XRAY = 0
    users=[],       # list of users you want to add to this node, will be recheck in node with config
    timeout=20,
    )
```

### Sync Users
- Use `sync_users` for small updates.
- Use `sync_users_chunked` for large user lists to stream `UsersChunk` messages over gRPC or REST without overwhelming a single request.

```python
await node.sync_users(users)

# Large batches
await node.sync_users_chunked(users, chunk_size=500)
```

### Get User Stats
```python
stats = await node.get_user_stats(
    email="noreply@donate.pasarguard.org",
    reset=True,
    timeout=10,
    )
```

### Health
Return a `Bridge.Health`
```python
health = await node.get_health()
```

### Logs
Return a `asyncio.Queue[str]` 
```python
logs = await node.get_logs()
```
multi-repo-automation 1.8.0
Library for automation updates on multiple repositories.
Requires Python: >=3.10
Keywords: pre-commit

# Multi repo automation

## Configuration

To be able to apply your changes on multiple repository you should create a file with something like this:

```yaml
- dir: /home/user/src/my-repo
  name: user/my-repo
  types: ['javascript', 'python', 'docker']
  master_branch: master
  stabilization_branches: [1.0, 1.1]
  folders_to_clean: []
```

The main configuration is a YAML file `~/.config/multi-repo-automation.yaml` with the following options:

`repos_filename`: the filename of the files with the repositories definitions create above, default is `repos.yaml`.
`browser`: the browser to use to open the pull requests, default is `xdg-open`.
`editor`: the editor to use to edit files, default is `xdg-open`.

## Migration script base

```python
#!/usr/bin/env python3

import multi_repo_automation as mra

def _do() -> None:
    # Your actions

if __name__ == "__main__":
    mra.main(
        _do,
        config={
        # pull_request_on_stabilization_branches: To apply the action on all stabilization (including master) branches.
        # pull_request_title: The pull request title.
        # pull_request_body: The pull request body.
        # branch: The created branch branch name.
        # pull_request_branch_prefix: The created branch prefix (used when we run it on all the stabilization branches).
        },
    )
```

Use the `--help` option to see the available options.

## Utilities

```python
import multi_repo_automation as mra

# Test if a file exists
if mra.run(["git", "ls-files", "**/*.txt"], stdout=subprocess.PIPE).stdout.strip() != "":
  print("Found")
# Get all YAML files:
mra.all_filenames_identify("yaml")
# Test if a file exists and contains a text
if mra.git_grep(file, r"\<text\>"]):
  print("Found")
# Edit a files manually
mra.edit(["file"])
```

### Edit file programmatically

```python
   with mra.Edit('my-file.txt') as edit:
      edit.content = edit.content.replace('<from>', '<to>')
```

### Edit YAML file programmatically

```python
   with mra.EditYAML('my-file.yaml') as edit:
      edit.setdefault('dict', {})['prop'] = 'value'
```

### Edit TOML file programmatically

```python
   with mra.EditTOML('my-file.toml') as edit:
      edit.setdefault('dict', {})['prop'] = 'value'
```

### Edit Config file programmatically

```python
   with mra.EditConfigL('my-file.ini') as edit:
      edit.setdefault('dict', {})['prop'] = 'value'
```

## Contributing

Install the pre-commit hooks:

```bash
pip install pre-commit
pre-commit install --allow-missing-config
```
dlmhelper 1.0.1
This package includes functions and custom data types to help with performing dynamic linear model fits and analyzing the results.
Requires Python: >=3.8

# dlmhelper

This package includes functions and custom data types to help with performing and analyzing dynamic linear model fits. 

The initial version of this code was developed for the analysis performed in 'Zonal variability of methane trends derived from satellite data' (Hachmeister et al., 2023 ; DOI: [10.5194/acp-24-577-2024](https://doi.org/10.5194/acp-24-577-2024)).

Version v0.1.0 of this package is also used by the supplementary example code provided for the above mentioned paper, available on [Zenodo](http://www.doi.org/10.5281/zenodo.8178927).


## Requirements

- numpy
- matplotlib
- statsmodels
- tabulate

## Version

v1.0.1

## Installation

Install from PyPI using:

    pip install dlmhelper

## Usage

Look at the Nile or Manua Loa example from the _examples_ folder for a basic introduction.

Documentation is available [here](https://jonashach.github.io/dlmhelper/build/html/index.html)

## Changelog

### v1.0.1
- Fixed occurence of negative variances by adding a "burn-in" period, where variances are discarded (i.e., set to NaN).
- Added two new helper functions for DLMResult objects that allow for easy access to the fitted data and timestamps (get_fit, get_time) 

## Known issues
- ~~Sometimes variances (e.g., trend_cov) are negative. This is a numerical artifact from the underlying fitting routine used by the statsmodels package~~
mcp-echo-derek 0.1.0
Add your description here
Requires Python: >=3.13

# mcp-echo-derek ✅

A minimal FastMCP server that exposes an `echo` tool which returns the user's message verbatim.

## Quick start 🔧

1. Activate your virtualenv:

   ```bash
   source .venv/bin/activate
   ```

2. Run the server:

   ```bash
   python mcp_server.py
   # or with reload (if you have uvicorn installed):
   # uvicorn mcp_server:app --host 127.0.0.1 --port 8080 --reload
   ```

   The server runs an ASGI app and provides streamable endpoints under `/stream`.

3. Quick local test (no HTTP required):

   ```bash
   python scripts/test_echo.py
   ```

   Output example:

   ```
   Echo function returned: {'message': 'Hello, MCP echo test!'}
   ```


## Notes 💡

- The `echo` tool is implemented as a `FunctionTool` and returns structured JSON content: `{"message": "..."}`.
- To exercise the tool via a full MCP client, use an MCP-capable client and call the registered tool named `echo`.