kanban-python 0.5.2__tar.gz → 0.6.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. {kanban_python-0.5.2 → kanban_python-0.6.1}/.pre-commit-config.yaml +1 -1
  2. {kanban_python-0.5.2 → kanban_python-0.6.1}/CHANGELOG.md +6 -0
  3. {kanban_python-0.5.2 → kanban_python-0.6.1}/PKG-INFO +8 -1
  4. {kanban_python-0.5.2 → kanban_python-0.6.1}/README.md +7 -0
  5. {kanban_python-0.5.2 → kanban_python-0.6.1}/pyproject.toml +3 -3
  6. {kanban_python-0.5.2 → kanban_python-0.6.1}/src/kanban_python/app.py +6 -0
  7. {kanban_python-0.5.2 → kanban_python-0.6.1}/src/kanban_python/config.py +2 -2
  8. {kanban_python-0.5.2 → kanban_python-0.6.1}/src/kanban_python/controls.py +5 -3
  9. {kanban_python-0.5.2 → kanban_python-0.6.1}/src/kanban_python/utils.py +2 -2
  10. {kanban_python-0.5.2 → kanban_python-0.6.1}/tests/test_utils.py +1 -1
  11. kanban_python-0.6.1/uv.lock +818 -0
  12. kanban_python-0.5.2/uv.lock +0 -444
  13. {kanban_python-0.5.2 → kanban_python-0.6.1}/.coveragerc +0 -0
  14. {kanban_python-0.5.2 → kanban_python-0.6.1}/.github/workflows/ci.yml +0 -0
  15. {kanban_python-0.5.2 → kanban_python-0.6.1}/.gitignore +0 -0
  16. {kanban_python-0.5.2 → kanban_python-0.6.1}/.python-version +0 -0
  17. {kanban_python-0.5.2 → kanban_python-0.6.1}/AUTHORS.md +0 -0
  18. {kanban_python-0.5.2 → kanban_python-0.6.1}/LICENSE.txt +0 -0
  19. {kanban_python-0.5.2 → kanban_python-0.6.1}/images/image_config.PNG +0 -0
  20. {kanban_python-0.5.2 → kanban_python-0.6.1}/images/image_header.PNG +0 -0
  21. {kanban_python-0.5.2 → kanban_python-0.6.1}/images/image_kanban.PNG +0 -0
  22. {kanban_python-0.5.2 → kanban_python-0.6.1}/images/image_kanban_change.PNG +0 -0
  23. {kanban_python-0.5.2 → kanban_python-0.6.1}/images/image_kanban_configure.PNG +0 -0
  24. {kanban_python-0.5.2 → kanban_python-0.6.1}/images/image_kanban_init.PNG +0 -0
  25. {kanban_python-0.5.2 → kanban_python-0.6.1}/images/image_kanban_report.PNG +0 -0
  26. {kanban_python-0.5.2 → kanban_python-0.6.1}/images/image_kanban_report_document.PNG +0 -0
  27. {kanban_python-0.5.2 → kanban_python-0.6.1}/images/image_scan_table.PNG +0 -0
  28. {kanban_python-0.5.2 → kanban_python-0.6.1}/images/image_scan_view.PNG +0 -0
  29. {kanban_python-0.5.2 → kanban_python-0.6.1}/images/image_task_example.PNG +0 -0
  30. {kanban_python-0.5.2 → kanban_python-0.6.1}/src/kanban_python/__init__.py +0 -0
  31. {kanban_python-0.5.2 → kanban_python-0.6.1}/src/kanban_python/cli_parser.py +0 -0
  32. {kanban_python-0.5.2 → kanban_python-0.6.1}/src/kanban_python/constants.py +0 -0
  33. {kanban_python-0.5.2 → kanban_python-0.6.1}/src/kanban_python/interface.py +0 -0
  34. {kanban_python-0.5.2 → kanban_python-0.6.1}/tests/conftest.py +0 -0
  35. {kanban_python-0.5.2 → kanban_python-0.6.1}/tests/test_config.py +0 -0
  36. {kanban_python-0.5.2 → kanban_python-0.6.1}/tests/test_interface.py +0 -0
@@ -13,7 +13,7 @@ repos:
13
13
 
14
14
  - repo: https://github.com/astral-sh/ruff-pre-commit
15
15
  # Ruff version.
16
- rev: v0.9.1
16
+ rev: v0.11.0
17
17
  hooks:
