Files
tfm_ainventory/venv/lib/python3.12/site-packages/pygments/styles/lovelace.py
Daniel Bedeleanu ea49cd6e4a feat(phase1): add image storage utilities
- Create backend/services/image_storage.py with 4 core functions:
  - sanitize_filename(): remove unsafe chars, limit to 255 chars, convert to lowercase
  - get_unique_filename(): handle collisions with UUID suffix (format: {name}_{uuid8}_{variant}.jpg)
  - ensure_image_directories(): create /images/ root and category subdirs on startup
  - save_image(): save bytes to /images/{category}/{filename}, returns relative path
- Create comprehensive test suite (22 tests) covering all functionality
- Integrate ensure_image_directories() into FastAPI startup event
- Directory structure: /images/{category}/{filename}
- Collision handling: auto-suffix with UUID if filename exists
- All tests passing, pathlib.Path for safe operations
2026-04-20 21:57:26 +03:00

101 lines
3.1 KiB
Python

"""
pygments.styles.lovelace
~~~~~~~~~~~~~~~~~~~~~~~~
Lovelace by Miikka Salminen
Pygments style by Miikka Salminen (https://github.com/miikkas)
A desaturated, somewhat subdued style created for the Lovelace interactive
learning environment.
:copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
from pygments.style import Style
from pygments.token import Keyword, Name, Comment, String, Error, \
Number, Operator, Punctuation, Generic, Whitespace
__all__ = ['LovelaceStyle']
class LovelaceStyle(Style):
"""
The style used in Lovelace interactive learning environment. Tries to avoid
the "angry fruit salad" effect with desaturated and dim colours.
"""
name = 'lovelace'
_KW_BLUE = '#2838b0'
_NAME_GREEN = '#388038'
_DOC_ORANGE = '#b85820'
_OW_PURPLE = '#a848a8'
_FUN_BROWN = '#785840'
_STR_RED = '#b83838'
_CLS_CYAN = '#287088'
_ESCAPE_LIME = '#709030'
_LABEL_CYAN = '#289870'
_EXCEPT_YELLOW = '#908828'
styles = {
Whitespace: '#a89028',
Comment: 'italic #888888',
Comment.Hashbang: _CLS_CYAN,
Comment.Multiline: '#888888',
Comment.Preproc: 'noitalic '+_LABEL_CYAN,
Keyword: _KW_BLUE,
Keyword.Constant: 'italic #444444',
Keyword.Declaration: 'italic',
Keyword.Type: 'italic',
Operator: '#666666',
Operator.Word: _OW_PURPLE,
Punctuation: '#888888',
Name.Attribute: _NAME_GREEN,
Name.Builtin: _NAME_GREEN,
Name.Builtin.Pseudo: 'italic',
Name.Class: _CLS_CYAN,
Name.Constant: _DOC_ORANGE,
Name.Decorator: _CLS_CYAN,
Name.Entity: _ESCAPE_LIME,
Name.Exception: _EXCEPT_YELLOW,
Name.Function: _FUN_BROWN,
Name.Function.Magic: _DOC_ORANGE,
Name.Label: _LABEL_CYAN,
Name.Namespace: _LABEL_CYAN,
Name.Tag: _KW_BLUE,
Name.Variable: '#b04040',
Name.Variable.Global:_EXCEPT_YELLOW,
Name.Variable.Magic: _DOC_ORANGE,
String: _STR_RED,
String.Affix: '#444444',
String.Char: _OW_PURPLE,
String.Delimiter: _DOC_ORANGE,
String.Doc: 'italic '+_DOC_ORANGE,
String.Escape: _ESCAPE_LIME,
String.Interpol: 'underline',
String.Other: _OW_PURPLE,
String.Regex: _OW_PURPLE,
Number: '#444444',
Generic.Deleted: '#c02828',
Generic.Emph: 'italic',
Generic.Error: '#c02828',
Generic.Heading: '#666666',
Generic.Subheading: '#444444',
Generic.Inserted: _NAME_GREEN,
Generic.Output: '#666666',
Generic.Prompt: '#444444',
Generic.Strong: 'bold',
Generic.EmphStrong: 'bold italic',
Generic.Traceback: _KW_BLUE,
Error: 'bg:'+_OW_PURPLE,
}