Skip to content

feat: Set up comprehensive Python testing infrastructure with Poetry - #34

Open
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure
Open

feat: Set up comprehensive Python testing infrastructure with Poetry#34
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure

Conversation

@llbbl

Copy link
Copy Markdown

Add Comprehensive Python Testing Infrastructure

Summary

This PR sets up a complete testing infrastructure for the JARVIS Voice Assistant project using Poetry as the package manager and pytest as the testing framework. The infrastructure provides everything needed for developers to immediately start writing and running tests.

Changes Made

Package Management

  • Poetry Configuration: Created pyproject.toml with full Poetry setup
  • Dependency Migration: Migrated all dependencies from requirements.txt and setup.py to Poetry
  • Development Dependencies: Added pytest (8.0+), pytest-cov (5.0+), and pytest-mock (3.14+)

Testing Configuration

  • pytest Configuration:

    • Test discovery patterns for test_*.py and *_test.py files
    • Strict markers and configuration enforcement
    • Custom markers: unit, integration, slow
    • Verbose output with detailed failure information
  • Coverage Configuration:

    • 80% coverage threshold (when coverage is enabled)
    • Multiple report formats: terminal, HTML (htmlcov/), XML (coverage.xml)
    • Intelligent exclusions for non-testable code patterns
    • Skip covered lines in terminal output for clarity

Directory Structure

tests/
├── __init__.py
├── conftest.py # Shared fixtures and configuration
├── test_infrastructure.py # Validation tests
├── unit/
│ └── __init__.py
└── integration/
└── __init__.py

Shared Fixtures (conftest.py)

  • temp_dir: Creates temporary directories for test isolation
  • temp_file: Creates temporary files with content
  • mock_config: Provides mock configuration dictionaries
  • mock_env_vars: Sets up mock environment variables
  • mock_api_response: Mock API response structures
  • mock_audio_data: Mock audio data for testing
  • mock_llm_client, mock_tts_client, mock_stt_client: Mock service clients
  • capture_logs: Captures log messages during tests
  • mock_file_system: Creates mock file system structures
  • performance_timer: Measures test execution time

Running Tests

Basic Commands

# Run all tests
poetry run test# Alternative command (both work)
poetry run tests
# Run tests with coverage
poetry run pytest --cov
# Run specific test file
poetry run pytest tests/test_infrastructure.py
# Run tests by marker
poetry run pytest -m unit
poetry run pytest -m integration
poetry run pytest -m "not slow"

Using the Test Script

# Run tests without coverage
./scripts/test.sh
# Run tests with coverage enforcement
./scripts/test.sh coverage
# Pass additional pytest arguments
./scripts/test.sh -v -k test_name

Validation

The infrastructure has been validated with 17 passing tests that verify:

  • All testing dependencies are properly installed
  • Fixtures work correctly and provide expected functionality
  • Directory structure is properly created
  • Configuration files are correctly set up
  • Test markers can be applied and used

Notes

  • PyAudio Dependency: Temporarily removed from dependencies due to missing system libraries (portaudio). This can be re-added once system dependencies are installed.
  • Coverage Source: Currently configured to only measure test coverage. Update [tool.coverage.run] source to include your application code when ready.
  • poetry.lock: This file is not gitignored and should be committed to ensure reproducible builds.

Next Steps

  1. Install system dependencies for PyAudio if audio functionality is needed:

    # Ubuntu/Debian
    sudo apt-get install portaudio19-dev
    # macOS
    brew install portaudio
  2. Update coverage configuration to include source code:

    [tool.coverage.run]
    source = ["your_package_name"]
  3. Start writing tests in the tests/unit/ and tests/integration/ directories

  4. Consider adding pre-commit hooks to run tests automatically

Testing the Setup

To verify everything is working correctly:

# Install dependencies
poetry install
# Run validation tests
poetry run pytest tests/test_infrastructure.py -v
# Check that both test commands work
poetry run test --version
poetry run tests --version

- Initialize Poetry package manager and migrate dependencies from requirements.txt
- Add pytest, pytest-cov, and pytest-mock as development dependencies
- Configure pytest with custom markers (unit, integration, slow)
- Set up coverage reporting with 80% threshold and multiple output formats
- Create proper test directory structure with unit/integration subdirectories
- Add comprehensive shared fixtures in conftest.py for common testing patterns
- Create validation tests to verify infrastructure setup
- Update .gitignore with testing and Claude-specific entries
- Add convenient test runner script with coverage options
- Configure both 'poetry run test' and 'poetry run tests' commands
Note: PyAudio dependency temporarily removed due to missing system dependencies
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@llbbl
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
feat: Set up comprehensive Python testing infrastructure with Poetry by llbbl · Pull Request #34 · PromtEngineer/Verbi · GitHub
Skip to content

