Coding style.

- Break out termstr, fill3, sorted_collection and lscolors into
  seperate packages and modules.
This commit is contained in:
Andrew Hamilton 2021-10-31 02:21:09 +10:00
parent 8746f578da
commit 2335dec922
18 changed files with 92 additions and 89 deletions

View file

@ -36,13 +36,13 @@ import pygments.styles
import pyinotify import pyinotify
import eris import eris
import eris.fill3 as fill3
import eris.sorted_collection as sorted_collection
import eris.terminal as terminal
import eris.termstr as termstr
import eris.tools as tools import eris.tools as tools
import eris.worker as worker import eris.worker as worker
import eris.paged_list as paged_list import eris.paged_list as paged_list
import fill3
import sorted_collection
import termstr.termstr as termstr
import termstr.terminal as terminal
USAGE = """ USAGE = """

View file

@ -4,13 +4,13 @@
import pydoc import pydoc
import sys import sys
import eris.termstr import termstr.termstr as termstr
class TermDoc(pydoc.TextDoc): class TermDoc(pydoc.TextDoc):
def bold(self, text): def bold(self, text):
return str(eris.termstr.TermStr(text).bold()) return str(termstr.TermStr(text).bold())
def main(): def main():

View file

@ -29,9 +29,9 @@ import pygments.styles
import toml import toml
import eris import eris
import eris.fill3 as fill3 import fill3
import eris.lscolors as lscolors import lscolors
import eris.termstr as termstr import termstr.termstr as termstr
PYTHON_VERSION = "3.9" PYTHON_VERSION = "3.9"

View file

@ -7,8 +7,8 @@ import os
import sys import sys
import pickle import pickle
import eris.fill3 as fill3
import eris.tools as tools import eris.tools as tools
import fill3
USAGE = """Usage: USAGE = """Usage:

View file

@ -6,9 +6,9 @@ import contextlib
import os import os
import signal import signal
import eris.fill3 as fill3
import eris.tools as tools import eris.tools as tools
import eris.paged_list import eris.paged_list
import fill3
class Worker: class Worker:

View file

@ -9,8 +9,8 @@ import os
import signal import signal
import sys import sys
import eris.terminal as terminal import termstr.terminal as terminal
import eris.termstr as termstr import termstr.termstr as termstr
def appearance_is_valid(appearance): def appearance_is_valid(appearance):

View file

