From 4091eb2588c5dcc53ce964b4c0775179856e986f Mon Sep 17 00:00:00 2001 From: Investigamer Date: Tue, 30 Jan 2024 12:57:26 -0600 Subject: [PATCH] =?UTF-8?q?bump:=20version=201.13.0=20=E2=86=92=201.13.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1514 ++++++++++++++++++++++++++++++++++++++++++++++ poetry.lock | 399 ++++++------ pyproject.toml | 4 +- requirements.txt | 22 +- 4 files changed, 1714 insertions(+), 225 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b2cfb57..8b3e7f89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,1517 @@ +## v1.13.1 (2024-01-30) + +### Fix + +- **BorderlessVectorTemplate**: Fix 0/0 PT on PT-box-enabled textless renders +- **creator**: Allow creator to use other symbols and rarities +- **files**: Fix potential bug with data file loading +- **_loader**: Fix plugin relative import issue + +### Refactor + +- **gui**: Rework how toggle buttons are added to the main toggle collection. Add minimum window size and default size +- **gui**: Implement new quality of life utils for the GUI, add iter feature to StrEnum +- **plugins**: Robust rework of how and when plugins are loaaded, enforce recursive import, enforce new plugin/Name/py module naming convention +- **CHANGELOG,poetry**: Update changelog and poetry deps + +## v1.13.0 (2024-01-17) + +### Feat + +- **helpers/adjustments**: Allow passing a blend mode when generating a solid color or gradient layer in Vector templates +- **updater**: Reload all template lists in the GUI anytime 1 or more download is performed in the updater popup as soon as the popup is dismissed +- **VectorTemplate**: Implement new middleman "generate_layers" to simplify vector template workflow, assigning a generator function based on color notation. Add new helpful properties and finalize official vector template architecture. Deploy these features to class and saga vector templates and implement new ReferenceLayer positioning methodology +- **Classic-Template**: New setting 'Left Align Collector Info', choose to have collector info aligned left on the bottom of the card +- **gui**: Add execution time tracking for test mode, check for cancellation via checking the last known thread event, improve formatting, only use template class return to verify whether card was successful +- **clear_reference_vertical**: New function to shift rules text above the PT box, much faster execution time. Refactored alignment and framing functions to improve performance and support new ReferenceLayer implementation +- **AppConstants**: Implement new standards for mapping mana symbols to characters and colors using SymbolColorMap and other color schemas. Dramatically improve execution time by only reloading changed values using `tracked_prop` +- **tracked_prop**: Implement new property that allows caching and tracking changes for a class property +- **ReferenceLayer**: Implement new ReferenceLayer object which acts as a wrapper for an ArtLayer who's bounds never change to allow caching of dimensions and other positioning information and improve execution time +- **helpers/descriptors**: Add new Photoshop helper module providing utilities for working with action descriptors and descriptor getters +- **helpers/selection**: Introduce new Photoshop helper module for making and modifying selections +- **schemas**: Implement Schema classes with pydantic for reusable color maps, font maps, etc for template plugins +- **GUI**: Clicking settings button on a template will now highlight the broom icon in other tabs for that template, clearing settings with broom will now disable the broom on other tabs as well +- **settings**: New setting: Output File Name, control the name scheme of saved renders +- **fonts**: Lay the groundwork for per-text-item custom font definitions by the user +- **AppTemplate,AppPlugin**: Create new loader module and classes AppTemplate and AppPlugin for global management and loading of installed plugins and templates +- **api**: Add api modules for google drive and amazon s3 +- **gui**: Add new _state module for managing the global application state for the Proxyshop GUI +- **tools**: New GUI tool buttons: Compress target renders, compress arts +- **state**: Establish _state module for managing objects relevant to the global app state, import initialized objects at top level from src init +- **api**: Implement integration of the new Hexproof API for set data and symbol resources +- **hexproof.io**: Implement usage of a live API to pull Amazon S3/Google Drive API keys +- **M15Template**: Add new extendable template "M15Template" which includes the Nyx and Companion cosmetic features removed from NormalTemplate +- **core**: Integrate new 'frame_suffix' class attribute, governing master frame type e.g. Normal, Fullart, Extended, Classic +- **docs**: Implement automatic docs deployment with mkdocs, serve docs site with GitHub Pages +- **GUI**: Drag and drop files or folders into the Proxyshop window to immediately render those images! +- **templates**: Implement new CosmeticMod feature allowing for quick cosmetic behavioral addons, e.g. NyxMod, CompanionMod, ExtendedMod, FullartMod, BorderlessMod +- **create_basic_watermark**: Implement new extendable template class method: create_basic_watermark, governs the automatic generation of mana watermark in the textbox of Basic Land cards +- **settings,watermarks**: Finalize implementing new Watermark settings: Watermark Mode, Default Watermark, and Enable Basic Watermark. Deprecate old JSON settings files +- **settings**: Implement new ConfigManager to handle state of user settings and changes to template settings, define fallbacks across all settings +- **settings**: Define schema for more intuitive settings definitions using TOML +- **utils/dicts**: Introduce new utils module for handling dictionaries +- **env**: Implement new Env class and globally importable ENV object for managing the environment variable state of the app +- **tests**: Implement TOML data files for all current test cases, add and organize all tests suites to headless CLI, roll all test data files into /src/data/tests +- **properties**: Implement new decorators module containing new property decorators: auto_prop, auto_prop_cached. Both are useful for creating more flexible cached properties in layout and template classes +- **AdventureVectorTemplate**: New template: Adventure (vectorized), cleaner lines, redrawn shapes with support for multi-color and hybrid adventure cards in 800 DPI +- **create_basic_watermark**: Implement new template class step to generate Basic Land watermark in textbox + +### Fix + +- **docstring**: Fix docstrings inside dict being misinterpretted on some Python configurations +- **loader**: Ensure incorrect template type keys fail silently +- **frame_logic**: Fix logical typo from previous commit for `is_multicolor_string` +- **build**: Ensure symbols are no longer shipped with built release (pulled from hexproof.io on first launch) +- **BorderlessVectorTemplate**: Fix a variety of issues with Borderless vector template PT, textless, token, etc settings and adjustments +- **helpers/bounds**: Fix bounds no effects fallback error +- **creator**: Fix creator failing to initiate a render operation due to incorrect variable +- **updater**: Prevent updater from consuming too much memory by calling garbage collection after each 7z extraction, prevent some silent download failures +- **plugins**: Ensure plugins can use relative imports, prefer new PluginName/py/__init__.py structure for python files +- **console**: Improve GUI console formatting in the event of an error occurring during or before the render queue +- **is_promo**: Improve promo star logic consistency +- **expansion_symbol**: Ensure symbol is correctly disabled via setting +- **downloads**: Try to improve memory footprint of template downloading and attempt to prevent crashes +- **build**: Ensure build command version is properly relayed and adopted in environment vars by generating a __VERSION__ module at compile time +- **plugins**: Ensure correct import is used for compiled version, add memory profiler to dev deps +- **build**: Fix errors caused by build path syntax +- **cli**: Fix pathing for compression cli, ensure headless mode +- **MutateLayout,SplitLayout,NormalLayout**: Fix oracle text issue on Mutate, fix watermark issue for SplitLayout and NormalLayout, add missing PlaneswalkerLayout to layout map, implement new `watermark_basic` property mapping basic watermarks to the proper name +- **env**: Ensure environment variables are loaded preferring OS environ -> .env file -> defaults +- **scryfall**: Fix scryfall error with language parameter, prevent potential errors with multiface card data +- **gui/tabs/tools**: Ensure showcase files are saved to the correct directory, and buttons are added to the toggle list +- **layouts**: Prevent infinite recursion error when getting "set" for tokens, prevent watermark error on split cards +- **meld**: Fix issue with fetching meld faces via URI endpoint +- **PhotoshopHandler**: Allow error dialog env check +- **download**: Return correct path to NamedTemporaryFile +- **gui,api,utils**: Fix various GUI bugs, data ful dump bug, hexproof api bug +- **scryfall**: Fix pop call on set data +- **transform**: Temporary fix to allow case "Argoth, Sanctum of Nature" to render with regular green textbox on TransformTemplate +- **main**: Rework render methods to prevent permanent lockout in wrapper +- **rarity**: Recognize "Masterpiece" cards as "Mythic" appearance for special rarity case +- **BorderlessVectorTemplate**: Ensure non-colored vehicle artifacts can still recieve vehicle colors +- **text_logic**: Cover non-italics text case: Davros, Dalek Creator +- **main.py**: Switch test art to jpg to align with recent change +- **VectorTemplate**: Allow legendary crown to be generated on templates without a crown group + +### Refactor + +- **CreatureFormattedTextArea**: Deprecated CFTA class, move PT reference check into FormattedTextArea +- **settings**: Remove deprecated setting "Symbol Stroke Size" +- **tests/utility**: Update utility test script +- **templates/split,templates/planeswalker**: Fix issue with split template list variable, update watermark methodology, remove repeated methods now in BaseTemplate class, update Planeswalker loyalty reference prerequisites +- **generate_layer**: Move layer generator utilities and mask_layers/mask_group to BaseTemplate, fix improper logic when deciding between basic land watermark and regular watermark +- **BaseTemplate**: New properties: name_reference, type_reference, update 'dfc_group' property, remove 'face_type' property. Add thread cancellation check between each text layer execute call. Ensure run_task returns a single boolean and update check syntax. General formatting improvements +- **normal**: Apply new VectorTemplate features to all 'normal' vector templates, move some properties to static properties, general housekeeping +- **prototype**: Improve prototype template workflow following PSD structural changes +- **planeswalker**: Apply new ReferenceLayer functionality and ability layer positioning upgrades to Planeswalkers, use new DFC group naming scheme +- **battle,leveler,mutate,planar**: Change PT nomenclature to defense in Battle template, other minor housekeeping stuff +- **split**: Add layer generator functions to split pending a standardized SplitVectorMod +- **templates/token**: Implement usage of 'ReferenceLayer' for scaled text layers +- **transform,mdfc**: Implement new layer group structure: Transform->Front, Transform->Back, MDFC Front, MDFC Back +- **helpers/layers,helpers/masks**: Add new mask helper funcs `create_mask`, `enter_rgb_channel`, `enter_mask_channel`, `copy_to_mask` +- **helpers/document**: Add new helper func `paste_to_document`, pastes pixels in the current clipboard to the active layer +- **helpers/text**: Remove remaining Photoshop related funcs from format_text to text helpers module +- **console,enums,plugins**: Small housekeeping and formatting updates +- **layers,masks**: Reformat and extend layers nomenclature, add 5 color values to mask map +- **cards,layouts**: Relocate card text data funcs to cards module, reduce global object reliance in cards module, housekeeping in layouts +- **helpers/selection**: Add new helper `select_canvas` +- **templates/basic_land**: Housekeeping and final commit before deprecation +- **templates/adventure**: Add support for theoretical flavor text in adventure side, use ReferenceLayer for adventure box reference +- **enums/mtg**: Update TEXTBOX_REFERENCE, give former adjustment PT reference its own definition +- **helpers/text**: Remove unnecessary activeLayer calls in text funcs, add optional docref params to some text funcs, update `replace_text_legacy` one more time pending final deprecation +- **helpers/document**: Add cache purging to close_document funcs, add optional docref parameter to conversion funcs and replace NO_DIALOG vars +- **templates/battle**: Implement post_text_methods mixin for handling document rotation at the end of rendering Battle templates. Also add `is_layout_battle` check +- **templates/leveler**: Use ReferenceLayer class for Leveler textbox_reference objects to improve performance +- **templates/mutate**: Remove flavor text from mutate ability FormattedTextArea, add pre-processing to allow removal of reminder text in the mutate ability +- **helpers/document,utils/adobe,gui/app**: Allow optional reference document to be passed to all document saving, closing, and resetting commands. Set app-level error dialog support at initialization and rework GUI close_document method +- **helpers/document**: Allow docref to be passed to saving and loading funcs, minor changes to improve performance +- **helpers/text**: Move some funcs from `format_text` module to `helpers/text`, make multiple performance improvements across the board to action descriptor code in text functions. Implement `set_composer_single_line`, `set_composer_every_line`, `set_size_and_leading` +- **helpers/layers**: New helper util: `get_reference_layer` for retrieving a ReferenceLayer object similar to getLayer. Remove relocated selection funcs +- **api/hexproof**: Refactor `get_watermark_svg` for simplicity +- **cards**: Extended Planeswalkers -> 'Borderless', update Transform Planeswalker classes -> 'TF'. Fix card data processing issue on Meld cards. Allow switching to 'include_extras' when Scryfall search fails +- **try_photoshop**: Move `try_photoshop` decorator from template class to exceptions util module +- **test_execution_time**: Refactor execution time testing utility +- **previews**: Rename planeswalker image previews to match new nomenclature +- **test_mode**: Update test mode GUI to new standards +- **.gitignore**: Add versions.yml to gitignore +- **_loader**: Support both manifest.yml and .yaml, improve logic for auto-generating template name in updater, fix legacy plugin JSON support +- **enums/mtg**: Add layout maps for auto-generating template names in updater +- **gui/app**: Fix various rendering bugs, change screenshot output filename +- **gui/popup/updater**: Move mark_updated logic to AppTemplate class +- **gui/tabs/creator**: Improve readability and code structure +- **helpers/position**: Prevent type error with instance check on TypedDict +- **gui**: Update GUI ID's and formatting in KV files +- **gui/_state**: Support an on_load call for any GUI element given the GlobalAccess class +- **plugins**: Update plugin manifest files to new standards +- **img**: Deprecate unused preview images +- **kv**: Fix kv imports, rename main layout container ProxyshopPanels -> AppContainer +- **console,_state**: Add cookies file to PATH, ensure console loads config and environment object dynamically +- **pyproject,poetry**: Remove unnecessary version source from project file, write new lock, remove relocated constants module, push new requirements.txt +- **symbols,templates**: Remove deprecated yml files, remove deprecated __version__ tracker, remove deprecated settings enum +- **format_text**: Reformat docstrings, have SymbolMapper loaded once, unless custom template chooses to reload the symbol map +- **gui**: Move main GUI app to gui/app.py, add builder calls and kivy config to gui/_state.py +- **gui/console**: Ensure console loadsd config and environment objects dynamically rather than via imports +- **gui**: Formally remove deprecated gui modules and sort relevant layout objects into tabs and popups. Tabs are: main, creator, tools. Rename testing app "dev" to "test" +- **helpers/design,helpers/document**: Allow generative fill to fallback on content aware fill. Update content aware fill with latest adobe code dump +- **helpers/bounds,helpers/position**: Add new types for layer bounds and positioning, add new helper funcs: frame_layer_by_height, frame_layer_by_width +- **helpers**: Update APP object, docstrings, imports, and types in various helpers modules +- **layouts**: Update layout logic to utilize new hexproof API data for card count and symbol details, define layout map using new LayoutScryfall enums, use LayoutType enum for card_class +- **templates**: Update properties, formatting, and imports for remaining templates +- **SplitTemplate**: Update split template logic for new watermark, svg symbol, and artwork logic +- **BaseTemplate**: Deprecate symbol font mode from template logic, implement new layout data processing step and pre_render_methods mixin method list +- **tests**: Rework test funcs, move test commands to the commands module +- **src/types**: Deprecate types submodule in favor of declaring types in their relevant modules +- **utils/build**: Use Path objects for copy procedures, add Dist config types, add new docs generation scripts +- **utils/download**: Remove relocated google drive and amazon download funcs, moved to their own api submodules +- **utils/fonts**: Remove Photoshop app object references from font utils, require app to be passed as parameters +- **utils**: Remove deprecated or relocated utils modules +- **utils/exceptions**: Add new exception case decorators, move Scryfall error to new scryfall API submodules +- **utils/strings**: Add utils for URL and version strings, reformat docstrings +- **utils/files**: Add dict mapping data file extensions to their respective types, improve data loading and dumping funcs, add util top get current app version +- **compression**: Refactor compression utilities to be more broad file-based instead of template-based, add automatic unpacking of multiple archive types +- **photoshop->adobe**: Rename photoshop enums module to adobe to avoid conflicts +- **utils**: Reformat utils files, add new regex patterns, update modual loading behavior +- **cli**: Connect CLI to the new commands module +- **settings**: Change symbol mode to 'enable' toggle, as per deprecation of symbol font mode +- **mtg**: Add enums for layout types, categories, and maps for these values +- **API_URL**: New enums for tracking API urls and request headers +- **spec**: Add hooks to spec files and reformat for readability +- **expansion_symbol**: Remove unused yml routes +- **expansion_symbol**: Deprecate expansion_symbol font helpers +- **tests/template_renders**: Remove previously deprecated snow category from template render test cases +- **manifest**: Implement new template manifest standard `manifest.yml` where app templates will now be defined +- **cards**: Add new cards module as a middleman for pulling and processing card data based art file name +- **tests**: Add new testing module for Scryfall request testing +- **utils**: Add properties util for creating utility decorator funcs and classes +- **plugins**: Rename MrTeferi -> Investigamer, establish py module within each plugin as the recognized way to organize python files in plugins (template classes loaded in init) +- **build**: Change dist to yml format, create hooks submodule for hooks executed during build process, add hook for freezing app version at runtime +- **gui**: Add tabs and popup submodules to src/gui/ as a home for tab panels and popup windows for the GUI application +- **gui**: Create new utils submodule within src/gui/ as a home for various kivy GUI utilities +- **PhotoshopHandler**: Create new adobe utils module for the PhotoshopHandler class and other adobe utils +- **expansion_symbol**: Deprecate expansion symbol test pending removal of font mode +- **cli**: Move all CLI command groups to the `src/commands/` module +- **env**: Add missing environment variables to .env.dist +- **fonts**: Deprecated left over fonts that were previously marked for deprecation +- **utils/image**: Convert image to RGB to prevent potential errors +- **docs**: Improve docs formatting and generate new md files +- **symbols**: Remove set and watermark symbols from repository, pending integration with separate `mtg-vectors` repository and hexproof API +- **project**: Add yarl to dependencies, add new symbols and hexproof directories to gitignore +- **app_templates.json**: Final commit before deprecating in favor of 'templates.yml' +- **symbol_routes.yml**: Final commit before deprecating symbol library +- **helper/colors**: New helper func - get_text_item_color +- **constants,data**: Prefer file extension 'yml' for YAML data files, rename adventure vector to normal-vector.psd, template will eventually provide many types supported +- **get_basic_land**: Remove deprecated function for generating fake Scryfall data for basic lands +- **text_file_name**: Initial commit of test cases for upcoming filename unit test +- **data_types**: Adds support for yaml loaded as 'yml' file +- **utils/strings**: New utility func: str_to_bool_safe, returns a default value if error occurs +- **CosmeticMod**: Integrate cosmetic mods where required in classes, planeswalker, saga, token +- **VectorTemplate**: Update hollow crown step for new optional cosmetic system +- **basic_land**: Final commit of changes to basic land classes before deprecation +- **docs,requirements**: Updated requirements to include hashes (apparently this is necessary in many cases), updated cover photo linkage in README and docs +- **docs-deploy**: Allow docs deploy workflow to be initiated manually +- **README**: More slight formatting fixes +- **template_manifest**: Initial commit of new template manifest YAML schema +- **template-types**: Deprecate "Miracle" and "Snow" type, join into "Normal". TODO: Integrate as merely cosmetic modifiers over the next couple releases +- **env**: Move Kivy config to env module +- **utils/dicts**: Add utils for grabbing first or last entry in dict +- **custom_symbols**: Don't track custom_symbols in repo, generated on first startup +- **BorderlessVectorTemplate**: Rollout initial support for new basic land watermark system, ensure basic lands are not de facto textless cards, switch to new font_artist Font definition for token titles +- **templates/basic_land**: Remove basic_land.py import pending full deprecation of basic_land template type +- **constants**: Prefer Path objects over str paths, implement use of data file loaders and dumpers for getting symbol, watermark, and version tracker libraries. Remove relocated data structures, refactor core pathing definitions +- **utils/files.py**: Rework data file handling funcs to catch plausible errors and use direct pathing, implement TOML schema interpretation and validation for Kivy settings panels +- **main,loader**: Rename src.core -> src.loader, prefer Path objects over str paths, introduce new config object into TemplateDetails +- **layouts**: Move watermark SVG resolving to layouts, add watermark_raw, watermark_svg, first_print, is_snow, is_miracle properties, rename other_face -> adventure on AdventureLayout +- **WatermarkMode**: Add enum for upcoming "Watermark Mode" setting, move default watermark config definitions to 'watermarks.yaml' +- **enums/mtg**: Add mana_symbol_map, rarity_gradient_map, main_color_map, rename basic_land_color_map -> basic_watermark_color_map +- **Path**: Prefer use of Path over os.path.join, simplify get_rgb_from_hex +- **helpers/document**: Catch JPEG save error arising from setting FormatOptionsType to OptimizedBaseline, prefer Path objects over str paths +- **utils/decorators**: New decorator `suppress_and_return`, supress all exceptions on decorated function and return fallback value +- **env**: Replace use of distutils' strtobool with new str_to_bool func, distutils to be removed from Python standard library +- **Path**: Prefer the use of 'Path' objects over string paths where possible +- **utils/scryfall**: Deprecate basic land logic, implement data loader/dumper, add utils: get_cards_paged, get_cards_oracle, fix collector number syntax using leading zeroes, refactor set data logic +- **utils/strings**: Implement `str_to_bool` util for checking truth value of string +- **poetry**: Update poetry config, pull photoshop-python-api from my fork, update mypy req +- **symbols**: Renamed watermark symbol versions for use with new "symbols as watermark" feature +- **symbols**: Add missing set symbols: SPG, RVR, REX, PIP, LCI, LCC. Rename JGP to J20 +- **env,build**: Update dist.toml and .env.dist +- **layouts**: Introduced: is_front, is_alt_lang, collector_number_raw, symbol_svg. Renamed: symbol -> symbol_font, filename -> art_file, levels_x_y_text -> middle_text, levels_z_plus_text -> bottom_text. Switched from @cached_property to @auto_prop_cached, @property/property.setter to @auto_prop +- **enums/layers**: Remove deprecated dataclass +- **enums/mtg,enums/settings**: Add special tall Planeswalker cases to mtg enums, update CollectorPromo enums and move from classproperty to enum_class_prop for Default value +- **utils/strings**: New util funcs: get_line, get_lines, strip_lines. Useful for modifying multiline strings +- **build**: Move build CLI to build module, phase in new ENV object +- **compression**: Move compression related file utilities and cli commands to new module +- **tools**: Commit PSD tools to repo +- **LevelerMod**: Change naming conventions of some Leveler layout items +- **layout**: Implement change from 'filename' -> 'art_file' for value of art file path stored in layout +- **gitignore**: Allow psd tools to be checked into repo +- **helpers/effects**: New helper util: apply_fx_bevel, enabling bevel layer fx +- **utils/files**: Add new data file utils: load_data_file, dump_data_file -- add supporting map and type for toml, json, and yaml data files +- **enums/layers**: Add new layer terminology for adventure cards +- **helpers/colors**: Add new helper utils: apply_rgb_from_list, apply_cmyk_from_list -- route previous color apply funcs to these +- **frame_logic**: Add new shortened hybrid check: check_hybrid_mana_cost +- **layers,bounds**: Add new helper util: select_bounds, route select_layer_bounds to select_bounds +- **helpers/document**: New helper util: save_document_psb +- **AdventureLayout**: Add adventure colors and color identity +- **types/adobe**: Add Bevel layer fx type +- **watermark**: use remastered ravnica guild watermarks +- **basic_land_color_map**: Add color map for basic land watermarks +- **main**: Group render queue by template PSD to prevent unnecessary document cycling and improve batch render time +- **img**: Move preview images to src/img/previews, add Classi Modern preview images, compress test images + +### Perf + +- **text_layers,format_text**: Implement ReferenceLayer usage in TextItem classes, implement new PT reference methodology, add doc_selection property for maintaining selection object, deprecate format_text module +- **helpers/position**: Relocate pw loyalty nudging func to position helper, dramatically improve performance with dimension caching and remembering font size, improve other positioning func performance +- **helpers/colors**: Prefer use of list[int] color notation over SolidColor to improve performance +- **helpers/adjustments**: Make small performance improvements to adjustment layer generating funcs, improve type definitions +- **templates/token**: Make small performance gain with ReferenceLayer objects, add post_text_methods mixin +- **templates/split**: Implement new dimensions and positioning standards for Split templates for performance improvement, update artwork, symbol, and watermark loading funcs +- **templates/saga**: Implement new dimensions and positioning standards with Saga templates for performance gains, add is_layout_saga check +- **templates/planeswalker**: Implement new dimensions and positioning standards with PW text for huge performance gains, update 'Extended' planeswalker classes with new 'Borderless' nomenclature. Add PlaneswalkerMod class +- **templates/normal**: Move static color maps to class attributes, implement dynamic bevel thickness for basic watermark on Borderless, implement ReferenceLayer for textbox references, implement the new single-reference PT adjustment on Masterpiece template to serve as a testing ground before final deployment +- **templates/classes**: Implement new ref dimensions and positioning stanadards to improve performance +- **templates/_core**: Rework mixin method chain, implement numerous new improvements in positioning, text layers, file importing, etc, update docstrings with stronger type documentation, add support for kwargs in run_tasks, general debloating and refactoring +- **text_layers**: Dramatically improve performance of the `format_text` step, update `validate` step to handle making the layer visible and active, use ReferenceLayer for reference objects to cache dimensions info, update docstrings, add new piecemeal methods for pre-scaling, post-scaling, and positioning +- **helpers/colors**: Improve performance of color object routing, fix potential failure caused by non-SolidColor object, remove support for dict notation (pointless) +- **helpers/design**: Improve performance of content aware fill and generative fill funcs +- **helpers/bounds**: Add piecemeal funcs for getting height or width to save on execution time where not all dimensions are required, make other performance improvements +- **helpers/layers,helpers/selection**: Improve performance of layer selecting and smart layer funcs, move more selection based funcs to helpers/selection +- **format_text**: Implement use of new symbol mapping for improved performance, make performance improvements across text formatting, positioning, and resizing funcs +- **tools**: Improve showcase generation speed by passing docref to each document action + +## v1.12.0 (2023-10-01) + +### Feat + +- **fonts**: Add checking user font folder as a fallback for startup font checking step +- **tools**: New tools: Render Target Showcase, Compress Rendered Images +- **gui**: Add support for multi-modal preview images and front/back face toggle preview images on click +- **symbols**: Added support for CC2, LTC, LTR, PWOE, WHO, WOC, and WOE svg symbols +- **templates**: New template: Modern Classic, a modern-framed vector-based template with a mix of classic textures +- **CLI**: Initial architecture introduced for a headless (CLI) Proxyshop interface for quick testing, batch generation, and commands +- **templates**: New template type: Battles supporting a Normal and Universes Beyond treatment, as well as a new BattleMod modifier class +- **settings**: New setting: Collector Promo Star, decide whether to enable the promo star in collector info when appropriate +- **BorderlessVectorTemplate**: Add setting: Legendary Crown Texture, allows user to toggle the texture on crowns + +### Fix + +- **SplitTemplate**: Disable artifact and vehicle flag for Split cards +- **enums/settings**: Swap cached_property to classproperty +- **check_app_version**: Control against all request exceptions +- **saga**: Support edge case "Greatest Show in the Multiverse", i.e. saga with static ability +- **expansion_symbol**: When expansion symbol fails to render, revert to disabling expansion symbol and warn the user +- **check_app_version**: Skip this check if Github isn't reached in 3 seconds +- **frame_logic**: Support "Demolition Field" non-colored land case +- **templates/normal**: Repair pinlines color map and add crown shading for EtchedTemplate, fix name alignment step for Borderless tokens, fix edge case PT drop shadow logic, add preliminary code for ClassicModernTemplate +- **helpers/document**: Fix rotate_clockwise orientation to positive 90 degrees +- **fonts**: Prevent a crash caused by encountering unrecognized font type in font checking step +- **fonts**: Relocate psd-tools font test outside main app scope +- **planar**: Fix bug affecting planar cards when Scryfall Extras is disabled + +### Refactor + +- **ClassicModernTemplate**: Add MDFC support +- **VectorTemplate**: Add default support for MDFC twins shape +- **test_mode**: Change output directory of test renders to match their class name +- **app_templates**: Add drive ID for Classic Modern template +- **src/core**: Move card type map to constants, updater funcs to downloads, plan to deprecate the `core` module in near future +- **parse_card_info**: Move art file parsing logic to scryfall utils +- **updater**: Move template update funcs to downloader utils +- **ClassicModernTemplate**: Finish Transform implementation on Classic Modern template +- **mkdir**: Ensure mkdir across project uses 711 perms +- **main**: Add console object as property to main App class +- **tools**: Flesh out image compression tool, add process wrapper for tools calls +- **env**: Add PS_ERROR_DIALOG env for toggling display error dialog on action descriptor execute calls +- **creator**: Import updated creator inputs +- **gui/TemplateModule**: Minimize and center template tabs +- **gui**: Add dynamic tabbed element subclasses, rewrite validated input classes, fix Planeswalker custom rendering +- **merge_layers**: Support returning layer if merge_layers recieves list with one item +- **build**: Update build script to use new kv directory +- **data**: Move kv and spec files to data directory +- **types**: Move all types submodules to new 'types' module, add new types TemplateRaw and TemplateManifest +- **BaseTemplate**: Improve Vehicle check handling +- **constants**: Ensure con.cwd is always the root Proxyshop directory, re-implement the PS_VERSION env variable +- **console.py**: Added extensive new infrastructure for handling "logger" formatting and output in the headless console class +- **tests/text_logic.py**: Readability rewrites and improve logging results +- **enums/settings.py**: Add enum for "Legendary Crown Mode" setting on Modern Classic template +- **BaseTemplate**: Allow 'is_vehicle' to act as a flag for toggling vehicle background behavior +- **BaseTemplate**: Add promo star logic to collector info methods, add is_collector_promo bool property, refactor initial photoshop refresh check using new method 'check_photoshop'` +- **VectorTemplate**: Remove unneeded alternate card type text layers now handled in modifiers, add crown_group check for legendary crown step, add more typechecking +- **enums**: Add new enums tracking recognized card fonts and special icons +- **layers**: Add new layer nomenclature for Battle templates +- **main,core**: Update photoshop refresh step in render_process_wrapper, add preliminary template data for Classic Modern and Battle templates +- **layouts**: Add preliminary BattleLayout class, add is_promo bool property +- **PhotoshopHandler**: Refactor Photoshop application refresh mechanism + +### Perf + +- **helpers/document**: Reduce PNG save size by disabling interlaced, reduce JPEG save size by formatting as optimized baseline +- **templates/saga**: Reduce execution time for Saga layer positioning + +## v1.11.0 (2023-08-14) + +### Feat + +- **paste_scryfall_scan**: When scryfall scan is enabled in settings we will now use bleed edge to correctly position the art instead of a reference box +- **ClassicTemplate**: Add support for Extended Art setting, fix broken Promo Star setting +- **fonts**: Additional step during startup font check that detects outdated fonts +- **Borderless**: New settings: Artifact color mode, enable/disable drop shadow text, dark/light toggle for land color, dark/light toggle for front face DFC cards, color treatment toggle for Hybrid cards, color limit mode ranging from 1 to 5, and piecemeal toggle for various multicolor elements +- **leveler**: Leveler template now supports automatic ability text sizing and positioning +- **BaseTemplate**: Add properties: frame_layer_methods, text_layer_methods, and general_methods. These act as lists where you can inject methods that should be run at various stages of the render sequence +- **gui**: Add step to the launch diagnostic that checks if a new version is released +- **settings**: Added support for colorpicker settings in plugin Templates +- **Class**: Brand new and improved Class template, uses the same PSD as the updated Saga template, also supports Universes Beyond treatment +- **Saga**: Brand new and improved Saga template using vector layers, supports both side Transform and a Universes Beyond treatment as well +- **templates**: Introduced "Mod" templates, reusable template classes that act as modifiers to add piecemeal functionality such as Transform layers, or MDFC layers + +### Fix + +- **BorderlessVectorTemplate**: Fix a bug affecting token cards in custom creator and textless renders +- **BasicLandDarkMode**: Artist info now filled properly +- **adventure**: Update adventure layout data for alternate language, split AdventureTemplate and AdventureMod +- **planeswalker**: Fix alternate language processing logic +- **scryfall**: Prevent infinite retry loop +- **basic_land**: Additional fixes for alternate languages +- **scryfall**: Fix a bug affecting some Planar cards (they count as "extras"), fix a bug that returns the wrong face for meld cards +- **text_layers**: Prevent a bug that can ruin flavor divider positioning, fix a bug that occurs when both flavor and oracle text are missing +- **basic_land**: Fix alternate language bug with Basic Land templates +- **plugins/MrTeferi**: Prevent sketch action from running in test mode, fix Crimson fang issues, shift Transform behavior to using modifier class +- **SilvanExtendedTemplate**: Fix legendary crowns causing a crash for Colorless cards +- **split**: Fix typo that caused split template to break +- **svg**: Fixed SVG expansion symbols: M15, AFR +- **ClassicRemasteredTemplate**: Rewrote duplicate setting description + +### Refactor + +- **normal**: Utilize modifiers across some normal template classes, implement new mask and shape enabling steps, update and fix various templates +- **PrototypeMod**: Implement prototype modifier class +- **planar**: Update scryfall scan step in accordance with new scan importing behavior +- **MutateMod**: Implement a mutate modifier class +- **LevelerMod**: Implement a leveler modifier class +- **saga-cards**: Retool old saga card template class into a modifier which passes the saga card functionality onto the new vector template +- **class-cards**: Retool old class card template class into a modifier which passes the class card functionality onto the new vector template +- **VectorTemplate**: Implement additional shape and mask enabling steps, optional tooling to improve on the Vector template workflow +- **templates**: Continue to improve the template modifier system, moving away from a _mods module and instead placing them in their relevant modules based on template type +- **regex**: Implement new regex pattern for matching nested version number strings +- **helpers/masks**: New helper utility: copy_vector_mask, works like copy_layer_mask but acts only on vector masks +- **enums**: Add new LAYERS nomenclature and remove useless Photoshop enum line +- **utils/objects**: Add classproperty decorator, update PhotoshopHandler to fix descriptor conversion bug, deprecate scale_by_height/width in favor of scale_by_dpi +- **split**: Improved readability of Split template code +- **token**: Improved Token template formatting by aligning typeline and rules text after text formatting +- **double_faced**: Rework existing MDFC and Transform templates to use new template Mod infrastructure +- **layouts**: Moves remaining Planeswalker data logic out of templates and into layouts, fixes several alternate language issues and missing data issues +- **helpers/adjustments**: Updates create_color_layer and create_gradient_layer to accept keyword arguments to modify their behavior, such as rotation and scale +- **helpers/layers**: New helper utility: merge_group, merges a target LayerSet into a single ArtLayer +- **helpers/masks**: New helper utility: apply_mask, applies a given layer's mask +- **helpers/text**: New helper utilities: get_font_size, set_text_size, set_text_leading, set_composer_single_line +- **helpers/position**: New helper utility: position_dividers, Positions a list of dividers between a list of text layers +- **get_rgb_from_hex**: New function to create SolidColor RGB object from a hex value using hexValue API +- **constants**: Remove relocated color maps +- **plugins/SilvanMTG**: Update SilvanMTG template classes using new infrastructure +- **enums**: Added a host of default color maps for various MTG frame elements +- **settings**: StrEnum used to track settings options now supports a "Default" enum natively, updated get_option and get_setting methods, added preliminary settings for BorderlessVector +- **layers**: Introduced new layer name nomenclature, added new LayerObject type +- **console**: Created first draft of headless Console object that responds to the user in terminal/commandline +- **VectorTemplate**: Introduced new template module _vector.py for tracking core vector template architecture +- **env**: Modify environment variable system to use one clean .env file to govern localized behaviors +- **PhotoshopHandler**: Enable error dialogs when executing Action Descriptors in development environment +- **exceptions**: Start building out a comprehensive library of known COMErrors +- **masks**: Add new helper function: delete_mask +- **transform_icon**: Default transform icon will now be considered the triangle formerly called "convertdfc" +- **console**: Use Logger for printing exceptions during development, improve formatting of error.txt log file +- **env**: Remove unused kivy logging ENV, remove KIVY_NO_CONSOLELOG toggle for development mode +- **layers**: Add new terminology for Saga layers +- **logging**: Kivy logging now only prints for error messages +- **target_replace**: Deprecated Targeted Text Replace setting as it is no longer needed + +### Perf + +- **text_layers**: Disable seemingly unnecessary steps during text formatting, needs further bulk testing to verify +- **helpers/position**: Continue to improve performance of layer aligning and positioning +- **planeswalker**: Reworked Planeswalker code for better performance and readability, updated method hierarchy to delineat planeswalker-specific steps from ordinary steps +- **format_text**: Improve execution time of text scaling and positioning functions, deprecate format_flavor_text +- **expansion_symbol**: Improve coverage of SVG symbols by checking for a replacement set code in the symbol library + +## v1.10.1 (2023-07-09) + +### Fix + +- **console**: Fix render operation cancelled unexpectedly without console output on bad scryfall data +- **test**: Fix test rendering not using the correct fullart image, fixed image testing for Split template +- **test**: Fix thread not cancelling in Deep Test Target mode + +## v1.10.0 (2023-07-06) + +### Feat + +- **New-template-type:-Split-Cards**: Split cards now supported, default Split template included +- **helpers**: New helper functions for rotate_document +- **gui**: Add pinned to top button and link buttons to discord and github + +### Fix + +- **ClassicTemplate**: Fix incorrect backgrounds on ClassicTemplate, fix some crashes on Photoshop not connected +- **regex**: Fix italicized ability bug with "Council's Dilemma" +- **prototype**: Fix prototype layer select bug +- **console**: Fix multiple cancellation prompts issue +- **BasicLandLayout**: Ensure Artist provided by Scryfall data can be used +- **layouts**: Allow basic lands to pull Collector Info, move text logic for prototype and mutate into layout object, implement layout checking in Scryfall utils +- **collector_info**: Fix bug on some systems which re-enables hidden paintbrush +- **prototype**: Fix prototype layout linkage now that Scryfall has added layout type "prototype" +- **main**: Prevent stacking error prompts in console when missing document is closed +- **check_playable_card**: Block broken "reversible_card" layout from Scryfall results +- **TokenTemplate**: Add missing preview image for TokenTemplate +- **card_types**: Add missing "Token" card type to template card_types dictionary, rename Basic Land -> Basic +- **format_text**: Add guard clause for using LayerSet object as reference in ensure_visible_reference +- **symbols**: Fix broken BNG common SVG, use better looking WTH symbols + +### Refactor + +- **scryfall**: Completely revamped logic for assigning card layout based on Scryfall data, added new settings for Scryfall data collection +- **enums**: Add non_italics_abilities and update TransformIcons +- **dimensions**: Add dimensions enum +- **dimensions**: Add additional dimensions information to get_dimensions_from_bounds +- **watermark**: Add support for "desparked" and "judgeacademy" +- **download**: Move update -> utils/download, add 7z compression support +- **basic_land**: Enable content aware fill on BasicLandUnstableTemplate +- **token**: Enable fullart toggle on Token template +- **compression**: Add compression functions/tests, add italicized ability test +- **config**: Remove config.ini from repository and from built releases as it is auto-generated for the user +- **BorderlessVector**: Make "Automatic" the default for "Textbox Size" setting +- **templates**: Enable Borderless Vector for Basic Land type +- **enums**: Add basic lands and transform icons to MTG enums +- **BorderlessVectorTemplate**: Add support for MDFC, Textless, and Nickname features to BorderlessVectorTemplate +- **DynamicVectorTemplate**: Added default functionality for MDFC card type in DynamicVectorTemplate class, added guard clause for reset function +- **layer_names**: Add more terminology to the layer names Enum class +- **font**: New helper function: set_font +- **align**: Add two more align utility definitions: align_left, align_right +- **layers**: Add helper function: unpack_smart_layer +- **expansion_symbol**: Add support for special/bonus rarities, move to YAML symbol library +- **expansion_symbols**: Final commit before deprecating json version + +### Perf + +- **alignment**: Vastly improved execution time of layer alignments and positioning, huge improvements to Planeswalker generation +- **text**: Improve execution time of formatting text and positioning flavor divider + +## v1.9.0 (2023-06-13) + +### Feat + +- **templates**: New Template: Borderless Vector, our most advanced template yet +- **settings**: Added Generative Fill setting that replaces content aware fill when supported, and Vertical Fullart which forces Fullart templates to always use vertical framing +- **GUI**: Added new "Tools" tab, for various app utilities +- **templates**: New templates: ClassicRemastered (credit to iDerp), Etched (credit to Warpdandy, Kyle of CC, and myself), Lord of the Rings (credit to Tupinambá). Updated Normal Fullart, Stargazing, and Universes Beyond. Renamed WomensDay -> Borderless, NormalClassic -> Classic, NormalExtended -> Extended, NormalFullart -> Fullart +- **templates**: Separated templates.py into full templates module, delineated by template types. Added new utility template classes: NormalEssentials, NormalVectorTemplate, and DynamicVectorTemplate +- **setting**: Added new setting: Collector Mode, changes how collector info is rendered. Also added get_option for processing valid multi-choice options +- **templates**: New templates: Etched and Classic Remastered + +### Fix + +- **divider**: Improved positioning of flavor divider when layer effects are present +- **constants**: Update Photoshop refreshing mechanism to avoid more error conditions, added new module for tracking MTG related constants like rarities +- **SilvanExtendedTemplate**: Fix crash caused by inserting hollow crown +- **scryfall**: Fix exclusion check to ensure playable memorabilia like 30A isn't excluded +- **helpers**: Fix SolidColor being instantiated as a default parameter, added copy_layer_effects helper function +- **frame_logic**: Added case for gold land cards like Thran Portal +- **expansion_symbol**: Improve both A25 and MOM expansion symbols +- **main**: Refactored the render pipeline to fix some common Photoshop issues and implemented a launch diagnostic system that detects if the required fonts are installed and Photoshop can be reached by the app +- **layouts**: Fix missing set code on basic lands +- **expansion_symbol**: Fix SVG symbol filename mismatch for VOW + +### Refactor + +- **main**: Add Tools tab to build procedure, moved expansion symbol library update to on_start call +- **env**: Added kivy_logging and photoshop_version as private ENV's, pending functionality +- **create_color_layer**: Updated to recieve a SolidColor object +- **colors**: Added new colors helper functions: hex_to_rgb, fill_layer_primary +- **exceptions**: Improved code readability +- **expansion_symbols.json**: Transitioned to dictionary notation for all stroke definitions, in preparation for eventually moving to YAML +- **generative_fill**: Added two new design helper funtions: generative_fill, generative_fill_edges +- **document**: Added new document helper function: pixels_to_points +- **layers**: Add new layers helper functions: edit_smart_layer, select_vector_layer_pixels +- **expansion_symbol**: Improved readability of code and added robust default value generation +- **masks**: Add new masks helper function: apply_mask_to_layer_fx +- **align**: Use select_layer_bounds for alignment selection +- **text**: Add new text helper function: get_line_count +- **format_text**: Refactored text scaling to use DPI scaling methods of PhotoshopHandler, updated the SymbolMapper to use a dictionary instead of disperate attributes of the constants object, allowing creators to assign a custom color map easier +- **helpers**: Separate helpers.py into entire module divided by Photoshop scope +- **configs**: Add config json for ClassicRemasteredTemplate, updated config json for BasicLandClassic, Invention, and NormalClassic templates +- **SilvanMTG**: Updated plugin to utilize the new content aware fill naming conventions +- **MaleMPCTemplate**: Deprecated the MaleMPC template, pending addition to the base app as "Extended Dark", a small modification to the Extended template +- **main**: Remove download step for app template manifest, disabled Kivy debugger log +- **constants**: Added dictionaries for layer maks and pinline colors, removed some deprecated variables +- **layouts**: Updated logic for 'card_count', 'collector_number', and 'collector_data'. Added 'identity', 'is_artifact', and 'is_hybrid' +- **frame_logic**: Updated frame_logic to return 'is_hybrd' value, added contains_frame_colors function for testing frame layer names given +- **previews**: Update preview image naming for updated template naming conventions +- **app_templates**: app_manifest.json -> app_templates.json +- **enums**: Created new directory for delineating enums, created new enums for settings values +- **strings**: Remove deprecated ps_version_check, add method for StrEnum to check if the class "contains" a string +- **types**: Add is_hybrid to FrameDetails type +- **types**: Add LayerContainer type for objects that can contain artLayer or layerSet objects +- **PhotoshopHandler**: Add scale_by_height and scale_by_width to get a dimension scaled based on DPI ratio +- **photoshop**: Move Photoshop version checks to app object +- **format_text**: Improve scale_text_right_overlap, scale_text_left_overlap, and scale_text_to_fit_textbox functions +- **photoshop**: Update Photoshop enums to only make typeID conversion when an Enum is accessed, added DescriptorEnum parent class +- **fonts**: Added font utility functions for determining what necessary fonts are installed at launch +- **photoshop**: Update Photoshop application object to better control over Photoshop communication +- **scryfall**: Moved scryfall exception decorator to new exceptions util, added get_photoshop_error_message to exceptions util for choosing correct Photoshop error +- **strings**: Added string utility for appending bulletpoints to each line in a string + +## v1.8.0 (2023-04-27) + +### Feat + +- **templates**: New template type: Token. Now ships with one included token template (credit to Chilli Axe). Emblems are also rolled into this template type. Also implemented better Expansion Symbol positioning and scaling, reworked the rendering chain, implemented better error handling and thread procedures, and merged most transform and MDFC template classes into single classes that can handle both faces +- **threading**: Implemented sophisticated thread tracking, locking, and release. Threads will now shut down properly when the Cancel button is pressed. The Console class was completely rewritten to faciliate management of the current render thread. "Render Target" can now select more than one card art to render +- **settings**: Added new settings. Scryfall Sorting: Change order of Scryfall results. Watermark Default Opacity: Change the defeault opacity of generated Watermarks. Renamed Dev mode to Test mode. Implemented get_default_symbol utility function + +### Fix + +- **text_layers**: Implemented new properties governing scaling behavior such as scale_height, scale_width, fix_overflow_width, fix_overflow_height. Added a step that ensures text does not overflow the bounding box of the text area when needed +- **fonts**: Updated the NDPMTG font to fix Phyrexian hybrid and implement acorn symbol + +### Refactor + +- **templates**: Move duplicate filename logic to file utils +- **frame_logic**: Completely rewrote the frame logic step for efficiency, introduced efficient mapping and utility function to find the correctly ordered color identity sequence. Creators can now use this sequence to implement 3+ color frame elements with accuracy +- **expansion_symbols.json**: Updated symbol library, removed reference keys as they are now deprecated +- **constants**: Updated constants object to use new env variables, added new utility methods, added new lock objects, added global PhotoshopHandler object +- **plugins**: Updated included plugins to use new LAYERS library and updated console handler +- **tests,-build,-deps**: Added pathvalidate dependency, updated tests, implemented env module for tracking environment variables and flags +- **img**: Renamed some preview images and SVG symbol directories +- **update**: Refactored download functions for better readability +- **enums_layers**: Moved our layer names library to a StrEnum class, con.layers refrences this +- **modules**: Implemented module utilities for retrieving and refreshing plugin modules +- **objects**: Implemented a PhotoshopHandler class to maintain one global Photoshop Application instance and refresh across new threads +- **scryfall**: Updated scryfall set utilities to support token cards +- **utils.strings**: Moved headless console to string utilities, updated console output utility functions +- **utils**: Added import comments, implemented new types and updated existing types + +### Perf + +- **format_text**: Improved execution time on multiple format_text functions, refactored SymbolMapper, implemented new function scale_text_to_fit_textbox +- **helpers**: Improved efficiency of some helper functions. Introduced new helpers: check_textbox_overflow, get_textbox_bounds, get_textbox_dimensions, enable/disable_vector_mask, undo/redo_action, convert_points_to_pixels, check_active_document, get_document +- **regex**: Implemented a regex pattern dataclass to pre-compile all regex patterns used by the app + +## v1.7.0 (2023-04-06) + +### Feat + +- **settings**: Importing scryfall art for reference is now a toggle setting, has been removed from individual templates in favor of a base template function that can be modified by child classes +- **gui**: Settings for each template can now be cleared to defaults with a helpful button, templates will now be disabled unless the PSD file is installed, the updater will enable the template after a download is complete +- **scryfall**: Rewrote Scryfall data collection completely to use efficient rate limiting and error handling as well as improved caching and overall execution time of this step +- **settings**: Seperate core system settings from the base template settings which can be overwritten for each template + +### Fix + +- **classic**: Fixed promo star setting on classic templates +- **creature**: Fix mistake in creature vertically nudge text function +- **dev_mode**: Skip uninstalled templates during dev mode testing +- **planeswalker**: Update Planeswalker logic to enforce uniform spacing for 2 ability Planeswalkers +- **layouts**: Fixed a bug affecting Saga and Class cards that have multiline abilities +- **frame_logic**: Fixed frame logic for ca1rds like Maelstrome Muse and Ajani, Sleeper Agent and added both to our test cases +- **creator**: Custom Creator now works for Planeswalker and Saga cards again +- **updater**: Fix templates downloading to incorrect folder + +### Refactor + +- **planeswalker**: Adjust vertically nudge text function +- **helpers**: Updated getLayer(), getLayerSet(), spread_layers_over_reference(), and art importing functionality +- **format_text**: Added new text function check_for_text_overlap() and refactored the vertical nudge functions for Creature and Planeswalker cards +- **data**: Update project toml, fonts, and expansion symbol data + +## v1.6.0 (2023-03-16) + +### Feat + +- **settings**: New Setting: Template Border, default is black. Other options are white, silver and gold +- **template**: New Template: Universes Beyond, used in crossover sets like WH40K, Transformers, etc +- **expansion_symbol**: Rewrite expansion symbol settings to allow 4 distinct modes, including SVG +- **watermarks**: Add support for optional Watermark generation +- **fonts**: New font utility functions: register_font(), unregister_font(), get_all_fonts(), check_fonts() +- **helpers**: New helper functions: set_fx_visibility(), enable_layer_fx(), disable_layer_fx(), set_fill_opacity(), apply_fx_color_overlay() +- **files**: Restructure directory structure, allow self contained plugins + +### Fix + +- **settings**: Back face to MDFC/Transform now uses the same ini as front face +- **console**: Add missing newline +- **symbols**: Updated some expansion symbols +- **kivy**: Replace unused MPlantin font with PlantinMTPRo +- **scryfall**: Improved MTG Set data caching to fix inconsistencies with collector information +- **sketch**: Fix bug causing some pencil sketch filters to fail +- **constants**: Fix cwd not working properly in executable version + +### Refactor + +- **tests**: Update tests for directory restructure and expansion symbol rewrite +- **layouts**: Improve handling of card_count, pre-cache set data, reorganize properties pertaining to all double faced cards +- **SilvanMTG**: Remove default configurations for cfg.remove_reminder +- **types_photoshop**: Specify NotRequired for some values + +## v1.5.0 (2023-03-02) + +### Feat + +- **expansion-symbol**: New layer effects helpers implemented, Expansion Symbol now rendered using these effects +- **helpers**: Import art directly into the document, add new helper utilities +- **templates**: New template type: Class + +### Fix + +- **ixalan**: Ixalan now renders without an error at create_expansion_symbol() +- **layouts**: Transform front sides now work when name is lowercase +- **layouts**: Added support for meld transform icon, added support for non-Ixalan back face lands +- **symbols**: Add support for ONE, ONC, DMR, and SCD +- **console**: Improve error logging dramatically +- **fonts**: Updated keyrune font to latest +- **layouts**: Patch a bug that causes alternate language to not identify creatures + +### Refactor + +- **helpers**: Deprecated solidcolor(), Added new helpers +- **layouts**: BaseLayout > NormalLayout, made BasicLandLayout extend to NormalLayout +- **cwd**: Use con.cwd to find the current directory across Proxyshop, always use root directory of project +- **DoubleFeature**: Explicit definitions for layer groups +- **creator**: Added scryfall formatting step to custom creator which in the future will help keep data in-line with what is expected for the layout object +- **symbols**: Allow use of old Expansion Symbol rendering, pending potential future deprecation +- **frame_logic**: Improved formatting and refactored +- **format_text**: Code readability improvements + +## v1.4.0 (2023-01-30) + +### Feat + +- **saga**: Implemented full automation for sagas +- **symbols**: Update symbol library and template manifest on launch +- **gui**: Add preview image to showcase each template +- **settings**: New automatic settings panels + +### Fix + +- **CrimsonFangTemplate**: Fixed dual color frame generation +- **settings**: Additional fixes for new panel config system +- **frame_logic**: Fix frame logic for some transform cards +- **settings**: Small patches to settings logic +- **creator**: Fix template logic for creator tab +- **scryfall**: Add special exception for championship cards +- **expansion_symbol**: Default stroke now uses config value +- **meld**: Fix meld card layout data + +### Refactor + +- **planeswalker**: Refactored planeswalker text generation +- **templates**: Add scaling to Planeswalker spacing +- **configs**: Rename configs to match new nomenclature +- **settings**: Rewrite settings to use class name for ini/json naming convention +- **layouts**: Trimmed down layout classes and properties +- **frame_logic**: Add FrameDetails type +- **sketch**: Switch sketch config to new settings system +- **plugin-templates**: Make adjustments to included plugin templates +- **templates**: Remove useless print statements +- **symbols**: Add missing symbols to library +- **config**: Reformat config for Kivy settings panel +- **text_layers.py**: Refactored classic quote alignment +- **gui**: Seperate GUI elements into modules + +## v1.3.0 (2023-01-06) + +### Fix + +- **updater**: Fixed Google Drive downloads, moved S3 downloading to Cloudfront + +### Refactor + +- **__env__**: Moved environment variables to py file +- **gui.py**: Removed unnecessary newline +- **templates.py**: Added app reference to BaseTemplate as property +- **main.py**: Added proper version tracking, refactored console output +- **constants**: Update HTTP header used for requests + +## v1.2.0 (2022-12-23) + +## v1.1.9 (2022-11-07) + +## v1.1.8 (2022-08-16) + +## v1.1.7 (2022-08-12) + +## v1.1.6 (2022-07-16) + +## v1.1.5 (2022-06-15) + +## v1.1.4 (2022-06-14) + +## v1.1.3 (2022-06-08) + +## v1.1.2 (2022-05-10) + +## v1.13.1 (2024-01-30) + +### Fix + +- **BorderlessVectorTemplate**: Fix 0/0 PT on PT-box-enabled textless renders +- **creator**: Allow creator to use other symbols and rarities +- **files**: Fix potential bug with data file loading +- **_loader**: Fix plugin relative import issue + +### Refactor + +- **gui**: Rework how toggle buttons are added to the main toggle collection. Add minimum window size and default size +- **gui**: Implement new quality of life utils for the GUI, add iter feature to StrEnum +- **plugins**: Robust rework of how and when plugins are loaaded, enforce recursive import, enforce new plugin/Name/py module naming convention +- **CHANGELOG,poetry**: Update changelog and poetry deps + +## v1.13.0 (2024-01-17) + +### Feat + +- **helpers/adjustments**: Allow passing a blend mode when generating a solid color or gradient layer in Vector templates +- **updater**: Reload all template lists in the GUI anytime 1 or more download is performed in the updater popup as soon as the popup is dismissed +- **VectorTemplate**: Implement new middleman "generate_layers" to simplify vector template workflow, assigning a generator function based on color notation. Add new helpful properties and finalize official vector template architecture. Deploy these features to class and saga vector templates and implement new ReferenceLayer positioning methodology +- **Classic-Template**: New setting 'Left Align Collector Info', choose to have collector info aligned left on the bottom of the card +- **gui**: Add execution time tracking for test mode, check for cancellation via checking the last known thread event, improve formatting, only use template class return to verify whether card was successful +- **clear_reference_vertical**: New function to shift rules text above the PT box, much faster execution time. Refactored alignment and framing functions to improve performance and support new ReferenceLayer implementation +- **AppConstants**: Implement new standards for mapping mana symbols to characters and colors using SymbolColorMap and other color schemas. Dramatically improve execution time by only reloading changed values using `tracked_prop` +- **tracked_prop**: Implement new property that allows caching and tracking changes for a class property +- **ReferenceLayer**: Implement new ReferenceLayer object which acts as a wrapper for an ArtLayer who's bounds never change to allow caching of dimensions and other positioning information and improve execution time +- **helpers/descriptors**: Add new Photoshop helper module providing utilities for working with action descriptors and descriptor getters +- **helpers/selection**: Introduce new Photoshop helper module for making and modifying selections +- **schemas**: Implement Schema classes with pydantic for reusable color maps, font maps, etc for template plugins +- **GUI**: Clicking settings button on a template will now highlight the broom icon in other tabs for that template, clearing settings with broom will now disable the broom on other tabs as well +- **settings**: New setting: Output File Name, control the name scheme of saved renders +- **fonts**: Lay the groundwork for per-text-item custom font definitions by the user +- **AppTemplate,AppPlugin**: Create new loader module and classes AppTemplate and AppPlugin for global management and loading of installed plugins and templates +- **api**: Add api modules for google drive and amazon s3 +- **gui**: Add new _state module for managing the global application state for the Proxyshop GUI +- **tools**: New GUI tool buttons: Compress target renders, compress arts +- **state**: Establish _state module for managing objects relevant to the global app state, import initialized objects at top level from src init +- **api**: Implement integration of the new Hexproof API for set data and symbol resources +- **hexproof.io**: Implement usage of a live API to pull Amazon S3/Google Drive API keys +- **M15Template**: Add new extendable template "M15Template" which includes the Nyx and Companion cosmetic features removed from NormalTemplate +- **core**: Integrate new 'frame_suffix' class attribute, governing master frame type e.g. Normal, Fullart, Extended, Classic +- **docs**: Implement automatic docs deployment with mkdocs, serve docs site with GitHub Pages +- **GUI**: Drag and drop files or folders into the Proxyshop window to immediately render those images! +- **templates**: Implement new CosmeticMod feature allowing for quick cosmetic behavioral addons, e.g. NyxMod, CompanionMod, ExtendedMod, FullartMod, BorderlessMod +- **create_basic_watermark**: Implement new extendable template class method: create_basic_watermark, governs the automatic generation of mana watermark in the textbox of Basic Land cards +- **settings,watermarks**: Finalize implementing new Watermark settings: Watermark Mode, Default Watermark, and Enable Basic Watermark. Deprecate old JSON settings files +- **settings**: Implement new ConfigManager to handle state of user settings and changes to template settings, define fallbacks across all settings +- **settings**: Define schema for more intuitive settings definitions using TOML +- **utils/dicts**: Introduce new utils module for handling dictionaries +- **env**: Implement new Env class and globally importable ENV object for managing the environment variable state of the app +- **tests**: Implement TOML data files for all current test cases, add and organize all tests suites to headless CLI, roll all test data files into /src/data/tests +- **properties**: Implement new decorators module containing new property decorators: auto_prop, auto_prop_cached. Both are useful for creating more flexible cached properties in layout and template classes +- **AdventureVectorTemplate**: New template: Adventure (vectorized), cleaner lines, redrawn shapes with support for multi-color and hybrid adventure cards in 800 DPI +- **create_basic_watermark**: Implement new template class step to generate Basic Land watermark in textbox + +### Fix + +- **docstring**: Fix docstrings inside dict being misinterpretted on some Python configurations +- **loader**: Ensure incorrect template type keys fail silently +- **frame_logic**: Fix logical typo from previous commit for `is_multicolor_string` +- **build**: Ensure symbols are no longer shipped with built release (pulled from hexproof.io on first launch) +- **BorderlessVectorTemplate**: Fix a variety of issues with Borderless vector template PT, textless, token, etc settings and adjustments +- **helpers/bounds**: Fix bounds no effects fallback error +- **creator**: Fix creator failing to initiate a render operation due to incorrect variable +- **updater**: Prevent updater from consuming too much memory by calling garbage collection after each 7z extraction, prevent some silent download failures +- **plugins**: Ensure plugins can use relative imports, prefer new PluginName/py/__init__.py structure for python files +- **console**: Improve GUI console formatting in the event of an error occurring during or before the render queue +- **is_promo**: Improve promo star logic consistency +- **expansion_symbol**: Ensure symbol is correctly disabled via setting +- **downloads**: Try to improve memory footprint of template downloading and attempt to prevent crashes +- **build**: Ensure build command version is properly relayed and adopted in environment vars by generating a __VERSION__ module at compile time +- **plugins**: Ensure correct import is used for compiled version, add memory profiler to dev deps +- **build**: Fix errors caused by build path syntax +- **cli**: Fix pathing for compression cli, ensure headless mode +- **MutateLayout,SplitLayout,NormalLayout**: Fix oracle text issue on Mutate, fix watermark issue for SplitLayout and NormalLayout, add missing PlaneswalkerLayout to layout map, implement new `watermark_basic` property mapping basic watermarks to the proper name +- **env**: Ensure environment variables are loaded preferring OS environ -> .env file -> defaults +- **scryfall**: Fix scryfall error with language parameter, prevent potential errors with multiface card data +- **gui/tabs/tools**: Ensure showcase files are saved to the correct directory, and buttons are added to the toggle list +- **layouts**: Prevent infinite recursion error when getting "set" for tokens, prevent watermark error on split cards +- **meld**: Fix issue with fetching meld faces via URI endpoint +- **PhotoshopHandler**: Allow error dialog env check +- **download**: Return correct path to NamedTemporaryFile +- **gui,api,utils**: Fix various GUI bugs, data ful dump bug, hexproof api bug +- **scryfall**: Fix pop call on set data +- **transform**: Temporary fix to allow case "Argoth, Sanctum of Nature" to render with regular green textbox on TransformTemplate +- **main**: Rework render methods to prevent permanent lockout in wrapper +- **rarity**: Recognize "Masterpiece" cards as "Mythic" appearance for special rarity case +- **BorderlessVectorTemplate**: Ensure non-colored vehicle artifacts can still recieve vehicle colors +- **text_logic**: Cover non-italics text case: Davros, Dalek Creator +- **main.py**: Switch test art to jpg to align with recent change +- **VectorTemplate**: Allow legendary crown to be generated on templates without a crown group + +### Refactor + +- **CreatureFormattedTextArea**: Deprecated CFTA class, move PT reference check into FormattedTextArea +- **settings**: Remove deprecated setting "Symbol Stroke Size" +- **tests/utility**: Update utility test script +- **templates/split,templates/planeswalker**: Fix issue with split template list variable, update watermark methodology, remove repeated methods now in BaseTemplate class, update Planeswalker loyalty reference prerequisites +- **generate_layer**: Move layer generator utilities and mask_layers/mask_group to BaseTemplate, fix improper logic when deciding between basic land watermark and regular watermark +- **BaseTemplate**: New properties: name_reference, type_reference, update 'dfc_group' property, remove 'face_type' property. Add thread cancellation check between each text layer execute call. Ensure run_task returns a single boolean and update check syntax. General formatting improvements +- **normal**: Apply new VectorTemplate features to all 'normal' vector templates, move some properties to static properties, general housekeeping +- **prototype**: Improve prototype template workflow following PSD structural changes +- **planeswalker**: Apply new ReferenceLayer functionality and ability layer positioning upgrades to Planeswalkers, use new DFC group naming scheme +- **battle,leveler,mutate,planar**: Change PT nomenclature to defense in Battle template, other minor housekeeping stuff +- **split**: Add layer generator functions to split pending a standardized SplitVectorMod +- **templates/token**: Implement usage of 'ReferenceLayer' for scaled text layers +- **transform,mdfc**: Implement new layer group structure: Transform->Front, Transform->Back, MDFC Front, MDFC Back +- **helpers/layers,helpers/masks**: Add new mask helper funcs `create_mask`, `enter_rgb_channel`, `enter_mask_channel`, `copy_to_mask` +- **helpers/document**: Add new helper func `paste_to_document`, pastes pixels in the current clipboard to the active layer +- **helpers/text**: Remove remaining Photoshop related funcs from format_text to text helpers module +- **console,enums,plugins**: Small housekeeping and formatting updates +- **layers,masks**: Reformat and extend layers nomenclature, add 5 color values to mask map +- **cards,layouts**: Relocate card text data funcs to cards module, reduce global object reliance in cards module, housekeeping in layouts +- **helpers/selection**: Add new helper `select_canvas` +- **templates/basic_land**: Housekeeping and final commit before deprecation +- **templates/adventure**: Add support for theoretical flavor text in adventure side, use ReferenceLayer for adventure box reference +- **enums/mtg**: Update TEXTBOX_REFERENCE, give former adjustment PT reference its own definition +- **helpers/text**: Remove unnecessary activeLayer calls in text funcs, add optional docref params to some text funcs, update `replace_text_legacy` one more time pending final deprecation +- **helpers/document**: Add cache purging to close_document funcs, add optional docref parameter to conversion funcs and replace NO_DIALOG vars +- **templates/battle**: Implement post_text_methods mixin for handling document rotation at the end of rendering Battle templates. Also add `is_layout_battle` check +- **templates/leveler**: Use ReferenceLayer class for Leveler textbox_reference objects to improve performance +- **templates/mutate**: Remove flavor text from mutate ability FormattedTextArea, add pre-processing to allow removal of reminder text in the mutate ability +- **helpers/document,utils/adobe,gui/app**: Allow optional reference document to be passed to all document saving, closing, and resetting commands. Set app-level error dialog support at initialization and rework GUI close_document method +- **helpers/document**: Allow docref to be passed to saving and loading funcs, minor changes to improve performance +- **helpers/text**: Move some funcs from `format_text` module to `helpers/text`, make multiple performance improvements across the board to action descriptor code in text functions. Implement `set_composer_single_line`, `set_composer_every_line`, `set_size_and_leading` +- **helpers/layers**: New helper util: `get_reference_layer` for retrieving a ReferenceLayer object similar to getLayer. Remove relocated selection funcs +- **api/hexproof**: Refactor `get_watermark_svg` for simplicity +- **cards**: Extended Planeswalkers -> 'Borderless', update Transform Planeswalker classes -> 'TF'. Fix card data processing issue on Meld cards. Allow switching to 'include_extras' when Scryfall search fails +- **try_photoshop**: Move `try_photoshop` decorator from template class to exceptions util module +- **test_execution_time**: Refactor execution time testing utility +- **previews**: Rename planeswalker image previews to match new nomenclature +- **test_mode**: Update test mode GUI to new standards +- **.gitignore**: Add versions.yml to gitignore +- **_loader**: Support both manifest.yml and .yaml, improve logic for auto-generating template name in updater, fix legacy plugin JSON support +- **enums/mtg**: Add layout maps for auto-generating template names in updater +- **gui/app**: Fix various rendering bugs, change screenshot output filename +- **gui/popup/updater**: Move mark_updated logic to AppTemplate class +- **gui/tabs/creator**: Improve readability and code structure +- **helpers/position**: Prevent type error with instance check on TypedDict +- **gui**: Update GUI ID's and formatting in KV files +- **gui/_state**: Support an on_load call for any GUI element given the GlobalAccess class +- **plugins**: Update plugin manifest files to new standards +- **img**: Deprecate unused preview images +- **kv**: Fix kv imports, rename main layout container ProxyshopPanels -> AppContainer +- **console,_state**: Add cookies file to PATH, ensure console loads config and environment object dynamically +- **pyproject,poetry**: Remove unnecessary version source from project file, write new lock, remove relocated constants module, push new requirements.txt +- **symbols,templates**: Remove deprecated yml files, remove deprecated __version__ tracker, remove deprecated settings enum +- **format_text**: Reformat docstrings, have SymbolMapper loaded once, unless custom template chooses to reload the symbol map +- **gui**: Move main GUI app to gui/app.py, add builder calls and kivy config to gui/_state.py +- **gui/console**: Ensure console loadsd config and environment objects dynamically rather than via imports +- **gui**: Formally remove deprecated gui modules and sort relevant layout objects into tabs and popups. Tabs are: main, creator, tools. Rename testing app "dev" to "test" +- **helpers/design,helpers/document**: Allow generative fill to fallback on content aware fill. Update content aware fill with latest adobe code dump +- **helpers/bounds,helpers/position**: Add new types for layer bounds and positioning, add new helper funcs: frame_layer_by_height, frame_layer_by_width +- **helpers**: Update APP object, docstrings, imports, and types in various helpers modules +- **layouts**: Update layout logic to utilize new hexproof API data for card count and symbol details, define layout map using new LayoutScryfall enums, use LayoutType enum for card_class +- **templates**: Update properties, formatting, and imports for remaining templates +- **SplitTemplate**: Update split template logic for new watermark, svg symbol, and artwork logic +- **BaseTemplate**: Deprecate symbol font mode from template logic, implement new layout data processing step and pre_render_methods mixin method list +- **tests**: Rework test funcs, move test commands to the commands module +- **src/types**: Deprecate types submodule in favor of declaring types in their relevant modules +- **utils/build**: Use Path objects for copy procedures, add Dist config types, add new docs generation scripts +- **utils/download**: Remove relocated google drive and amazon download funcs, moved to their own api submodules +- **utils/fonts**: Remove Photoshop app object references from font utils, require app to be passed as parameters +- **utils**: Remove deprecated or relocated utils modules +- **utils/exceptions**: Add new exception case decorators, move Scryfall error to new scryfall API submodules +- **utils/strings**: Add utils for URL and version strings, reformat docstrings +- **utils/files**: Add dict mapping data file extensions to their respective types, improve data loading and dumping funcs, add util top get current app version +- **compression**: Refactor compression utilities to be more broad file-based instead of template-based, add automatic unpacking of multiple archive types +- **photoshop->adobe**: Rename photoshop enums module to adobe to avoid conflicts +- **utils**: Reformat utils files, add new regex patterns, update modual loading behavior +- **cli**: Connect CLI to the new commands module +- **settings**: Change symbol mode to 'enable' toggle, as per deprecation of symbol font mode +- **mtg**: Add enums for layout types, categories, and maps for these values +- **API_URL**: New enums for tracking API urls and request headers +- **spec**: Add hooks to spec files and reformat for readability +- **expansion_symbol**: Remove unused yml routes +- **expansion_symbol**: Deprecate expansion_symbol font helpers +- **tests/template_renders**: Remove previously deprecated snow category from template render test cases +- **manifest**: Implement new template manifest standard `manifest.yml` where app templates will now be defined +- **cards**: Add new cards module as a middleman for pulling and processing card data based art file name +- **tests**: Add new testing module for Scryfall request testing +- **utils**: Add properties util for creating utility decorator funcs and classes +- **plugins**: Rename MrTeferi -> Investigamer, establish py module within each plugin as the recognized way to organize python files in plugins (template classes loaded in init) +- **build**: Change dist to yml format, create hooks submodule for hooks executed during build process, add hook for freezing app version at runtime +- **gui**: Add tabs and popup submodules to src/gui/ as a home for tab panels and popup windows for the GUI application +- **gui**: Create new utils submodule within src/gui/ as a home for various kivy GUI utilities +- **PhotoshopHandler**: Create new adobe utils module for the PhotoshopHandler class and other adobe utils +- **expansion_symbol**: Deprecate expansion symbol test pending removal of font mode +- **cli**: Move all CLI command groups to the `src/commands/` module +- **env**: Add missing environment variables to .env.dist +- **fonts**: Deprecated left over fonts that were previously marked for deprecation +- **utils/image**: Convert image to RGB to prevent potential errors +- **docs**: Improve docs formatting and generate new md files +- **symbols**: Remove set and watermark symbols from repository, pending integration with separate `mtg-vectors` repository and hexproof API +- **project**: Add yarl to dependencies, add new symbols and hexproof directories to gitignore +- **app_templates.json**: Final commit before deprecating in favor of 'templates.yml' +- **symbol_routes.yml**: Final commit before deprecating symbol library +- **helper/colors**: New helper func - get_text_item_color +- **constants,data**: Prefer file extension 'yml' for YAML data files, rename adventure vector to normal-vector.psd, template will eventually provide many types supported +- **get_basic_land**: Remove deprecated function for generating fake Scryfall data for basic lands +- **text_file_name**: Initial commit of test cases for upcoming filename unit test +- **data_types**: Adds support for yaml loaded as 'yml' file +- **utils/strings**: New utility func: str_to_bool_safe, returns a default value if error occurs +- **CosmeticMod**: Integrate cosmetic mods where required in classes, planeswalker, saga, token +- **VectorTemplate**: Update hollow crown step for new optional cosmetic system +- **basic_land**: Final commit of changes to basic land classes before deprecation +- **docs,requirements**: Updated requirements to include hashes (apparently this is necessary in many cases), updated cover photo linkage in README and docs +- **docs-deploy**: Allow docs deploy workflow to be initiated manually +- **README**: More slight formatting fixes +- **template_manifest**: Initial commit of new template manifest YAML schema +- **template-types**: Deprecate "Miracle" and "Snow" type, join into "Normal". TODO: Integrate as merely cosmetic modifiers over the next couple releases +- **env**: Move Kivy config to env module +- **utils/dicts**: Add utils for grabbing first or last entry in dict +- **custom_symbols**: Don't track custom_symbols in repo, generated on first startup +- **BorderlessVectorTemplate**: Rollout initial support for new basic land watermark system, ensure basic lands are not de facto textless cards, switch to new font_artist Font definition for token titles +- **templates/basic_land**: Remove basic_land.py import pending full deprecation of basic_land template type +- **constants**: Prefer Path objects over str paths, implement use of data file loaders and dumpers for getting symbol, watermark, and version tracker libraries. Remove relocated data structures, refactor core pathing definitions +- **utils/files.py**: Rework data file handling funcs to catch plausible errors and use direct pathing, implement TOML schema interpretation and validation for Kivy settings panels +- **main,loader**: Rename src.core -> src.loader, prefer Path objects over str paths, introduce new config object into TemplateDetails +- **layouts**: Move watermark SVG resolving to layouts, add watermark_raw, watermark_svg, first_print, is_snow, is_miracle properties, rename other_face -> adventure on AdventureLayout +- **WatermarkMode**: Add enum for upcoming "Watermark Mode" setting, move default watermark config definitions to 'watermarks.yaml' +- **enums/mtg**: Add mana_symbol_map, rarity_gradient_map, main_color_map, rename basic_land_color_map -> basic_watermark_color_map +- **Path**: Prefer use of Path over os.path.join, simplify get_rgb_from_hex +- **helpers/document**: Catch JPEG save error arising from setting FormatOptionsType to OptimizedBaseline, prefer Path objects over str paths +- **utils/decorators**: New decorator `suppress_and_return`, supress all exceptions on decorated function and return fallback value +- **env**: Replace use of distutils' strtobool with new str_to_bool func, distutils to be removed from Python standard library +- **Path**: Prefer the use of 'Path' objects over string paths where possible +- **utils/scryfall**: Deprecate basic land logic, implement data loader/dumper, add utils: get_cards_paged, get_cards_oracle, fix collector number syntax using leading zeroes, refactor set data logic +- **utils/strings**: Implement `str_to_bool` util for checking truth value of string +- **poetry**: Update poetry config, pull photoshop-python-api from my fork, update mypy req +- **symbols**: Renamed watermark symbol versions for use with new "symbols as watermark" feature +- **symbols**: Add missing set symbols: SPG, RVR, REX, PIP, LCI, LCC. Rename JGP to J20 +- **env,build**: Update dist.toml and .env.dist +- **layouts**: Introduced: is_front, is_alt_lang, collector_number_raw, symbol_svg. Renamed: symbol -> symbol_font, filename -> art_file, levels_x_y_text -> middle_text, levels_z_plus_text -> bottom_text. Switched from @cached_property to @auto_prop_cached, @property/property.setter to @auto_prop +- **enums/layers**: Remove deprecated dataclass +- **enums/mtg,enums/settings**: Add special tall Planeswalker cases to mtg enums, update CollectorPromo enums and move from classproperty to enum_class_prop for Default value +- **utils/strings**: New util funcs: get_line, get_lines, strip_lines. Useful for modifying multiline strings +- **build**: Move build CLI to build module, phase in new ENV object +- **compression**: Move compression related file utilities and cli commands to new module +- **tools**: Commit PSD tools to repo +- **LevelerMod**: Change naming conventions of some Leveler layout items +- **layout**: Implement change from 'filename' -> 'art_file' for value of art file path stored in layout +- **gitignore**: Allow psd tools to be checked into repo +- **helpers/effects**: New helper util: apply_fx_bevel, enabling bevel layer fx +- **utils/files**: Add new data file utils: load_data_file, dump_data_file -- add supporting map and type for toml, json, and yaml data files +- **enums/layers**: Add new layer terminology for adventure cards +- **helpers/colors**: Add new helper utils: apply_rgb_from_list, apply_cmyk_from_list -- route previous color apply funcs to these +- **frame_logic**: Add new shortened hybrid check: check_hybrid_mana_cost +- **layers,bounds**: Add new helper util: select_bounds, route select_layer_bounds to select_bounds +- **helpers/document**: New helper util: save_document_psb +- **AdventureLayout**: Add adventure colors and color identity +- **types/adobe**: Add Bevel layer fx type +- **watermark**: use remastered ravnica guild watermarks +- **basic_land_color_map**: Add color map for basic land watermarks +- **main**: Group render queue by template PSD to prevent unnecessary document cycling and improve batch render time +- **img**: Move preview images to src/img/previews, add Classi Modern preview images, compress test images + +### Perf + +- **text_layers,format_text**: Implement ReferenceLayer usage in TextItem classes, implement new PT reference methodology, add doc_selection property for maintaining selection object, deprecate format_text module +- **helpers/position**: Relocate pw loyalty nudging func to position helper, dramatically improve performance with dimension caching and remembering font size, improve other positioning func performance +- **helpers/colors**: Prefer use of list[int] color notation over SolidColor to improve performance +- **helpers/adjustments**: Make small performance improvements to adjustment layer generating funcs, improve type definitions +- **templates/token**: Make small performance gain with ReferenceLayer objects, add post_text_methods mixin +- **templates/split**: Implement new dimensions and positioning standards for Split templates for performance improvement, update artwork, symbol, and watermark loading funcs +- **templates/saga**: Implement new dimensions and positioning standards with Saga templates for performance gains, add is_layout_saga check +- **templates/planeswalker**: Implement new dimensions and positioning standards with PW text for huge performance gains, update 'Extended' planeswalker classes with new 'Borderless' nomenclature. Add PlaneswalkerMod class +- **templates/normal**: Move static color maps to class attributes, implement dynamic bevel thickness for basic watermark on Borderless, implement ReferenceLayer for textbox references, implement the new single-reference PT adjustment on Masterpiece template to serve as a testing ground before final deployment +- **templates/classes**: Implement new ref dimensions and positioning stanadards to improve performance +- **templates/_core**: Rework mixin method chain, implement numerous new improvements in positioning, text layers, file importing, etc, update docstrings with stronger type documentation, add support for kwargs in run_tasks, general debloating and refactoring +- **text_layers**: Dramatically improve performance of the `format_text` step, update `validate` step to handle making the layer visible and active, use ReferenceLayer for reference objects to cache dimensions info, update docstrings, add new piecemeal methods for pre-scaling, post-scaling, and positioning +- **helpers/colors**: Improve performance of color object routing, fix potential failure caused by non-SolidColor object, remove support for dict notation (pointless) +- **helpers/design**: Improve performance of content aware fill and generative fill funcs +- **helpers/bounds**: Add piecemeal funcs for getting height or width to save on execution time where not all dimensions are required, make other performance improvements +- **helpers/layers,helpers/selection**: Improve performance of layer selecting and smart layer funcs, move more selection based funcs to helpers/selection +- **format_text**: Implement use of new symbol mapping for improved performance, make performance improvements across text formatting, positioning, and resizing funcs +- **tools**: Improve showcase generation speed by passing docref to each document action + +## v1.12.0 (2023-10-01) + +### Feat + +- **fonts**: Add checking user font folder as a fallback for startup font checking step +- **tools**: New tools: Render Target Showcase, Compress Rendered Images +- **gui**: Add support for multi-modal preview images and front/back face toggle preview images on click +- **symbols**: Added support for CC2, LTC, LTR, PWOE, WHO, WOC, and WOE svg symbols +- **templates**: New template: Modern Classic, a modern-framed vector-based template with a mix of classic textures +- **CLI**: Initial architecture introduced for a headless (CLI) Proxyshop interface for quick testing, batch generation, and commands +- **templates**: New template type: Battles supporting a Normal and Universes Beyond treatment, as well as a new BattleMod modifier class +- **settings**: New setting: Collector Promo Star, decide whether to enable the promo star in collector info when appropriate +- **BorderlessVectorTemplate**: Add setting: Legendary Crown Texture, allows user to toggle the texture on crowns + +### Fix + +- **SplitTemplate**: Disable artifact and vehicle flag for Split cards +- **enums/settings**: Swap cached_property to classproperty +- **check_app_version**: Control against all request exceptions +- **saga**: Support edge case "Greatest Show in the Multiverse", i.e. saga with static ability +- **expansion_symbol**: When expansion symbol fails to render, revert to disabling expansion symbol and warn the user +- **check_app_version**: Skip this check if Github isn't reached in 3 seconds +- **frame_logic**: Support "Demolition Field" non-colored land case +- **templates/normal**: Repair pinlines color map and add crown shading for EtchedTemplate, fix name alignment step for Borderless tokens, fix edge case PT drop shadow logic, add preliminary code for ClassicModernTemplate +- **helpers/document**: Fix rotate_clockwise orientation to positive 90 degrees +- **fonts**: Prevent a crash caused by encountering unrecognized font type in font checking step +- **fonts**: Relocate psd-tools font test outside main app scope +- **planar**: Fix bug affecting planar cards when Scryfall Extras is disabled + +### Refactor + +- **ClassicModernTemplate**: Add MDFC support +- **VectorTemplate**: Add default support for MDFC twins shape +- **test_mode**: Change output directory of test renders to match their class name +- **app_templates**: Add drive ID for Classic Modern template +- **src/core**: Move card type map to constants, updater funcs to downloads, plan to deprecate the `core` module in near future +- **parse_card_info**: Move art file parsing logic to scryfall utils +- **updater**: Move template update funcs to downloader utils +- **ClassicModernTemplate**: Finish Transform implementation on Classic Modern template +- **mkdir**: Ensure mkdir across project uses 711 perms +- **main**: Add console object as property to main App class +- **tools**: Flesh out image compression tool, add process wrapper for tools calls +- **env**: Add PS_ERROR_DIALOG env for toggling display error dialog on action descriptor execute calls +- **creator**: Import updated creator inputs +- **gui/TemplateModule**: Minimize and center template tabs +- **gui**: Add dynamic tabbed element subclasses, rewrite validated input classes, fix Planeswalker custom rendering +- **merge_layers**: Support returning layer if merge_layers recieves list with one item +- **build**: Update build script to use new kv directory +- **data**: Move kv and spec files to data directory +- **types**: Move all types submodules to new 'types' module, add new types TemplateRaw and TemplateManifest +- **BaseTemplate**: Improve Vehicle check handling +- **constants**: Ensure con.cwd is always the root Proxyshop directory, re-implement the PS_VERSION env variable +- **console.py**: Added extensive new infrastructure for handling "logger" formatting and output in the headless console class +- **tests/text_logic.py**: Readability rewrites and improve logging results +- **enums/settings.py**: Add enum for "Legendary Crown Mode" setting on Modern Classic template +- **BaseTemplate**: Allow 'is_vehicle' to act as a flag for toggling vehicle background behavior +- **BaseTemplate**: Add promo star logic to collector info methods, add is_collector_promo bool property, refactor initial photoshop refresh check using new method 'check_photoshop'` +- **VectorTemplate**: Remove unneeded alternate card type text layers now handled in modifiers, add crown_group check for legendary crown step, add more typechecking +- **enums**: Add new enums tracking recognized card fonts and special icons +- **layers**: Add new layer nomenclature for Battle templates +- **main,core**: Update photoshop refresh step in render_process_wrapper, add preliminary template data for Classic Modern and Battle templates +- **layouts**: Add preliminary BattleLayout class, add is_promo bool property +- **PhotoshopHandler**: Refactor Photoshop application refresh mechanism + +### Perf + +- **helpers/document**: Reduce PNG save size by disabling interlaced, reduce JPEG save size by formatting as optimized baseline +- **templates/saga**: Reduce execution time for Saga layer positioning + +## v1.11.0 (2023-08-14) + +### Feat + +- **paste_scryfall_scan**: When scryfall scan is enabled in settings we will now use bleed edge to correctly position the art instead of a reference box +- **ClassicTemplate**: Add support for Extended Art setting, fix broken Promo Star setting +- **fonts**: Additional step during startup font check that detects outdated fonts +- **Borderless**: New settings: Artifact color mode, enable/disable drop shadow text, dark/light toggle for land color, dark/light toggle for front face DFC cards, color treatment toggle for Hybrid cards, color limit mode ranging from 1 to 5, and piecemeal toggle for various multicolor elements +- **leveler**: Leveler template now supports automatic ability text sizing and positioning +- **BaseTemplate**: Add properties: frame_layer_methods, text_layer_methods, and general_methods. These act as lists where you can inject methods that should be run at various stages of the render sequence +- **gui**: Add step to the launch diagnostic that checks if a new version is released +- **settings**: Added support for colorpicker settings in plugin Templates +- **Class**: Brand new and improved Class template, uses the same PSD as the updated Saga template, also supports Universes Beyond treatment +- **Saga**: Brand new and improved Saga template using vector layers, supports both side Transform and a Universes Beyond treatment as well +- **templates**: Introduced "Mod" templates, reusable template classes that act as modifiers to add piecemeal functionality such as Transform layers, or MDFC layers + +### Fix + +- **BorderlessVectorTemplate**: Fix a bug affecting token cards in custom creator and textless renders +- **BasicLandDarkMode**: Artist info now filled properly +- **adventure**: Update adventure layout data for alternate language, split AdventureTemplate and AdventureMod +- **planeswalker**: Fix alternate language processing logic +- **scryfall**: Prevent infinite retry loop +- **basic_land**: Additional fixes for alternate languages +- **scryfall**: Fix a bug affecting some Planar cards (they count as "extras"), fix a bug that returns the wrong face for meld cards +- **text_layers**: Prevent a bug that can ruin flavor divider positioning, fix a bug that occurs when both flavor and oracle text are missing +- **basic_land**: Fix alternate language bug with Basic Land templates +- **plugins/MrTeferi**: Prevent sketch action from running in test mode, fix Crimson fang issues, shift Transform behavior to using modifier class +- **SilvanExtendedTemplate**: Fix legendary crowns causing a crash for Colorless cards +- **split**: Fix typo that caused split template to break +- **svg**: Fixed SVG expansion symbols: M15, AFR +- **ClassicRemasteredTemplate**: Rewrote duplicate setting description + +### Refactor + +- **normal**: Utilize modifiers across some normal template classes, implement new mask and shape enabling steps, update and fix various templates +- **PrototypeMod**: Implement prototype modifier class +- **planar**: Update scryfall scan step in accordance with new scan importing behavior +- **MutateMod**: Implement a mutate modifier class +- **LevelerMod**: Implement a leveler modifier class +- **saga-cards**: Retool old saga card template class into a modifier which passes the saga card functionality onto the new vector template +- **class-cards**: Retool old class card template class into a modifier which passes the class card functionality onto the new vector template +- **VectorTemplate**: Implement additional shape and mask enabling steps, optional tooling to improve on the Vector template workflow +- **templates**: Continue to improve the template modifier system, moving away from a _mods module and instead placing them in their relevant modules based on template type +- **regex**: Implement new regex pattern for matching nested version number strings +- **helpers/masks**: New helper utility: copy_vector_mask, works like copy_layer_mask but acts only on vector masks +- **enums**: Add new LAYERS nomenclature and remove useless Photoshop enum line +- **utils/objects**: Add classproperty decorator, update PhotoshopHandler to fix descriptor conversion bug, deprecate scale_by_height/width in favor of scale_by_dpi +- **split**: Improved readability of Split template code +- **token**: Improved Token template formatting by aligning typeline and rules text after text formatting +- **double_faced**: Rework existing MDFC and Transform templates to use new template Mod infrastructure +- **layouts**: Moves remaining Planeswalker data logic out of templates and into layouts, fixes several alternate language issues and missing data issues +- **helpers/adjustments**: Updates create_color_layer and create_gradient_layer to accept keyword arguments to modify their behavior, such as rotation and scale +- **helpers/layers**: New helper utility: merge_group, merges a target LayerSet into a single ArtLayer +- **helpers/masks**: New helper utility: apply_mask, applies a given layer's mask +- **helpers/text**: New helper utilities: get_font_size, set_text_size, set_text_leading, set_composer_single_line +- **helpers/position**: New helper utility: position_dividers, Positions a list of dividers between a list of text layers +- **get_rgb_from_hex**: New function to create SolidColor RGB object from a hex value using hexValue API +- **constants**: Remove relocated color maps +- **plugins/SilvanMTG**: Update SilvanMTG template classes using new infrastructure +- **enums**: Added a host of default color maps for various MTG frame elements +- **settings**: StrEnum used to track settings options now supports a "Default" enum natively, updated get_option and get_setting methods, added preliminary settings for BorderlessVector +- **layers**: Introduced new layer name nomenclature, added new LayerObject type +- **console**: Created first draft of headless Console object that responds to the user in terminal/commandline +- **VectorTemplate**: Introduced new template module _vector.py for tracking core vector template architecture +- **env**: Modify environment variable system to use one clean .env file to govern localized behaviors +- **PhotoshopHandler**: Enable error dialogs when executing Action Descriptors in development environment +- **exceptions**: Start building out a comprehensive library of known COMErrors +- **masks**: Add new helper function: delete_mask +- **transform_icon**: Default transform icon will now be considered the triangle formerly called "convertdfc" +- **console**: Use Logger for printing exceptions during development, improve formatting of error.txt log file +- **env**: Remove unused kivy logging ENV, remove KIVY_NO_CONSOLELOG toggle for development mode +- **layers**: Add new terminology for Saga layers +- **logging**: Kivy logging now only prints for error messages +- **target_replace**: Deprecated Targeted Text Replace setting as it is no longer needed + +### Perf + +- **text_layers**: Disable seemingly unnecessary steps during text formatting, needs further bulk testing to verify +- **helpers/position**: Continue to improve performance of layer aligning and positioning +- **planeswalker**: Reworked Planeswalker code for better performance and readability, updated method hierarchy to delineat planeswalker-specific steps from ordinary steps +- **format_text**: Improve execution time of text scaling and positioning functions, deprecate format_flavor_text +- **expansion_symbol**: Improve coverage of SVG symbols by checking for a replacement set code in the symbol library + +## v1.10.1 (2023-07-09) + +### Fix + +- **console**: Fix render operation cancelled unexpectedly without console output on bad scryfall data +- **test**: Fix test rendering not using the correct fullart image, fixed image testing for Split template +- **test**: Fix thread not cancelling in Deep Test Target mode + +## v1.10.0 (2023-07-06) + +### Feat + +- **New-template-type:-Split-Cards**: Split cards now supported, default Split template included +- **helpers**: New helper functions for rotate_document +- **gui**: Add pinned to top button and link buttons to discord and github + +### Fix + +- **ClassicTemplate**: Fix incorrect backgrounds on ClassicTemplate, fix some crashes on Photoshop not connected +- **regex**: Fix italicized ability bug with "Council's Dilemma" +- **prototype**: Fix prototype layer select bug +- **console**: Fix multiple cancellation prompts issue +- **BasicLandLayout**: Ensure Artist provided by Scryfall data can be used +- **layouts**: Allow basic lands to pull Collector Info, move text logic for prototype and mutate into layout object, implement layout checking in Scryfall utils +- **collector_info**: Fix bug on some systems which re-enables hidden paintbrush +- **prototype**: Fix prototype layout linkage now that Scryfall has added layout type "prototype" +- **main**: Prevent stacking error prompts in console when missing document is closed +- **check_playable_card**: Block broken "reversible_card" layout from Scryfall results +- **TokenTemplate**: Add missing preview image for TokenTemplate +- **card_types**: Add missing "Token" card type to template card_types dictionary, rename Basic Land -> Basic +- **format_text**: Add guard clause for using LayerSet object as reference in ensure_visible_reference +- **symbols**: Fix broken BNG common SVG, use better looking WTH symbols + +### Refactor + +- **scryfall**: Completely revamped logic for assigning card layout based on Scryfall data, added new settings for Scryfall data collection +- **enums**: Add non_italics_abilities and update TransformIcons +- **dimensions**: Add dimensions enum +- **dimensions**: Add additional dimensions information to get_dimensions_from_bounds +- **watermark**: Add support for "desparked" and "judgeacademy" +- **download**: Move update -> utils/download, add 7z compression support +- **basic_land**: Enable content aware fill on BasicLandUnstableTemplate +- **token**: Enable fullart toggle on Token template +- **compression**: Add compression functions/tests, add italicized ability test +- **config**: Remove config.ini from repository and from built releases as it is auto-generated for the user +- **BorderlessVector**: Make "Automatic" the default for "Textbox Size" setting +- **templates**: Enable Borderless Vector for Basic Land type +- **enums**: Add basic lands and transform icons to MTG enums +- **BorderlessVectorTemplate**: Add support for MDFC, Textless, and Nickname features to BorderlessVectorTemplate +- **DynamicVectorTemplate**: Added default functionality for MDFC card type in DynamicVectorTemplate class, added guard clause for reset function +- **layer_names**: Add more terminology to the layer names Enum class +- **font**: New helper function: set_font +- **align**: Add two more align utility definitions: align_left, align_right +- **layers**: Add helper function: unpack_smart_layer +- **expansion_symbol**: Add support for special/bonus rarities, move to YAML symbol library +- **expansion_symbols**: Final commit before deprecating json version + +### Perf + +- **alignment**: Vastly improved execution time of layer alignments and positioning, huge improvements to Planeswalker generation +- **text**: Improve execution time of formatting text and positioning flavor divider + +## v1.9.0 (2023-06-13) + +### Feat + +- **templates**: New Template: Borderless Vector, our most advanced template yet +- **settings**: Added Generative Fill setting that replaces content aware fill when supported, and Vertical Fullart which forces Fullart templates to always use vertical framing +- **GUI**: Added new "Tools" tab, for various app utilities +- **templates**: New templates: ClassicRemastered (credit to iDerp), Etched (credit to Warpdandy, Kyle of CC, and myself), Lord of the Rings (credit to Tupinambá). Updated Normal Fullart, Stargazing, and Universes Beyond. Renamed WomensDay -> Borderless, NormalClassic -> Classic, NormalExtended -> Extended, NormalFullart -> Fullart +- **templates**: Separated templates.py into full templates module, delineated by template types. Added new utility template classes: NormalEssentials, NormalVectorTemplate, and DynamicVectorTemplate +- **setting**: Added new setting: Collector Mode, changes how collector info is rendered. Also added get_option for processing valid multi-choice options +- **templates**: New templates: Etched and Classic Remastered + +### Fix + +- **divider**: Improved positioning of flavor divider when layer effects are present +- **constants**: Update Photoshop refreshing mechanism to avoid more error conditions, added new module for tracking MTG related constants like rarities +- **SilvanExtendedTemplate**: Fix crash caused by inserting hollow crown +- **scryfall**: Fix exclusion check to ensure playable memorabilia like 30A isn't excluded +- **helpers**: Fix SolidColor being instantiated as a default parameter, added copy_layer_effects helper function +- **frame_logic**: Added case for gold land cards like Thran Portal +- **expansion_symbol**: Improve both A25 and MOM expansion symbols +- **main**: Refactored the render pipeline to fix some common Photoshop issues and implemented a launch diagnostic system that detects if the required fonts are installed and Photoshop can be reached by the app +- **layouts**: Fix missing set code on basic lands +- **expansion_symbol**: Fix SVG symbol filename mismatch for VOW + +### Refactor + +- **main**: Add Tools tab to build procedure, moved expansion symbol library update to on_start call +- **env**: Added kivy_logging and photoshop_version as private ENV's, pending functionality +- **create_color_layer**: Updated to recieve a SolidColor object +- **colors**: Added new colors helper functions: hex_to_rgb, fill_layer_primary +- **exceptions**: Improved code readability +- **expansion_symbols.json**: Transitioned to dictionary notation for all stroke definitions, in preparation for eventually moving to YAML +- **generative_fill**: Added two new design helper funtions: generative_fill, generative_fill_edges +- **document**: Added new document helper function: pixels_to_points +- **layers**: Add new layers helper functions: edit_smart_layer, select_vector_layer_pixels +- **expansion_symbol**: Improved readability of code and added robust default value generation +- **masks**: Add new masks helper function: apply_mask_to_layer_fx +- **align**: Use select_layer_bounds for alignment selection +- **text**: Add new text helper function: get_line_count +- **format_text**: Refactored text scaling to use DPI scaling methods of PhotoshopHandler, updated the SymbolMapper to use a dictionary instead of disperate attributes of the constants object, allowing creators to assign a custom color map easier +- **helpers**: Separate helpers.py into entire module divided by Photoshop scope +- **configs**: Add config json for ClassicRemasteredTemplate, updated config json for BasicLandClassic, Invention, and NormalClassic templates +- **SilvanMTG**: Updated plugin to utilize the new content aware fill naming conventions +- **MaleMPCTemplate**: Deprecated the MaleMPC template, pending addition to the base app as "Extended Dark", a small modification to the Extended template +- **main**: Remove download step for app template manifest, disabled Kivy debugger log +- **constants**: Added dictionaries for layer maks and pinline colors, removed some deprecated variables +- **layouts**: Updated logic for 'card_count', 'collector_number', and 'collector_data'. Added 'identity', 'is_artifact', and 'is_hybrid' +- **frame_logic**: Updated frame_logic to return 'is_hybrd' value, added contains_frame_colors function for testing frame layer names given +- **previews**: Update preview image naming for updated template naming conventions +- **app_templates**: app_manifest.json -> app_templates.json +- **enums**: Created new directory for delineating enums, created new enums for settings values +- **strings**: Remove deprecated ps_version_check, add method for StrEnum to check if the class "contains" a string +- **types**: Add is_hybrid to FrameDetails type +- **types**: Add LayerContainer type for objects that can contain artLayer or layerSet objects +- **PhotoshopHandler**: Add scale_by_height and scale_by_width to get a dimension scaled based on DPI ratio +- **photoshop**: Move Photoshop version checks to app object +- **format_text**: Improve scale_text_right_overlap, scale_text_left_overlap, and scale_text_to_fit_textbox functions +- **photoshop**: Update Photoshop enums to only make typeID conversion when an Enum is accessed, added DescriptorEnum parent class +- **fonts**: Added font utility functions for determining what necessary fonts are installed at launch +- **photoshop**: Update Photoshop application object to better control over Photoshop communication +- **scryfall**: Moved scryfall exception decorator to new exceptions util, added get_photoshop_error_message to exceptions util for choosing correct Photoshop error +- **strings**: Added string utility for appending bulletpoints to each line in a string + +## v1.8.0 (2023-04-27) + +### Feat + +- **templates**: New template type: Token. Now ships with one included token template (credit to Chilli Axe). Emblems are also rolled into this template type. Also implemented better Expansion Symbol positioning and scaling, reworked the rendering chain, implemented better error handling and thread procedures, and merged most transform and MDFC template classes into single classes that can handle both faces +- **threading**: Implemented sophisticated thread tracking, locking, and release. Threads will now shut down properly when the Cancel button is pressed. The Console class was completely rewritten to faciliate management of the current render thread. "Render Target" can now select more than one card art to render +- **settings**: Added new settings. Scryfall Sorting: Change order of Scryfall results. Watermark Default Opacity: Change the defeault opacity of generated Watermarks. Renamed Dev mode to Test mode. Implemented get_default_symbol utility function + +### Fix + +- **text_layers**: Implemented new properties governing scaling behavior such as scale_height, scale_width, fix_overflow_width, fix_overflow_height. Added a step that ensures text does not overflow the bounding box of the text area when needed +- **fonts**: Updated the NDPMTG font to fix Phyrexian hybrid and implement acorn symbol + +### Refactor + +- **templates**: Move duplicate filename logic to file utils +- **frame_logic**: Completely rewrote the frame logic step for efficiency, introduced efficient mapping and utility function to find the correctly ordered color identity sequence. Creators can now use this sequence to implement 3+ color frame elements with accuracy +- **expansion_symbols.json**: Updated symbol library, removed reference keys as they are now deprecated +- **constants**: Updated constants object to use new env variables, added new utility methods, added new lock objects, added global PhotoshopHandler object +- **plugins**: Updated included plugins to use new LAYERS library and updated console handler +- **tests,-build,-deps**: Added pathvalidate dependency, updated tests, implemented env module for tracking environment variables and flags +- **img**: Renamed some preview images and SVG symbol directories +- **update**: Refactored download functions for better readability +- **enums_layers**: Moved our layer names library to a StrEnum class, con.layers refrences this +- **modules**: Implemented module utilities for retrieving and refreshing plugin modules +- **objects**: Implemented a PhotoshopHandler class to maintain one global Photoshop Application instance and refresh across new threads +- **scryfall**: Updated scryfall set utilities to support token cards +- **utils.strings**: Moved headless console to string utilities, updated console output utility functions +- **utils**: Added import comments, implemented new types and updated existing types + +### Perf + +- **format_text**: Improved execution time on multiple format_text functions, refactored SymbolMapper, implemented new function scale_text_to_fit_textbox +- **helpers**: Improved efficiency of some helper functions. Introduced new helpers: check_textbox_overflow, get_textbox_bounds, get_textbox_dimensions, enable/disable_vector_mask, undo/redo_action, convert_points_to_pixels, check_active_document, get_document +- **regex**: Implemented a regex pattern dataclass to pre-compile all regex patterns used by the app + +## v1.7.0 (2023-04-06) + +### Feat + +- **settings**: Importing scryfall art for reference is now a toggle setting, has been removed from individual templates in favor of a base template function that can be modified by child classes +- **gui**: Settings for each template can now be cleared to defaults with a helpful button, templates will now be disabled unless the PSD file is installed, the updater will enable the template after a download is complete +- **scryfall**: Rewrote Scryfall data collection completely to use efficient rate limiting and error handling as well as improved caching and overall execution time of this step +- **settings**: Seperate core system settings from the base template settings which can be overwritten for each template + +### Fix + +- **classic**: Fixed promo star setting on classic templates +- **creature**: Fix mistake in creature vertically nudge text function +- **dev_mode**: Skip uninstalled templates during dev mode testing +- **planeswalker**: Update Planeswalker logic to enforce uniform spacing for 2 ability Planeswalkers +- **layouts**: Fixed a bug affecting Saga and Class cards that have multiline abilities +- **frame_logic**: Fixed frame logic for ca1rds like Maelstrome Muse and Ajani, Sleeper Agent and added both to our test cases +- **creator**: Custom Creator now works for Planeswalker and Saga cards again +- **updater**: Fix templates downloading to incorrect folder + +### Refactor + +- **planeswalker**: Adjust vertically nudge text function +- **helpers**: Updated getLayer(), getLayerSet(), spread_layers_over_reference(), and art importing functionality +- **format_text**: Added new text function check_for_text_overlap() and refactored the vertical nudge functions for Creature and Planeswalker cards +- **data**: Update project toml, fonts, and expansion symbol data + +## v1.6.0 (2023-03-16) + +### Feat + +- **settings**: New Setting: Template Border, default is black. Other options are white, silver and gold +- **template**: New Template: Universes Beyond, used in crossover sets like WH40K, Transformers, etc +- **expansion_symbol**: Rewrite expansion symbol settings to allow 4 distinct modes, including SVG +- **watermarks**: Add support for optional Watermark generation +- **fonts**: New font utility functions: register_font(), unregister_font(), get_all_fonts(), check_fonts() +- **helpers**: New helper functions: set_fx_visibility(), enable_layer_fx(), disable_layer_fx(), set_fill_opacity(), apply_fx_color_overlay() +- **files**: Restructure directory structure, allow self contained plugins + +### Fix + +- **settings**: Back face to MDFC/Transform now uses the same ini as front face +- **console**: Add missing newline +- **symbols**: Updated some expansion symbols +- **kivy**: Replace unused MPlantin font with PlantinMTPRo +- **scryfall**: Improved MTG Set data caching to fix inconsistencies with collector information +- **sketch**: Fix bug causing some pencil sketch filters to fail +- **constants**: Fix cwd not working properly in executable version + +### Refactor + +- **tests**: Update tests for directory restructure and expansion symbol rewrite +- **layouts**: Improve handling of card_count, pre-cache set data, reorganize properties pertaining to all double faced cards +- **SilvanMTG**: Remove default configurations for cfg.remove_reminder +- **types_photoshop**: Specify NotRequired for some values + +## v1.5.0 (2023-03-02) + +### Feat + +- **expansion-symbol**: New layer effects helpers implemented, Expansion Symbol now rendered using these effects +- **helpers**: Import art directly into the document, add new helper utilities +- **templates**: New template type: Class + +### Fix + +- **ixalan**: Ixalan now renders without an error at create_expansion_symbol() +- **layouts**: Transform front sides now work when name is lowercase +- **layouts**: Added support for meld transform icon, added support for non-Ixalan back face lands +- **symbols**: Add support for ONE, ONC, DMR, and SCD +- **console**: Improve error logging dramatically +- **fonts**: Updated keyrune font to latest +- **layouts**: Patch a bug that causes alternate language to not identify creatures + +### Refactor + +- **helpers**: Deprecated solidcolor(), Added new helpers +- **layouts**: BaseLayout > NormalLayout, made BasicLandLayout extend to NormalLayout +- **cwd**: Use con.cwd to find the current directory across Proxyshop, always use root directory of project +- **DoubleFeature**: Explicit definitions for layer groups +- **creator**: Added scryfall formatting step to custom creator which in the future will help keep data in-line with what is expected for the layout object +- **symbols**: Allow use of old Expansion Symbol rendering, pending potential future deprecation +- **frame_logic**: Improved formatting and refactored +- **format_text**: Code readability improvements + +## v1.4.0 (2023-01-30) + +### Feat + +- **saga**: Implemented full automation for sagas +- **symbols**: Update symbol library and template manifest on launch +- **gui**: Add preview image to showcase each template +- **settings**: New automatic settings panels + +### Fix + +- **CrimsonFangTemplate**: Fixed dual color frame generation +- **settings**: Additional fixes for new panel config system +- **frame_logic**: Fix frame logic for some transform cards +- **settings**: Small patches to settings logic +- **creator**: Fix template logic for creator tab +- **scryfall**: Add special exception for championship cards +- **expansion_symbol**: Default stroke now uses config value +- **meld**: Fix meld card layout data + +### Refactor + +- **planeswalker**: Refactored planeswalker text generation +- **templates**: Add scaling to Planeswalker spacing +- **configs**: Rename configs to match new nomenclature +- **settings**: Rewrite settings to use class name for ini/json naming convention +- **layouts**: Trimmed down layout classes and properties +- **frame_logic**: Add FrameDetails type +- **sketch**: Switch sketch config to new settings system +- **plugin-templates**: Make adjustments to included plugin templates +- **templates**: Remove useless print statements +- **symbols**: Add missing symbols to library +- **config**: Reformat config for Kivy settings panel +- **text_layers.py**: Refactored classic quote alignment +- **gui**: Seperate GUI elements into modules + +## v1.3.0 (2023-01-06) + +### Fix + +- **updater**: Fixed Google Drive downloads, moved S3 downloading to Cloudfront + +### Refactor + +- **__env__**: Moved environment variables to py file +- **gui.py**: Removed unnecessary newline +- **templates.py**: Added app reference to BaseTemplate as property +- **main.py**: Added proper version tracking, refactored console output +- **constants**: Update HTTP header used for requests + +## v1.2.0 (2022-12-23) + +## v1.1.9 (2022-11-07) + +## v1.1.8 (2022-08-16) + +## v1.1.7 (2022-08-12) + +## v1.1.6 (2022-07-16) + +## v1.1.5 (2022-06-15) + +## v1.1.4 (2022-06-14) + +## v1.1.3 (2022-06-08) + +## v1.1.2 (2022-05-10) + +## v1.13.1 (2024-01-30) + +### Fix + +- **BorderlessVectorTemplate**: Fix 0/0 PT on PT-box-enabled textless renders +- **creator**: Allow creator to use other symbols and rarities +- **files**: Fix potential bug with data file loading +- **_loader**: Fix plugin relative import issue + +### Refactor + +- **gui**: Rework how toggle buttons are added to the main toggle collection. Add minimum window size and default size +- **gui**: Implement new quality of life utils for the GUI, add iter feature to StrEnum +- **plugins**: Robust rework of how and when plugins are loaaded, enforce recursive import, enforce new plugin/Name/py module naming convention +- **CHANGELOG,poetry**: Update changelog and poetry deps + ## v1.13.0 (2024-01-17) ### Feat diff --git a/poetry.lock b/poetry.lock index 2ac6a7ad..2e31c520 100644 --- a/poetry.lock +++ b/poetry.lock @@ -728,13 +728,13 @@ test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre [[package]] name = "griffe" -version = "0.39.0" +version = "0.40.0" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." optional = false python-versions = ">=3.8" files = [ - {file = "griffe-0.39.0-py3-none-any.whl", hash = "sha256:b5e2f249d86feaad1d3068b33b1c8c2ecf39cb870bf292f2af3a4311891a4835"}, - {file = "griffe-0.39.0.tar.gz", hash = "sha256:34461730c975a31c4ffa413bdad841f217a5d1a1c611b95f6110ed0f2b2fc04d"}, + {file = "griffe-0.40.0-py3-none-any.whl", hash = "sha256:db1da6d1d8e08cbb20f1a7dee8c09da940540c2d4c1bfa26a9091cf6fc36a9ec"}, + {file = "griffe-0.40.0.tar.gz", hash = "sha256:76c4439eaa2737af46ae003c331ab6ca79c5365b552f7b5aed263a3b4125735b"}, ] [package.dependencies] @@ -1248,71 +1248,71 @@ testing = ["coverage", "pyyaml"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.4" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, + {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, ] [[package]] @@ -1517,13 +1517,13 @@ cache = ["platformdirs"] [[package]] name = "mkdocs-material" -version = "9.5.4" +version = "9.5.6" description = "Documentation that simply works" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.5.4-py3-none-any.whl", hash = "sha256:efd7cc8ae03296d728da9bd38f4db8b07ab61f9738a0cbd0dfaf2a15a50e7343"}, - {file = "mkdocs_material-9.5.4.tar.gz", hash = "sha256:3d196ee67fad16b2df1a458d650a8ac1890294eaae368d26cee71bc24ad41c40"}, + {file = "mkdocs_material-9.5.6-py3-none-any.whl", hash = "sha256:e115b90fccf5cd7f5d15b0c2f8e6246b21041628b8f590630e7fca66ed7fcf6c"}, + {file = "mkdocs_material-9.5.6.tar.gz", hash = "sha256:5b24df36d8ac6cecd611241ce6f6423ccde3e1ad89f8360c3f76d5565fc2d82a"}, ] [package.dependencies] @@ -1541,7 +1541,7 @@ requests = ">=2.26,<3.0" [package.extras] git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=9.4,<10.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] [[package]] @@ -2040,13 +2040,13 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co [[package]] name = "pluggy" -version = "1.3.0" +version = "1.4.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, - {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, ] [package.extras] @@ -2155,27 +2155,27 @@ scipy = "*" [[package]] name = "psutil" -version = "5.9.7" +version = "5.9.8" description = "Cross-platform lib for process and system monitoring in Python." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "psutil-5.9.7-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:0bd41bf2d1463dfa535942b2a8f0e958acf6607ac0be52265ab31f7923bcd5e6"}, - {file = "psutil-5.9.7-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:5794944462509e49d4d458f4dbfb92c47539e7d8d15c796f141f474010084056"}, - {file = "psutil-5.9.7-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:fe361f743cb3389b8efda21980d93eb55c1f1e3898269bc9a2a1d0bb7b1f6508"}, - {file = "psutil-5.9.7-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:e469990e28f1ad738f65a42dcfc17adaed9d0f325d55047593cb9033a0ab63df"}, - {file = "psutil-5.9.7-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:3c4747a3e2ead1589e647e64aad601981f01b68f9398ddf94d01e3dc0d1e57c7"}, - {file = "psutil-5.9.7-cp27-none-win32.whl", hash = "sha256:1d4bc4a0148fdd7fd8f38e0498639ae128e64538faa507df25a20f8f7fb2341c"}, - {file = "psutil-5.9.7-cp27-none-win_amd64.whl", hash = "sha256:4c03362e280d06bbbfcd52f29acd79c733e0af33d707c54255d21029b8b32ba6"}, - {file = "psutil-5.9.7-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ea36cc62e69a13ec52b2f625c27527f6e4479bca2b340b7a452af55b34fcbe2e"}, - {file = "psutil-5.9.7-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1132704b876e58d277168cd729d64750633d5ff0183acf5b3c986b8466cd0284"}, - {file = "psutil-5.9.7-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe8b7f07948f1304497ce4f4684881250cd859b16d06a1dc4d7941eeb6233bfe"}, - {file = "psutil-5.9.7-cp36-cp36m-win32.whl", hash = "sha256:b27f8fdb190c8c03914f908a4555159327d7481dac2f01008d483137ef3311a9"}, - {file = "psutil-5.9.7-cp36-cp36m-win_amd64.whl", hash = "sha256:44969859757f4d8f2a9bd5b76eba8c3099a2c8cf3992ff62144061e39ba8568e"}, - {file = "psutil-5.9.7-cp37-abi3-win32.whl", hash = "sha256:c727ca5a9b2dd5193b8644b9f0c883d54f1248310023b5ad3e92036c5e2ada68"}, - {file = "psutil-5.9.7-cp37-abi3-win_amd64.whl", hash = "sha256:f37f87e4d73b79e6c5e749440c3113b81d1ee7d26f21c19c47371ddea834f414"}, - {file = "psutil-5.9.7-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:032f4f2c909818c86cea4fe2cc407f1c0f0cde8e6c6d702b28b8ce0c0d143340"}, - {file = "psutil-5.9.7.tar.gz", hash = "sha256:3f02134e82cfb5d089fddf20bb2e03fd5cd52395321d1c8458a9e58500ff417c"}, + {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"}, + {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"}, + {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"}, + {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, + {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"}, + {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"}, + {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, + {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, + {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, + {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, ] [package.extras] @@ -2330,18 +2330,18 @@ files = [ [[package]] name = "pydantic" -version = "2.5.3" +version = "2.6.0" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"}, - {file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"}, + {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, + {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.14.6" +pydantic-core = "2.16.1" typing-extensions = ">=4.6.1" [package.extras] @@ -2349,116 +2349,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.14.6" +version = "2.16.1" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"}, - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590"}, - {file = "pydantic_core-2.14.6-cp310-none-win32.whl", hash = "sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7"}, - {file = "pydantic_core-2.14.6-cp310-none-win_amd64.whl", hash = "sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2"}, - {file = "pydantic_core-2.14.6-cp311-none-win32.whl", hash = "sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2"}, - {file = "pydantic_core-2.14.6-cp311-none-win_amd64.whl", hash = "sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23"}, - {file = "pydantic_core-2.14.6-cp311-none-win_arm64.whl", hash = "sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c"}, - {file = "pydantic_core-2.14.6-cp312-none-win32.whl", hash = "sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786"}, - {file = "pydantic_core-2.14.6-cp312-none-win_amd64.whl", hash = "sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40"}, - {file = "pydantic_core-2.14.6-cp312-none-win_arm64.whl", hash = "sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e"}, - {file = "pydantic_core-2.14.6-cp37-none-win32.whl", hash = "sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6"}, - {file = "pydantic_core-2.14.6-cp37-none-win_amd64.whl", hash = "sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60"}, - {file = "pydantic_core-2.14.6-cp38-none-win32.whl", hash = "sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe"}, - {file = "pydantic_core-2.14.6-cp38-none-win_amd64.whl", hash = "sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411"}, - {file = "pydantic_core-2.14.6-cp39-none-win32.whl", hash = "sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975"}, - {file = "pydantic_core-2.14.6-cp39-none-win_amd64.whl", hash = "sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"}, - {file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, + {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, + {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, + {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, + {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, + {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, + {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, + {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, + {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, + {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, + {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, + {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, + {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, + {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, ] [package.dependencies] @@ -2514,13 +2488,13 @@ hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] [[package]] name = "pyinstaller-hooks-contrib" -version = "2023.12" +version = "2024.0" description = "Community maintained hooks for PyInstaller" optional = false python-versions = ">=3.7" files = [ - {file = "pyinstaller-hooks-contrib-2023.12.tar.gz", hash = "sha256:11a9d59d903723dd693e8c10b054f3ea1ecad390623c9fa527c731d715fc5b3f"}, - {file = "pyinstaller_hooks_contrib-2023.12-py2.py3-none-any.whl", hash = "sha256:6a601a0d783fa725327fc6ac712779475dc8979f639419c7fcd460dd8d0a6d2a"}, + {file = "pyinstaller-hooks-contrib-2024.0.tar.gz", hash = "sha256:a7118c1a5c9788595e5c43ad058a7a5b7b6d59e1eceb42362f6ec1f0b61986b0"}, + {file = "pyinstaller_hooks_contrib-2024.0-py2.py3-none-any.whl", hash = "sha256:469b5690df53223e2e8abffb2e44d6ee596e7d79d4b1eed9465123b67439875a"}, ] [package.dependencies] @@ -2698,13 +2672,13 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "1.0.0" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] @@ -2712,13 +2686,13 @@ cli = ["click (>=5.0)"] [[package]] name = "pytz" -version = "2023.3.post1" +version = "2023.4" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, - {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, + {file = "pytz-2023.4-py2.py3-none-any.whl", hash = "sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a"}, + {file = "pytz-2023.4.tar.gz", hash = "sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40"}, ] [[package]] @@ -3371,17 +3345,18 @@ files = [ [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, + {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] diff --git a/pyproject.toml b/pyproject.toml index 52085c7a..aa9515fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "proxyshop" -version = "1.13.0" +version = "1.13.1" description = "Photoshop automation tool for generating high quality Magic the Gathering card renders." authors = ["Investigamer "] license = "MPL-2.0" @@ -59,7 +59,7 @@ requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.commitizen] -version = "1.13.0" +version = "1.13.1" changelog_start_rev = '1.2.0' tag_format = "v$major.$minor.$patch" update_changelog_on_bump = true diff --git a/requirements.txt b/requirements.txt index 5d82b1a4..63374403 100644 --- a/requirements.txt +++ b/requirements.txt @@ -31,7 +31,7 @@ fonttools==4.47.2 ; python_version >= "3.8" and python_version < "3.12" ghp-import==2.1.0 ; python_version >= "3.8" and python_version < "3.12" gitdb==4.0.11 ; python_version >= "3.8" and python_version < "3.12" gitpython==3.1.41 ; python_version >= "3.8" and python_version < "3.12" -griffe==0.39.0 ; python_version >= "3.8" and python_version < "3.12" +griffe==0.40.0 ; python_version >= "3.8" and python_version < "3.12" htmlmin2==0.1.13 ; python_version >= "3.8" and python_version < "3.12" identify==2.5.33 ; python_version >= "3.8" and python_version < "3.12" idna==3.6 ; python_version >= "3.8" and python_version < "3.12" @@ -51,7 +51,7 @@ kiwisolver==1.4.5 ; python_version >= "3.8" and python_version < "3.12" lazy-loader==0.3 ; python_version >= "3.8" and python_version < "3.12" macholib==1.16.3 ; python_version >= "3.8" and python_version < "3.12" and sys_platform == "darwin" markdown==3.5.2 ; python_version >= "3.8" and python_version < "3.12" -markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "3.12" +markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "3.12" matplotlib==3.7.4 ; python_version >= "3.8" and python_version < "3.12" memory-profiler==0.61.0 ; python_version >= "3.8" and python_version < "3.12" mergedeep==1.3.4 ; python_version >= "3.8" and python_version < "3.12" @@ -61,7 +61,7 @@ mkdocs-gen-files==0.5.0 ; python_version >= "3.8" and python_version < "3.12" mkdocs-git-revision-date-plugin==0.3.2 ; python_version >= "3.8" and python_version < "3.12" mkdocs-include-markdown-plugin==6.0.4 ; python_version >= "3.8" and python_version < "3.12" mkdocs-material-extensions==1.3.1 ; python_version >= "3.8" and python_version < "3.12" -mkdocs-material==9.5.4 ; python_version >= "3.8" and python_version < "3.12" +mkdocs-material==9.5.6 ; python_version >= "3.8" and python_version < "3.12" mkdocs-minify-plugin==0.7.2 ; python_version >= "3.8" and python_version < "3.12" mkdocs-pymdownx-material-extras==2.5.6 ; python_version >= "3.8" and python_version < "3.12" mkdocs-same-dir==0.1.2 ; python_version >= "3.8" and python_version < "3.12" @@ -84,20 +84,20 @@ pefile==2023.2.7 ; python_version >= "3.8" and python_version < "3.12" and sys_p photoshop-python-api @ git+https://github.com/MrTeferi/photoshop-python-api.git@9eb4fe858c661da6f66961ba4c4976e22d8d4413 ; python_version >= "3.8" and python_version < "3.12" pillow==9.5.0 ; python_version >= "3.8" and python_version < "3.12" platformdirs==4.1.0 ; python_version >= "3.8" and python_version < "3.12" -pluggy==1.3.0 ; python_version >= "3.8" and python_version < "3.12" +pluggy==1.4.0 ; python_version >= "3.8" and python_version < "3.12" pre-commit==3.5.0 ; python_version >= "3.8" and python_version < "3.12" prompt-toolkit==3.0.43 ; python_version >= "3.8" and python_version < "3.12" psd-tools==1.9.28 ; python_version >= "3.8" and python_version < "3.12" -psutil==5.9.7 ; python_version >= "3.8" and python_version < "3.12" +psutil==5.9.8 ; python_version >= "3.8" and python_version < "3.12" py7zr==0.20.8 ; python_version >= "3.8" and python_version < "3.12" pybcj==1.0.2 ; python_version >= "3.8" and python_version < "3.12" pyclean==2.7.6 ; python_version >= "3.8" and python_version < "3.12" pycparser==2.21 ; python_version >= "3.8" and python_version < "3.12" and platform_python_implementation == "PyPy" pycryptodomex==3.20.0 ; python_version >= "3.8" and python_version < "3.12" -pydantic-core==2.14.6 ; python_version >= "3.8" and python_version < "3.12" -pydantic==2.5.3 ; python_version >= "3.8" and python_version < "3.12" +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "3.12" +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "3.12" pygments==2.17.2 ; python_version >= "3.8" and python_version < "3.12" -pyinstaller-hooks-contrib==2023.12 ; python_version >= "3.8" and python_version < "3.12" +pyinstaller-hooks-contrib==2024.0 ; python_version >= "3.8" and python_version < "3.12" pyinstaller==5.13.2 ; python_version >= "3.8" and python_version < "3.12" pymdown-extensions==10.7 ; python_version >= "3.8" and python_version < "3.12" pyparsing==3.1.1 ; python_version >= "3.8" and python_version < "3.12" @@ -105,8 +105,8 @@ pypiwin32==223 ; python_version >= "3.8" and python_version < "3.12" and sys_pla pyppmd==1.1.0 ; python_version >= "3.8" and python_version < "3.12" pytest==7.4.4 ; python_version >= "3.8" and python_version < "3.12" python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "3.12" -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "3.12" -pytz==2023.3.post1 ; python_version >= "3.8" and python_version < "3.9" +python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "3.12" +pytz==2023.4 ; python_version >= "3.8" and python_version < "3.9" pywavelets==1.4.1 ; python_version >= "3.8" and python_version < "3.12" pywin32-ctypes==0.2.2 ; python_version >= "3.8" and python_version < "3.12" and sys_platform == "win32" pywin32==306 ; python_version >= "3.8" and python_version < "3.12" and sys_platform == "win32" @@ -129,7 +129,7 @@ tomli==2.0.1 ; python_version >= "3.8" and python_version < "3.12" tomlkit==0.12.3 ; python_version >= "3.8" and python_version < "3.12" tqdm==4.66.1 ; python_version >= "3.8" and python_version < "3.12" typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "3.12" -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "3.12" +urllib3==2.2.0 ; python_version >= "3.8" and python_version < "3.12" virtualenv==20.25.0 ; python_version >= "3.8" and python_version < "3.12" watchdog==3.0.0 ; python_version >= "3.8" and python_version < "3.12" wcmatch==8.5 ; python_version >= "3.8" and python_version < "3.12"