feat: Set up comprehensive Python testing infrastructure with Poetry - #34

Open
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure
Open

feat: Set up comprehensive Python testing infrastructure with Poetry#34
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure

Conversation

@llbbl

Copy link
Copy Markdown

Add Comprehensive Python Testing Infrastructure

Summary

This PR sets up a complete testing infrastructure for the JARVIS Voice Assistant project using Poetry as the package manager and pytest as the testing framework. The infrastructure provides everything needed for developers to immediately start writing and running tests.

Changes Made

Package Management

  • Poetry Configuration: Created pyproject.toml with full Poetry setup
  • Dependency Migration: Migrated all dependencies from requirements.txt and setup.py to Poetry
  • Development Dependencies: Added pytest (8.0+), pytest-cov (5.0+), and pytest-mock (3.14+)

Testing Configuration

  • pytest Configuration:

    • Test discovery patterns for test_*.py and *_test.py files
    • Strict markers and configuration enforcement
    • Custom markers: unit, integration, slow
    • Verbose output with detailed failure information
  • Coverage Configuration:

    • 80% coverage threshold (when coverage is enabled)
    • Multiple report formats: terminal, HTML (htmlcov/), XML (coverage.xml)
    • Intelligent exclusions for non-testable code patterns
    • Skip covered lines in terminal output for clarity

Directory Structure

tests/
├── __init__.py
├── conftest.py # Shared fixtures and configuration
├── test_infrastructure.py # Validation tests
├── unit/
│ └── __init__.py
└── integration/
└── __init__.py

Shared Fixtures (conftest.py)

  • temp_dir: Creates temporary directories for test isolation
  • temp_file: Creates temporary files with content
  • mock_config: Provides mock configuration dictionaries
  • mock_env_vars: Sets up mock environment variables
  • mock_api_response: Mock API response structures
  • mock_audio_data: Mock audio data for testing
  • mock_llm_client, mock_tts_client, mock_stt_client: Mock service clients
  • capture_logs: Captures log messages during tests
  • mock_file_system: Creates mock file system structures
  • performance_timer: Measures test execution time

Running Tests

Basic Commands

# Run all tests
poetry run test# Alternative command (both work)
poetry run tests
# Run tests with coverage
poetry run pytest --cov
# Run specific test file
poetry run pytest tests/test_infrastructure.py
# Run tests by marker
poetry run pytest -m unit
poetry run pytest -m integration
poetry run pytest -m "not slow"

Using the Test Script

# Run tests without coverage
./scripts/test.sh
# Run tests with coverage enforcement
./scripts/test.sh coverage
# Pass additional pytest arguments
./scripts/test.sh -v -k test_name

Validation

The infrastructure has been validated with 17 passing tests that verify:

  • All testing dependencies are properly installed
  • Fixtures work correctly and provide expected functionality
  • Directory structure is properly created
  • Configuration files are correctly set up
  • Test markers can be applied and used

Notes

  • PyAudio Dependency: Temporarily removed from dependencies due to missing system libraries (portaudio). This can be re-added once system dependencies are installed.
  • Coverage Source: Currently configured to only measure test coverage. Update [tool.coverage.run] source to include your application code when ready.
  • poetry.lock: This file is not gitignored and should be committed to ensure reproducible builds.

Next Steps

  1. Install system dependencies for PyAudio if audio functionality is needed:

    # Ubuntu/Debian
    sudo apt-get install portaudio19-dev
    # macOS
    brew install portaudio
  2. Update coverage configuration to include source code:

    [tool.coverage.run]
    source = ["your_package_name"]
  3. Start writing tests in the tests/unit/ and tests/integration/ directories

  4. Consider adding pre-commit hooks to run tests automatically

Testing the Setup

To verify everything is working correctly:

# Install dependencies
poetry install
# Run validation tests
poetry run pytest tests/test_infrastructure.py -v
# Check that both test commands work
poetry run test --version
poetry run tests --version

- Initialize Poetry package manager and migrate dependencies from requirements.txt
- Add pytest, pytest-cov, and pytest-mock as development dependencies
- Configure pytest with custom markers (unit, integration, slow)
- Set up coverage reporting with 80% threshold and multiple output formats
- Create proper test directory structure with unit/integration subdirectories
- Add comprehensive shared fixtures in conftest.py for common testing patterns
- Create validation tests to verify infrastructure setup
- Update .gitignore with testing and Claude-specific entries
- Add convenient test runner script with coverage options
- Configure both 'poetry run test' and 'poetry run tests' commands
Note: PyAudio dependency temporarily removed due to missing system dependencies
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@llbbl
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: Set up comprehensive Python testing infrastructure with Poetry by llbbl · Pull Request #34 · PromtEngineer/Verbi · GitHub
Skip to content

