././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1705884679.4696074 ansi-0.3.7/0000755000076500000240000000000014553336007011016 5ustar00jqstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705884560.0 ansi-0.3.7/CHANGELOG.md0000644000076500000240000000346014553335620012632 0ustar00jqstaffANSI Changelog ============== Various ANSI escape codes, used in moving the cursor in a text console or rendering coloured text. 0.3.7 ----- - [PR #26](https://github.com/tehmaze/ansi/pull/26) Enable concatenating a string and a sequence, not just a sequence and a string. - [PR #27](https://github.com/tehmaze/ansi/pull/27) Enable empty sequences that evaluate to the empty string. - [PR #29](https://github.com/tehmaze/ansi/pull/29) Allow importing the main module to import all submodules - [PR #31](https://github.com/tehmaze/ansi/pull/31) Fix ECMA-48 link in README.md - [PR #32](https://github.com/tehmaze/ansi/pull/32) Add license to setup.cfg - [PR #33](https://github.com/tehmaze/ansi/pull/33) bugfix sequence in `ansi.cursor.erase('')` - [PR #34](https://github.com/tehmaze/ansi/pull/34) Add `bg=True` argument for `ansi.colour.rgb.rgb256()` 0.3.6 ----- - [PR #24](https://github.com/tehmaze/ansi/pull/24) Include py.typed marker to enable type checking of the installed package. 0.3.5 ----- - [PR #21](https://github.com/tehmaze/ansi/pull/21) use 3rd party `typing_extensions` module for better version compatibility 0.3.4 ----- - Three minor versions were briefly released to resolve packaging/README issues with 0.3.1. 0.3.1 ----- - [PR #18](https://github.com/tehmaze/ansi/pull/14) Deprecate Python 2 and versions earlier than 3.7 by adding type information. `rgb()` function no longer accepts strings of integers, only integers. - [PR #14](https://github.com/tehmaze/ansi/pull/14) Add support for 8 and 24-bit True Color. 0.3.0 ----- - Broken, due to a configuration error this package is not installable 0.2.0 ----- - [PR #13](https://github.com/tehmaze/ansi/pull/13) Support for OSC and some proprietary iTerm sequences - [PR #12](https://github.com/tehmaze/ansi/pull/13) show/hide cursor sequence ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1643478040.0 ansi-0.3.7/LICENSE.md0000644000076500000240000000207714175276030012427 0ustar00jqstaffCopyright (c) 2015 Wijnand Modderman-Lenstra Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1643478040.0 ansi-0.3.7/MANIFEST.in0000644000076500000240000000005114175276030012547 0ustar00jqstaffinclude *.md recursive-include ansi *.py ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1705884679.469545 ansi-0.3.7/PKG-INFO0000644000076500000240000000254614553336007012122 0ustar00jqstaffMetadata-Version: 2.1 Name: ansi Version: 0.3.7 Summary: ANSI cursor movement and graphics Home-page: https://github.com/tehmaze/ansi/ Author: Wijnand Modderman-Lenstra Author-email: maze@pyth0n.org License: MIT License Requires-Python: >=3.6 Description-Content-Type: text/markdown License-File: LICENSE.md Requires-Dist: typing_extensions>=3.6.4; python_version < "3.8" ANSI ==== Various ANSI escape codes, used in moving the cursor in a text console or rendering coloured text. Example ------- Print something in bold yellow on a red background: >>> from ansi.colour import fg, bg >>> from ansi.colour.fx import reset >>> msg = (bg.red, fg.yellow, 'Hello world!', reset) >>> print(''.join(map(str, msg))) ... If you like syntactic sugar, you may also do: >>> from ansi.colour import fg, bg >>> print(bg.red(fg.yellow('Hello world!'))) ... Also, 256 RGB colours are supported: >>> from ansi.colour.rgb import rgb256 >>> from ansi.colour.fx import reset >>> msg = (rgb256(0xff, 0x80, 0x00), 'hello world', reset) >>> print(''.join(map(str, msg))) ... If you prefer to use American English instead: >>> from ansi.color import ... References ---------- https://www.ecma-international.org/publications-and-standards/standards/ecma-48/ Requirements ------------ Ansi requires python 3.6 and supports typing. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705875507.0 ansi-0.3.7/README.md0000644000076500000240000000176114553314063012300 0ustar00jqstaffANSI ==== Various ANSI escape codes, used in moving the cursor in a text console or rendering coloured text. Example ------- Print something in bold yellow on a red background: >>> from ansi.colour import fg, bg >>> from ansi.colour.fx import reset >>> msg = (bg.red, fg.yellow, 'Hello world!', reset) >>> print(''.join(map(str, msg))) ... If you like syntactic sugar, you may also do: >>> from ansi.colour import fg, bg >>> print(bg.red(fg.yellow('Hello world!'))) ... Also, 256 RGB colours are supported: >>> from ansi.colour.rgb import rgb256 >>> from ansi.colour.fx import reset >>> msg = (rgb256(0xff, 0x80, 0x00), 'hello world', reset) >>> print(''.join(map(str, msg))) ... If you prefer to use American English instead: >>> from ansi.color import ... References ---------- https://www.ecma-international.org/publications-and-standards/standards/ecma-48/ Requirements ------------ Ansi requires python 3.6 and supports typing. ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1705884679.466993 ansi-0.3.7/ansi/0000755000076500000240000000000014553336007011750 5ustar00jqstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705875507.0 ansi-0.3.7/ansi/__init__.py0000644000076500000240000000010614553314063014054 0ustar00jqstafffrom . import cursor, colour, iterm, osc, sequence color = colour ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705884085.0 ansi-0.3.7/ansi/color.py0000644000076500000240000000034614553334665013453 0ustar00jqstaff# pylint: disable=C0111,W0611,W0614 from sys import modules import ansi.colour # lgtm [py/import-and-import-from] from ansi.colour import bg, fg, fx, rgb modules["ansi.color"] = ansi.colour __all__ = ['fg', 'bg', 'fx', 'rgb'] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1705884679.4690347 ansi-0.3.7/ansi/colour/0000755000076500000240000000000014553336007013253 5ustar00jqstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705875507.0 ansi-0.3.7/ansi/colour/__init__.py0000644000076500000240000000010614553314063015357 0ustar00jqstafffrom . import bg, fg, fx, rgb __all__ = ['bg', 'fg', 'fx', 'rgb'] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705883390.0 ansi-0.3.7/ansi/colour/base.py0000644000076500000240000000354114553333376014550 0ustar00jqstaff# pylint: disable=C0103,R0903 from typing import TypeVar, Union, cast from ansi.sequence import sequence __all__ = ['Graphic'] T = TypeVar('T', str, 'Graphic') class Graphic(object): ''' Compose a Select Graphic Rendition (SGR) ANSI escape sequence. ''' def __init__(self, *values: Union[str, "Graphic"]) -> None: """Create a new graphics object with a list of commands.""" self.values = values def __add__(self, other: T) -> T: """Append either a string to the escape sequence resulting in a new string, or combine with more commands.""" if isinstance(other, str): # For some reason mypy does not understand that T is string in this case return cast(T, self.sequence + other) elif isinstance(other, Graphic): return Graphic(*(self.values + other.values)) return NotImplemented def __radd__(self, other: T) -> T: """Append either a string to the escape sequence resulting in a new string, or combine with more commands.""" if isinstance(other, str): # For some reason mypy does not understand that T is string in this case return cast(T, other + str(self)) elif isinstance(other, Graphic): return Graphic(*(other.values + self.values)) return NotImplemented def __call__(self, text: str, reset: bool = True) -> str: """Apply the escape sequence to a string, issuing a reset at the end if desired.""" result = self.sequence + text if reset and len(self.values)>0: result += str(Graphic('0')) return result @property def sequence(self) -> str: """Returns the formatted escape sequence with all values passed to this object.""" return sequence('m', fields=-1)(*self.values) def __str__(self) -> str: return self.sequence ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1643478040.0 ansi-0.3.7/ansi/colour/bg.py0000644000076500000240000000314714175276030014221 0ustar00jqstaff#pylint: disable=C0103,R0903 from ansi.colour.base import Graphic from ansi.colour.fx import bold # ECMA-048 standard names black = Graphic('40') red = Graphic('41') green = Graphic('42') yellow = Graphic('43') blue = Graphic('44') magenta = Graphic('45') cyan = Graphic('46') white = Graphic('47') default = Graphic('49') # ECMA-048 bold variants boldblack = bold + black boldred = bold + red boldgreen = bold + green boldyellow = bold + yellow boldblue = bold + blue boldmagenta = bold + magenta boldcyan = bold + cyan boldwhite = bold + white # High intensity variants brightblack = Graphic('100') brightred = Graphic('101') brightgreen = Graphic('102') brightyellow = Graphic('103') brightblue = Graphic('104') brightmagenta = Graphic('105') brightcyan = Graphic('106') brightwhite = Graphic('107') # Convenience wrappers brown = yellow # Not in ANSI/ECMA-048 standard grey = white # Not in ANSI/ECMA-048 standard gray = white # US English darkgrey = boldblack darkgray = boldblack # US English brightbrown = boldyellow # Not in ANSI/ECMA-048 standard brightgrey = boldwhite # Not in ANSI/ECMA-048 standard brightgray = boldwhite # Us English # 8 bit and 24 bit colors colors palette = lambda colour: Graphic('48;5;%s' % colour) truecolor = lambda r,g,b: Graphic('48;2;%s;%s;%s' % (r,g,b)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705876115.0 ansi-0.3.7/ansi/colour/fg.py0000644000076500000240000000340714553315223014222 0ustar00jqstaff#pylint: disable=C0103,R0903 from ansi.colour.base import Graphic from ansi.colour.fx import bold # The empty sequence, which can be useful e.g. in this situation # colour = fg.red if is_alert else fg.none # print(colour(message)) none = Graphic() # ECMA-048 standard names black = Graphic('30') red = Graphic('31') green = Graphic('32') yellow = Graphic('33') blue = Graphic('34') magenta = Graphic('35') cyan = Graphic('36') white = Graphic('37') default = Graphic('39') # ECMA-048 bold variants boldblack = bold + black boldred = bold + red boldgreen = bold + green boldyellow = bold + yellow boldblue = bold + blue boldmagenta = bold + magenta boldcyan = bold + cyan boldwhite = bold + white # High intensity variants brightblack = Graphic('90') brightred = Graphic('91') brightgreen = Graphic('92') brightyellow = Graphic('93') brightblue = Graphic('94') brightmagenta = Graphic('95') brightcyan = Graphic('96') brightwhite = Graphic('97') # Convenience wrappers brown = yellow # Not in ANSI/ECMA-048 standard grey = white # Not in ANSI/ECMA-048 standard gray = white # US English darkgrey = boldblack darkgray = boldblack # US English brightbrown = boldyellow # Not in ANSI/ECMA-048 standard brightgrey = boldwhite # Not in ANSI/ECMA-048 standard brightgray = boldwhite # Us English # 8 bit and 24 bit colors colors palette = lambda colour: Graphic('38;5;%s' % colour) truecolor = lambda r,g,b: Graphic('38;2;%s;%s;%s' % (r,g,b)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705876115.0 ansi-0.3.7/ansi/colour/fx.py0000644000076500000240000000266714553315223014252 0ustar00jqstaff#pylint: disable=C0103,R0903 from ansi.colour.base import Graphic noop = Graphic() # ECMA-048 standard names reset = Graphic('0') bold = Graphic('1') faint = Graphic('2') italic = Graphic('3') underline = Graphic('4') blink_slow = Graphic('5') blink = Graphic('6') negative = Graphic('7') conceal = Graphic('8') crossed_out = Graphic('9') font_reset = Graphic('10') font_1 = Graphic('11') font_2 = Graphic('12') font_3 = Graphic('13') font_4 = Graphic('14') font_5 = Graphic('15') font_6 = Graphic('16') font_7 = Graphic('17') font_8 = Graphic('18') font_9 = Graphic('19') fraktur = Graphic('20') gothic = Graphic('20') underline_double = Graphic('21') normal = Graphic('22') not_italic = Graphic('23') not_fraktur = Graphic('23') not_gothic = Graphic('23') not_underline = Graphic('24') steady = Graphic('25') positive = Graphic('27') reveal = Graphic('28') framed = Graphic('51') encircled = Graphic('52') overlined = Graphic('53') not_framed = Graphic('54') not_encircled = Graphic('54') not_overlined = Graphic('55') # Convenience wrappers inverse = negative bright = bold not_blink = steady blink_off = steady ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705884296.0 ansi-0.3.7/ansi/colour/rgb.py0000644000076500000240000000447714553335210014406 0ustar00jqstafffrom typing import Tuple from ansi.sequence import sequence RGB = Tuple[int, int, int] ANSI_COLOURS = ( (0x00, 0x00, 0x00), (0xcd, 0x00, 0x00), (0x00, 0xcd, 0x00), (0xcd, 0xcd, 0x00), (0x00, 0x00, 0xee), (0xcd, 0x00, 0xcd), (0x00, 0xcd, 0xcd), (0xe5, 0xe5, 0xe5), (0x7f, 0x7f, 0x7f), (0xff, 0x00, 0x00), (0x00, 0xff, 0x00), (0xff, 0xff, 0x00), (0x5c, 0x5c, 0xff), (0xff, 0x00, 0xff), (0x00, 0xff, 0xff), (0xff, 0xff, 0xff), ) def rgb_distance(rgb1: RGB, rgb2: RGB) -> int: """ Calculate the distance between two RGB sequences. """ return sum(map(lambda c: (c[0] - c[1]) ** 2, zip(rgb1, rgb2))) def rgb_reduce(r: int, g: int, b: int, mode: int = 8) -> str: """ Convert an RGB colour to 8 or 16 colour ANSI graphics. Finds the closest color within the 8 or 16 color palette to a given RGB value. """ assert mode in (8, 16), 'Mode has to be 8 or 16, got %r instead.' % mode colours = ANSI_COLOURS[:mode] matches = [(rgb_distance(c, (r, g, b)), i) for i, c in enumerate(colours)] matches.sort() return sequence('m')(str(30 + matches[0][1])) def rgb8(r: int, g: int, b: int) -> str: """ Convert an RGB colour to 8 colour ANSI graphics. Finds the closest color within the 8 color palette to a given RGB value. """ return rgb_reduce(r, g, b, 8) def rgb16(r: int, g: int, b: int) -> str: """ Convert an RGB colour to 16 colour ANSI graphics. Finds the closest color within the 16 color palette to a given RGB value. """ return rgb_reduce(r, g, b, 16) def rgb256(r: int, g: int, b: int, bg: bool=False) -> str: """ Convert an RGB colour to 256 colour ANSI graphics. Finds the closest color within the 256 color palette to a given RGB value. """ grey = False poss = True step = 2.5 while poss: # As long as the colour could be grey scale if r < step or g < step or b < step: grey = r < step and g < step and b < step poss = False step += 42.5 if grey: colour = 232 + int(float(sum([r, g, b]) / 33.0)) else: colour = sum([16] + [int(6 * float(val) / 256) * mod for val, mod in ((r, 36), (g, 6), (b, 1))]) return sequence('m', fields=3)(38 if not bg else 48, 5, colour) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705884085.0 ansi-0.3.7/ansi/cursor.py0000644000076500000240000000105514553334665013650 0ustar00jqstaff#pylint: disable=C0103 from ansi.sequence import sequence # Cursor movement up = sequence('A') down = sequence('B') forward = sequence('C') back = sequence('D') next_line = sequence('E') prev_line = sequence('F') goto_x = sequence('G') goto = sequence('H', 2) erase = sequence('2J') erase_data = erase erase_line = sequence('K') scroll_up = sequence('S') scroll_down = sequence('T') save_cursor = sequence('s') load_cursor = sequence('u') show = sequence('?25h') hide = sequence('?25l') ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1643498863.0 ansi-0.3.7/ansi/iterm.py0000644000076500000240000000161314175346557013456 0ustar00jqstaffimport binascii from typing import Any, Union from ansi.sequence import osc def _b64(data: Union[bytes, str]) -> str: if not isinstance(data, bytes): data = data.encode() return binascii.b2a_base64(data, newline=False).decode() notification = osc(9) def badge(msg: str) -> str: return osc(1337)(SetBadgeFormat=_b64(msg)) def image(data: str, name: str = "unnamed", **kwargs: Any) -> str: kwargs["inline"] = 1 return osc(1337)("File=name=%s" % _b64(name), **kwargs)[:-1] + ':' + _b64(data) + '\a' def cursor(shape: str) -> str: return osc(1337)(CursorShape=shape) def cursorguide(on: Union[bool, str]) -> str: if isinstance(on, bool): on = ['no', 'yes'][on] return osc(1337)(HighlightCursorLine=on) def attention(on: Union[bool, str]) -> str: if isinstance(on, bool): on = ['no', 'yes'][on] return osc(1337)(RequestAttention=on) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1643478040.0 ansi-0.3.7/ansi/osc.py0000644000076500000240000000011414175276030013101 0ustar00jqstafffrom ansi.sequence import osc windowtitle = osc(0) anchor = osc('8;') ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1643498863.0 ansi-0.3.7/ansi/py.typed0000644000076500000240000000000014175346557013450 0ustar00jqstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705876115.0 ansi-0.3.7/ansi/sequence.py0000644000076500000240000000316114553315223014130 0ustar00jqstaffimport sys from typing import Any, List, Optional, TYPE_CHECKING, Union if sys.version_info >= (3, 8): from typing import Protocol else: from typing_extensions import Protocol if TYPE_CHECKING: from ansi.colour.base import Graphic CSI = '\x1b[' OSC = '\x1b]' BEL = '\a' class SequenceGenerator(Protocol): def __call__(self, *vals: Union[int, str, "Graphic"]) -> str: ... def sequence(letter: str, fields: int = 1, default: Optional[List[Union[int, str, "Graphic"]]] = None) -> SequenceGenerator: """Create a function that creates escape sequences.""" def _sequence(*values: Union[int, str, "Graphic"]) -> str: if len(values) == 0: return '' output = list(values) if fields >= 0 and len(output) > fields: raise ValueError('Invalid number of fields, got %d expected %d' % (len(output), fields)) if default is not None: output = output + default[-(fields - len(output)):] return ''.join([ CSI, ';'.join(map(str, output)), letter, ]) return _sequence class OSCGenerator(Protocol): def __call__(*args: str, **kwargs: Any) -> str: ... def osc(number: Union[int, str]) -> OSCGenerator: """Create a function that creates OSC sequences.""" def _osc(*args: str, **kwargs: Any) -> str: key_value_pairs = ["%s=%s" % (k, v) for (k, v) in kwargs.items()] return ''.join([ OSC, str(number), ';', ';'.join(list(args) + key_value_pairs), BEL, ]) return _osc ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1705884679.4693203 ansi-0.3.7/ansi.egg-info/0000755000076500000240000000000014553336007013442 5ustar00jqstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705884679.0 ansi-0.3.7/ansi.egg-info/PKG-INFO0000644000076500000240000000254614553336007014546 0ustar00jqstaffMetadata-Version: 2.1 Name: ansi Version: 0.3.7 Summary: ANSI cursor movement and graphics Home-page: https://github.com/tehmaze/ansi/ Author: Wijnand Modderman-Lenstra Author-email: maze@pyth0n.org License: MIT License Requires-Python: >=3.6 Description-Content-Type: text/markdown License-File: LICENSE.md Requires-Dist: typing_extensions>=3.6.4; python_version < "3.8" ANSI ==== Various ANSI escape codes, used in moving the cursor in a text console or rendering coloured text. Example ------- Print something in bold yellow on a red background: >>> from ansi.colour import fg, bg >>> from ansi.colour.fx import reset >>> msg = (bg.red, fg.yellow, 'Hello world!', reset) >>> print(''.join(map(str, msg))) ... If you like syntactic sugar, you may also do: >>> from ansi.colour import fg, bg >>> print(bg.red(fg.yellow('Hello world!'))) ... Also, 256 RGB colours are supported: >>> from ansi.colour.rgb import rgb256 >>> from ansi.colour.fx import reset >>> msg = (rgb256(0xff, 0x80, 0x00), 'hello world', reset) >>> print(''.join(map(str, msg))) ... If you prefer to use American English instead: >>> from ansi.color import ... References ---------- https://www.ecma-international.org/publications-and-standards/standards/ecma-48/ Requirements ------------ Ansi requires python 3.6 and supports typing. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705884679.0 ansi-0.3.7/ansi.egg-info/SOURCES.txt0000644000076500000240000000065514553336007015334 0ustar00jqstaffCHANGELOG.md LICENSE.md MANIFEST.in README.md pyproject.toml setup.cfg ansi/__init__.py ansi/color.py ansi/cursor.py ansi/iterm.py ansi/osc.py ansi/py.typed ansi/sequence.py ansi.egg-info/PKG-INFO ansi.egg-info/SOURCES.txt ansi.egg-info/dependency_links.txt ansi.egg-info/requires.txt ansi.egg-info/top_level.txt ansi/colour/__init__.py ansi/colour/base.py ansi/colour/bg.py ansi/colour/fg.py ansi/colour/fx.py ansi/colour/rgb.py././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705884679.0 ansi-0.3.7/ansi.egg-info/dependency_links.txt0000644000076500000240000000000114553336007017510 0ustar00jqstaff ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705884679.0 ansi-0.3.7/ansi.egg-info/requires.txt0000644000076500000240000000006414553336007016042 0ustar00jqstaff [:python_version < "3.8"] typing_extensions>=3.6.4 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1705884679.0 ansi-0.3.7/ansi.egg-info/top_level.txt0000644000076500000240000000000514553336007016167 0ustar00jqstaffansi ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1643498863.0 ansi-0.3.7/pyproject.toml0000644000076500000240000000013214175346557013741 0ustar00jqstaff[build-system] requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1705884679.4698946 ansi-0.3.7/setup.cfg0000644000076500000240000000106014553336007012634 0ustar00jqstaff[metadata] name = ansi version = 0.3.7 description = ANSI cursor movement and graphics author = Wijnand Modderman-Lenstra author_email = maze@pyth0n.org long_description = file: README.md long_description_content_type = text/markdown url = https://github.com/tehmaze/ansi/ license = MIT License license_files = LICENSE.md [options] python_requires = >=3.6 packages = ansi, ansi.colour install_requires = typing_extensions>=3.6.4; python_version < "3.8" include_package_data = True [options.package_data] * = py.typed [egg_info] tag_build = tag_date = 0