Unit3Dup 0.8.5__py3-none-any.whl → 0.8.7__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.
common/command.py CHANGED
@@ -41,7 +41,7 @@ class CommandLine:
41
41
  parser.add_argument("-noseed", "--noseed", action="store_true", help="No seeding after upload")
42
42
  parser.add_argument("-noup", "--noup", action="store_true", help="Torrent only. No upload")
43
43
  parser.add_argument("-duplicate", "--duplicate", action="store_true", help="Find duplicates")
44
-
44
+ parser.add_argument("-personal", "--personal", action="store_true", help="Set to personal release")
45
45
 
46
46
  parser.add_argument("-pw", "--pw", type=str, help="")
47
47
  parser.add_argument("-ftp", "--ftp", action="store_true", help="Connect to FTP")
@@ -92,13 +92,23 @@ class CommandLine:
92
92
  parser.add_argument(
93
93
  "-int", "--internal", action="store_true", help="Internal torrent"
94
94
  )
95
+
95
96
  parser.add_argument(
96
- "-pers", "--personal", action="store_true", help="Personal release torrent"
97
+ "-pr", "--prelease", action="store_true", help="Personal release torrent"
97
98
  )
98
99
 
100
+
101
+
102
+ # Parsing the User cli
99
103
  self.args: parser = parser.parse_args()
104
+
105
+ # Test user scan path
100
106
  self.is_dir = os.path.isdir(self.args.scan) if self.args.scan else None
101
107
 
108
+ # Test the upload path. Expand path home_path with tilde
109
+ if self.args.upload:
110
+ self.args.upload = os.path.expanduser(self.args.upload)
111
+
102
112
  # Test -force flag
103
113
  if self.args.force:
104
114
  self.args.force = self.args.force[:10]
@@ -109,9 +119,3 @@ class CommandLine:
109
119
  self.args.force = None
110
120
  print("Invalid -force category")
111
121
  exit()
112
-
113
-
114
- # Check if the upload path is valid
115
- # expand path home_path with tilde
116
- if self.args.upload:
117
- self.args.upload = os.path.expanduser(self.args.upload)
common/settings.py CHANGED
@@ -13,7 +13,7 @@ from common.utility import ManageTitles
13
13
  from common import trackers
14
14
 
15
15
  config_file = "Unit3Dbot.json"
16
- version = "0.8.5"
16
+ version = "0.8.7"
17
17
 
18
18
  if os.name == "nt":
19
19
  PW_TORRENT_ARCHIVE_PATH: Path = Path(os.getenv("LOCALAPPDATA", ".")) / "Unit3Dup_config" / "pw_torrent_archive"
@@ -113,7 +113,7 @@ class UserPreferences(BaseModel):
113
113
  CACHE_SCR: bool = False
114
114
  CACHE_DBONLINE: bool = False
115
115
  PERSONAL_RELEASE: bool = False
116
-
116
+ FAST_LOAD: int = 0
117
117
 
118
118
 
119
119
  class Options(BaseModel):
@@ -419,7 +419,7 @@ class Config(BaseModel):
419
419
  section[field] = Validate.string(value=section[field], field_name=field)
420
420
 
421
421
  if field in ['NUMBER_OF_SCREENSHOTS','COMPRESS_SCSHOT','IMGBB_PRIORITY','FREE_IMAGE_PRIORITY',
422
- 'LENSDUMP_PRIORITY','WATCHER_INTERVAL','SIZE_TH']:
422
+ 'LENSDUMP_PRIORITY','WATCHER_INTERVAL','SIZE_TH', 'FAST_LOAD']:
423
423
  section[field] = Validate.integer(value=section[field], field_name=field)
424
424
 
425
425
  if field == 'PREFERRED_LANG':
@@ -524,6 +524,7 @@ class Load:
524
524
  "SHARED_RTORR_PATH": "no_path",
525
525
  "TORRENT_CLIENT": "qbittorrent",