feat: Set up comprehensive Python testing infrastructure with Poetry - #34

Open
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure
Open

feat: Set up comprehensive Python testing infrastructure with Poetry#34
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure

Conversation

@llbbl

Copy link
Copy Markdown

Add Comprehensive Python Testing Infrastructure

Summary

This PR sets up a complete testing infrastructure for the JARVIS Voice Assistant project using Poetry as the package manager and pytest as the testing framework. The infrastructure provides everything needed for developers to immediately start writing and running tests.

Changes Made

Package Management

  • Poetry Configuration: Created pyproject.toml with full Poetry setup
  • Dependency Migration: Migrated all dependencies from requirements.txt and setup.py to Poetry
  • Development Dependencies: Added pytest (8.0+), pytest-cov (5.0+), and pytest-mock (3.14+)

Testing Configuration

  • pytest Configuration:

    • Test discovery patterns for test_*.py and *_test.py files
    • Strict markers and configuration enforcement
    • Custom markers: unit, integration, slow
    • Verbose output with detailed failure information
  • Coverage Configuration:

    • 80% coverage threshold (when coverage is enabled)
    • Multiple report formats: terminal, HTML (htmlcov/), XML (coverage.xml)
    • Intelligent exclusions for non-testable code patterns
    • Skip covered lines in terminal output for clarity

Directory Structure

tests/
├── __init__.py
├── conftest.py # Shared fixtures and configuration
├── test_infrastructure.py # Validation tests
├── unit/
│ └── __init__.py
└── integration/
└── __init__.py

Shared Fixtures (conftest.py)

  • temp_dir: Creates temporary directories for test isolation
  • temp_file: Creates temporary files with content
  • mock_config: Provides mock configuration dictionaries
  • mock_env_vars: Sets up mock environment variables
  • mock_api_response: Mock API response structures
  • mock_audio_data: Mock audio data for testing
  • mock_llm_client, mock_tts_client, mock_stt_client: Mock service clients
  • capture_logs: Captures log messages during tests
  • mock_file_system: Creates mock file system structures
  • performance_timer: Measures test execution time

Running Tests

Basic Commands

# Run all tests
poetry run test# Alternative command (both work)
poetry run tests
# Run tests with coverage
poetry run pytest --cov
# Run specific test file
poetry run pytest tests/test_infrastructure.py
# Run tests by marker
poetry run pytest -m unit
poetry run pytest -m integration
poetry run pytest -m "not slow"

Using the Test Script

# Run tests without coverage
./scripts/test.sh
# Run tests with coverage enforcement
./scripts/test.sh coverage
# Pass additional pytest arguments
./scripts/test.sh -v -k test_name

Validation

The infrastructure has been validated with 17 passing tests that verify:

  • All testing dependencies are properly installed
  • Fixtures work correctly and provide expected functionality
  • Directory structure is properly created
  • Configuration files are correctly set up
  • Test markers can be applied and used

Notes

  • PyAudio Dependency: Temporarily removed from dependencies due to missing system libraries (portaudio). This can be re-added once system dependencies are installed.
  • Coverage Source: Currently configured to only measure test coverage. Update [tool.coverage.run] source to include your application code when ready.
  • poetry.lock: This file is not gitignored and should be committed to ensure reproducible builds.

Next Steps

  1. Install system dependencies for PyAudio if audio functionality is needed:

    # Ubuntu/Debian
    sudo apt-get install portaudio19-dev
    # macOS
    brew install portaudio
  2. Update coverage configuration to include source code:

    [tool.coverage.run]
    source = ["your_package_name"]
  3. Start writing tests in the tests/unit/ and tests/integration/ directories

  4. Consider adding pre-commit hooks to run tests automatically

Testing the Setup

To verify everything is working correctly:

# Install dependencies
poetry install
# Run validation tests
poetry run pytest tests/test_infrastructure.py -v
# Check that both test commands work
poetry run test --version
poetry run tests --version

- Initialize Poetry package manager and migrate dependencies from requirements.txt
- Add pytest, pytest-cov, and pytest-mock as development dependencies
- Configure pytest with custom markers (unit, integration, slow)
- Set up coverage reporting with 80% threshold and multiple output formats
- Create proper test directory structure with unit/integration subdirectories
- Add comprehensive shared fixtures in conftest.py for common testing patterns
- Create validation tests to verify infrastructure setup
- Update .gitignore with testing and Claude-specific entries
- Add convenient test runner script with coverage options
- Configure both 'poetry run test' and 'poetry run tests' commands
Note: PyAudio dependency temporarily removed due to missing system dependencies
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@llbbl
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: Set up comprehensive Python testing infrastructure with Poetry by llbbl · Pull Request #34 · PromtEngineer/Verbi · GitHub
Skip to content

