pypaperless-cli2 0.1.0__tar.gz → 0.2.0__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.
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/PKG-INFO +1 -1
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/pyproject.toml +1 -1
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/commands/document/edit.py +5 -5
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/converters/__init__.py +1 -0
- pypaperless_cli2-0.2.0/src/pypaperless_cli/utils/converters/date.py +29 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/types.py +5 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/LICENSE +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/README.md +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/__init__.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/api.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/app.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/commands/__init__.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/commands/auth.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/commands/document/__init__.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/commands/document/show.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/config/__init__.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/config/account.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/config/config.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/const.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/py.typed +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/__init__.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/converters/custom_field.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/converters/helpers/__init__.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/converters/helpers/strtobool.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/converters/tag.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/groups.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/highlighter.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/validators/__init__.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/validators/custom_field.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/validators/document.py +0 -0
- {pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/validators/tag.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "pypaperless-cli2"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.2.0"
|
|
4
4
|
description = "Command-line interface for Paperless-ngx (fork of pypaperless-cli, updated for pypaperless 5.x / Paperless-ngx 3.x)"
|
|
5
5
|
authors = ["Marcel Brückner <marcelbrueckner@users.noreply.github.com>"]
|
|
6
6
|
readme = "README.md"
|
{pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/commands/document/edit.py
RENAMED
|
@@ -8,7 +8,7 @@ from pypaperless.models.common import CustomFieldValue
|
|
|
8
8
|
|
|
9
9
|
from pypaperless_cli.api import PaperlessAsyncAPI
|
|
10
10
|
from pypaperless_cli.utils import converters, groups, validators
|
|
11
|
-
from pypaperless_cli.utils.types import CustomFieldKeyValue, Document
|
|
11
|
+
from pypaperless_cli.utils.types import CustomFieldKeyValue, Date, Document
|
|
12
12
|
|
|
13
13
|
group_tags = Group(name = "Tags parameters", sort_key=groups.standard_fields.sort_key+1)
|
|
14
14
|
group_custom_fields = Group(name = "Custom fields parameters", sort_key=group_tags.sort_key+1)
|
|
@@ -21,7 +21,7 @@ async def edit(
|
|
|
21
21
|
document_type: Optional[int] = None,
|
|
22
22
|
storage_path: Optional[int] = None,
|
|
23
23
|
title: Optional[str] = None,
|
|
24
|
-
created_date: Optional[
|
|
24
|
+
created_date: Optional[Date] = None,
|
|
25
25
|
|
|
26
26
|
# Handle tags
|
|
27
27
|
add_tags: Annotated[
|
|
@@ -86,7 +86,8 @@ async def edit(
|
|
|
86
86
|
title: str
|
|
87
87
|
Document title
|
|
88
88
|
created_date: str
|
|
89
|
-
The
|
|
89
|
+
The date the document was initially issued. Accepts several formats, e.g. YYYY-MM-DD
|
|
90
|
+
(ISO 8601) or DD.MM.YYYY (German), and normalizes them automatically.
|
|
90
91
|
|
|
91
92
|
add_tags: List[str|int]
|
|
92
93
|
Assign tags. Requires the ID or the exact name of the tags.
|
|
@@ -121,8 +122,7 @@ async def edit(
|
|
|
121
122
|
document.title = title
|
|
122
123
|
|
|
123
124
|
if created_date:
|
|
124
|
-
|
|
125
|
-
document.created = datetime.strptime(created_date, "%Y-%m-%d").date()
|
|
125
|
+
document.created = created_date
|
|
126
126
|
|
|
127
127
|
if remove_tags:
|
|
128
128
|
# Only keep tags not in `remove_tags``
|
{pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/converters/__init__.py
RENAMED
|
@@ -4,6 +4,7 @@ from typing import Any
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
from pypaperless_cli.utils.converters.custom_field import custom_field_name_to_id
|
|
7
|
+
from pypaperless_cli.utils.converters.date import parse_date
|
|
7
8
|
from pypaperless_cli.utils.converters.tag import tag_name_to_id
|
|
8
9
|
|
|
9
10
|
import pypaperless_cli.utils.converters.helpers
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Date related converter"""
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
import arrow
|
|
6
|
+
|
|
7
|
+
# Formats are tried in order until one matches; the first match wins.
|
|
8
|
+
# Day-first is assumed for dot/slash-separated dates (e.g. German invoices use DD.MM.YYYY),
|
|
9
|
+
# so MM/DD/YYYY-style US dates are deliberately not included to avoid ambiguity.
|
|
10
|
+
SUPPORTED_DATE_FORMATS = [
|
|
11
|
+
"YYYY-MM-DD",
|
|
12
|
+
"DD.MM.YYYY",
|
|
13
|
+
"DD.MM.YY",
|
|
14
|
+
"DD/MM/YYYY",
|
|
15
|
+
"YYYY/MM/DD",
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
def parse_date(type_, *args) -> Any:
|
|
19
|
+
"""Parses a date given in any of `SUPPORTED_DATE_FORMATS` into a `date` object."""
|
|
20
|
+
|
|
21
|
+
value = args[0]
|
|
22
|
+
|
|
23
|
+
try:
|
|
24
|
+
return arrow.get(value, SUPPORTED_DATE_FORMATS).date()
|
|
25
|
+
except arrow.parser.ParserError:
|
|
26
|
+
raise ValueError(
|
|
27
|
+
f"\"{value}\" is not a recognized date. Supported formats: "
|
|
28
|
+
+ ", ".join(SUPPORTED_DATE_FORMATS)
|
|
29
|
+
)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Custom variable types."""
|
|
2
2
|
|
|
3
|
+
from datetime import date
|
|
3
4
|
from typing import Annotated
|
|
4
5
|
|
|
5
6
|
from cyclopts import Parameter
|
|
@@ -21,6 +22,10 @@ Document = Annotated[int, Parameter(
|
|
|
21
22
|
validator = validators.document_exists
|
|
22
23
|
)]
|
|
23
24
|
|
|
25
|
+
Date = Annotated[date, Parameter(
|
|
26
|
+
converter = converters.parse_date
|
|
27
|
+
)]
|
|
28
|
+
|
|
24
29
|
CustomFieldKeyValue = Annotated[str|int, Parameter(
|
|
25
30
|
converter = converters.custom_field_name_to_id,
|
|
26
31
|
validator = validators.custom_field_exists
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/commands/document/__init__.py
RENAMED
|
File without changes
|
{pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/commands/document/show.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/converters/tag.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/validators/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/validators/document.py
RENAMED
|
File without changes
|
{pypaperless_cli2-0.1.0 → pypaperless_cli2-0.2.0}/src/pypaperless_cli/utils/validators/tag.py
RENAMED
|
File without changes
|