From 0a55c64551eb1c5a06c9245c253219d1861eaa58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Mart=C3=ADnez=20Portela?= Date: Sun, 18 Aug 2024 22:30:18 +0200 Subject: [PATCH 1/5] test: Add formatting check to CI/CD. --- .gitea/workflows/tests.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.gitea/workflows/tests.yaml b/.gitea/workflows/tests.yaml index ee49a29..0e8a583 100644 --- a/.gitea/workflows/tests.yaml +++ b/.gitea/workflows/tests.yaml @@ -23,6 +23,16 @@ jobs: - run: pip install mypy - run: mypy org_rw --check-untyped-defs + style-formatting: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - run: apt-get update && apt-get install -y python3-pip + - run: pip install -e . + - run: pip install black + - run: black --check . + stability-extra-test: runs-on: ubuntu-latest steps: From 8ca480ad77c4eb2a31b09ba8a8722fcf02f49bc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Mart=C3=ADnez=20Portela?= Date: Sun, 18 Aug 2024 22:44:00 +0200 Subject: [PATCH 2/5] fix: Apply `black` formatter. --- org_rw/dom.py | 41 +++++++++++++++++++++++---------------- org_rw/utils.py | 15 ++++++++++++-- tests/test_org.py | 20 +++++++++---------- tests/utils/assertions.py | 13 +++++++++++-- 4 files changed, 58 insertions(+), 31 deletions(-) diff --git a/org_rw/dom.py b/org_rw/dom.py index cd8d63b..f9ed40f 100644 --- a/org_rw/dom.py +++ b/org_rw/dom.py @@ -41,11 +41,12 @@ class ListGroupNode: self.children.append(child) def get_raw(self): - return '\n'.join([c.get_raw() for c in self.children]) + return "\n".join([c.get_raw() for c in self.children]) def __repr__(self): return "".format(len(self.children)) + class TableNode: def __init__(self): self.children = [] @@ -56,21 +57,24 @@ class TableNode: def __repr__(self): return "".format(len(self.children)) + class TableSeparatorRow: def __init__(self, orig=None): self.orig = orig + class TableRow: def __init__(self, cells, orig=None): self.cells = cells self.orig = orig + class Text: def __init__(self, content): self.content = content def get_raw(self): - return ''.join(self.content.get_raw()) + return "".join(self.content.get_raw()) class ListItem: @@ -105,21 +109,24 @@ class CodeBlock(BlockNode): def __repr__(self): return "".format(len(self.lines or [])) -DomNode = Union[DrawerNode, - PropertyNode, - ListGroupNode, - TableNode, - TableSeparatorRow, - TableRow, - Text, - ListItem, - BlockNode, - ] -ContainerDomNode = Union[DrawerNode, - ListGroupNode, - TableNode, - BlockNode, - ] +DomNode = Union[ + DrawerNode, + PropertyNode, + ListGroupNode, + TableNode, + TableSeparatorRow, + TableRow, + Text, + ListItem, + BlockNode, +] + +ContainerDomNode = Union[ + DrawerNode, + ListGroupNode, + TableNode, + BlockNode, +] from .utils import get_raw_contents diff --git a/org_rw/utils.py b/org_rw/utils.py index 0e6f559..405c62b 100644 --- a/org_rw/utils.py +++ b/org_rw/utils.py @@ -1,7 +1,18 @@ import uuid -from .org_rw import (Bold, Code, Headline, Italic, Line, RawLine, ListItem, Strike, Text, - Underlined, Verbatim) +from .org_rw import ( + Bold, + Code, + Headline, + Italic, + Line, + RawLine, + ListItem, + Strike, + Text, + Underlined, + Verbatim, +) from .org_rw import dump_contents diff --git a/tests/test_org.py b/tests/test_org.py index e49c6cf..97b8a04 100644 --- a/tests/test_org.py +++ b/tests/test_org.py @@ -834,12 +834,12 @@ class TestSerde(unittest.TestCase): self.assertEqual(dumps(doc), orig) def test_add_todo_keywords_programatically(self): - orig = '''* NEW_TODO_STATE First entry + orig = """* NEW_TODO_STATE First entry -* NEW_DONE_STATE Second entry''' - doc = loads(orig, environment={ - 'org-todo-keywords': "NEW_TODO_STATE | NEW_DONE_STATE" - }) +* NEW_DONE_STATE Second entry""" + doc = loads( + orig, environment={"org-todo-keywords": "NEW_TODO_STATE | NEW_DONE_STATE"} + ) self.assertEqual(doc.headlines[0].is_todo, True) self.assertEqual(doc.headlines[0].is_done, False) @@ -849,14 +849,14 @@ class TestSerde(unittest.TestCase): self.assertEqual(dumps(doc), orig) def test_add_todo_keywords_in_file(self): - orig = '''#+TODO: NEW_TODO_STATE | NEW_DONE_STATE + orig = """#+TODO: NEW_TODO_STATE | NEW_DONE_STATE * NEW_TODO_STATE First entry -* NEW_DONE_STATE Second entry''' - doc = loads(orig, environment={ - 'org-todo-keywords': "NEW_TODO_STATE | NEW_DONE_STATE" - }) +* NEW_DONE_STATE Second entry""" + doc = loads( + orig, environment={"org-todo-keywords": "NEW_TODO_STATE | NEW_DONE_STATE"} + ) self.assertEqual(doc.headlines[0].is_todo, True) self.assertEqual(doc.headlines[0].is_done, False) diff --git a/tests/utils/assertions.py b/tests/utils/assertions.py index 59dc658..9012d49 100644 --- a/tests/utils/assertions.py +++ b/tests/utils/assertions.py @@ -2,8 +2,17 @@ import collections import unittest from datetime import datetime -from org_rw import (Bold, Code, Italic, Line, Strike, Text, Underlined, - Verbatim, get_raw_contents) +from org_rw import ( + Bold, + Code, + Italic, + Line, + Strike, + Text, + Underlined, + Verbatim, + get_raw_contents, +) def timestamp_to_datetime(ts): From c6d8575ae5533c110a2bbf6ea3e75a4fb0b8800c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Mart=C3=ADnez=20Portela?= Date: Sun, 18 Aug 2024 22:47:42 +0200 Subject: [PATCH 3/5] test: Test sorted imports. --- .gitea/workflows/tests.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.gitea/workflows/tests.yaml b/.gitea/workflows/tests.yaml index 0e8a583..f56a490 100644 --- a/.gitea/workflows/tests.yaml +++ b/.gitea/workflows/tests.yaml @@ -33,6 +33,16 @@ jobs: - run: pip install black - run: black --check . + style-sorted-imports: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - run: apt-get update && apt-get install -y python3-pip + - run: pip install -e . + - run: pip install isort + - run: isort --profile black --check . + stability-extra-test: runs-on: ubuntu-latest steps: From 66b42e0b961e7236a9ea6b5908c31468c892fd01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Mart=C3=ADnez=20Portela?= Date: Sun, 18 Aug 2024 22:49:06 +0200 Subject: [PATCH 4/5] feat: Add script to apply formatting tools. --- scripts/apply-formatting.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100755 scripts/apply-formatting.sh diff --git a/scripts/apply-formatting.sh b/scripts/apply-formatting.sh new file mode 100755 index 0000000..2f7486b --- /dev/null +++ b/scripts/apply-formatting.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -eu + +cd "`dirname $0`" +cd .. + +set -x + +isort --profile black . +black . From e991074346f6f2072f0272082c20c49133548f17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Mart=C3=ADnez=20Portela?= Date: Sun, 18 Aug 2024 22:49:33 +0200 Subject: [PATCH 5/5] fix: Apply import sorting. --- org_rw/org_rw.py | 20 ++++++++++++++------ org_rw/utils.py | 5 ++--- tests/test_org.py | 6 +++--- tests/test_timestamp.py | 4 +++- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/org_rw/org_rw.py b/org_rw/org_rw.py index cefbe5e..970f641 100644 --- a/org_rw/org_rw.py +++ b/org_rw/org_rw.py @@ -1,6 +1,5 @@ from __future__ import annotations -from typing import Dict, Optional, TextIO -from datetime import timedelta + import collections import difflib import logging @@ -9,12 +8,21 @@ import re import sys from datetime import date, datetime, timedelta from enum import Enum -from typing import cast, Iterator, List, Literal, Optional, Tuple, TypedDict, Union - -from .types import HeadlineDict +from typing import ( + Dict, + Iterator, + List, + Literal, + Optional, + TextIO, + Tuple, + TypedDict, + Union, + cast, +) from . import dom - +from .types import HeadlineDict DEBUG_DIFF_CONTEXT = 10 diff --git a/org_rw/utils.py b/org_rw/utils.py index 405c62b..5b8b4e5 100644 --- a/org_rw/utils.py +++ b/org_rw/utils.py @@ -6,16 +6,15 @@ from .org_rw import ( Headline, Italic, Line, - RawLine, ListItem, + RawLine, Strike, Text, Underlined, Verbatim, + dump_contents, ) -from .org_rw import dump_contents - def get_hl_raw_contents(doc: Headline) -> str: lines = [] diff --git a/tests/test_org.py b/tests/test_org.py index 97b8a04..6a54395 100644 --- a/tests/test_org.py +++ b/tests/test_org.py @@ -2,9 +2,6 @@ import os import unittest from datetime import datetime as DT -from org_rw import MarkerToken, MarkerType, Timestamp, dumps, load, loads, dom -import org_rw - from utils.assertions import ( BOLD, CODE, @@ -19,6 +16,9 @@ from utils.assertions import ( Tokens, ) +import org_rw +from org_rw import MarkerToken, MarkerType, Timestamp, dom, dumps, load, loads + DIR = os.path.dirname(os.path.abspath(__file__)) diff --git a/tests/test_timestamp.py b/tests/test_timestamp.py index 7d69d13..f7e0eca 100644 --- a/tests/test_timestamp.py +++ b/tests/test_timestamp.py @@ -1,7 +1,9 @@ """Test the Timestamp object.""" -import pytest from datetime import date, datetime + +import pytest + from org_rw import Timestamp