以下のようなモジュールを定義したとします。

# libmod.py
import os

def get_cwd():
    os.getcwd()

利用者はこれをインポートしますが、IDE等の補完候補にlibmod.pyがimportしているosを表示したくないのです。

from libmod import os # <= osはlibmodの実装に使っているだけなので候補に出したくない

ドキュメントをしっかり作成しておけば問題ないと思うのですが、そうではない場合、利用者側にとってどれがこのモジュールが提供する機能なのか判断しづらいように思います。

パッと思いつくのは実装用のモジュールと、公開用のモジュールを別にする方法です。

# _libmod.py
import os

def get_cwd():
    os.getcwd()

# libmod.py
from ._libmod import get_cwd

# app.py
from libmod import get_cwd

ただ、この方法だとファイル数が2倍になってしまい面倒です。何かスマートな解決方法はないでしょうか?