Skip to main content

Landline Scrubber core library - phone verification and DNC checking

Project description

ai-lls-lib

PyPI version Python 3.12+ Tests License

Core Python library for Landline Scrubber - phone verification and DNC (Do Not Call) checking.

Documentation & Reports

Resource Description
API Documentation pdoc-generated API reference
Test Coverage HTML coverage report
Test Results Unit test results
Security Scans Bandit, Safety, pip-audit results
License Compliance Dependency license report
PyPI Package Published package

Features

  • Phone number normalization (E.164 format)
  • Line type detection (mobile/landline/VoIP)
  • DNC list checking via landlineremover.com API
  • DynamoDB caching with 30-day TTL
  • Bulk CSV processing with streaming support
  • Stripe payment integration
  • CLI for admin operations

Installation

pip install ai-lls-lib

For development:

git clone https://github.com/augmenting-integrations/ai-lls-lib.git
cd ai-lls-lib
uv sync --all-extras

Quick Start

Single Phone Verification

from ai_lls_lib import PhoneVerifier, DynamoDBCache

cache = DynamoDBCache(table_name="phone-cache")
verifier = PhoneVerifier(cache)

result = verifier.verify("+15551234567")
print(f"Line type: {result.line_type}")  # mobile, landline, voip, unknown
print(f"DNC: {result.dnc}")              # True/False
print(f"Cached: {result.cached}")        # True/False

Bulk Processing

from ai_lls_lib import BulkProcessor, PhoneVerifier, DynamoDBCache

cache = DynamoDBCache(table_name="phone-cache")
verifier = PhoneVerifier(cache)
processor = BulkProcessor(verifier)

csv_text = "name,phone\nJohn,+15551234567\nJane,+15551234568"
results = processor.process_csv(csv_text)

# Generate results CSV with added columns
results_csv = processor.generate_results_csv(csv_text, results)

Streaming Large Files

from ai_lls_lib import BulkProcessor, PhoneVerifier, DynamoDBCache

cache = DynamoDBCache(table_name="phone-cache")
verifier = PhoneVerifier(cache)
processor = BulkProcessor(verifier)

csv_lines = open('large_file.csv').readlines()
for batch in processor.process_csv_stream(csv_lines, batch_size=100):
    print(f"Processed batch of {len(batch)} phones")

Custom Verification Providers

from ai_lls_lib import PhoneVerifier, DynamoDBCache
from ai_lls_lib.providers import StubProvider

# Use stub provider for testing (deterministic results)
cache = DynamoDBCache(table_name="phone-cache")
provider = StubProvider()
verifier = PhoneVerifier(cache, provider=provider)

Configuration

Environment Variables

Variable Description Required
LANDLINE_REMOVER_API_KEY API key for landlineremover.com Yes (for production)
AWS_REGION AWS region for DynamoDB No (default: us-east-1)

CLI

# Verify single phone
ai-lls verify phone +15551234567 --stack landline-api

# Bulk verify CSV
ai-lls verify bulk input.csv -o output.csv --stack landline-api

# Cache management
ai-lls cache stats --stack landline-api
ai-lls cache get +15551234567 --stack landline-api

# Admin commands
ai-lls admin user-credits user123 --add 100
ai-lls admin api-keys --user user123

# Test stack management
ai-lls test-stack deploy
ai-lls test-stack status
ai-lls test-stack delete

Development

# Install dev dependencies
uv sync --all-extras

# Run tests
uv run pytest

# Run linting
uv run pre-commit run --all-files

# Type checking
uv run mypy src/

# Build package
uv build

Testing

# Unit tests (mocked AWS)
uv run pytest tests/unit -v

# Integration tests (requires AWS + test stack)
TEST_STACK_NAME=ai-lls-lib-test uv run pytest tests/integration -v

# Coverage report
uv run pytest --cov=src --cov-report=html --cov-fail-under=80

Project Structure

src/ai_lls_lib/
├── __init__.py      # Public exports, version
├── core/            # PhoneVerifier, BulkProcessor, DynamoDBCache
├── auth/            # JWT/API key authentication
├── payment/         # StripeManager, CreditManager
├── admin/           # AdminService
├── providers/       # External API clients
├── cli/             # Command-line interface
└── testing/         # Test fixtures

License

Proprietary - All rights reserved

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

ai_lls_lib-3.10.0.tar.gz (45.7 kB view details)

Uploaded Source

Built Distribution

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

ai_lls_lib-3.10.0-py3-none-any.whl (60.8 kB view details)

Uploaded Python 3

File details

Details for the file ai_lls_lib-3.10.0.tar.gz.

File metadata

  • Download URL: ai_lls_lib-3.10.0.tar.gz
  • Upload date:
  • Size: 45.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ai_lls_lib-3.10.0.tar.gz
Algorithm Hash digest
SHA256 b58156d6affac6f9e1eb8de0d0cf28e6d2e3afc3fe53539ad36671f880259ab5
MD5 9d8677bbf23fcfbe5221c2232bdf0ec9
BLAKE2b-256 6a3e6ce211bf7661d4dfc086a30c1f85f4fb5fcd6a7786795466dbfab57e677e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ai_lls_lib-3.10.0.tar.gz:

Publisher: pipeline.yaml on Augmenting-Integrations/ai-lls-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ai_lls_lib-3.10.0-py3-none-any.whl.

File metadata

  • Download URL: ai_lls_lib-3.10.0-py3-none-any.whl
  • Upload date:
  • Size: 60.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ai_lls_lib-3.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ece72390c1b1a064bcf9ab981e148b4b6233c412b088da5081944e7f98d78d60
MD5 481d3cbeae45454c9e4ae56cea16b525
BLAKE2b-256 1bb3e03bcf9a7104bda847f10e9cd4dcd2d9a62f6cfdb21e390a9deaec1c5b25

See more details on using hashes here.

Provenance

The following attestation bundles were made for ai_lls_lib-3.10.0-py3-none-any.whl:

Publisher: pipeline.yaml on Augmenting-Integrations/ai-lls-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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