> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# util

> weave.trace.util の Python SDK リファレンス

export const SourceLink = ({url}) => <a href={url} target="_blank" rel="noopener noreferrer" className="source-link">
    Source
  </a>;

<h1 id="api-overview">
  API の概要
</h1>

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L105" />

<h2 id="class-contextawarethread">
  <kbd>クラス</kbd> `ContextAwareThread`
</h2>

呼び出し元のコンテキストで関数を実行するスレッド。

これは threading.Thread のドロップイン置換であり、スレッド内で呼び出しが期待どおりに動作することを保証します。Weave では特定の contextvar を設定する必要があります (call\_context.py を参照)。しかし、新しいスレッドは親からコンテキストを自動的にコピーしないため、呼び出しコンテキストが失われる可能性があります。これは好ましくありません！このクラスは contextvar のコピーを自動化するため、このスレッドを使用すると、ユーザーが期待するように「そのまま動作」します。

このクラスを使用せずに同じ効果を得るには、次のように記述します：

```python theme={"system"}
def run_with_context(func, *args, **kwargs):
     context = copy_context()
     def wrapper():
         context.run(func, *args, **kwargs)
     return wrapper

thread = threading.Thread(target=run_with_context(your_func, *args, **kwargs))
thread.start()
```

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L129" />

<h3 id="method-__init__">
  <kbd>メソッド</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(*args: 'Any', **kwargs: 'Any') → None
```

***

<h4 id="property-daemon">
  <kbd>プロパティ</kbd> daemon
</h4>

このスレッドがデーモンスレッドであるかどうかを示す真偽値です。

start() が呼び出される前に設定する必要があります。そうしないと RuntimeError が発生します。初期値は作成元のスレッドから継承されます。メインスレッドはデーモンスレッドではないため、メインスレッドで作成されたすべてのスレッドのデフォルトは daemon = False になります。

デーモンスレッドのみが残っている場合、Python プログラム全体が終了します。

***

<h4 id="property-ident">
  <kbd>プロパティ</kbd> ident
</h4>

このスレッドのスレッド識別子、または開始されていない場合は None です。

これはゼロ以外の整数です。get\_ident() 関数を参照してください。スレッドが終了して別のスレッドが作成されると、スレッド識別子は再利用される可能性があります。識別子は、スレッドが終了した後でも利用可能です。

***

<h4 id="property-name">
  <kbd>プロパティ</kbd> 名
</h4>

識別目的のみに使用される string です。

セマンティクスはありません。複数のスレッドに同じ名を付けることができます。初期の名はコンストラクターによって設定されます。

***

<h4 id="property-native_id">
  <kbd>プロパティ</kbd> native\_id
</h4>

このスレッドのネイティブな整数スレッド ID。まだ開始されていない場合は None です。

これは非負の整数です。get\_native\_id() 関数を参照してください。これはカーネルによって報告されたスレッド ID を表します。

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L133" />

<h3 id="method-run">
  <kbd>メソッド</kbd> `run`
</h3>

```python theme={"system"}
run() → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L45" />

<h2 id="class-contextawarethreadpoolexecutor">
  <kbd>クラス</kbd> `ContextAwareThreadPoolExecutor`
</h2>

呼び出し元のコンテキストで関数を実行する ThreadPoolExecutor です。

これは concurrent.futures.ThreadPoolExecutor のドロップイン置換で、executor 内でも Weave の Call が期待どおりに動作するようにします。Weave では特定の contextvar が設定されている必要があります (call\_context.py を参照) 。しかし、新しいスレッドは親スレッドのコンテキストを自動的にはコピーしないため、Call のコンテキストが失われるおそれがあり、これは望ましくありません。このクラスは contextvar のコピーを自動化するため、この executor を使用するだけで、ユーザーの想定どおりに "そのまま動作" します。

このクラスを使用しなくても、次のように記述すれば同じ効果が得られます。

```python theme={"system"}
with concurrent.futures.ThreadPoolExecutor() as executor:
     contexts = [copy_context() for _ in range(len(vals))]

     def _wrapped_fn(*args):
         return contexts.pop().run(fn, *args)

     executor.map(_wrapped_fn, vals)
```

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L68" />

<h3 id="method-__init__-2">
  <kbd>メソッド</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(*args: 'Any', **kwargs: 'Any') → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L77" />

<h3 id="method-map">
  <kbd>メソッド</kbd> `map`
</h3>

```python theme={"system"}
map(
    fn: 'Callable',
    *iterables: 'Iterable[Any]',
    timeout: 'float | None' = None,
    chunksize: 'int' = 1
) → Iterator
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L73" />

<h3 id="method-submit">
  <kbd>メソッド</kbd> `submit`
</h3>

```python theme={"system"}
submit(fn: 'Callable', *args: 'Any', **kwargs: 'Any') → Any
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L164" />

<h3 id="function-deprecated">
  <kbd>関数</kbd> `deprecated`
</h3>

```python theme={"system"}
deprecated(new_name: 'str') → Callable[[Callable[P, R]], Callable[P, R]]
```

関数を非推奨としてマークし、ユーザーを `new_name` にリダイレクトするデコレーター。

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L137" />

<h3 id="function-is_colab">
  <kbd>関数</kbd> `is_colab`
</h3>

```python theme={"system"}
is_colab()
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L146" />

<h3 id="function-is_notebook">
  <kbd>関数</kbd> `is_notebook`
</h3>

```python theme={"system"}
is_notebook() → bool
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L21" />

<h3 id="function-log_once">
  <kbd>関数</kbd> `log_once`
</h3>

```python theme={"system"}
log_once(log_method: 'Callable[[str], None]', message: 'str') → None
```

メッセージを一度だけログし、同じタイプの後続のメッセージを抑制します。ログを大量のメッセージで埋め尽くすことなく、エラーをユーザーに通知したい場合に便利です。

主に、同じエラーメッセージが何度も発生する可能性がある場合に役立ちます。たとえば、op の保存に失敗した場合、その op が呼び出されるたびに同じ失敗が発生する可能性が高くなります。また、パッチを適用したイテレーターでエラーが発生した場合は、結果を反復処理するたびにそのエラーが発生する可能性があります。この関数を使用すると、ユーザーのログを埋め尽くすことなく、エラーをユーザーに通知できます。

**引数:**

* <b>`log_method`</b>: メッセージをログするために使用するメソッド。string 型の引数を受け取る必要があります。
* <b>`message`</b>: ログするメッセージ。
  **例:**

```python theme={"system"}
log_once(logger.error, "Failed to save op")
```