feat: Set up comprehensive Python testing infrastructure with Poetry - #34

Open
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure
Open

feat: Set up comprehensive Python testing infrastructure with Poetry#34
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure

Conversation

@llbbl

Copy link
Copy Markdown

Add Comprehensive Python Testing Infrastructure

Summary

This PR sets up a complete testing infrastructure for the JARVIS Voice Assistant project using Poetry as the package manager and pytest as the testing framework. The infrastructure provides everything needed for developers to immediately start writing and running tests.

Changes Made

Package Management

  • Poetry Configuration: Created pyproject.toml with full Poetry setup
  • Dependency Migration: Migrated all dependencies from requirements.txt and setup.py to Poetry
  • Development Dependencies: Added pytest (8.0+), pytest-cov (5.0+), and pytest-mock (3.14+)

Testing Configuration

  • pytest Configuration:

    • Test discovery patterns for test_*.py and *_test.py files
    • Strict markers and configuration enforcement
    • Custom markers: unit, integration, slow
    • Verbose output with detailed failure information
  • Coverage Configuration:

    • 80% coverage threshold (when coverage is enabled)
    • Multiple report formats: terminal, HTML (htmlcov/), XML (coverage.xml)
    • Intelligent exclusions for non-testable code patterns
    • Skip covered lines in terminal output for clarity

Directory Structure

tests/
├── __init__.py
├── conftest.py # Shared fixtures and configuration
├── test_infrastructure.py # Validation tests
├── unit/
│ └── __init__.py
└── integration/
└── __init__.py

Shared Fixtures (conftest.py)

  • temp_dir: Creates temporary directories for test isolation
  • temp_file: Creates temporary files with content
  • mock_config: Provides mock configuration dictionaries
  • mock_env_vars: Sets up mock environment variables
  • mock_api_response: Mock API response structures
  • mock_audio_data: Mock audio data for testing
  • mock_llm_client, mock_tts_client, mock_stt_client: Mock service clients
  • capture_logs: Captures log messages during tests
  • mock_file_system: Creates mock file system structures
  • performance_timer: Measures test execution time

Running Tests

Basic Commands

# Run all tests
poetry run test# Alternative command (both work)
poetry run tests
# Run tests with coverage
poetry run pytest --cov
# Run specific test file
poetry run pytest tests/test_infrastructure.py
# Run tests by marker
poetry run pytest -m unit
poetry run pytest -m integration
poetry run pytest -m "not slow"

Using the Test Script

# Run tests without coverage
./scripts/test.sh
# Run tests with coverage enforcement
./scripts/test.sh coverage
# Pass additional pytest arguments
./scripts/test.sh -v -k test_name

Validation

The infrastructure has been validated with 17 passing tests that verify:

  • All testing dependencies are properly installed
  • Fixtures work correctly and provide expected functionality
  • Directory structure is properly created
  • Configuration files are correctly set up
  • Test markers can be applied and used

Notes

  • PyAudio Dependency: Temporarily removed from dependencies due to missing system libraries (portaudio). This can be re-added once system dependencies are installed.
  • Coverage Source: Currently configured to only measure test coverage. Update [tool.coverage.run] source to include your application code when ready.
  • poetry.lock: This file is not gitignored and should be committed to ensure reproducible builds.

Next Steps

  1. Install system dependencies for PyAudio if audio functionality is needed:

    # Ubuntu/Debian
    sudo apt-get install portaudio19-dev
    # macOS
    brew install portaudio
  2. Update coverage configuration to include source code:

    [tool.coverage.run]
    source = ["your_package_name"]
  3. Start writing tests in the tests/unit/ and tests/integration/ directories

  4. Consider adding pre-commit hooks to run tests automatically

Testing the Setup

To verify everything is working correctly:

# Install dependencies
poetry install
# Run validation tests
poetry run pytest tests/test_infrastructure.py -v
# Check that both test commands work
poetry run test --version
poetry run tests --version

- Initialize Poetry package manager and migrate dependencies from requirements.txt
- Add pytest, pytest-cov, and pytest-mock as development dependencies
- Configure pytest with custom markers (unit, integration, slow)
- Set up coverage reporting with 80% threshold and multiple output formats
- Create proper test directory structure with unit/integration subdirectories
- Add comprehensive shared fixtures in conftest.py for common testing patterns
- Create validation tests to verify infrastructure setup
- Update .gitignore with testing and Claude-specific entries
- Add convenient test runner script with coverage options
- Configure both 'poetry run test' and 'poetry run tests' commands
Note: PyAudio dependency temporarily removed due to missing system dependencies
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@llbbl
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' feat: Set up comprehensive Python testing infrastructure with Poetry by llbbl · Pull Request #34 · PromtEngineer/Verbi · GitHub
Skip to content