526
526
  "TAG": "ADDED TORRENTS",
527
+ "FAST_LOAD": "0",
527
528
  },
528
529
  "user_preferences": {
529
530
  "PTSCREENS_PRIORITY": 0,
unit3dup/__main__.py CHANGED
@@ -272,11 +272,10 @@ def main():
272
272
  torrent_info.view_internal()
273
273
  return
274
274
 
275
- if cli.args.personal:
275
+ if cli.args.prelease:
276
276
  torrent_info.view_personal()
277
277
  return
278
278
 
279
-
280
279
  # Handle case with no arguments
281
280
  if not cli.args:
282
281
  custom_console.print("Syntax error! Please check your commands")
unit3dup/bot.py CHANGED
@@ -43,7 +43,7 @@ class Bot:
43
43
  self.trackers_name_list = trackers_name_list
44
44
  self.torrent_archive_path = torrent_archive_path
45
45
  self.content_manager = None
46
- self.path = path
46
+ self.path = path.strip()
47
47
  self.cli = cli
48
48
  self.mode = mode
49
49
 
@@ -60,7 +60,7 @@ class DocuManager:
60
60
 
61
61
 
62
62
  # Tracker payload
63
- unit3d_up = UploadBot(content=content, tracker_name=selected_tracker)
63
+ unit3d_up = UploadBot(content=content, tracker_name=selected_tracker, cli = self.cli)
64
64
 
65
65
  # Upload
66
66
  unit3d_up.data_docu(document_info=docu_info)
@@ -80,7 +80,7 @@ class GameManager:
80
80
  continue
81
81
 
82
82
  # Tracker instance
83
- unit3d_up = UploadBot(content=content, tracker_name=selected_tracker)
83
+ unit3d_up = UploadBot(content=content, tracker_name=selected_tracker, cli = self.cli)
84
84
 
85
85
  # Get the data
86
86
  unit3d_up.data_game(igdb=game_data_results)
@@ -46,4 +46,4 @@ class SeedManager:
46
46
  ))
47
47
 
48
48
  return bittorrent_list
49
-
49
+ return None
@@ -29,6 +29,11 @@ class TorrentManager:
29
29
  self.games: list[Media] = []
30
30
  self.doc: list[Media] = []
31
31
  self.cli = cli
32
+ self.fast_load = config_settings.user_preferences.FAST_LOAD
33
+ if self.fast_load < 1 or self.fast_load > 150:
34
+ # full list
35
+ self.fast_load = None
36
+
32
37
 
33
38
  def process(self, contents: list) -> None:
