Utilities
Utility functions for simulchip with enhanced type safety.
- class simulchip.utils.FactionCode[source]
-
Valid faction codes in Netrunner.
- ANARCH = 'anarch'
- CRIMINAL = 'criminal'
- SHAPER = 'shaper'
- ADAM = 'adam'
- APEX = 'apex'
- SUNNY_LEBEAU = 'sunny-lebeau'
- HAAS_BIOROID = 'haas-bioroid'
- JINTEKI = 'jinteki'
- NBN = 'nbn'
- WEYLAND = 'weyland-consortium'
- NEUTRAL_CORP = 'neutral-corp'
- NEUTRAL_RUNNER = 'neutral-runner'
- __new__(value)
- __format__(format_spec)
Returns format using actual value type unless __str__ has been overridden.
- simulchip.utils.extract_decklist_id(url)[source]
Extract decklist ID from a NetrunnerDB URL.
- Parameters:
url (
str
) – Full NetrunnerDB URL- Return type:
- Returns:
The decklist ID or None if invalid URL
- Raises:
ValueError – If url is empty
Examples
>>> extract_decklist_id("https://netrunnerdb.com/en/decklist/7a9e2d43-bd55-45d0-bd2c-99cad2d17d4c/deck-name") '7a9e2d43-bd55-45d0-bd2c-99cad2d17d4c'
>>> extract_decklist_id("https://netrunnerdb.com/decklist/view/12345") '12345'
- simulchip.utils.get_faction_symbol(faction_code)[source]
Get a symbol for each faction with validation.
- simulchip.utils.format_card_count(count, card_name)[source]
Format a card count and name for display with validation.
- Parameters:
- Return type:
- Returns:
Formatted string like “3x Card Name”
- Raises:
ValueError – If count is negative or card_name is empty
- simulchip.utils.sanitize_filename(filename, max_length=50)[source]
Sanitize a string for use as a filename.
- Parameters:
- Return type:
- Returns:
Sanitized filename safe for all platforms
- Raises:
ValueError – If filename is empty after sanitization
- simulchip.utils.get_faction_short_name(faction_code)[source]
Get a short name for a faction suitable for filenames.
- simulchip.utils.parse_card_code(card_code)[source]
Parse a card code into pack number and card number.
- Parameters:
card_code (
str
) – Card code like “01001”- Return type:
- Returns:
Tuple of (pack_number, card_number)
- Raises:
ValueError – If card code format is invalid
- simulchip.utils.get_faction_side(faction_code)[source]
Determine if a faction is corporation or runner side.
- Parameters:
faction_code (
str
) – Faction code from NetrunnerDB- Return type:
- Returns:
Either “corporation” or “runner”
Examples
>>> get_faction_side("haas-bioroid") 'corporation'
>>> get_faction_side("anarch") 'runner'
Decklist comparison functionality with enhanced type safety and patterns.
- class simulchip.comparison.CardInfo[source]
Bases:
object
Detailed information about a card in a decklist.
- class simulchip.comparison.DecklistStats[source]
Bases:
object
Statistics for a decklist comparison.
- class simulchip.comparison.ComparisonResult[source]
Bases:
object
Comprehensive result of comparing a decklist against a collection.
-
stats:
DecklistStats
- property missing_by_pack: Dict[str, List[CardInfo]]
Get missing cards grouped by pack for backwards compatibility.
- property owned_by_pack: Dict[str, List[CardInfo]]
Get owned cards grouped by pack for backwards compatibility.
- __init__(decklist_id, decklist_name, identity, stats, cards_by_pack=<factory>, cards_by_faction=<factory>, missing_cards=<factory>, owned_cards=<factory>, all_cards=<factory>)
-
stats:
- exception simulchip.comparison.DecklistComparisonError[source]
Bases:
Exception
Custom exception for comparison errors.
- class simulchip.comparison.DecklistComparer[source]
Bases:
object
Compare decklists against local collection with validation.
- __init__(api_client, collection_manager)[source]
Initialize comparer with validation.
- Parameters:
api_client (
NetrunnerDBAPI
) – NetrunnerDB API clientcollection_manager (
CollectionManager
) – Local collection manager
- Raises:
TypeError – If arguments are of incorrect type
- Return type:
None
- compare_decklist(decklist_id)[source]
Compare a decklist against local collection with comprehensive analysis.
- Parameters:
decklist_id (
str
) – NetrunnerDB decklist ID- Return type:
- Returns:
Detailed comparison result
- Raises:
ValueError – If decklist_id is invalid
DecklistComparisonError – If comparison fails
- get_proxy_cards(comparison_result)[source]
Get list of cards that need proxies.
- Parameters:
comparison_result (
ComparisonResult
) – Result from compare_decklist- Return type:
- Returns:
List of cards that need proxies, sorted by pack and title
- get_proxy_cards_for_generation(comparison_result, all_cards=False)[source]
Get list of cards for proxy generation with all_cards option.
- Parameters:
comparison_result (
ComparisonResult
) – Result from compare_decklistall_cards (
bool
) – If True, return all cards; if False, return only missing cards
- Return type:
- Returns:
List of cards for proxy generation
- format_comparison_report(comparison_result)[source]
Format comparison result as a readable report.
- Parameters:
comparison_result (
ComparisonResult
) – Result from compare_decklist- Return type:
- Returns:
Formatted report string
Cache management for card data and images.
- class simulchip.cache.CacheManager[source]
Bases:
object
Manages caching of card data and images.