feat: Set up comprehensive Python testing infrastructure with Poetry - #34

Open
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure
Open

feat: Set up comprehensive Python testing infrastructure with Poetry#34
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure

Conversation

@llbbl

Copy link
Copy Markdown

Add Comprehensive Python Testing Infrastructure

Summary

This PR sets up a complete testing infrastructure for the JARVIS Voice Assistant project using Poetry as the package manager and pytest as the testing framework. The infrastructure provides everything needed for developers to immediately start writing and running tests.

Changes Made

Package Management

  • Poetry Configuration: Created pyproject.toml with full Poetry setup
  • Dependency Migration: Migrated all dependencies from requirements.txt and setup.py to Poetry
  • Development Dependencies: Added pytest (8.0+), pytest-cov (5.0+), and pytest-mock (3.14+)

Testing Configuration

  • pytest Configuration:

    • Test discovery patterns for test_*.py and *_test.py files
    • Strict markers and configuration enforcement
    • Custom markers: unit, integration, slow
    • Verbose output with detailed failure information
  • Coverage Configuration:

    • 80% coverage threshold (when coverage is enabled)
    • Multiple report formats: terminal, HTML (htmlcov/), XML (coverage.xml)
    • Intelligent exclusions for non-testable code patterns
    • Skip covered lines in terminal output for clarity

Directory Structure

tests/
├── __init__.py
├── conftest.py # Shared fixtures and configuration
├── test_infrastructure.py # Validation tests
├── unit/
│ └── __init__.py
└── integration/
└── __init__.py

Shared Fixtures (conftest.py)

  • temp_dir: Creates temporary directories for test isolation
  • temp_file: Creates temporary files with content
  • mock_config: Provides mock configuration dictionaries
  • mock_env_vars: Sets up mock environment variables
  • mock_api_response: Mock API response structures
  • mock_audio_data: Mock audio data for testing
  • mock_llm_client, mock_tts_client, mock_stt_client: Mock service clients
  • capture_logs: Captures log messages during tests
  • mock_file_system: Creates mock file system structures
  • performance_timer: Measures test execution time

Running Tests

Basic Commands

# Run all tests
poetry run test# Alternative command (both work)
poetry run tests
# Run tests with coverage
poetry run pytest --cov
# Run specific test file
poetry run pytest tests/test_infrastructure.py
# Run tests by marker
poetry run pytest -m unit
poetry run pytest -m integration
poetry run pytest -m "not slow"

Using the Test Script

# Run tests without coverage
./scripts/test.sh
# Run tests with coverage enforcement
./scripts/test.sh coverage
# Pass additional pytest arguments
./scripts/test.sh -v -k test_name

Validation

The infrastructure has been validated with 17 passing tests that verify:

  • All testing dependencies are properly installed
  • Fixtures work correctly and provide expected functionality
  • Directory structure is properly created
  • Configuration files are correctly set up
  • Test markers can be applied and used

Notes

  • PyAudio Dependency: Temporarily removed from dependencies due to missing system libraries (portaudio). This can be re-added once system dependencies are installed.
  • Coverage Source: Currently configured to only measure test coverage. Update [tool.coverage.run] source to include your application code when ready.
  • poetry.lock: This file is not gitignored and should be committed to ensure reproducible builds.

Next Steps

  1. Install system dependencies for PyAudio if audio functionality is needed:

    # Ubuntu/Debian
    sudo apt-get install portaudio19-dev
    # macOS
    brew install portaudio
  2. Update coverage configuration to include source code:

    [tool.coverage.run]
    source = ["your_package_name"]
  3. Start writing tests in the tests/unit/ and tests/integration/ directories

  4. Consider adding pre-commit hooks to run tests automatically

Testing the Setup

To verify everything is working correctly:

# Install dependencies
poetry install
# Run validation tests
poetry run pytest tests/test_infrastructure.py -v
# Check that both test commands work
poetry run test --version
poetry run tests --version

- Initialize Poetry package manager and migrate dependencies from requirements.txt
- Add pytest, pytest-cov, and pytest-mock as development dependencies
- Configure pytest with custom markers (unit, integration, slow)
- Set up coverage reporting with 80% threshold and multiple output formats
- Create proper test directory structure with unit/integration subdirectories
- Add comprehensive shared fixtures in conftest.py for common testing patterns
- Create validation tests to verify infrastructure setup
- Update .gitignore with testing and Claude-specific entries
- Add convenient test runner script with coverage options
- Configure both 'poetry run test' and 'poetry run tests' commands
Note: PyAudio dependency temporarily removed due to missing system dependencies
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@llbbl
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: Set up comprehensive Python testing infrastructure with Poetry by llbbl · Pull Request #34 · PromtEngineer/Verbi · GitHub
Skip to content