34
39
  """
@@ -57,6 +62,7 @@ class TorrentManager:
57
62
  if content.category in {System.category_list.get(System.MOVIE), System.category_list.get(System.TV_SHOW)}
58
63
  ]
59
64
 
65
+
60
66
  # // Build a Doc list
61
67
  self.doc = [
62
68
  content for content in contents if content.category == System.category_list.get(System.DOCUMENTARY)
@@ -78,21 +84,24 @@ class TorrentManager:
78
84
  for selected_tracker in trackers_name_list:
79
85
  # Build the torrent file and upload each GAME to the tracker
80
86
  if self.games:
81
- game_manager = GameManager(contents=self.games, cli=self.cli)
87
+ game_manager = GameManager(contents=self.games[:self.fast_load],
88
+ cli=self.cli)
82
89
  game_process_results = game_manager.process(selected_tracker=selected_tracker,
83
90
  tracker_name_list=trackers_name_list,
84
91
  tracker_archive=self.tracker_archive)
85
92
 
86
93
  # Build the torrent file and upload each VIDEO to the trackers
87
94
  if self.videos:
88
- video_manager = VideoManager(contents=self.videos, cli=self.cli)
95
+ video_manager = VideoManager(contents=self.videos[:self.fast_load],
96
+ cli=self.cli)
89
97
  video_process_results = video_manager.process(selected_tracker=selected_tracker,
90
98
  tracker_name_list=trackers_name_list,
91
99
  tracker_archive=self.tracker_archive)
92
100
 
93
101
  # Build the torrent file and upload each DOC to the tracker
94
102
  if self.doc and not self.cli.reseed:
95
- docu_manager = DocuManager(contents=self.doc, cli=self.cli)
103
+ docu_manager = DocuManager(contents=self.doc[:self.fast_load],
104
+ cli=self.cli)
96
105
  docu_process_results = docu_manager.process(selected_tracker=selected_tracker,
97
106
  tracker_name_list=trackers_name_list,
98
107
  tracker_archive=self.tracker_archive)
@@ -94,7 +94,7 @@ class VideoManager:
94
94
  custom_console.bot_log(f"'DISPLAYNAME'...{{{content.display_name}}}\n")
95
95
 
96
96
  # Tracker instance
97
- unit3d_up = UploadBot(content=content, tracker_name=selected_tracker)
97
+ unit3d_up = UploadBot(content=content, tracker_name=selected_tracker, cli = self.cli)
98
98
 
99
99
  # Get the data
100
100
  unit3d_up.data(show_id=db.video_id, imdb_id=db.imdb_id, show_keywords_list=db.keywords_list,
unit3dup/upload.py CHANGED
@@ -1,3 +1,4 @@
1
+ import argparse
1
2
  import json
2
3
  import requests
3
4
 
@@ -13,10 +14,11 @@ from unit3dup.media import Media
13
14
  from view import custom_console
14
15
 
15
16
  class UploadBot:
16
- def __init__(self, content: Media, tracker_name: str):
17
+ def __init__(self, content: Media, tracker_name: str, cli: argparse):
17
18
 
18
19
  self.API_TOKEN = config_settings.tracker_config.ITT_APIKEY
19
20
  self.BASE_URL = config_settings.tracker_config.ITT_URL
21
+ self.cli = cli
20
22
  self.content = content
21
23
  self.tracker_name = tracker_name
22
24
  self.tracker_data = TRACKData.load_from_module(tracker_name=tracker_name)
@@ -75,7 +77,8 @@ class UploadBot:
75
77
  self.tracker.data["type_id"] = self.tracker_data.filter_type(self.content.file_name)
76
78
  self.tracker.data["season_number"] = self.content.guess_season
77
79
  self.tracker.data["episode_number"] = (self.content.guess_episode if not self.content.torrent_pack else 0)
78
- self.tracker.data["personal_release"] = int(config_settings.user_preferences.PERSONAL_RELEASE)
80
+ self.tracker.data["personal_release"] = (int(config_settings.user_preferences.PERSONAL_RELEASE)
81
+ or int(self.cli.personal))
79
82
  return self.tracker
80
83
 
81
84
  def data_game(self,igdb: Game) -> Unit3d | None:
@@ -88,6 +91,8 @@ class UploadBot:
88
91
  self.tracker.data["description"] = igdb.description + self.sign if igdb else "Sorry, there is no valid IGDB"
89
92
  self.tracker.data["type_id"] = self.tracker_data.type_id.get(igdb_platform) if igdb_platform else 1
90
93
  self.tracker.data["igdb"] = igdb.id if igdb else 1, # need zero not one ( fix tracker)
94
+ self.tracker.data["personal_release"] = (int(config_settings.user_preferences.PERSONAL_RELEASE)
95
+ or int(self.cli.personal))
91
96
  return self.tracker
92
97
 
93
98
  def data_docu(self, document_info: PdfImages) -> Unit3d | None:
@@ -99,7 +104,8 @@ class UploadBot:
99
104
  self.tracker.data["description"] = document_info.description + self.sign
100
105
  self.tracker.data["type_id"] = self.tracker_data.filter_type(self.content.file_name)
101
106
  self.tracker.data["resolution_id"] = ""
102
- # tracker.data["torrent-cover"] = "" TODO: not yet implemented
107
+ self.tracker.data["personal_release"] = (int(config_settings.user_preferences.PERSONAL_RELEASE)
108
+ or int(self.cli.personal))
103
109
  return self.tracker
104
110
 
105
111
  def send(self, torrent_archive: str, nfo_path = None) -> (requests, dict):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Unit3Dup
3
- Version: 0.8.5
3
+ Version: 0.8.7
4
4
  Summary: An uploader for the Unit3D torrent tracker
5
5
  Author: Parzival
6
6
  License-Expression: MIT
@@ -63,22 +63,22 @@ It performs the following tasks:
63
63
  - Add a custom title to your seasons
64
64
  - Generate info for a title using MediaInfo
65
65
 
66
- .. image:: https://img.shields.io/badge/Upload_PDF-gr
67
- :alt: Install Upload PDF
68
-
69
66
  unit3dup can grab the first page, convert it to an image (using xpdf),
70
67
  and then the bot can upload it to an image host, then add the link to the torrent page description.
71
68
 
72
- Ubuntu/Debian Installation
73
- --------------------------
69
+ .. image:: https://img.shields.io/badge/INSTALL-gr
70
+ :alt: install
71
+
72
+ Ubuntu/Debian
73
+ -------------
74
74
  pip install unit3dup
75
75
 
76
76
  Upgrade
77
77
  -------
78
78
  pip install --upgrade unit3dup
79
79
 
80
- Dependencies
81
- ------------
80
+ Ubuntu/Debian Dependencies
81
+ --------------------------
82
82
  sudo apt install ffmpeg
83
83
 
84
84
  Only for pdf
@@ -86,6 +86,18 @@ Only for pdf
86
86
  sudo apt install poppler-utils
87
87
 
88
88
 
89
+ Windows Dependencies
90
+ --------------------
91
+ 1. Download and unzip https://www.ffmpeg.org/download.html and add its folder to
92
+ PATH environment user variable
93
+
94
+
95
+ 1. Download and unzip poppler for Windows from https://github.com/oschwartz10612/poppler-windows/releases
96
+ 2. Put the folder 'bin' in the system path (e.g. ``C:\poppler-24.08.0\Library\bin``)
97
+ 3. *Close and reopen a new console window*
98
+ 4. Test it: Run ``pdftocairo`` in the terminal
99
+
100
+
89
101
  Alternative method
90
102
  ------------------
91
103
 
@@ -93,37 +105,34 @@ Alternative method
93
105
 
94
106
  2. unzip it
95
107
 
96
- 3. pip install -r requirements.txt
108
+ 3. pip install .
109
+
110
+ 4. unit3dup
111
+
97
112
 
98
- 4. python start.py
113
+ .. image:: https://img.shields.io/badge/Bot_UPDATE-gr
114
+ :alt: Bot Update
99
115
 
100
- .. image:: https://img.shields.io/badge/LINUX-gr
116
+ 1. pip install unit3dup --upgrade
101
117
 
102
- 1. Run: ``sudo apt install poppler-utils``
103
- 2. sudo apt install ffmpeg
104
118
 
105
119
 
106
- .. image:: https://img.shields.io/badge/WINDOWS-gr
120
+ RUN
121
+ ======
107
122
 
108
- 1. Download and unzip https://www.ffmpeg.org/download.html and add its folder to
109
- PATH environment user variable
123
+ .. code-block:: python
110
124
 
125
+ unit3dup -u <filepath>
126
+ unit3dup -f <folderpath>
127
+ unit3dup -scan <folderpath>
111
128
 
112
- 1. Download and unzip poppler for Windows from https://github.com/oschwartz10612/poppler-windows/releases
113
- 2. Put the folder 'bin' in the system path (e.g. ``C:\poppler-24.08.0\Library\bin``)
114
- 3. *Close and reopen a new console window*
115
- 4. Test it: Run ``pdftocairo`` in the terminal
116
129
 
117
130
 
131
+ DOC
132
+ ===
118
133
 
119
- .. image:: https://img.shields.io/badge/Bot_UPDATE-gr
120
- :alt: Bot Update
134
+ Link `Unit3DUP <https://unit3dup.readthedocs.io/en/latest/index.html#>`_
121
135
 
122
- 1. Delete only the bot folder
123
- 2. Download the release zip
124
- 3. Unzip it
125
- 4. No config needed
126
- 5. Done!
127
136
 
128
137
 
129
138
  Trackers
@@ -148,6 +157,7 @@ united by a shared passion for torrents and more
148
157
  :alt: Discord Server
149
158
 
150
159
 
160
+
151
161
  🎯 Streaming Community
152
162
  ======================
153
163
 
@@ -155,3 +165,12 @@ united by a shared passion for torrents and more
155
165
 
156
166
  An open-source script for downloading movies, TV shows, and anime from various websites,
157
167
  built by a community of people with a shared interest in programming.
168
+
169
+ .. image:: https://img.shields.io/badge/Telegram-Join-blue?logo=telegram
170
+ :target: https://t.me/+hj294GabGWJlMDI8
171
+ :alt: Unisciti su Telegram
172
+
173
+ .. image:: https://img.shields.io/badge/StreamingCommunity-blue.svg
174
+ :target: https://github.com/Arrowar/StreamingCommunity
175
+ :alt: StreamingCommunity Badge
176
+
@@ -1,13 +1,13 @@
1
1
  common/__init__.py,sha256=M82CDZm5KKWf8V3a10FKCy1wtFrJd1TMEhBib1Xtk1g,76
2
2
  common/bdinfo_string.py,sha256=dfrU5T90fvkO_fklvVNWSoCgd5qvrVvqEZ_HKEsHAU8,3457
3
3
  common/bittorrent.py,sha256=MPgMykWjmhGox7jf1MQn53Ew4NxpjzEc4FCF6oA2oYs,315
4
- common/command.py,sha256=NflYWTv9WF1QlmNkmyuyd8cv8alrabzlgYAnb1_4kU0,5785
4
+ common/command.py,sha256=UQ9MBSNzmdiT53JBr2cDTpowJPwHo8cCx9fxIljTvD4,5936
5
5
  common/constants.py,sha256=tdflS7ZJwAcI1ZYUhBBb60QybVT7TmVS-EYxS4bNFp0,352
6
6
  common/extractor.py,sha256=WKZwt2kQfKO2VJ1rtwE_j6Zl84zICnowZq_Ql16wmRc,4564
7
7
  common/frames.py,sha256=p_jsaXII5tZTVt5ymu-w1hk2c_UMeOn3PZeuVR-wXWY,7973
8
8
  common/mediainfo.py,sha256=U2r1jJejBsV8GP3iPk4O8_NkHO5RQ9Kkh2bKwVNUBmg,6229
9
9
  common/mediainfo_string.py,sha256=8vuWlF2bqWRKpDbn81bV2fPA7hbl7RwOnxN2i4E3zNE,3958
10
- common/settings.py,sha256=TyEk22F4QHSCExphFuLs1f2-nqCxWTjxYi0RskD-ey4,30448
10
+ common/settings.py,sha256=ZMctg2CqpHNI4UJ3RnDI8Yn6BWkhMUOVsWgbDEwQTPQ,30518
11
11
  common/title.py,sha256=nFainfUBTYW9ML4Y-CB9ZFD_Es-OZXcAMPUo6D09u3k,3793
12
12
  common/torrent_clients.py,sha256=NOIpYtLG_bA19HwcH9ahGFmGNtRkoMO6nAjma-JzDfs,12040
13
13
  common/utility.py,sha256=6VLhN4K8W9oJfYiHKK_nq5LGtbwHaSMjeojstoyqYfU,8575
@@ -71,9 +71,9 @@ common/trackers/itt.py,sha256=DFXxrFX9i19kwGHfA1guswlBOueIHU00K-HvoperstA,4019
71
71
  common/trackers/sis.py,sha256=AahQH-FxAqS19vgEFylOJzeY0_SHr27_Tibs7lraSdI,3480
72
72
  common/trackers/trackers.py,sha256=uQgqmkJBoud4h8CWrc73yAURtkVU630sk1ZqLXJud7s,1384
73
73
  unit3dup/__init__.py,sha256=seXz3lHgdrUBiOnhC6Je47npS66UZ0c62VFuoH3z5Mk,78
74
- unit3dup/__main__.py,sha256=QgvexX_pfXQGT6fIbldlnR6iZX7Ylx439BlO8EBC-fI,9060
74
+ unit3dup/__main__.py,sha256=OX5n_8VcZYkq22R2BQp5yKAaFxVuNW9yMzL8mDC9MGM,9058
75
75
  unit3dup/automode.py,sha256=HIJrE8qEHp7DZQbppNtB_8jHY3Q94d6frp7BXnZuEac,4387
76
- unit3dup/bot.py,sha256=D5EC1gukvQGzwUvu-Q4G2wdV9uJIy3q5IyVqkWbOrfg,9242
76
+ unit3dup/bot.py,sha256=TM8Htnq-udJDnN-7TwaPP6CiwWX0wb_Nud9p8ej8GRo,9250
77
77
  unit3dup/duplicate.py,sha256=Ji1Y9vVLmhFQ5rgkUU-s7uXl-jC8akAa8OiQOfjFa9g,10428
78
78
  unit3dup/exceptions.py,sha256=DhlcbbZEuvEYk5VSZTnle8oRg5I8Pq6Y6fxXTdOOOfo,4078
79
79
  unit3dup/media.py,sha256=9WxBBE9051W8mKbClCABPw3ngSfdCFgzXynz2uUa5Ao,13710
@@ -82,21 +82,21 @@ unit3dup/pvtTorrent.py,sha256=cItlsCpcUJL23iXQHy0YzrrvV3JSl54UlBgm8_UROAs,2559
82
82
  unit3dup/pvtTracker.py,sha256=U4xMmhiqMNZaIOgEi3pnP-3H75e7Gagndh8GDFEP7Cs,18647
83
83
  unit3dup/pvtVideo.py,sha256=w_T6wEeGrsHkuR3KObJc4mNpJgg9hhHh_9LoxFlaqjM,3900
84
84
  unit3dup/torrent.py,sha256=zbaplTKKgZ2w12jtD60ne9XvlkauDpjT2BRxa4WvWWU,19318
85
- unit3dup/upload.py,sha256=xT6Ta3ib_FODEyADsG4jHJCUm1A1Q0wcNzUys3k13_8,5649
85
+ unit3dup/upload.py,sha256=gjB8u2oP2FPXZ8t9SMIzkUEr52hKRy_zSR8OWJlW2xc,6075
86
86
  unit3dup/media_manager/ContentManager.py,sha256=X0nepb-PgBzTasnw-Z_Vz11oq8-66kg_5Q0Eddn964g,7123
87
- unit3dup/media_manager/DocuManager.py,sha256=9P9PGk2qYsOavmQMgUDNb2K2xe6dUbDAV36lR9w8YdE,3100
88
- unit3dup/media_manager/GameManager.py,sha256=swQVkJyF6_B3Hy6Cf8IHnH6aU5G2XpCiV4S4VkSBeyM,4074
87
+ unit3dup/media_manager/DocuManager.py,sha256=oFt7jlxj-gIUty9PADBQV5a24bsv3yhjKhwI6niOhf4,3116
88
+ unit3dup/media_manager/GameManager.py,sha256=9EmPeNrirOwaVOj-vkLr29Xo7daIA4ssqrrt0WyMl30,4090
89
89
  unit3dup/media_manager/MediaInfoManager.py,sha256=0NO9dgD7seJM67B3DRnwvRIdoy7bfquBUox-PnHInK8,1081
90
- unit3dup/media_manager/SeedManager.py,sha256=IjaOmTb51Up1ojM0ixqCh2QLv0SI3-2Qe0HUf8ejyKI,1893
91
- unit3dup/media_manager/TorrentManager.py,sha256=-Hn29NZcuzm0DtPX0JqNY96v5JL-Y9ngCBdbos8hS-k,6133
92
- unit3dup/media_manager/VideoManager.py,sha256=LJ73b-TVVvIbEREuYcJXJrlIFlRlPdAwR426v5CcyvE,5421
90
+ unit3dup/media_manager/SeedManager.py,sha256=Vqpf_xpGbxsJHg0C3-kL0_tdF4f2FRPlZH7UpnmAE3g,1912
91
+ unit3dup/media_manager/TorrentManager.py,sha256=qqM1d1TyfBuruXtKLRbQ8gFk3_2JNH9dOa6Yg-QnDCw,6507
92
+ unit3dup/media_manager/VideoManager.py,sha256=O1NzGnWiWPfMgjyV6h9_b9b8M5tzFtpje9cvI2g6Nc0,5437
93
93
  unit3dup/media_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
94
  unit3dup/media_manager/common.py,sha256=hG2zOw7ocQfZyI1dhusbehxswpIrZK7T2aAbCNwULqA,10138
95
- unit3dup-0.8.5.dist-info/licenses/LICENSE,sha256=GNAZDLhU0xz8QPbIyHAOYlVnQYDvKWk2N9fZJMhqaG8,1090
95
+ unit3dup-0.8.7.dist-info/licenses/LICENSE,sha256=GNAZDLhU0xz8QPbIyHAOYlVnQYDvKWk2N9fZJMhqaG8,1090
96
96
  view/__init__.py,sha256=XIzb6rl58HmYPnksD73cYMFF88dn6FHa3u7bOHFbChk,81
97
97
  view/custom_console.py,sha256=QD7LjVi7qoBCZ9RpXxsouLfkGtRq-d5yVIQem2Q0SdI,4741
98
- unit3dup-0.8.5.dist-info/METADATA,sha256=3cAYUJDV3Hxt5nCVWpmhYr91hjy3-AMLaQ53xrZw7zI,4919
99
- unit3dup-0.8.5.dist-info/WHEEL,sha256=wXxTzcEDnjrTwFYjLPcsW_7_XihufBwmpiBeiXNBGEA,91
100
- unit3dup-0.8.5.dist-info/entry_points.txt,sha256=fxXSyI6-r6jy9_v-C5ZHm03q1aC3tE9EvCQZxC1NQnI,52
101
- unit3dup-0.8.5.dist-info/top_level.txt,sha256=19NVMnQNkJxBUKebRNaYCRs56A5CO4U1L67GMQCPiLU,21
102
- unit3dup-0.8.5.dist-info/RECORD,,
98
+ unit3dup-0.8.7.dist-info/METADATA,sha256=93vhjheaMvSYym49SAAx7fa5q9ChbPzgX07kYrayIJU,5224
99
+ unit3dup-0.8.7.dist-info/WHEEL,sha256=GHB6lJx2juba1wDgXDNlMTyM13ckjBMKf-OnwgKOCtA,91
100
+ unit3dup-0.8.7.dist-info/entry_points.txt,sha256=fxXSyI6-r6jy9_v-C5ZHm03q1aC3tE9EvCQZxC1NQnI,52
101
+ unit3dup-0.8.7.dist-info/top_level.txt,sha256=19NVMnQNkJxBUKebRNaYCRs56A5CO4U1L67GMQCPiLU,21
102
+ unit3dup-0.8.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.1.0)
2
+ Generator: setuptools (80.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5