scraper2-hj3415 2.2.0__py3-none-any.whl → 2.3.0__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.
scraper2/.DS_Store CHANGED
Binary file
@@ -10,7 +10,6 @@ class PlaywrightBrowser:
10
10
  self.page = page
11
11
 
12
12
  async def goto(self, url: str, timeout_ms: int = 10_000) -> None:
13
- self.page.set_default_timeout(10_000)
14
13
  await self.page.goto(url, timeout=timeout_ms)
15
14
 
16
15
  async def title(self) -> str:
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
 
4
4
  import os
5
5
  from dataclasses import dataclass
6
- from typing import Literal
6
+ from typing import Literal, Optional
7
7
 
8
8
  from pymongo.asynchronous.database import AsyncDatabase
9
9
 
@@ -109,6 +109,23 @@ class Usecases:
109
109
  store: InMemoryStore | None = None # ✅ memory일 때만
110
110
  mongo: Mongo | None = None # ✅ mongo일 때만
111
111
  db: AsyncDatabase | None = None # ✅ mongo일 때만
112
+ browser_factory: Optional[BrowserFactoryPort] = None
113
+
114
+ async def aclose(self) -> None:
115
+ # 1) playwright 먼저 닫기 (subprocess 정리)
116
+ if self.browser_factory is not None:
117
+ close = getattr(self.browser_factory, "aclose", None)
118
+ if callable(close):
119
+ await close()
120
+
121
+ # 2) mongo 닫기
122
+ if self.mongo is not None:
123
+ close = getattr(self.mongo, "close", None)
124
+ if callable(close):
125
+ out = close()
126
+ if hasattr(out, "__await__"):
127
+ await out
128
+
112
129
 
113
130
 
114
131
  # -------------------------
