Provide common replacement utils / functions many projects will need
まだ誰も着手していません。
評価
調査の方向性
まず、この issue で提案されている utility API と、ビルドツールとしての unasync の役割を確認します。issue ではファイルやテストが指定されていないため、作業に着手するには、まずこれらのユーティリティを unasync に含めるのか別のプロジェクトにするのかについて合意し、その後、サポートする関数、Python のバージョン、型ヒントの動作を定義する必要があります。
索引モデルが issue の本文から書いたものです。
説明
Some utility functions I was thinking about:
def azip(*iterables): # Convert any iterables and async iterables into a zipped async iterable
iterators = [aiter(x) for x in iterables]
async def generator():
while True:
try:
yield tuple([await x.__anext__() for x in iterators])
except StopAsyncIteration:
break
return generator().__aiter__()
def aiter(x): # Convert any iterable or async iterable into an async iterator
if hasattr(x, "__aiter__"):
return x.__aiter__()
elif hasattr(x, "__anext__"):
return x
async def aiter_wrapper():
for item in x:
yield item
return aiter_wrapper().__aiter__()
async def anext(i): # Advance an async iterator, good for mapping to `next()`
return await i.__anext__()
async def await_or_return(x): # Maps to 'return_()'?
if iscoroutine(x):
return await x
return x
# All of the sync variations of the above functions
next = next
iter = iter
zip = zip
def return_(x):
return x
Could also have azip_longest -> zip_longest, etc.
All of the async functions could be available only on Python 3.6+ so this could be used on projects that support 3.5 or less.
Could also provide type hints that are effected by unasync properly as well.
AsyncOrSyncIterable[X] = Union[AsyncIterable[X], Iterable[X]]
SyncIterable[X] = Iterable[X]
This should probably be a separate project to unasync as unasync is primarily a build tool, raising it here because it'd make sense for the tool to live under python-trio, maybe unasync-utils?
- 主要言語
- Python
- スター
- 108
- フォーク
- 16
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
python-trio/unasync のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 48/100
python-trio/unasync#79 · コメント 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 32/100
python-trio/unasync#78 · コメント 1 件 · リアクション 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
python-trio/unasync#74 · コメント 4 件 · リアクション 1 件 ·
-
JITオープン
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
python-trio/unasync#72 · コメント 3 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
python-trio/unasync#69 · コメント 1 件 · リアクション 1 件 ·
python-trio/unasync の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
BasedHardware/omi#20271 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 92/100
openai/openai-cookbook#3153 ·
メンテナーはふだん 1 日以内に返信
-
cvss-severity:high devguard l3montree-cybersecurity/devguard/devguard pkg:golang/github.com/l3montree-dev/devguard risk:low state:open
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
l3montree-dev/devguard#3146 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
-
bug confirmed issue
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
open-webui/open-webui#31849 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信