feat: Set up comprehensive Python testing infrastructure with Poetry - #34

Open
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure
Open

feat: Set up comprehensive Python testing infrastructure with Poetry#34
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure

Conversation

@llbbl

Copy link
Copy Markdown

Add Comprehensive Python Testing Infrastructure

Summary

This PR sets up a complete testing infrastructure for the JARVIS Voice Assistant project using Poetry as the package manager and pytest as the testing framework. The infrastructure provides everything needed for developers to immediately start writing and running tests.

Changes Made

Package Management

  • Poetry Configuration: Created pyproject.toml with full Poetry setup
  • Dependency Migration: Migrated all dependencies from requirements.txt and setup.py to Poetry
  • Development Dependencies: Added pytest (8.0+), pytest-cov (5.0+), and pytest-mock (3.14+)

Testing Configuration

  • pytest Configuration:

    • Test discovery patterns for test_*.py and *_test.py files
    • Strict markers and configuration enforcement
    • Custom markers: unit, integration, slow
    • Verbose output with detailed failure information
  • Coverage Configuration:

    • 80% coverage threshold (when coverage is enabled)
    • Multiple report formats: terminal, HTML (htmlcov/), XML (coverage.xml)
    • Intelligent exclusions for non-testable code patterns
    • Skip covered lines in terminal output for clarity

Directory Structure

tests/
├── __init__.py
├── conftest.py # Shared fixtures and configuration
├── test_infrastructure.py # Validation tests
├── unit/
│ └── __init__.py
└── integration/
└── __init__.py

Shared Fixtures (conftest.py)

  • temp_dir: Creates temporary directories for test isolation
  • temp_file: Creates temporary files with content
  • mock_config: Provides mock configuration dictionaries
  • mock_env_vars: Sets up mock environment variables
  • mock_api_response: Mock API response structures
  • mock_audio_data: Mock audio data for testing
  • mock_llm_client, mock_tts_client, mock_stt_client: Mock service clients
  • capture_logs: Captures log messages during tests
  • mock_file_system: Creates mock file system structures
  • performance_timer: Measures test execution time

Running Tests

Basic Commands

# Run all tests
poetry run test# Alternative command (both work)
poetry run tests
# Run tests with coverage
poetry run pytest --cov
# Run specific test file
poetry run pytest tests/test_infrastructure.py
# Run tests by marker
poetry run pytest -m unit
poetry run pytest -m integration
poetry run pytest -m "not slow"

Using the Test Script

# Run tests without coverage
./scripts/test.sh
# Run tests with coverage enforcement
./scripts/test.sh coverage
# Pass additional pytest arguments
./scripts/test.sh -v -k test_name

Validation

The infrastructure has been validated with 17 passing tests that verify:

  • All testing dependencies are properly installed
  • Fixtures work correctly and provide expected functionality
  • Directory structure is properly created
  • Configuration files are correctly set up
  • Test markers can be applied and used

Notes

  • PyAudio Dependency: Temporarily removed from dependencies due to missing system libraries (portaudio). This can be re-added once system dependencies are installed.
  • Coverage Source: Currently configured to only measure test coverage. Update [tool.coverage.run] source to include your application code when ready.
  • poetry.lock: This file is not gitignored and should be committed to ensure reproducible builds.

Next Steps

  1. Install system dependencies for PyAudio if audio functionality is needed:

    # Ubuntu/Debian
    sudo apt-get install portaudio19-dev
    # macOS
    brew install portaudio
  2. Update coverage configuration to include source code:

    [tool.coverage.run]
    source = ["your_package_name"]
  3. Start writing tests in the tests/unit/ and tests/integration/ directories

  4. Consider adding pre-commit hooks to run tests automatically

Testing the Setup

To verify everything is working correctly:

# Install dependencies
poetry install
# Run validation tests
poetry run pytest tests/test_infrastructure.py -v
# Check that both test commands work
poetry run test --version
poetry run tests --version

- Initialize Poetry package manager and migrate dependencies from requirements.txt
- Add pytest, pytest-cov, and pytest-mock as development dependencies
- Configure pytest with custom markers (unit, integration, slow)
- Set up coverage reporting with 80% threshold and multiple output formats
- Create proper test directory structure with unit/integration subdirectories
- Add comprehensive shared fixtures in conftest.py for common testing patterns
- Create validation tests to verify infrastructure setup
- Update .gitignore with testing and Claude-specific entries
- Add convenient test runner script with coverage options
- Configure both 'poetry run test' and 'poetry run tests' commands
Note: PyAudio dependency temporarily removed due to missing system dependencies
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@llbbl
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: Set up comprehensive Python testing infrastructure with Poetry by llbbl · Pull Request #34 · PromtEngineer/Verbi · GitHub
Skip to content