18
18
  # Run the linter.
19
19
  - id: ruff
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## Version 0.6.1
4
+ - Fix encoding to use utf-8 in all file operations
5
+
6
+ ## Version 0.6.0
7
+ - Added proper console clear, to prevent multiple board versions being in view
8
+
3
9
  ## Version 0.5.2
4
10
  - Fix `kanban report` path error if no `-P`-flag provided, with default path
5
11
  - Fix `kanban scan` path error if no `-P`-flag provided, with default path
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kanban-python
3
- Version: 0.5.2
3
+ Version: 0.6.1
4
4
  Summary: Terminal Kanban App written in Python
5
5
  Project-URL: Repository, https://github.com/Zaloog/kanban-python
6
6
  Project-URL: Changelog, https://github.com/Zaloog/kanban-python/blob/main/CHANGELOG.md
@@ -66,6 +66,10 @@ Description-Content-Type: text/markdown
66
66
  > A Terminal Kanban Application written in Python to boost your productivity :rocket:
67
67
 
68
68
  ## Introduction
69
+ > Note: I am no longer actively working on this project (besides bug fixes),
70
+ you might take a look at the next iteration [kanban-tui],
71
+ which offers a better kanban experience with a full TUI build with [textual]
72
+
69
73
  Welcome to **kanban-python**, your Terminal Kanban-Board Manager.
70
74
 
