fotolab 0.22.0__py3-none-any.whl → 0.22.1__py3-none-any.whl
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.
- fotolab/__init__.py +1 -1
- fotolab/cli.py +12 -33
- fotolab/subcommands/__init__.py +32 -0
- fotolab/{auto.py → subcommands/auto.py} +8 -8
- fotolab/{info.py → subcommands/info.py} +8 -2
- fotolab/{watermark.py → subcommands/watermark.py} +1 -1
- {fotolab-0.22.0.dist-info → fotolab-0.22.1.dist-info}/METADATA +1 -1
- fotolab-0.22.1.dist-info/RECORD +20 -0
- fotolab-0.22.0.dist-info/RECORD +0 -19
- /fotolab/{animate.py → subcommands/animate.py} +0 -0
- /fotolab/{border.py → subcommands/border.py} +0 -0
- /fotolab/{contrast.py → subcommands/contrast.py} +0 -0
- /fotolab/{env.py → subcommands/env.py} +0 -0
- /fotolab/{montage.py → subcommands/montage.py} +0 -0
- /fotolab/{resize.py → subcommands/resize.py} +0 -0
- /fotolab/{rotate.py → subcommands/rotate.py} +0 -0
- /fotolab/{sharpen.py → subcommands/sharpen.py} +0 -0
- {fotolab-0.22.0.dist-info → fotolab-0.22.1.dist-info}/LICENSE.md +0 -0
- {fotolab-0.22.0.dist-info → fotolab-0.22.1.dist-info}/WHEEL +0 -0
- {fotolab-0.22.0.dist-info → fotolab-0.22.1.dist-info}/entry_points.txt +0 -0
fotolab/__init__.py
CHANGED
fotolab/cli.py
CHANGED
@@ -23,19 +23,9 @@
|
|
23
23
|
import argparse
|
24
24
|
import logging
|
25
25
|
import sys
|
26
|
-
from typing import
|
27
|
-
|
28
|
-
import fotolab.
|
29
|
-
import fotolab.auto
|
30
|
-
import fotolab.border
|
31
|
-
import fotolab.contrast
|
32
|
-
import fotolab.env
|
33
|
-
import fotolab.info
|
34
|
-
import fotolab.montage
|
35
|
-
import fotolab.resize
|
36
|
-
import fotolab.rotate
|
37
|
-
import fotolab.sharpen
|
38
|
-
import fotolab.watermark
|
26
|
+
from typing import Optional, Sequence
|
27
|
+
|
28
|
+
import fotolab.subcommands
|
39
29
|
from fotolab import __version__
|
40
30
|
|
41
31
|
log = logging.getLogger(__name__)
|
@@ -49,18 +39,17 @@ def setup_logging(args: argparse.Namespace) -> None:
|
|
49
39
|
if args.quiet:
|
50
40
|
logging.disable(logging.NOTSET)
|
51
41
|
else:
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
}
|
42
|
+
level = logging.DEBUG if args.debug else logging.INFO
|
43
|
+
format_string = (
|
44
|
+
"[%(asctime)s] %(levelname)s: %(name)s: %(message)s"
|
45
|
+
if args.debug
|
46
|
+
else "%(message)s"
|
47
|
+
)
|
59
48
|
|
60
49
|
logging.basicConfig(
|
61
|
-
level=
|
50
|
+
level=level,
|
51
|
+
format=format_string,
|
62
52
|
stream=sys.stdout,
|
63
|
-
format=conf[args.debug]["msg"],
|
64
53
|
datefmt="%Y-%m-%d %H:%M:%S",
|
65
54
|
)
|
66
55
|
|
@@ -136,17 +125,7 @@ def build_parser() -> argparse.ArgumentParser:
|
|
136
125
|
)
|
137
126
|
|
138
127
|
subparsers = parser.add_subparsers(help="sub-command help")
|
139
|
-
fotolab.
|
140
|
-
fotolab.auto.build_subparser(subparsers)
|
141
|
-
fotolab.border.build_subparser(subparsers)
|
142
|
-
fotolab.contrast.build_subparser(subparsers)
|
143
|
-
fotolab.info.build_subparser(subparsers)
|
144
|
-
fotolab.resize.build_subparser(subparsers)
|
145
|
-
fotolab.rotate.build_subparser(subparsers)
|
146
|
-
fotolab.montage.build_subparser(subparsers)
|
147
|
-
fotolab.sharpen.build_subparser(subparsers)
|
148
|
-
fotolab.watermark.build_subparser(subparsers)
|
149
|
-
fotolab.env.build_subparser(subparsers)
|
128
|
+
fotolab.subcommands.build_subparser(subparsers)
|
150
129
|
|
151
130
|
return parser
|
152
131
|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Copyright (C) 2024 Kian-Meng Ang
|
2
|
+
#
|
3
|
+
# This program is free software: you can redistribute it and/or modify it under
|
4
|
+
# the terms of the GNU Affero General Public License as published by the Free
|
5
|
+
# Software Foundation, either version 3 of the License, or (at your option) any
|
6
|
+
# later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
9
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
10
|
+
# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
11
|
+
# details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Affero General Public License
|
14
|
+
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
15
|
+
|
16
|
+
"""Common utils for subcommand."""
|
17
|
+
|
18
|
+
import importlib
|
19
|
+
import pkgutil
|
20
|
+
|
21
|
+
|
22
|
+
def build_subparser(subparsers):
|
23
|
+
"""Build subparser for each subcommands."""
|
24
|
+
iter_namespace = pkgutil.iter_modules(__path__, __name__ + ".")
|
25
|
+
|
26
|
+
subcommands = {
|
27
|
+
name: importlib.import_module(name)
|
28
|
+
for finder, name, ispkg in iter_namespace
|
29
|
+
}
|
30
|
+
|
31
|
+
for subcommand in subcommands.values():
|
32
|
+
subcommand.build_subparser(subparsers)
|
@@ -18,10 +18,10 @@
|
|
18
18
|
import argparse
|
19
19
|
import logging
|
20
20
|
|
21
|
-
import fotolab.contrast
|
22
|
-
import fotolab.resize
|
23
|
-
import fotolab.sharpen
|
24
|
-
import fotolab.watermark
|
21
|
+
import fotolab.subcommands.contrast
|
22
|
+
import fotolab.subcommands.resize
|
23
|
+
import fotolab.subcommands.sharpen
|
24
|
+
import fotolab.subcommands.watermark
|
25
25
|
|
26
26
|
log = logging.getLogger(__name__)
|
27
27
|
|
@@ -77,7 +77,7 @@ def run(args: argparse.Namespace) -> None:
|
|
77
77
|
log.debug(args)
|
78
78
|
log.debug(combined_args)
|
79
79
|
|
80
|
-
fotolab.resize.run(combined_args)
|
81
|
-
fotolab.contrast.run(combined_args)
|
82
|
-
fotolab.sharpen.run(combined_args)
|
83
|
-
fotolab.watermark.run(combined_args)
|
80
|
+
fotolab.subcommands.resize.run(combined_args)
|
81
|
+
fotolab.subcommands.contrast.run(combined_args)
|
82
|
+
fotolab.subcommands.sharpen.run(combined_args)
|
83
|
+
fotolab.subcommands.watermark.run(combined_args)
|
@@ -73,10 +73,16 @@ def run(args: argparse.Namespace) -> None:
|
|
73
73
|
None
|
74
74
|
"""
|
75
75
|
log.debug(args)
|
76
|
+
info = []
|
77
|
+
|
76
78
|
if args.camera:
|
77
|
-
|
79
|
+
info.append(camera_metadata(args.image_filename))
|
80
|
+
|
78
81
|
if args.datetime:
|
79
|
-
|
82
|
+
info.append(datetime(args.image_filename))
|
83
|
+
|
84
|
+
if info:
|
85
|
+
print("\n".join(info))
|
80
86
|
else:
|
81
87
|
exif_tags = extract_exif_tags(args.image_filename)
|
82
88
|
if exif_tags:
|
@@ -0,0 +1,20 @@
|
|
1
|
+
fotolab/__init__.py,sha256=xdrWwLKoyxvOtFkatJOEMd_hDaY3--OVKgHZh6wY0n8,2061
|
2
|
+
fotolab/__main__.py,sha256=aboOURPs_snOXTEWYR0q8oq1UTY9e-NxCd1j33V0wHI,833
|
3
|
+
fotolab/cli.py,sha256=L_N94EsPeM1Ev0B5iyVvt4HEo7JTBNdhLmGZhBRIDA4,4235
|
4
|
+
fotolab/subcommands/__init__.py,sha256=5ncuu_LxuWphjNohm32Z_lD0FmJPWrAynBzeza0lyCU,1124
|
5
|
+
fotolab/subcommands/animate.py,sha256=ejimhTozo9DN7BbqqcV4x8zLnanZRKq1pxBBFeOdr6Q,2967
|
6
|
+
fotolab/subcommands/auto.py,sha256=ljvC0Z88Dva18YHyn3auAjlvVHqGrxsky-HGXwaIMZo,2391
|
7
|
+
fotolab/subcommands/border.py,sha256=5ch2d7LVPhB2OFuuXSW5ci6Cn967CPDQu0qSfaO7uMg,3591
|
8
|
+
fotolab/subcommands/contrast.py,sha256=l7Bs5p8W8ypN9Cg3fFHnU-A20UwMKtjTiPk6D0PRwpM,2095
|
9
|
+
fotolab/subcommands/env.py,sha256=fzUoRWgYEiYJIWYEiiSLEb7dH_xVUOnhMpQgc1yjrTY,1457
|
10
|
+
fotolab/subcommands/info.py,sha256=bkB41ZB5BewUCvY5XBn21D1pOyLcTjsI10dseYEARfE,3354
|
11
|
+
fotolab/subcommands/montage.py,sha256=lUVY-zDSH7mwH-s34_XefdNp7CoDJHkwpbTUGiyJGgs,2037
|
12
|
+
fotolab/subcommands/resize.py,sha256=2bH1Kgoe_DqU8ozJ1E_oA6a9JPtuwIlo5a4sq_4Yles,5018
|
13
|
+
fotolab/subcommands/rotate.py,sha256=l_vQgf0IcI8AR1TSVsk4PrMZtJ3j_wpU77rKiGJ-KTA,1715
|
14
|
+
fotolab/subcommands/sharpen.py,sha256=wUPtJdtB6mCRmcHrA0CoEVO0O0ROBJWhejTvUeL67QU,2655
|
15
|
+
fotolab/subcommands/watermark.py,sha256=tUqZoGjZk_7XG8qo7OiedfgmDY08qAWRF1Gx2ihAHO0,7264
|
16
|
+
fotolab-0.22.1.dist-info/entry_points.txt,sha256=mvw7AY_yZkIyjAxPtHNed9X99NZeLnMxEeAfEJUbrCM,44
|
17
|
+
fotolab-0.22.1.dist-info/LICENSE.md,sha256=tGtFDwxWTjuR9syrJoSv1Hiffd2u8Tu8cYClfrXS_YU,31956
|
18
|
+
fotolab-0.22.1.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
19
|
+
fotolab-0.22.1.dist-info/METADATA,sha256=-KmtwWES6ulcPrR5TSgBxYBowTgOejyQ9Mg0aMb3k0c,10724
|
20
|
+
fotolab-0.22.1.dist-info/RECORD,,
|
fotolab-0.22.0.dist-info/RECORD
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
fotolab/__init__.py,sha256=pw2AneRyAlWbI9FH4Ikuepdam_hEWBbqqmTUXny6WP4,2061
|
2
|
-
fotolab/__main__.py,sha256=aboOURPs_snOXTEWYR0q8oq1UTY9e-NxCd1j33V0wHI,833
|
3
|
-
fotolab/animate.py,sha256=ejimhTozo9DN7BbqqcV4x8zLnanZRKq1pxBBFeOdr6Q,2967
|
4
|
-
fotolab/auto.py,sha256=l_-Kf5V5Anvwz1QV1ET-42YsDWEeHf_okHkXWOycWAI,2295
|
5
|
-
fotolab/border.py,sha256=5ch2d7LVPhB2OFuuXSW5ci6Cn967CPDQu0qSfaO7uMg,3591
|
6
|
-
fotolab/cli.py,sha256=FBFSeMNqcOiJ6MuAcy0qUvc9cscdFUG946HlWZXBPtY,4984
|
7
|
-
fotolab/contrast.py,sha256=l7Bs5p8W8ypN9Cg3fFHnU-A20UwMKtjTiPk6D0PRwpM,2095
|
8
|
-
fotolab/env.py,sha256=fzUoRWgYEiYJIWYEiiSLEb7dH_xVUOnhMpQgc1yjrTY,1457
|
9
|
-
fotolab/info.py,sha256=jIWmsDAk8ikKb3uZ568DHu3m21OW2-1Erg9PRYa4giw,3281
|
10
|
-
fotolab/montage.py,sha256=lUVY-zDSH7mwH-s34_XefdNp7CoDJHkwpbTUGiyJGgs,2037
|
11
|
-
fotolab/resize.py,sha256=2bH1Kgoe_DqU8ozJ1E_oA6a9JPtuwIlo5a4sq_4Yles,5018
|
12
|
-
fotolab/rotate.py,sha256=l_vQgf0IcI8AR1TSVsk4PrMZtJ3j_wpU77rKiGJ-KTA,1715
|
13
|
-
fotolab/sharpen.py,sha256=wUPtJdtB6mCRmcHrA0CoEVO0O0ROBJWhejTvUeL67QU,2655
|
14
|
-
fotolab/watermark.py,sha256=XuVj-Cg1duNtW1Z9S8Y0AN4Q268lTM3dne5HnzLWgj0,7252
|
15
|
-
fotolab-0.22.0.dist-info/entry_points.txt,sha256=mvw7AY_yZkIyjAxPtHNed9X99NZeLnMxEeAfEJUbrCM,44
|
16
|
-
fotolab-0.22.0.dist-info/LICENSE.md,sha256=tGtFDwxWTjuR9syrJoSv1Hiffd2u8Tu8cYClfrXS_YU,31956
|
17
|
-
fotolab-0.22.0.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
18
|
-
fotolab-0.22.0.dist-info/METADATA,sha256=4pqzWJZoXD0c7sSRQM5RrSlC6HuEFFf9o2K-Yx6C_m0,10724
|
19
|
-
fotolab-0.22.0.dist-info/RECORD,,
|
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
|
File without changes
|