From 0de863275cbd7e3c9de1cff4bc10864321bd2033 Mon Sep 17 00:00:00 2001 From: Chris Busillo Date: Sun, 26 Apr 2026 17:59:06 -0400 Subject: [PATCH] Remove stale private helpers --- CHANGELOG.md | 4 ++ printnode_community/accounts.py | 90 -------------------------------- printnode_community/computers.py | 47 +---------------- tests/test_computers.py | 52 ++++++++++++++---- 4 files changed, 48 insertions(+), 145 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba62375..6c854ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,11 @@ The format follows the spirit of Keep a Changelog, and this project intends to u ## Unreleased - Added repository workflow defaults for future GitHub workflow sessions. +- Added public-path coverage for model-instance computer, printer, and print + job lookups. - Updated post-release documentation now that `0.3.0` is published. +- Removed stale private helper code that was unreachable from account and + computer APIs. ## 0.3.0 - 2026-04-26 diff --git a/printnode_community/accounts.py b/printnode_community/accounts.py index 7c75e41..9912a55 100644 --- a/printnode_community/accounts.py +++ b/printnode_community/accounts.py @@ -1,7 +1,3 @@ -from .model import Model, Client, Account -import json - - class Accounts: def __init__(self, auth, factory): @@ -140,89 +136,3 @@ def get_clientkey( url = "/client/key/"+uuid+"?edition="+edition+"&version="+version response = self._auth.get(url, {'Content-Type': 'application/json'}) return response - - def _get_computer_ids(self, computer): - if isinstance(computer, int): - return [computer] - elif isinstance(computer, Computer): - return [computer.id] - elif computer is None or isinstance(computer, str): - computers = [ - self._factory.create_computer(comp) - for comp in self._auth.get('/computers')] - if isinstance(computer, str): - computers = [ - comp - for comp in computers - if comp.name == computer] - return [c.id for c in computers] - else: - raise TypeError('computer: "{}"'.format(type(computer))) - - def _get_computer_id(self, computer): - return self._get_model_id(computer, Computer) - - def _get_printer_id(self, printer): - return self._get_model_id(printer, Printer) - - def _get_printjob_id(self, printjob): - return self._get_model_id(printjob, PrintJob) - - def _get_model_id(self, model, model_type): - if isinstance(model, int): - return model - elif isinstance(model, model_type): - return model.id - else: - raise TypeError(str(type(model))) - - def _get_printer_ids(self, printer): - if isinstance(printer, int): - return [printer] - elif isinstance(printer, Printer): - return [Printer.id] - elif printer is None or isinstance(printer, str): - printers = { - self._factory.create_printer(printer_dict) - for printer_dict in self._auth.get('/printer')} - if isinstance(printer, str): - printers = { - p for p in printers if p.name == printer} - return printers - else: - raise TypeError('printer: "{}"'.format(type(printer))) - - def _is_multi_query(self, obj): - if obj is None: - return True - elif isinstance(obj, int): - return False - elif isinstance(obj, str): - return True - elif isinstance(obj, Model): - return False - else: - raise TypeError('type "{}" unsupported'.format(type(obj))) - - def _get_printer_by_name(self, printer_name, computer_id=None): - assert isinstance(printer_name, str) - assert not computer_id or isinstance(computer_id, int) - printers = self.get_printers(computer=computer_id) - return [ - printer - for printer in printers - if printer.name == printer_name] - - -class LookupFailedError(RuntimeError): - - def __init__(self, obj_name, field, value): - msg = 'Failed to find a matching {} with {} of {}'.format( - obj_name, - field, - value) - super(RuntimeError, self).__init__(msg) - - self.obj_name = obj_name - self.field = field - self.value = value diff --git a/printnode_community/computers.py b/printnode_community/computers.py index ad29d59..f67afbd 100644 --- a/printnode_community/computers.py +++ b/printnode_community/computers.py @@ -1,6 +1,5 @@ -from .model import Computer, Model, Printer, PrintJob, Scale, State +from .model import Computer, Model, Printer, PrintJob from future.types import newbytes -import json import base64 as base_64 import sys @@ -205,12 +204,6 @@ def submit_printjob( return printjob_id - def _native(self, obj): - if hasattr(obj, '__native__'): - return obj.__native__() - else: - return obj - def _get_computer_ids(self, computer): if isinstance(computer, int): return [computer] @@ -246,22 +239,6 @@ def _get_model_id(self, model, model_type): else: raise TypeError(str(type(model))) - def _get_printer_ids(self, printer): - if isinstance(printer, int): - return [printer] - elif isinstance(printer, Printer): - return [Printer.id] - elif printer is None or isinstance(printer, str): - printers = { - self._factory.create_printer(printer_dict) - for printer_dict in self._auth.get('/printer')} - if isinstance(printer, str): - printers = { - p for p in printers if p.name == printer} - return printers - else: - raise TypeError('printer: "{}"'.format(type(printer))) - def _is_multi_query(self, obj): if obj is None: return True @@ -274,15 +251,6 @@ def _is_multi_query(self, obj): else: raise TypeError('type "{}" unsupported'.format(type(obj))) - def _get_printer_by_name(self, printer_name, computer_id=None): - assert isinstance(printer_name, str) - assert not computer_id or isinstance(computer_id, int) - printers = self.get_printers(computer=computer_id) - return [ - printer - for printer in printers - if printer.name == printer_name] - def _create_pagination_params(self, limit, after, dir): params = [] if limit is not None: @@ -302,16 +270,3 @@ def _create_pagination_params(self, limit, after, dir): raise TypeError("dir must equal 'asc' or 'desc'") if len(params) > 0: return '&'.join(params) - -class LookupFailedError(RuntimeError): - - def __init__(self, obj_name, field, value): - msg = 'Failed to find a matching {} with {} of {}'.format( - obj_name, - field, - value) - super(RuntimeError, self).__init__(msg) - - self.obj_name = obj_name - self.field = field - self.value = value diff --git a/tests/test_computers.py b/tests/test_computers.py index 27ba36e..3c4c5ae 100644 --- a/tests/test_computers.py +++ b/tests/test_computers.py @@ -1,7 +1,7 @@ import pytest from printnode_community.computers import Computers -from printnode_community.model import ModelFactory, Printer +from printnode_community.model import Computer, ModelFactory, Printer, PrintJob from tests.test_model import computer_payload, printer_payload, printjob_payload @@ -80,6 +80,20 @@ def test_get_printers_for_computer_builds_expected_url(): assert [printer.name for printer in result] == ['Shipping Printer'] +def test_get_printers_accepts_computer_model_instance(): + factory = ModelFactory() + computer = factory.create_computer(computer_payload(id=100)) + computers, auth = make_computers({ + '/computers/100/printers': [printer_payload()], + }) + + result = computers.get_printers(computer=computer) + + assert isinstance(computer, Computer) + assert auth.get_calls == ['/computers/100/printers'] + assert [printer.id for printer in result] == [200] + + def test_get_printer_by_id_returns_single_printer(): computers, auth = make_computers({ '/printers/200': [printer_payload(id=200)], @@ -91,6 +105,20 @@ def test_get_printer_by_id_returns_single_printer(): assert result.id == 200 +def test_get_printer_by_model_instance_returns_single_printer(): + factory = ModelFactory() + printer = factory.create_printer(printer_payload(id=200)) + computers, auth = make_computers({ + '/printers/200': [printer_payload(id=200)], + }) + + result = computers.get_printers(printer=printer) + + assert isinstance(printer, Printer) + assert auth.get_calls == ['/printers/200'] + assert result.id == 200 + + def test_get_printjobs_lists_all_with_title_filter(): computers, auth = make_computers({ '/printjobs': [ @@ -134,6 +162,20 @@ def test_get_printjob_by_id_returns_single_printjob(): assert result.id == 300 +def test_get_printjob_by_model_instance_returns_single_printjob(): + factory = ModelFactory() + printjob = factory.create_printjob(printjob_payload(id=300)) + computers, auth = make_computers({ + '/printjobs/300': [printjob_payload(id=300)], + }) + + result = computers.get_printjobs(printjob=printjob) + + assert isinstance(printjob, PrintJob) + assert auth.get_calls == ['/printjobs/300'] + assert result.id == 300 + + def test_get_states_builds_global_and_printjob_specific_paths(): computers, auth = make_computers({ '/printjobs/states?limit=5': [[{ @@ -217,11 +259,3 @@ def test_pagination_params_validate_inputs(kwargs, error): with pytest.raises(error): computers.get_computers(**kwargs) - - -def test_get_printer_id_accepts_printer_model_instance(): - computers, _auth = make_computers() - printer = ModelFactory().create_printer(printer_payload(id=200)) - - assert isinstance(printer, Printer) - assert computers._get_printer_id(printer) == 200