@ -14,7 +14,8 @@ setup(name="eris",
url="https://github.com/ahamilton/eris", url="https://github.com/ahamilton/eris",
author="Andrew Hamilton", author="Andrew Hamilton",
license="Artistic 2.0", license="Artistic 2.0",
packages=["eris"], packages=["eris", "termstr"],
py_modules=["fill3", "lscolors", "sorted_collection"],
package_data={"eris": ["LS_COLORS.sh", "tools.toml"]}, package_data={"eris": ["LS_COLORS.sh", "tools.toml"]},
entry_points={"console_scripts": entry_points={"console_scripts":
["eris=eris.__main__:entry_point", ["eris=eris.__main__:entry_point",

0
termstr/__init__.py Normal file
View file

View file

@ -10,16 +10,16 @@ import weakref
import pygments.formatters.terminal256 import pygments.formatters.terminal256
import cwcwidth import cwcwidth
import eris.ColorMap import termstr.ColorMap
import eris.terminal as terminal import termstr.terminal as terminal
xterm_colormap = eris.ColorMap.XTermColorMap() xterm_colormap = termstr.ColorMap.XTermColorMap()
@functools.lru_cache() @functools.lru_cache()
def xterm_color_to_rgb(color_index): def xterm_color_to_rgb(color_index):
return eris.ColorMap._rgb(xterm_colormap.colors[color_index]) return termstr.ColorMap._rgb(xterm_colormap.colors[color_index])
class Color: class Color:

View file

@ -12,8 +12,8 @@ import unittest
os.environ["TERM"] = "xterm-256color" os.environ["TERM"] = "xterm-256color"
import golden import golden
import eris.fill3 as fill3
import eris.__main__ as __main__ import eris.__main__ as __main__
import fill3
_DIMENSIONS = (100, 60) _DIMENSIONS = (100, 60)

View file

@ -4,7 +4,7 @@
import unittest import unittest
import eris.fill3 as fill3 import fill3
class WidgetTests(unittest.TestCase): class WidgetTests(unittest.TestCase):

View file

@ -10,7 +10,7 @@ import subprocess
import tempfile import tempfile
import unittest import unittest
import eris.lscolors as lscolors import lscolors
class TempDirTestCase(unittest.TestCase): class TempDirTestCase(unittest.TestCase):

View file

@ -7,15 +7,15 @@ import unittest
os.environ["TERM"] = "xterm-256color" os.environ["TERM"] = "xterm-256color"
import eris.terminal import termstr.terminal as terminal
from eris.termstr import TermStr, CharStyle from termstr.termstr import TermStr, CharStyle
import eris.termstr as termstr import termstr.termstr as termstr
class CharStyleTests(unittest.TestCase): class CharStyleTests(unittest.TestCase):
def setUp(self): def setUp(self):
self.style = CharStyle() self.style = termstr.CharStyle()
def test_default_char_style(self): def test_default_char_style(self):
self.assertEqual(self.style.fg_color, termstr.Color.white) self.assertEqual(self.style.fg_color, termstr.Color.white)
@ -24,7 +24,7 @@ class CharStyleTests(unittest.TestCase):
self.assertEqual(self.style.is_underlined, False) self.assertEqual(self.style.is_underlined, False)
def test_pickle_char_style(self): def test_pickle_char_style(self):
style = CharStyle() style = termstr.CharStyle()
loaded_style = pickle.loads(pickle.dumps(style)) loaded_style = pickle.loads(pickle.dumps(style))
self.assertEqual(style, loaded_style) self.assertEqual(style, loaded_style)
self.assertTrue(style is loaded_style) self.assertTrue(style is loaded_style)
@ -41,15 +41,15 @@ class CharStyleTests(unittest.TestCase):
class TermStrTests(unittest.TestCase): class TermStrTests(unittest.TestCase):
def test_termstr(self): def test_termstr(self):
foo = TermStr("foo") foo = termstr.TermStr("foo")
foobar = TermStr("foobar") foobar = termstr.TermStr("foobar")
bold_style = CharStyle(3, 5, is_bold=True) bold_style = termstr.CharStyle(3, 5, is_bold=True)
foo_bold = TermStr("foo", bold_style) foo_bold = termstr.TermStr("foo", bold_style)
self.assertEqual(repr(foo_bold), "<TermStr: 'foo'>") self.assertEqual(repr(foo_bold), "<TermStr: 'foo'>")
self.assertEqual(foo + "bar", TermStr("foobar")) self.assertEqual(foo + "bar", TermStr("foobar"))
self.assertEqual(foo + TermStr("bar"), self.assertEqual(foo + termstr.TermStr("bar"),
TermStr("foobar")) termstr.TermStr("foobar"))
self.assertEqual("bar" + foo, TermStr("barfoo")) self.assertEqual("bar" + foo, termstr.TermStr("barfoo"))
self.assertFalse(foo == foo_bold) self.assertFalse(foo == foo_bold)
self.assertFalse(foo_bold == foo) self.assertFalse(foo_bold == foo)
self.assertFalse("foo" == foo_bold) self.assertFalse("foo" == foo_bold)
@ -58,96 +58,98 @@ class TermStrTests(unittest.TestCase):
self.assertTrue(foo != foo_bold) self.assertTrue(foo != foo_bold)
self.assertFalse(foo_bold == "foo") self.assertFalse(foo_bold == "foo")
self.assertTrue(foo_bold != "food") self.assertTrue(foo_bold != "food")
self.assertEqual(foobar[:2], TermStr("fo")) self.assertEqual(foobar[:2], termstr.TermStr("fo"))
self.assertEqual(foobar[2:], TermStr("obar")) self.assertEqual(foobar[2:], termstr.TermStr("obar"))
self.assertEqual(foobar[::2], TermStr("foa")) self.assertEqual(foobar[::2], termstr.TermStr("foa"))
self.assertEqual(foobar[3], TermStr("b")) self.assertEqual(foobar[3], termstr.TermStr("b"))
self.assertEqual(foo_bold[1], TermStr("o", bold_style)) self.assertEqual(foo_bold[1], termstr.TermStr("o", bold_style))
self.assertTrue(foo.startswith("fo")) self.assertTrue(foo.startswith("fo"))
self.assertTrue(foo.endswith("oo")) self.assertTrue(foo.endswith("oo"))
self.assertEqual(foo.index("o"), 1) self.assertEqual(foo.index("o"), 1)
self.assertTrue("fo" in foo) self.assertTrue("fo" in foo)
self.assertEqual(foo.find("oo"), 1) self.assertEqual(foo.find("oo"), 1)
self.assertEqual(TermStr("fo") * 2, TermStr("fofo")) self.assertEqual(termstr.TermStr("fo") * 2, termstr.TermStr("fofo"))
self.assertEqual(2 * TermStr("fo"), TermStr("fofo")) self.assertEqual(2 * termstr.TermStr("fo"), termstr.TermStr("fofo"))
self.assertEqual(foobar.split("b"), [TermStr("foo"), self.assertEqual(foobar.split("b"), [termstr.TermStr("foo"),
TermStr("ar")]) termstr.TermStr("ar")])
self.assertEqual(foo.join(["C", "D"]), TermStr("CfooD")) self.assertEqual(foo.join(["C", "D"]), termstr.TermStr("CfooD"))
self.assertEqual(foo.join(["C", TermStr("D")]), self.assertEqual(foo.join(["C", termstr.TermStr("D")]),
TermStr("CfooD")) termstr.TermStr("CfooD"))
self.assertEqual(foo.join([]), TermStr("")) self.assertEqual(foo.join([]), termstr.TermStr(""))
self.assertEqual(foo.join(["C"]), TermStr("C")) self.assertEqual(foo.join(["C"]), termstr.TermStr("C"))
bar = TermStr("bar", bold_style) bar = termstr.TermStr("bar", bold_style)
self.assertEqual((foo + "\n" + bar).splitlines(), [foo, bar]) self.assertEqual((foo + "\n" + bar).splitlines(), [foo, bar])
self.assertEqual((foo + "\r\n" + bar).splitlines(), [foo, bar]) self.assertEqual((foo + "\r\n" + bar).splitlines(), [foo, bar])
self.assertEqual((foo + "\n" + bar).splitlines(keepends=True), self.assertEqual((foo + "\n" + bar).splitlines(keepends=True),
[TermStr("foo\n"), bar]) [termstr.TermStr("foo\n"), bar])
self.assertEqual((foo + "\r\n" + bar).splitlines(keepends=True), self.assertEqual((foo + "\r\n" + bar).splitlines(keepends=True),
[TermStr("foo\r\n"), bar]) [termstr.TermStr("foo\r\n"), bar])
self.assertEqual(foo.ljust(5), foo + TermStr(" ")) self.assertEqual(foo.ljust(5), foo + termstr.TermStr(" "))
self.assertEqual(foo.rjust(5), TermStr(" ") + foo) self.assertEqual(foo.rjust(5), termstr.TermStr(" ") + foo)
self.assertEqual(TermStr("FOO").lower(), foo) self.assertEqual(termstr.TermStr("FOO").lower(), foo)
self.assertEqual(TermStr("FOO", bold_style).lower(), foo_bold) self.assertEqual(termstr.TermStr("FOO", bold_style).lower(), foo_bold)
self.assertEqual(TermStr("FOO").swapcase(), foo) self.assertEqual(termstr.TermStr("FOO").swapcase(), foo)
self.assertEqual(TermStr("FOO", bold_style).swapcase(), foo_bold) self.assertEqual(termstr.TermStr("FOO", bold_style).swapcase(), foo_bold)
phrase = TermStr("foo bar") phrase = termstr.TermStr("foo bar")
self.assertEqual(phrase.title(), TermStr("Foo Bar")) self.assertEqual(phrase.title(), termstr.TermStr("Foo Bar"))
self.assertEqual(phrase.capitalize(), TermStr("Foo bar")) self.assertEqual(phrase.capitalize(), termstr.TermStr("Foo bar"))
self.assertEqual(foo.upper(), TermStr("FOO")) self.assertEqual(foo.upper(), termstr.TermStr("FOO"))
self.assertEqual(foo_bold.center(0), foo_bold) self.assertEqual(foo_bold.center(0), foo_bold)
self.assertEqual(foo_bold.center(7), self.assertEqual(foo_bold.center(7),
TermStr(" ") + foo_bold + TermStr(" ")) termstr.TermStr(" ") + foo_bold + termstr.TermStr(" "))
self.assertEqual(foo_bold.ljust(0), foo_bold) self.assertEqual(foo_bold.ljust(0), foo_bold)
self.assertEqual(foo_bold.ljust(5), foo_bold + TermStr(" ")) self.assertEqual(foo_bold.ljust(5), foo_bold + termstr.TermStr(" "))
self.assertEqual(foo_bold.rjust(0), foo_bold) self.assertEqual(foo_bold.rjust(0), foo_bold)
self.assertEqual(foo_bold.rjust(5), TermStr(" ") + foo_bold) self.assertEqual(foo_bold.rjust(5), termstr.TermStr(" ") + foo_bold)
baz = TermStr("b👋z") baz = termstr.TermStr("b👋z")
self.assertEqual(len(baz), 4) self.assertEqual(len(baz), 4)
self.assertEqual(baz[3:], TermStr("z")) self.assertEqual(baz[3:], termstr.TermStr("z"))
self.assertEqual(baz[:2], TermStr("b ")) self.assertEqual(baz[:2], termstr.TermStr("b "))
self.assertEqual(baz[2:], TermStr(" z")) self.assertEqual(baz[2:], termstr.TermStr(" z"))
def test_from_term(self): def test_from_term(self):
def test_round_trip(term_str): def test_round_trip(term_str):
self.assertEqual(TermStr.from_term(str(term_str)), term_str) self.assertEqual(termstr.TermStr.from_term(str(term_str)), term_str)
test_round_trip(TermStr("foo")) test_round_trip(termstr.TermStr("foo"))
test_round_trip(TermStr("foo").bold()) test_round_trip(termstr.TermStr("foo").bold())
test_round_trip(TermStr("foo").underline()) test_round_trip(termstr.TermStr("foo").underline())
test_round_trip(TermStr("foo").italic()) test_round_trip(termstr.TermStr("foo").italic())
test_round_trip(termstr.TermStr("foo").fg_color(termstr.Color.red)) test_round_trip(termstr.TermStr("foo").fg_color(termstr.Color.red))
test_round_trip(termstr.TermStr("foo").fg_color(termstr.Color.red).\ test_round_trip(termstr.TermStr("foo").fg_color(termstr.Color.red).\
bg_color(termstr.Color.green)) bg_color(termstr.Color.green))
test_round_trip(termstr.TermStr("foo").fg_color(1)) test_round_trip(termstr.TermStr("foo").fg_color(1))
test_round_trip(termstr.TermStr("foo").bg_color(10)) test_round_trip(termstr.TermStr("foo").bg_color(10))
self.assertEqual(TermStr.from_term("foo"), termstr.TermStr("foo")) self.assertEqual(
self.assertEqual(TermStr.from_term(eris.terminal.ESC + "[33mfoo"), termstr.TermStr.from_term("foo"), termstr.TermStr("foo"))
self.assertEqual(termstr.TermStr.from_term(terminal.ESC + "[33mfoo"),
termstr.TermStr("foo").fg_color(3)) termstr.TermStr("foo").fg_color(3))
self.assertEqual(TermStr.from_term(eris.terminal.ESC + "[45mfoo"), self.assertEqual(termstr.TermStr.from_term(terminal.ESC + "[45mfoo"),
termstr.TermStr("foo").bg_color(5)) termstr.TermStr("foo").bg_color(5))
self.assertEqual(TermStr.from_term(eris.terminal.ESC + "[45mfoo" + self.assertEqual(termstr.TermStr.from_term(terminal.ESC + "[45mfoo" +
eris.terminal.ESC + "[mbar"), terminal.ESC + "[mbar"),
termstr.TermStr("foo").bg_color(5) + termstr.TermStr("foo").bg_color(5) +
termstr.TermStr("bar")) termstr.TermStr("bar"))
self.assertEqual(TermStr.from_term(eris.terminal.ESC + "[45mfoo" + self.assertEqual(termstr.TermStr.from_term(terminal.ESC + "[45mfoo" +
eris.terminal.ESC + "[0mbar"), terminal.ESC + "[0mbar"),
termstr.TermStr("foo").bg_color(5) + termstr.TermStr("foo").bg_color(5) +
termstr.TermStr("bar")) termstr.TermStr("bar"))
self.assertEqual(TermStr.from_term(eris.terminal.ESC + "[1;3mfoo"), self.assertEqual(termstr.TermStr.from_term(terminal.ESC + "[1;3mfoo"),
termstr.TermStr("foo").bold().italic()) termstr.TermStr("foo").bold().italic())
self.assertEqual(TermStr.from_term(eris.terminal.ESC + "[01mfoo"), self.assertEqual(termstr.TermStr.from_term(terminal.ESC + "[01mfoo"),
termstr.TermStr("foo").bold()) termstr.TermStr("foo").bold())
self.assertEqual(TermStr.from_term(eris.terminal.ESC + "[Kfoo"), self.assertEqual(termstr.TermStr.from_term(terminal.ESC + "[Kfoo"),
termstr.TermStr("foo")) termstr.TermStr("foo"))
self.assertEqual(TermStr.from_term(eris.terminal.ESC + "[95mfoo"), self.assertEqual(termstr.TermStr.from_term(terminal.ESC + "[95mfoo"),
termstr.TermStr("foo").fg_color(13)) termstr.TermStr("foo").fg_color(13))
self.assertEqual(TermStr.from_term(eris.terminal.ESC + "[105mfoo"), self.assertEqual(termstr.TermStr.from_term(terminal.ESC + "[105mfoo"),
termstr.TermStr("foo").bg_color(13)) termstr.TermStr("foo").bg_color(13))
self.assertEqual(TermStr.from_term(eris.terminal.ESC + "(B" + self.assertEqual(termstr.TermStr.from_term(terminal.ESC + "(B" +
eris.terminal.ESC + "[mfoo"), terminal.ESC + "[mfoo"),
termstr.TermStr("foo"))
self.assertEqual(TermStr.from_term(eris.terminal.ESC + "39;49;00mfoo"),
termstr.TermStr("foo")) termstr.TermStr("foo"))
self.assertEqual(
termstr.TermStr.from_term(terminal.ESC + "39;49;00mfoo"),
termstr.TermStr("foo"))
if __name__ == "__main__": if __name__ == "__main__":

View file

@ -10,8 +10,8 @@ import unittest.mock
os.environ["TERM"] = "xterm-256color" os.environ["TERM"] = "xterm-256color"
import golden import golden
import eris.fill3 as fill3
import eris.tools as tools import eris.tools as tools
import fill3
os.environ["TZ"] = "GMT" os.environ["TZ"] = "GMT"