semvec/pypi-packages huggingface dataset:
arcane-bing 0.5.7
Helpers to request bing API
Requires Python: <4.0,>=3.11

# Arcane bing

This package is based on [bingads](https://docs.microsoft.com/en-us/advertising/guides/request-download-report?view=bingads-13).

## Get Started

```sh
pip install arcane-bing
```

## Example Usage

### Reporting

```python
bing_client = Client(
    credentials=Config.BING_ADS_CREDENTIALS,
    secrets_bucket=Config.SECRETS_BUCKET,
    refresh_token_location=Config.BING_ADS_REFRESH_TOKEN,
    storage_client=storage_client
)

reporting_service_manager, reporting_service = bing_client.get_bing_ads_api_client()

report_request = build_campaigns_report(reporting_service, bing_account_id)

result_file_path = bing_client.submit_and_download(report_request, reporting_service_manager)
```

### Campaign Service

:warning: For some API methods, you must provide the client's account id and the manager's customer id

```python
from arcane.bing import Client
from arcane.bing.helpers import parse_webfault_errors, parse_bing_response


bing_client = Client(
    credentials=Config.BING_ADS_CREDENTIALS,
    secrets_bucket=Config.SECRETS_BUCKET,
    refresh_token_location=Config.BING_ADS_REFRESH_TOKEN,
    storage_client=storage_client,
    customer_id=CUSTOMER_ID,
    account_id=ACCOUNT_ID
)

campaign_service = bing_client.get_service_client(service_name='CampaignManagement')

try:
    response = campaign_service.GetCampaignsByAccountId(AccountId=ACCOUNT_ID)
    all_campaigns = parse_bing_response(response)['Campaign']
    # do stuff with all_campaigns
except WebFault as e:
    bing_error = parse_webfault_errors(e)
    # do stuff with bing_error
```
exasol-extension-license-protocol 0.4.0
Software License Generator and Validator for closed-source Extensions.
Requires Python: <3.14,>=3.10
Keywords: exasol, extension_license_protocol

# Exasol Extension License Protocol Python

Software License Generator and Validator for closed-source Exasol Extensions.

It contains software components and command-line tools that enable signing a new license and validating the authenticity of an existing license.

_As this project is part of Exasol Text AI, the [Exasol Text AI license](https://www.exasol.com/terms-and-conditions/) applies to it, too._
s33-modem-mon 0.1.1
Tools for monitoring S33 modems
Requires Python: >=3.14

# s33-modem-mon

Tools for the S33 modem.

1. A simple command-line tool to monitor and fetch stats from the modem using
   its HNAP API.

   ```bash
   $ s33 --password mypassword
   {
     "customer_status_startup_sequence": {
       "downstream_frequency_hertz": 741000000,
       "downstream_comment": "Locked",
       "connectivity_status": "OK",
       "connectivity_comment": "Operational",
       "boot_status": "OK",
       "boot_comment": "Operational",
       "config_file_status": "OK",
       "config_file_comment": "",
       "security_status": "Enabled",
       "security_comment": "BPI+"
     },
     "customer_status_connection_info": {
       "system_uptime_seconds": 602183,
       "system_time_unix": 1771475283,
       "network_access": "Allowed"
     },
     "customer_status_downstream_channel_info": {
       "channels": [
         {
           "channel_id": 31,
           "lock_status": "Locked",
           "modulation": "QAM256",
           "frequency_hz": 741000000,
           "power_dbmv": 11.0,
           "snr_db": 37.0,
           "corrected_count": 0,
           "uncorrectable_count": 0
           ...
   ```

2. A background service to continuously read stats from the modem and insert
them into a TimescaleDB database for long-term monitoring and analysis.

   ```bash
   $ s33mon --modem-password mypassword --db-host localhost --db-user myuser --db-password mypassword
   2026-02-19 05:54:53,110 INFO s33mon.mon: Connecting to myuser@localhost:5432/s33mon ...
   2026-02-19 05:54:53,157 INFO s33mon.mon: Schema is ready.
   2026-02-19 05:54:53,157 INFO s33mon.mon: Starting poll loop — modem: 192.168.0.1, interval: 900s
   2026-02-19 05:54:53,305 INFO httpx: HTTP Request: POST https://192.168.0.1/HNAP1/ "HTTP/1.1 200 OK"
   2026-02-19 05:54:53,361 INFO httpx: HTTP Request: POST https://192.168.0.1/HNAP1/ "HTTP/1.1 200 OK"
   2026-02-19 05:55:00,120 INFO httpx: HTTP Request: POST https://192.168.0.1/HNAP1/ "HTTP/1.1 200 OK"
   2026-02-19 05:55:00,163 INFO s33mon.mon: Pull #3 stored successfully.
   2026-02-19 05:55:00,163 INFO s33mon.mon: Sleeping 900s ...
   ```