feat: Set up comprehensive Python testing infrastructure with Poetry - #34

Open
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure
Open

feat: Set up comprehensive Python testing infrastructure with Poetry#34
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure

Conversation

@llbbl

Copy link
Copy Markdown

Add Comprehensive Python Testing Infrastructure

Summary

This PR sets up a complete testing infrastructure for the JARVIS Voice Assistant project using Poetry as the package manager and pytest as the testing framework. The infrastructure provides everything needed for developers to immediately start writing and running tests.

Changes Made

Package Management

  • Poetry Configuration: Created pyproject.toml with full Poetry setup
  • Dependency Migration: Migrated all dependencies from requirements.txt and setup.py to Poetry
  • Development Dependencies: Added pytest (8.0+), pytest-cov (5.0+), and pytest-mock (3.14+)

Testing Configuration

  • pytest Configuration:

    • Test discovery patterns for test_*.py and *_test.py files
    • Strict markers and configuration enforcement
    • Custom markers: unit, integration, slow
    • Verbose output with detailed failure information
  • Coverage Configuration:

    • 80% coverage threshold (when coverage is enabled)
    • Multiple report formats: terminal, HTML (htmlcov/), XML (coverage.xml)
    • Intelligent exclusions for non-testable code patterns
    • Skip covered lines in terminal output for clarity

Directory Structure

tests/
├── __init__.py
├── conftest.py # Shared fixtures and configuration
├── test_infrastructure.py # Validation tests
├── unit/
│ └── __init__.py
└── integration/
└── __init__.py

Shared Fixtures (conftest.py)

  • temp_dir: Creates temporary directories for test isolation
  • temp_file: Creates temporary files with content
  • mock_config: Provides mock configuration dictionaries
  • mock_env_vars: Sets up mock environment variables
  • mock_api_response: Mock API response structures
  • mock_audio_data: Mock audio data for testing
  • mock_llm_client, mock_tts_client, mock_stt_client: Mock service clients
  • capture_logs: Captures log messages during tests
  • mock_file_system: Creates mock file system structures
  • performance_timer: Measures test execution time

Running Tests

Basic Commands

# Run all tests
poetry run test# Alternative command (both work)
poetry run tests
# Run tests with coverage
poetry run pytest --cov
# Run specific test file
poetry run pytest tests/test_infrastructure.py
# Run tests by marker
poetry run pytest -m unit
poetry run pytest -m integration
poetry run pytest -m "not slow"

Using the Test Script

# Run tests without coverage
./scripts/test.sh
# Run tests with coverage enforcement
./scripts/test.sh coverage
# Pass additional pytest arguments
./scripts/test.sh -v -k test_name

Validation

The infrastructure has been validated with 17 passing tests that verify:

  • All testing dependencies are properly installed
  • Fixtures work correctly and provide expected functionality
  • Directory structure is properly created
  • Configuration files are correctly set up
  • Test markers can be applied and used

Notes

  • PyAudio Dependency: Temporarily removed from dependencies due to missing system libraries (portaudio). This can be re-added once system dependencies are installed.
  • Coverage Source: Currently configured to only measure test coverage. Update [tool.coverage.run] source to include your application code when ready.
  • poetry.lock: This file is not gitignored and should be committed to ensure reproducible builds.

Next Steps

  1. Install system dependencies for PyAudio if audio functionality is needed:

    # Ubuntu/Debian
    sudo apt-get install portaudio19-dev
    # macOS
    brew install portaudio
  2. Update coverage configuration to include source code:

    [tool.coverage.run]
    source = ["your_package_name"]
  3. Start writing tests in the tests/unit/ and tests/integration/ directories

  4. Consider adding pre-commit hooks to run tests automatically

Testing the Setup

To verify everything is working correctly:

# Install dependencies
poetry install
# Run validation tests
poetry run pytest tests/test_infrastructure.py -v
# Check that both test commands work
poetry run test --version
poetry run tests --version

- Initialize Poetry package manager and migrate dependencies from requirements.txt
- Add pytest, pytest-cov, and pytest-mock as development dependencies
- Configure pytest with custom markers (unit, integration, slow)
- Set up coverage reporting with 80% threshold and multiple output formats
- Create proper test directory structure with unit/integration subdirectories
- Add comprehensive shared fixtures in conftest.py for common testing patterns
- Create validation tests to verify infrastructure setup
- Update .gitignore with testing and Claude-specific entries
- Add convenient test runner script with coverage options
- Configure both 'poetry run test' and 'poetry run tests' commands
Note: PyAudio dependency temporarily removed due to missing system dependencies
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@llbbl
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); feat: Set up comprehensive Python testing infrastructure with Poetry by llbbl · Pull Request #34 · PromtEngineer/Verbi · GitHub
Skip to content

