txt2ebook 0.1.128__py3-none-any.whl → 0.1.130__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.
txt2ebook/__init__.py CHANGED
@@ -28,34 +28,34 @@ __version__ = "0.1.126"
28
28
 
29
29
 
30
30
  def setup_logger(config: argparse.Namespace) -> None:
31
- """Sets up logging configuration based on command-line arguments.
31
+ """Configures logging based on command-line arguments.
32
32
 
33
33
  Args:
34
- config (argparse.Namespace): Namespace containing parsed arguments.
34
+ config: Namespace containing parsed arguments.
35
35
  """
36
36
  if config.quiet:
37
37
  logging.disable(logging.NOTSET)
38
38
  return
39
39
 
40
- level = logging.DEBUG if config.debug else logging.INFO
41
- format_string = (
40
+ log_level = logging.DEBUG if config.debug else logging.INFO
41
+ log_format = (
42
42
  "%(levelname)5s: %(message)s" if config.debug else "%(message)s"
43
43
  )
44
44
 
45
45
  logging.basicConfig(
46
- level=level,
47
- format=format_string,
46
+ level=log_level,
47
+ format=log_format,
48
48
  stream=sys.stdout,
49
49
  datefmt="%Y-%m-%d %H:%M:%S",
50
50
  )
51
51
 
52
52
 
53
- def log_or_raise_on_warning(msg: str, raise_on_warning: bool = False) -> None:
54
- """Log warnings or raise it as exception.
53
+ def log_or_raise_on_warning(message: str, raise_on_warning: bool = False) -> None:
54
+ """Logs a warning message or raises an exception.
55
55
 
56
56
  Args:
57
- msg(str): Warning message.
58
- raise_on_warning(bool): To raise exception instead of logging.
57
+ message: The warning message to log or raise.
58
+ raise_on_warning: If True, raises a RuntimeError instead of logging.
59
59
  """
60
60
  if raise_on_warning:
61
61
  raise RuntimeError(msg)
@@ -75,7 +75,15 @@ def print_env() -> None:
75
75
 
76
76
 
77
77
  def detect_and_expect_language(content: str, config_language: str) -> str:
78
- """Detect and expect the language of the txt content."""
78
+ """Detects the content language and compares it to the configured language.
79
+
80
+ Args:
81
+ content: The text content to analyze.
82
+ config_language: The language specified in the configuration.
83
+
84
+ Returns:
85
+ The configured language, or the detected language if none is configured.
86
+ """
79
87
  detect_language = langdetect.detect(content)
80
88
  config_language = config_language or detect_language
81
89
  logger.info("Config language: %s", config_language)
txt2ebook/exceptions.py CHANGED
@@ -17,4 +17,4 @@
17
17
 
18
18
 
19
19
  class EmptyFileError(Exception):
20
- """Empty file content in txt file."""
20
+ """Raised when the input file has no content."""
@@ -37,7 +37,6 @@ RE_CHAPTERS = [
37
37
  "(?:内容)?简介",
38
38
  "外篇.*",
39
39
  "[号番]外[篇]?.*",
40
- "尾声",
41
40
  "终章.*",
42
41
  "后记.*",
43
42
  "文案.*",
@@ -45,7 +44,6 @@ RE_CHAPTERS = [
45
44
  "人物[介绍简介设定].*",
46
45
  "作者[介绍自介].*",
47
46
  "正文",
48
- "后记",
49
47
  "人物谱",
50
48
  ]
51
49
 
txt2ebook/models/book.py CHANGED
@@ -33,15 +33,15 @@ class Book:
33
33
  """A book class model."""
34
34
 
35
35
  title: str = field(default="")
36
- authors: List[str] = field(default_factory=lambda: [])
37
- translators: List[str] = field(default_factory=lambda: [])
38
- tags: List[str] = field(default_factory=lambda: [])
39
- index: List[str] = field(default_factory=lambda: [])
36
+ authors: List[str] = field(default_factory=list)
37
+ translators: List[str] = field(default_factory=list)
38
+ tags: List[str] = field(default_factory=list)
39
+ index: List[str] = field(default_factory=list)
40
40
  language: str = field(default="")
41
41
  cover: str = field(default="", repr=False)
42
42
  raw_content: str = field(default="", repr=False)
43
43
  toc: List[Union[Volume, Chapter]] = field(
44
- default_factory=lambda: [], repr=False
44
+ default_factory=list, repr=False
45
45
  )
46
46
 
47
47
  def stats(self) -> Counter:
@@ -59,13 +59,14 @@ class Book:
59
59
  ) -> str:
