user-scanner 1.0.9.0__py3-none-any.whl → 1.0.9.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.
@@ -138,7 +138,7 @@ def run_checks(username: str, printer: Printer, last: bool = True) -> List[Resul
138
138
  return results
139
139
 
140
140
 
141
- def make_get_request(url: str, **kwargs) -> httpx.Response:
141
+ def make_request(url: str, **kwargs) -> httpx.Response:
142
142
  """Simple wrapper to **httpx.get** that predefines headers and timeout"""
143
143
  if not "headers" in kwargs:
144
144
  kwargs["headers"] = {
@@ -152,7 +152,9 @@ def make_get_request(url: str, **kwargs) -> httpx.Response:
152
152
  if not "timeout" in kwargs:
153
153
  kwargs["timeout"] = 5.0
154
154
 
155
- return httpx.get(url, **kwargs)
155
+ method = kwargs.pop("method", "GET")
156
+
157
+ return httpx.request(method.upper(), url, **kwargs)
156
158
 
157
159
 
158
160
  def generic_validate(url: str, func: Callable[[httpx.Response], AnyResult], **kwargs) -> AnyResult:
@@ -160,7 +162,7 @@ def generic_validate(url: str, func: Callable[[httpx.Response], AnyResult], **kw
160
162
  A generic validate function that makes a request and executes the provided function on the response.
161
163
  """
162
164
  try:
163
- response = make_get_request(url, **kwargs)
165
+ response = make_request(url, **kwargs)
164
166
  result = func(response)
165
167
  result.url = url
166
168
  return result
@@ -1,5 +1,6 @@
1
1
  import httpx
2
2
  from user_scanner.core.result import Result
3
+ from user_scanner.core.orchestrator import generic_validate
3
4
 
4
5
 
5
6
  def validate_hashnode(user):
@@ -18,9 +19,7 @@ def validate_hashnode(user):
18
19
  'Referer': "https://hashnode.com/signup",
19
20
  }
20
21
 
21
- try:
22
- response = httpx.post(url, json=payload, headers=headers, timeout=3.0)
23
-
22
+ def process(response):
24
23
  if response.status_code == 200:
25
24
  data = response.json()
26
25
 
@@ -35,9 +34,7 @@ def validate_hashnode(user):
35
34
  else:
36
35
  return Result.error("Invalid status code")
37
36
 
38
- except Exception as e:
39
- return Result.error(e)
40
-
37
+ return generic_validate(url, process, method="POST", json=payload, headers=headers, timeout=3.0)
41
38
 
42
39
  if __name__ == "__main__":
43
40
  user = input("Username?: ").strip()
@@ -1,8 +1,19 @@
1
- from user_scanner.core.orchestrator import status_validate
1
+ import re
2
+ from user_scanner.core.orchestrator import status_validate, Result
2
3
 
3
4
 
4
- def validate_itch_io(user):
5
- url = f"https://{user}.itch.io"
5
+ def validate_itch_io(user: str) -> Result:
6
+ if not (2 <= len(user) <= 25):
7
+ return Result.error("Length must be 2-25 characters.")
8
+
9
+ if not re.match(r'^[a-z0-9_-]+$', user):
10
+
11
+ if re.search(r'[A-Z]', user):
12
+ return Result.error("Use lowercase letters only.")
13
+
14
+ return Result.error("Only use lowercase letters, numbers, underscores, and hyphens.")
15
+
16
+ url = f"https://itch.io/profile/{user}"
6
17
 
7
18
  return status_validate(url, 404, 200, follow_redirects=True)
8
19
 
@@ -16,4 +27,4 @@ if __name__ == "__main__":
16
27
  elif result == 0:
17
28
  print("Unavailable!")
18
29
  else:
19
- print("Error occurred!")
30
+ print(f"Error occurred! Reason: {result.get_reason()}")
@@ -0,0 +1,34 @@
1
+ import re
2
+ from user_scanner.core.orchestrator import status_validate, Result
3
+
4
+
5
+ def validate_bitbucket(user: str) -> Result:
6
+ if not (1 <= len(user) <= 30):
7
+ return Result.error("Length must be 1-30 characters.")
8
+
9
+ if not re.match(r'^[a-z0-9][a-z0-9_-]*$', user):
10
+
11
+ if re.search(r'[A-Z]', user):
12
+ return Result.error("Use lowercase letters only.")
13
+
14
+ return Result.error("Only use lowercase letters, numbers, hyphens, and underscores.")
15
+
16
+ url = f"https://bitbucket.org/{user}/"
17
+
18
+ return status_validate(url, 404, [200, 302], follow_redirects=True)
19
+
20
+
21
+ if __name__ == "__main__":
22
+ user = input("Username?: ").strip()
23
+ result = validate_bitbucket(user)
24
+
25
+ if result == 1:
26
+ print("Available!")
27
+ elif result == 0:
28
+ print("Unavailable!")
29
+ else:
30
+ print(f"Error occurred! Reason: {result.get_reason()}")
31
+
32
+
33
+
34
+
@@ -29,7 +29,7 @@ def validate_github(user):
29
29
 
30
30
  if response.status_code == 422:
31
31
  if GITHUB_INVALID_MSG in response.text:
32
- return Result.error("Cannot start/end with hyphen or use double hyphens")
32
+ return Result.error("Cannot start/end with hyphen or use double hyphens, underscores")
33
33
 
34
34
  return Result.taken()
35
35
 
@@ -0,0 +1,35 @@
1
+ import re
2
+ from user_scanner.core.orchestrator import status_validate, Result
3
+
4
+
5
+ def validate_leetcode(user: str) -> Result:
6
+ if not (3 <= len(user) <= 30):
7
+ return Result.error("Length must be between 3 and 30 characters")
8
+
9
+ if not re.match(r'^[a-zA-Z0-9._-]+$', user):
10
+ return Result.error("Can only use letters, numbers, underscores, periods, or hyphens")
11
+
12
+ url = f"https://leetcode.com/u/{user}/"
13
+
14
+ headers = {
15
+ 'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36",
16
+ 'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
17
+ 'Accept-Encoding': "identity",
18
+ 'upgrade-insecure-requests': "1",
19
+ 'accept-language': "en-US,en;q=0.9",
20
+ 'priority': "u=0, i"
21
+ }
22
+
23
+ return status_validate(url, 404, 200, headers=headers, follow_redirects=True)
24
+
25
+
26
+ if __name__ == "__main__":
27
+ user = input("Username?: ").strip()
28
+ result = validate_leetcode(user)
29
+
30
+ if result == 1:
31
+ print("Available!")
32
+ elif result == 0:
33
+ print("Unavailable!")
34
+ else:
35
+ print(f"Error occurred! Reason: {result.get_reason()}")
@@ -0,0 +1,30 @@
1
+ import re
2
+ from user_scanner.core.orchestrator import status_validate, Result
3
+
4
+
5
+ def validate_sourceforge(user: str) -> Result:
6
+ if not (3 <= len(user) <= 30):
7
+ return Result.error("Length must be 3-30 characters.")
8
+
9
+ if not re.match(r'^[a-z0-9-]+$', user):
10
+
11
+ if re.search(r'[A-Z]', user):
12
+ return Result.error("Use lowercase letters only.")
13
+
14
+ return Result.error("Only use lowercase letters, numbers, and dashes.")
15
+
16
+ url = f"https://sourceforge.net/u/{user}/"
17
+
18
+ return status_validate(url, 404, 200, follow_redirects=True)
19
+
20
+
21
+ if __name__ == "__main__":
22
+ user = input("Username?: ").strip()
23
+ result = validate_sourceforge(user)
24
+
25
+ if result == 1:
26
+ print("Available!")
27
+ elif result == 0:
28
+ print("Unavailable!")
29
+ else:
30
+ print(f"Error occurred! Reason: {result.get_reason()}")
@@ -1,5 +1,6 @@
1
1
  import httpx
2
2
  from user_scanner.core.result import Result
3
+ from user_scanner.core.orchestrator import generic_validate
3
4
 
4
5
  def validate_discord(user):
5
6
  url = "https://discord.com/api/v9/unique-username/username-attempt-unauthed"
@@ -15,8 +16,7 @@ def validate_discord(user):
15
16
 
16
17
  data = {"username": user}
17
18
 
18
- try:
19
- response = httpx.post(url, headers=headers, json=data, timeout=3.0)
19
+ def process(response):
20
20
  if response.status_code == 200:
21
21
  status = response.json().get("taken")
22
22
  if status is True:
@@ -24,8 +24,8 @@ def validate_discord(user):
24
24
  elif status is False:
25
25
  return Result.available()
26
26
  return Result.error("Invalid status code")
27
- except Exception as e:
28
- return Result.error(e)
27
+
28
+ return generic_validate(url, process, method="POST", json=data, headers=headers, timeout=3.0)
29
29
 
30
30
 
31
31
  if __name__ == "__main__":
@@ -0,0 +1,83 @@
1
+ import json
2
+ import re
3
+ import httpx
4
+ from user_scanner.core.orchestrator import generic_validate, Result
5
+
6
+
7
+ def validate_twitch(user: str) -> Result:
8
+ if not (4 <= len(user) <= 25):
9
+ return Result.error("Username must be between 4 and 25 characters long")
10
+
11
+ if not re.match(r"^[a-zA-Z0-9]+$", user):
12
+ return Result.error("Username can only contain alphanumeric characters (a-z, 0-9)")
13
+
14
+ url = "https://gql.twitch.tv/gql"
15
+
16
+ payload = [
17
+ {
18
+ "operationName": "ChannelLayout",
19
+ "variables": {
20
+ "channelLogin": user,
21
+ "includeIsDJ": True
22
+ },
23
+ "extensions": {
24
+ "persistedQuery": {
25
+ "version": 1,
26
+ "sha256Hash": "4c361fa1874dc8f6a49e62b56aa1032eccb31311bdb653918a924f96a8b2d1a6"
27
+ }
28
+ }
29
+ }
30
+ ]
31
+
32
+ headers = {
33
+ 'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36",
34
+ 'Accept-Encoding': "identity",
35
+ 'Content-Type': "application/json",
36
+ 'sec-ch-ua-platform': "\"Android\"",
37
+ 'accept-language': "en-US",
38
+ 'client-id': "kimne78kx3ncx6brgo4mv6wki5h1ko",
39
+ 'client-version': "7bb0442d-1175-4ab5-9d32-b1f370536cbf",
40
+ 'origin': "https://m.twitch.tv",
41
+ 'referer': "https://m.twitch.tv/",
42
+ }
43
+
44
+ def process(response: httpx.Response) -> Result:
45
+ if response.status_code != 200:
46
+ return Result.error(f"Unexpected status code: {response.status_code}")
47
+
48
+ try:
49
+ data = response.json()
50
+ except json.JSONDecodeError as e:
51
+ return Result.error(f"Failed to decode JSON response: {e}")
52
+
53
+ user_data = data[0].get('data', {}).get('user', {})
54
+ typename = user_data.get('__typename')
55
+
56
+ if typename == "User":
57
+ return Result.taken()
58
+ elif typename == "UserDoesNotExist":
59
+ return Result.available()
60
+ else:
61
+ return Result.error("Unexpected GraphQL response structure or type.")
62
+
63
+ return generic_validate(
64
+ url,
65
+ process,
66
+ headers=headers,
67
+ method='POST',
68
+ content=json.dumps(payload),
69
+ follow_redirects=False
70
+ )
71
+
72
+
73
+ if __name__ == "__main__":
74
+ user = input("Twitch Username?: ").strip()
75
+ result = validate_twitch(user)
76
+
77
+ if result == 1:
78
+ print("Available!")
79
+ elif result == 0:
80
+ print("Unavailable!")
81
+ else:
82
+ reason = result.get_reason()
83
+ print(f"Error occurred! Reason: {reason}")
user_scanner/version.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "1.0.9.0",
2
+ "version": "1.0.9.1",
3
3
  "version_type": "pypi"
4
4
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: user-scanner
3
- Version: 1.0.9.0
3
+ Version: 1.0.9.1
4
4
  Summary: Check username availability across multiple popular platforms
5
5
  Keywords: username,checker,availability,social,tech,python,user-scanner
6
6
  Author-email: Kaif <kafcodec@gmail.com>
@@ -15,7 +15,7 @@ Project-URL: Homepage, https://github.com/kaifcodec/user-scanner
15
15
 
16
16
  ![1000136215](https://github.com/user-attachments/assets/49ec8d24-665b-4115-8525-01a8d0ca2ef4)
17
17
  <p align="center">
18
- <img src="https://img.shields.io/badge/Version-1.0.9.0-blueviolet?style=for-the-badge&logo=github" />
18
+ <img src="https://img.shields.io/badge/Version-1.0.9.1-blueviolet?style=for-the-badge&logo=github" />
19
19
  <img src="https://img.shields.io/github/issues/kaifcodec/user-scanner?style=for-the-badge&logo=github" />
20
20
  <img src="https://img.shields.io/badge/Tested%20on-Termux-black?style=for-the-badge&logo=termux" />
21
21
  <img src="https://img.shields.io/badge/Tested%20on-Windows-cyan?style=for-the-badge&logo=Windows" />
@@ -67,7 +67,7 @@ user-scanner -u <username> -m github
67
67
  ```
68
68
 
69
69
  Also, the output file and format can be specified: <br>
70
- \* Errors and warnings will only appear when the format is set to "console"
70
+
71
71
  ```bash
72
72
  user-scanner -u <username> -f console #Default format
73
73
  user-scanner -u <username> -f csv
@@ -1,6 +1,6 @@
1
1
  user_scanner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  user_scanner/__main__.py,sha256=jmfWuPNToix9UtLNh7IYrm-M22QBdSPtmMHv4ZY66Bc,5253
3
- user_scanner/version.json,sha256=dW2NfpLg6HpcgobM6wbpzkahpV6O6N2jXxTNSwuDsU4,49
3
+ user_scanner/version.json,sha256=xMl1CJDy9wpMkJKVCDUR1Vh7d-oyLU4gx1symSWOLIY,49
4
4
  user_scanner/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  user_scanner/cli/banner.py,sha256=3t6owaDArERlvpcszA1Yi3dtksvh8a9tLyrxRowTC40,1499
6
6
  user_scanner/cli/printer.py,sha256=H8rNw0ewG3G0JquKnMLW8PbHmFcALaEZZNUAsAUScHg,4027
@@ -8,27 +8,30 @@ user_scanner/community/__init__.py,sha256=5EzlM991pJqvqIRc05_QV5BureJZ7wiCRm1AyE
8
8
  user_scanner/community/coderlegion.py,sha256=W_bdjzdFPRgUrNFFlylvToSJ4AzaFCtTsUy_MRVDdSo,451
9
9
  user_scanner/community/stackoverflow.py,sha256=MTL8O0TLHkjVbugBh1pLxELJLU3hkX_YEHjGjaKTJi4,1007
10
10
  user_scanner/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- user_scanner/core/orchestrator.py,sha256=BZ3IibDyT5itSdXmsTtS8SHHPT1bGwxjTwSk4xp86TU,7005
11
+ user_scanner/core/orchestrator.py,sha256=nfe0KEcT2U_MB48OgmuvQ0tHvQdnJm8VVi06QxiuJMU,7059
12
12
  user_scanner/core/result.py,sha256=8qrIXO5jg6OjWkLtEq25lx_b1hLgtDFugdDyrJX4vcU,3300
13
13
  user_scanner/core/utils.py,sha256=v3XLUXmknf9zl_JBOmnss3280SrEWBdPcz-zq3S8lak,249
14
14
  user_scanner/creator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  user_scanner/creator/devto.py,sha256=mIACmG1a4eoctywxb5p04sI0YVi3dsjCRw9YVOFBEKQ,435
16
- user_scanner/creator/hashnode.py,sha256=vlXsJfIG_5ShEK2xPLDl2bi6X-d08iTeoqfKeQLaB1g,1363
17
- user_scanner/creator/itch_io.py,sha256=JsFkFzBfJI18DeuSYJIOPGEV_9v7t-jtwmBYCA9W2P8,440
16
+ user_scanner/creator/hashnode.py,sha256=NEIpSyf0zbcZ_QNjU3C7F5oApvVpUQOd_oQuughM-Qc,1403
17
+ user_scanner/creator/itch_io.py,sha256=2a8UVh-_OaWQPcSUHUuijDGpWDxsR8DoCcU1BdTRqqs,854
18
18
  user_scanner/creator/kaggle.py,sha256=QaXIG02OGxvQZEvwHm50RKNd7joxGOq0Ht3cFfrYEiU,445
19
19
  user_scanner/creator/medium.py,sha256=NIOYnk8_ASD0kYfKqs8t6uZZTV4D-5-ZxyHMzOMMOuI,1015
20
20
  user_scanner/creator/patreon.py,sha256=g-r85pxirf0ihK3STyGYPIzp59MB7JH64Opb4wq1fyU,461
21
21
  user_scanner/creator/producthunt.py,sha256=p0HoIIVhmv9bBkelhfzRYudUFoyk_qeT66-hPpHEFqk,1938
22
22
  user_scanner/dev/__init__.py,sha256=qUR0eLwN-gO6oKk-1cmCVT4G_AxUHHMgpV3wJ7URXi4,7
23
+ user_scanner/dev/bitbucket.py,sha256=qAIlFCmMaNTUx2-a5wJKHjbQjERcJt0zKHJmjLAeXr4,876
23
24
  user_scanner/dev/codeberg.py,sha256=Z6nV0_8xZhMiCcNn9Hn79VVh6y0ar9fqL7KS2b7IaDo,447
24
25
  user_scanner/dev/cratesio.py,sha256=mJnlLJoMLlQ7f_95QD7LgH1xCj-e6FooOFkpYypBfG4,724
25
26
  user_scanner/dev/dockerhub.py,sha256=sPEnomGiPM2mKv2HsA-9WxaXHjzz21A6ox3IXK1etLc,643
26
- user_scanner/dev/github.py,sha256=km0RMd4cS5sY8IUKDKoNC1oQeCj57ld4HAjOlo1w4ms,1689
27
+ user_scanner/dev/github.py,sha256=9Q4G84WTAeWfNliApKdRFl1MJLfHvDPJ09mwr8P1ePo,1702
27
28
  user_scanner/dev/gitlab.py,sha256=kMDSd74XbofmJocfS4Fd9DxPryIHBMek3N_5c7Z_AJQ,1351
28
29
  user_scanner/dev/huggingface.py,sha256=hDanOZ45LeUg3hrN0CYrBnBnLqHCYtOWS0_HCvAbmDw,454
29
30
  user_scanner/dev/launchpad.py,sha256=N58ioX_dEHq2uwyyGrWnDKWwbqK9_RiuBQ1uWR5cDfg,799
31
+ user_scanner/dev/leetcode.py,sha256=PTJcgp1W3fzLDK_Jy_VvRjKnLftLYMJaw3kfMjHqt9c,1246
30
32
  user_scanner/dev/npmjs.py,sha256=k-DhFqGJWDoQ79EzR8hmVrJk07AfJfPUWnIYuKc2G6w,713
31
33
  user_scanner/dev/replit.py,sha256=SI_i2l4w9tm2kBX4-cONBAT8dSynXoGEP4zcU8ngnh0,442
34
+ user_scanner/dev/sourceforge.py,sha256=Kt8MmpCgB1tNwYRI9PYOZzIrL1VfnpzeNC43DcbZlbI,850
32
35
  user_scanner/donation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
36
  user_scanner/donation/buymeacoffee.py,sha256=86LGyChv_UKQFp2D7nIoK1B-FCAAbbfabS8NA9yLp5k,459
34
37
  user_scanner/donation/liberapay.py,sha256=njClxpbRLZQ_L2-lUYCY6QFnF4IcwfCJPCIg1iEqo7M,1120
@@ -41,7 +44,7 @@ user_scanner/gaming/roblox.py,sha256=Qs51jLgKh-Ehqlco_j8CFtJ4CLVoZeBwPugDvAyLw3Q
41
44
  user_scanner/gaming/steam.py,sha256=l8xk_p9aiYQWCPoogQnO1iwkfojPhg6yd76OZHhKN50,740
42
45
  user_scanner/social/__init__.py,sha256=jaCkFwX1uYtF0ENifVwF8OfHrYYUTm64B9wlBq9BBfQ,9
43
46
  user_scanner/social/bluesky.py,sha256=11Y_vRj3txEDQqoD0iANgSWVSB8L87OotPQZquhneR0,1994
44
- user_scanner/social/discord.py,sha256=z-oIqT416ydnZUkq481rz6NTq5yc_BYu-P_Z79uR-Jw,1150
47
+ user_scanner/social/discord.py,sha256=S_6ItjRcxip_L60UJ2rdLRFf4eXT7fMN7roCKA-lDfc,1193
45
48
  user_scanner/social/instagram.py,sha256=GgmKGvi3meKdZ_nQJbJSBZDJTEKSoE6Cn4_VARmo62I,953
46
49
  user_scanner/social/mastodon.py,sha256=qISx-gUsddC8lFMcmERA4N0YAnXyS1Jq2Xgg7XE4sL4,450
47
50
  user_scanner/social/pinterest.py,sha256=JIJ-HPtMoGvxW7NQzm02lChFKMmE6k6GxFoUZ6OvCec,784
@@ -50,12 +53,13 @@ user_scanner/social/snapchat.py,sha256=XEW_W4jEBX4AiHREcfHGstt97Ez3GI-3bKSzhtMyn
50
53
  user_scanner/social/soundcloud.py,sha256=e2yU1w2fnH1EhzYed0kxgcqgWz0YoCQQFf6yKqhRPjM,1246
51
54
  user_scanner/social/telegram.py,sha256=9IS-0pghMifNRmj62NcxCOvn23Hvg0AJJcuhCa_aXD4,765
52
55
  user_scanner/social/threads.py,sha256=rK8Gm_riDdr0djo23tk38fNVVEBuC6nj2iTXvWrqXeE,951
56
+ user_scanner/social/twitch.py,sha256=blsh5sMT7miF5-xqVXYLieTILzkop2PsWqv9HhP8G40,2509
53
57
  user_scanner/social/x.py,sha256=sAnboHHZN2DWyKeds46GLZHxGG-G_bjzfVNIkblSHx8,1406
54
58
  user_scanner/social/youtube.py,sha256=UPu584teg75P7FT05RFG3nobbHgPmzjr-ZwyN2sw6gw,1980
55
59
  user_scanner/utils/update.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
60
  user_scanner/utils/version.py,sha256=mPh24EwITyXgD3AMgbflRL180pS0JfrvuJdnoErOU34,623
57
- user_scanner-1.0.9.0.dist-info/entry_points.txt,sha256=XqU3kssYZ0vXaPy5qYUOTCu4u-48Xie7QWFpBCYc7Nc,59
58
- user_scanner-1.0.9.0.dist-info/licenses/LICENSE,sha256=XH1QyQG68zo1opDIZHTHcTAbe9XMzewvTaFTukcN9vc,1061
59
- user_scanner-1.0.9.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
60
- user_scanner-1.0.9.0.dist-info/METADATA,sha256=IeQ-358gvD2bIm2_HgkE7SR3AIS1JQ2XgvotvzEaqpA,5772
61
- user_scanner-1.0.9.0.dist-info/RECORD,,
61
+ user_scanner-1.0.9.1.dist-info/entry_points.txt,sha256=XqU3kssYZ0vXaPy5qYUOTCu4u-48Xie7QWFpBCYc7Nc,59
62
+ user_scanner-1.0.9.1.dist-info/licenses/LICENSE,sha256=XH1QyQG68zo1opDIZHTHcTAbe9XMzewvTaFTukcN9vc,1061
63
+ user_scanner-1.0.9.1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
64
+ user_scanner-1.0.9.1.dist-info/METADATA,sha256=NXrrk_8W1d8k7DbXvyAhMYq9QFCL-opRBVicqcOQVDI,5697
65
+ user_scanner-1.0.9.1.dist-info/RECORD,,