71
75
  ![header](https://raw.githubusercontent.com/Zaloog/kanban-python/main/images/image_header.PNG)
@@ -253,3 +257,6 @@ needed to continue working with your already created boards if you update from `
253
257
  [pipx]: https://github.com/pypa/pipx
254
258
  [uv]: https://docs.astral.sh/uv/
255
259
  [rye]: https://rye.astral.sh
260
+
261
+ [kanban-tui]: https://github.com/Zaloog/kanban-tui
262
+ [textual]: https://textual.textualize.io/
@@ -21,6 +21,10 @@
21
21
  > A Terminal Kanban Application written in Python to boost your productivity :rocket:
22
22
 
23
23
  ## Introduction
24
+ > Note: I am no longer actively working on this project (besides bug fixes),
25
+ you might take a look at the next iteration [kanban-tui],
26
+ which offers a better kanban experience with a full TUI build with [textual]
27
+
24
28
  Welcome to **kanban-python**, your Terminal Kanban-Board Manager.
25
29
 
26
30
  ![header](https://raw.githubusercontent.com/Zaloog/kanban-python/main/images/image_header.PNG)
@@ -208,3 +212,6 @@ needed to continue working with your already created boards if you update from `
208
212
  [pipx]: https://github.com/pypa/pipx
209
213
  [uv]: https://docs.astral.sh/uv/
210
214
  [rye]: https://rye.astral.sh
215
+
216
+ [kanban-tui]: https://github.com/Zaloog/kanban-tui
217
+ [textual]: https://textual.textualize.io/
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kanban-python"
3
- version = "0.5.2"
3
+ version = "0.6.1"
4
4
  description = "Terminal Kanban App written in Python"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -41,8 +41,8 @@ build-backend = "hatchling.build"
41
41
  addopts = "--cov src/kanban_python --cov-report term-missing --verbose --color=yes"
42
42
  testpaths = ["tests"]
43
43
 
44
- [tool.uv]
45
- dev-dependencies = [
44
+ [dependency-groups]
45
+ dev = [
46
46
  "freezegun>=1.5.1",
47
47
  "pre-commit>=4.0.1",
48
48
  "pytest>=8.3.3",
@@ -26,6 +26,7 @@ def main(args):
26
26
 
27
27
  if args.command == "configure":
28
28
  controls.change_settings()
29
+ utils.console.clear()
29
30
 
30
31
  if args.command == "scan":
31
32
  controls.add_todos_to_board(path=Path(args.path) or Path.cwd())
@@ -42,16 +43,21 @@ def main(args):
42
43
 
43
44
  if user_input == 1:
44
45
  controls.add_new_task_to_db()
46
+ utils.console.clear()
45
47
  elif user_input == 2:
46
48
  controls.update_task_from_db()
49
+ utils.console.clear()
47
50
  elif user_input == 3:
48
51
  controls.change_kanban_board()
52
+ utils.console.clear()
49
53
  elif user_input == 4:
50
54
  controls.show_tasks()
51
55
  elif user_input == 5:
52
56
  controls.delete_kanban_board()
57
+ utils.console.clear()
53
58
  elif user_input == 6:
54
59
  controls.change_settings()
60
+ utils.console.clear()
55
61
 
56
62
 
57
63
  def run():
@@ -32,7 +32,7 @@ class KanbanConfig:
32
32
  return output
33
33
 
34
34
  def save(self):
35
- with open(self.configpath, "w") as configfile:
35
+ with open(self.configpath, "w", encoding="utf-8") as configfile:
36
36
  self.config.write(configfile)
37
37
 
38
38
  @property
@@ -153,7 +153,7 @@ def create_init_config(conf_path=CONFIG_PATH, data_path=DATA_PATH):
153
153
  data_path.mkdir(exist_ok=True)
154
154
  (data_path / KANBAN_BOARDS_FOLDER_NAME).mkdir(exist_ok=True)
155
155
 
156
- with open(conf_path / CONFIG_FILE_NAME, "w") as configfile:
156
+ with open(conf_path / CONFIG_FILE_NAME, "w", encoding="utf-8") as configfile:
157
157
  config.write(configfile)
158
158
  console.print(
159
159
  f"Welcome, I Created a new [orange3]{CONFIG_FILE_NAME}[/] file "
@@ -122,7 +122,7 @@ def add_tasks_to_db(tasks: dict | list[dict]) -> None:
122
122
  save_db(data=db_data)
123
123
 
124
124
 
125
- def read_db(path: str = None) -> dict:
125
+ def read_db(path: str | None = None) -> dict:
126
126
  if not path:
127
127
  path = cfg.active_board_path
128
128
 
@@ -147,7 +147,7 @@ def read_db(path: str = None) -> dict:
147
147
 
148
148
 
149
149
  def read_single_board(path):
150
- with open(path, "r") as file:
150
+ with open(path, "r", encoding="utf-8") as file:
151
151
  data = load(file)
152
152
  return data
153
153
 
@@ -193,6 +193,7 @@ def show_tasks():
193
193
  db_data = read_db()
194
194
  choices = get_tag_id_choices(db_data, cfg.vis_cols)
195
195
  selection_criteria = input_ask_which_tasks_to_show(choices)
196
+ console.clear()
196
197
  for i, task in db_data.items():
197
198
  if selection_criteria in [i, task["Tag"]]:
198
199
  console.print(
@@ -279,6 +280,7 @@ def add_todos_to_board(path: Path) -> None:
279
280
  #####################################################################################
280
281
  def change_settings():
281
282
  while True:
283
+ console.clear()
282
284
  show_settings()
283
285
  settings_selection = input_ask_for_action_settings()
284
286
 
@@ -337,5 +339,5 @@ def create_report(output_path: Path = REPORT_FILE_PATH):
337
339
  create_report_document(path=output_path, boards_dict=boards_dict)
338
340
  console.print(
339
341
  "\n[bright_black]You can find your markdown report under:"
340
- + f"\n[bold green]{output_path/REPORT_FILE_NAME}"
342
+ + f"\n[bold green]{output_path / REPORT_FILE_NAME}"
341
343
  )
@@ -123,7 +123,7 @@ def scan_for_todos(
123
123
 
124
124
  for file_path in file_paths:
125
125
  prog.update(task_id=task, advance=1)
126
- with open(file_path, "r") as file:
126
+ with open(file_path, "r", encoding="utf-8") as file:
127
127
  try:
128
128
  todos += [
129
129
  (line.strip(), str(Path(file_path).relative_to(rel_path)))
@@ -222,7 +222,7 @@ def create_report_document(path: Path, boards_dict: dict):
222
222
  ).date()
223
223
  date_dict[completion_date].append(f"- {task['Tag']} {task['Title']}\n")
224
224
 
225
- with open(path / REPORT_FILE_NAME, "w") as report_file:
225
+ with open(path / REPORT_FILE_NAME, "w", encoding="utf-8") as report_file:
226
226
  last_year = ""
227
227
  last_month = ""
228
228
  last_day = ""
@@ -133,7 +133,7 @@ def test_scan_todos(test_config, tmp_path):
133
133
  cfg = test_config
134
134
  file_path = tmp_path / "file.py"
135
135
  file_path.touch()
136
- with open(file_path, "w") as file:
136
+ with open(file_path, "w", encoding="utf-8") as file:
137
137
  file.write("# TODO: Pytest is cool")
138
138
 
139
139
  list_input = [file_path]