60
60
  """Generate the filename format based on the available selection."""
61
61
  authors = ", ".join(self.authors)
62
- if filename_format == 1:
63
- return f"{self.title}_{authors}"
64
-
65
- if filename_format == 2:
66
- return f"{authors}_{self.title}"
67
-
68
- raise AttributeError(f"invalid filename format: '{filename_format}'!")
62
+ format_options = {
63
+ 1: f"{self.title}_{authors}",
64
+ 2: f"{authors}_{self.title}"
65
+ }
66
+ try:
67
+ return format_options[filename_format]
68
+ except KeyError:
69
+ raise AttributeError(f"Invalid filename format: '{filename_format}'!")
69
70
 
70
71
  def debug(self, verbosity: int = 1) -> None:
71
72
  """Dump debug log of sections in self.toc."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: txt2ebook
3
- Version: 0.1.128
3
+ Version: 0.1.130
4
4
  Summary: CLI tool to convert txt file to ebook format
5
5
  Home-page: https://github.com/kianmeng/txt2ebook
6
6
  License: AGPL-3.0-or-later
@@ -1,7 +1,7 @@
1
- txt2ebook/__init__.py,sha256=pYny7KkuC0o1Sgd_O1DW8qkfwhaa9H9zEOvYBVE00wI,2706
1
+ txt2ebook/__init__.py,sha256=fGY85W8w8DeOlkucIpQCcbMx2iaKvnN8jEw1yXssqDs,2958
2
2
  txt2ebook/__main__.py,sha256=L29rlfPSx9XMnVaHBYP2dyYgDmutJvONR3yUejjYwRY,855
3
3
  txt2ebook/cli.py,sha256=D0jseJLlFDjLfX-yiGCC0e98a5IJ1IbRFx_mVGyYIxc,4241
4
- txt2ebook/exceptions.py,sha256=oVtVMCqrxWq-CZ5GQYOBioil9i2kJ2mqD08IQ9A636Q,847
4
+ txt2ebook/exceptions.py,sha256=PT3m85PE5QopHHUfRwEQzp0kJ4AA9yjLO6V6lYC8WhQ,858
5
5
  txt2ebook/formats/__init__.py,sha256=yNF426_jHKNCKenKj1JTbOs22vEBuGScEk6TKhFaZUk,1716
6
6
  txt2ebook/formats/base.py,sha256=ODguJ7OBPXfRQLLeoL-G66NZihroXb4kG5-56ZrlygI,5819
7
7
  txt2ebook/formats/epub.py,sha256=IVz-FmYQlcChOw38YqfKy46bPVSIrHyxA_94iz06N3Y,6941
@@ -19,7 +19,7 @@ txt2ebook/formats/typ.py,sha256=_a3PKFh5jlHvaqRes6XvtPoDJI_HJaH7pCBbBRFeYyM,6647
19
19
  txt2ebook/helpers/__init__.py,sha256=-Awv2qDnsDHnku_XunOCsn-HDLvkBDpI0b24WFs0H74,1379
20
20
  txt2ebook/languages/__init__.py,sha256=1AfDn-D0q-dvODGP-9KxPHY_Wtk-ifZdN1FutZMT9-Q,763
21
21
  txt2ebook/languages/en.py,sha256=e5VzZwfrO2kABMwEB0l--eo4XbOre6f6uJ-ySU3ORT8,960
22
- txt2ebook/languages/zh_cn.py,sha256=VlNB-XvCx_aB4G-gGJJA2i49ksPRdGDiZu0qXHwsDvo,1971
22
+ txt2ebook/languages/zh_cn.py,sha256=lcbgPFO4Uaog8sKHKF5fQtvRwkKiQ3v5wMvYNEvNk9k,1943
23
23
  txt2ebook/languages/zh_tw.py,sha256=_fdXOOSLK0nTMuBe1Om2qjb4zr2PVd6N4xi2rrYkNTI,1515
24
24
  txt2ebook/locales/en/LC_MESSAGES/txt2ebook.mo,sha256=Ym6soeijV3zsv9FUPWlJnu18-CNb5tcOTN5JsMOfV9c,672
25
25
  txt2ebook/locales/en/LC_MESSAGES/txt2ebook.po,sha256=YhI4ZnZVWIqR3WpbLL940xXdLwAAp9-OBQShD6QtSWU,698
@@ -29,7 +29,7 @@ txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.po,sha256=zVvD8AEL6gcxg4QPfc_NnDy2
29
29
  txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.mo,sha256=1GIuOcO_bISiFcfhFez-A7mSi11Mo-x3PBobBENgMEc,675
30
30
  txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.po,sha256=Y-oJYvufQKqiUmAJR6RAB9DZdsu2hChUUtkEApu7byI,698
31
31
  txt2ebook/models/__init__.py,sha256=Z3zClWLj08Q8HgaWV1RRgIKatEhIUfYBAVWm-j4m05w,930
32
- txt2ebook/models/book.py,sha256=jzbLM2v5aKr_p5_YqhCVDEdCmoS61nitKM6mLznjyME,2763
32
+ txt2ebook/models/book.py,sha256=OkYg9ogOyH6mizP4qACTBTq4x6OAfY01gmaEzlerhLw,2788
33
33
  txt2ebook/models/chapter.py,sha256=6YvUDHzR6amGMZgkQl_xHWrYZUmlfpF7mnDLilG2BpA,1686
34
34
  txt2ebook/models/volume.py,sha256=koz1KfWjvGWLFbmGEQlZ23frsP93cDsuBMySYBHiXm8,1597
35
35
  txt2ebook/parser.py,sha256=ClcmWdFMSLfU-76vVnoHVAb6N7qYhCy6zmIwK0MPx9M,9006
@@ -45,8 +45,8 @@ txt2ebook/subcommands/tex.py,sha256=X6ZBfuAs_mcJe8PNjzoW339ecPynZduVbcCq0henjiA,
45
45
  txt2ebook/subcommands/typ.py,sha256=r4Xf7xSINbYfaIKkVzdyQDlUMWPvOIcbvOwC71spu6w,3682
46
46
  txt2ebook/tokenizer.py,sha256=H9AaZVmNP43L3ONvj58u_5weZAjFG9SzQSeS9upGN1U,9642
47
47
  txt2ebook/zh_utils.py,sha256=0Yq9r-JL4HntW68vFR6TBP9yQim1a07mfsh_sp-XmaE,4887
48
- txt2ebook-0.1.128.dist-info/LICENSE.md,sha256=tGtFDwxWTjuR9syrJoSv1Hiffd2u8Tu8cYClfrXS_YU,31956
49
- txt2ebook-0.1.128.dist-info/METADATA,sha256=XF6MXaqgZmlmNeOxqFLhrCZehpn2QeHdKoS_MpH6D0U,4969
50
- txt2ebook-0.1.128.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
51
- txt2ebook-0.1.128.dist-info/entry_points.txt,sha256=AFikuCV6fqf8_GHwsvWuo9jTGNrCkWY1TJWk5GfMWSk,71
52
- txt2ebook-0.1.128.dist-info/RECORD,,
48
+ txt2ebook-0.1.130.dist-info/LICENSE.md,sha256=tGtFDwxWTjuR9syrJoSv1Hiffd2u8Tu8cYClfrXS_YU,31956
49
+ txt2ebook-0.1.130.dist-info/METADATA,sha256=i12D6Adog_3oBXtQLXocmuTpE7SwmrO1WbN_C21ZHUM,4969
50
+ txt2ebook-0.1.130.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
51
+ txt2ebook-0.1.130.dist-info/entry_points.txt,sha256=AFikuCV6fqf8_GHwsvWuo9jTGNrCkWY1TJWk5GfMWSk,71
52
+ txt2ebook-0.1.130.dist-info/RECORD,,