feat: Set up comprehensive Python testing infrastructure with Poetry - #34

Open
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure
Open

feat: Set up comprehensive Python testing infrastructure with Poetry#34
llbbl wants to merge 1 commit into
PromtEngineer:mainfrom
UnitSeeker:add-testing-infrastructure

Conversation

@llbbl

Copy link
Copy Markdown

Add Comprehensive Python Testing Infrastructure

Summary

This PR sets up a complete testing infrastructure for the JARVIS Voice Assistant project using Poetry as the package manager and pytest as the testing framework. The infrastructure provides everything needed for developers to immediately start writing and running tests.

Changes Made

Package Management

  • Poetry Configuration: Created pyproject.toml with full Poetry setup
  • Dependency Migration: Migrated all dependencies from requirements.txt and setup.py to Poetry
  • Development Dependencies: Added pytest (8.0+), pytest-cov (5.0+), and pytest-mock (3.14+)

Testing Configuration

  • pytest Configuration:

    • Test discovery patterns for test_*.py and *_test.py files
    • Strict markers and configuration enforcement
    • Custom markers: unit, integration, slow
    • Verbose output with detailed failure information
  • Coverage Configuration:

    • 80% coverage threshold (when coverage is enabled)
    • Multiple report formats: terminal, HTML (htmlcov/), XML (coverage.xml)
    • Intelligent exclusions for non-testable code patterns
    • Skip covered lines in terminal output for clarity

Directory Structure

tests/
├── __init__.py
├── conftest.py # Shared fixtures and configuration
├── test_infrastructure.py # Validation tests
├── unit/
│ └── __init__.py
└── integration/
└── __init__.py

Shared Fixtures (conftest.py)

  • temp_dir: Creates temporary directories for test isolation
  • temp_file: Creates temporary files with content
  • mock_config: Provides mock configuration dictionaries
  • mock_env_vars: Sets up mock environment variables
  • mock_api_response: Mock API response structures
  • mock_audio_data: Mock audio data for testing
  • mock_llm_client, mock_tts_client, mock_stt_client: Mock service clients
  • capture_logs: Captures log messages during tests
  • mock_file_system: Creates mock file system structures
  • performance_timer: Measures test execution time

Running Tests

Basic Commands

# Run all tests
poetry run test# Alternative command (both work)
poetry run tests
# Run tests with coverage
poetry run pytest --cov
# Run specific test file
poetry run pytest tests/test_infrastructure.py
# Run tests by marker
poetry run pytest -m unit
poetry run pytest -m integration
poetry run pytest -m "not slow"

Using the Test Script

# Run tests without coverage
./scripts/test.sh
# Run tests with coverage enforcement
./scripts/test.sh coverage
# Pass additional pytest arguments
./scripts/test.sh -v -k test_name

Validation

The infrastructure has been validated with 17 passing tests that verify:

  • All testing dependencies are properly installed
  • Fixtures work correctly and provide expected functionality
  • Directory structure is properly created
  • Configuration files are correctly set up
  • Test markers can be applied and used

Notes

  • PyAudio Dependency: Temporarily removed from dependencies due to missing system libraries (portaudio). This can be re-added once system dependencies are installed.
  • Coverage Source: Currently configured to only measure test coverage. Update [tool.coverage.run] source to include your application code when ready.
  • poetry.lock: This file is not gitignored and should be committed to ensure reproducible builds.

Next Steps

  1. Install system dependencies for PyAudio if audio functionality is needed:

    # Ubuntu/Debian
    sudo apt-get install portaudio19-dev
    # macOS
    brew install portaudio
  2. Update coverage configuration to include source code:

    [tool.coverage.run]
    source = ["your_package_name"]
  3. Start writing tests in the tests/unit/ and tests/integration/ directories

  4. Consider adding pre-commit hooks to run tests automatically

Testing the Setup

To verify everything is working correctly:

# Install dependencies
poetry install
# Run validation tests
poetry run pytest tests/test_infrastructure.py -v
# Check that both test commands work
poetry run test --version
poetry run tests --version

- Initialize Poetry package manager and migrate dependencies from requirements.txt
- Add pytest, pytest-cov, and pytest-mock as development dependencies
- Configure pytest with custom markers (unit, integration, slow)
- Set up coverage reporting with 80% threshold and multiple output formats
- Create proper test directory structure with unit/integration subdirectories
- Add comprehensive shared fixtures in conftest.py for common testing patterns
- Create validation tests to verify infrastructure setup
- Update .gitignore with testing and Claude-specific entries
- Add convenient test runner script with coverage options
- Configure both 'poetry run test' and 'poetry run tests' commands
Note: PyAudio dependency temporarily removed due to missing system dependencies
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@llbbl