scraper2/main.py CHANGED
@@ -233,7 +233,10 @@ def nfs_one(
233
233
  else:
234
234
  typer.echo(_dto_to_pretty(dto))
235
235
  finally:
236
- if getattr(ucs, "mongo", None) is not None:
236
+ close = getattr(ucs, "aclose", None)
237
+ if callable(close):
238
+ await close()
239
+ elif getattr(ucs, "mongo", None) is not None:
237
240
  await _maybe_await_close(ucs.mongo)
238
241
 
239
242
  asyncio.run(_run())
@@ -281,7 +284,10 @@ def nfs_all(
281
284
  progress_every=1, # chunk마다
282
285
  )
283
286
  finally:
284
- if getattr(ucs, "mongo", None) is not None:
287
+ close = getattr(ucs, "aclose", None)
288
+ if callable(close):
289
+ await close()
290
+ elif getattr(ucs, "mongo", None) is not None:
285
291
  await _maybe_await_close(ucs.mongo)
286
292
 
287
293
  asyncio.run(_run())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scraper2-hj3415
3
- Version: 2.2.0
3
+ Version: 2.3.0
4
4
  Summary: Naver WiseReport scraper
5
5
  Keywords: example,demo
6
6
  Author-email: Hyungjin Kim <hj3415@gmail.com>
@@ -1,10 +1,10 @@
1
- scraper2/.DS_Store,sha256=miZHKI70yhXtniLCotYbxAAOTB3ML9T6Tb8xQYPeK8w,6148
1
+ scraper2/.DS_Store,sha256=sEtRhy6uiX4PgYuHnRIsUN_QtI0jR0lSLi4kYurHsso,6148
2
2
  scraper2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- scraper2/main.py,sha256=SG0h5swYbHiIcgwpk7yNq7lcCEkdOMz3XM8u41qNtLo,9224
3
+ scraper2/main.py,sha256=qkdepCUXBooOXgwA0eJCg66wY1HFM2iLjBVONGeEVDk,9450
4
4
  scraper2/adapters/out/.DS_Store,sha256=nUqwRB5F2DM82P8BALYvDI0YoD1UbmngfSi8ukKkY7E,6148
5
5
  scraper2/adapters/out/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  scraper2/adapters/out/playwright/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- scraper2/adapters/out/playwright/browser.py,sha256=XomDThsVhsd5MdwhatgXyaCocs1XCjYEKC_YHmo1jsk,3988
7
+ scraper2/adapters/out/playwright/browser.py,sha256=cjz-1iz3U2fmY0tntO5h4NADfW4hYtusCfPTCqSo2NM,3942
8
8
  scraper2/adapters/out/playwright/browser_factory.py,sha256=y008Dbu6VmzrEe7zn7CbODndQEVJtv_EBu04GsMbPGM,3697
9
9
  scraper2/adapters/out/playwright/session.py,sha256=hQDmYpi7pIVDjkymaTKQzJVWUsRRlvJg1V777V8q44M,3727
10
10
  scraper2/adapters/out/sinks/.DS_Store,sha256=c6VOGBl6bMmFzab335dcT09WinGd4BCZXZiPjrZjd7o,6148
@@ -22,7 +22,7 @@ scraper2/adapters/out/sinks/mongo/c104_mongo_sink.py,sha256=IicVnc2fyeBXoBbgMasB
22
22
  scraper2/adapters/out/sinks/mongo/c106_mongo_sink.py,sha256=FMdCp8WVjPwidnh7tIPUoViQWr48O16xtB34O_iCtJI,1203
23
23
  scraper2/adapters/out/sinks/mongo/c108_mongo_sink.py,sha256=eSvIRtofWvNKVPchglwL1mOw5hsKDpUfNz5EOum-H3Y,1203
24
24
  scraper2/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- scraper2/app/composition.py,sha256=HijMEE-2lMEMiYKlVN9ZWJD-E4vwgzIf9-plYzoSwGc,6229
25
+ scraper2/app/composition.py,sha256=I3kpBntvnwuYWrTxTk-VQDXjIJuoM9vqEIApOLFphns,6820
26
26
  scraper2/app/parsing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  scraper2/app/parsing/_converters.py,sha256=z0kSL4nQnqq5w7QfJZBSbjZOLo1JhoqqDLpqlEAN4bo,1815
28
28
  scraper2/app/parsing/_normalize.py,sha256=2qqbXxTbzbuYlu7ttzQjyKgatFnwopme2b_fd0zahio,3738
@@ -56,8 +56,8 @@ scraper2/app/usecases/ingest/ingest_c103.py,sha256=T_IKs5ikckin_05FnL-dxirAW1PPa
56
56
  scraper2/app/usecases/ingest/ingest_c104.py,sha256=2rGTcFbsATsn3d2KsSEkL5x4fmkGo7x9MHrysoxiICM,1150
57
57
  scraper2/app/usecases/ingest/ingest_c106.py,sha256=mQrbASbKVUQyVcIWiXzIczbX-1mNR5NGk760enVCfvo,1190
58
58
  scraper2/app/usecases/ingest/ingest_c108.py,sha256=49ULzdl0dN6z3istAKg29PcD5wHTxYholqAZiIEmUzU,1191
59
- scraper2_hj3415-2.2.0.dist-info/entry_points.txt,sha256=jUNx7ZJQedQ3QnsDN1ompQ0PjwdvVmnKdHHFMfQQPlI,46
60
- scraper2_hj3415-2.2.0.dist-info/licenses/LICENSE,sha256=QBiVGQuKAESeCfQE344Ik2ex6g2zfYdu9WqrRWydxIs,1068
61
- scraper2_hj3415-2.2.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
62
- scraper2_hj3415-2.2.0.dist-info/METADATA,sha256=hdcFQQQvdoDwgw-PTUsaWwjUXFtkS5inLPDFhBlYZjg,3457
63
- scraper2_hj3415-2.2.0.dist-info/RECORD,,
59
+ scraper2_hj3415-2.3.0.dist-info/entry_points.txt,sha256=jUNx7ZJQedQ3QnsDN1ompQ0PjwdvVmnKdHHFMfQQPlI,46
60
+ scraper2_hj3415-2.3.0.dist-info/licenses/LICENSE,sha256=QBiVGQuKAESeCfQE344Ik2ex6g2zfYdu9WqrRWydxIs,1068
61
+ scraper2_hj3415-2.3.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
62
+ scraper2_hj3415-2.3.0.dist-info/METADATA,sha256=QvB781yiOX_OPA6sCcBfbSCu-lxgS7edswJq0064v4I,3457
63
+ scraper2_hj3415-2.3.0.dist-info/RECORD,,