正在處理 Arrow 程式碼庫 🧐#
了解 Arrow 的結構#
Apache Arrow 儲存庫包含了 Arrow 可用的大部分函式庫的實作。
如同此處所寫,GLib (c_glib/
)、C++ (cpp/
)、C# (csharp/
)、Go (go/
)、Java (java/
)、JavaScript (js/
)、MATLAB (matlab/
)、Python (python/
)、R (r/
) 和 Ruby (ruby/
) 等語言在主資料夾中都有自己的子目錄。
Rust 有其自己的儲存庫,可在此處取得 這裡。
在特定語言的子目錄中,您可以找到與該語言相關的程式碼。例如
python/
資料夾包含pyarrow/
資料夾,其中包含 pyarrow 套件的程式碼,以及建置 pyarrow 時所需的 requirements 檔案。pyarrow/
包含 Python 和 Cython 程式碼。pyarrow/
也包含test/
資料夾,其中包含 pyarrow 模組的所有測試。r/
目錄包含 R 套件。
arrow 儲存庫中包含的其他子目錄有
ci/
包含各種持續整合 (CI) 工作使用的腳本。dev/
包含開發人員在封裝、測試或提交到 Arrow 時有用的腳本,以及擴展持續整合 (CI) 任務的定義。.github/
包含在 GitHub 持續整合 (CI) 上運行的工作流程,由某些動作觸發,例如開啟 PR。docs/
包含大部分的文件。請參閱 協助撰寫文件 以了解更多資訊。format/
包含 Arrow 欄狀格式和其他專案部分(例如 Flight RPC 框架)的二進位協定定義。
綁定、功能、修正和測試#
您可以閱讀本節,以獲得關於如何解決您遇到的程式庫問題的一些想法。
根據您想要解決的問題(新增簡單的綁定、新增功能、撰寫測試…),有不同的方法可以取得必要的資訊。
對於所有情況,您可以透過某種搜尋工具來搜尋函式以尋求幫助。根據我們的經驗,有兩種不錯的方法
透過 Arrow 儲存庫(非 Fork 的儲存庫)中的 GitHub 搜尋。這種方式很棒,因為 GitHub 也讓您搜尋函式定義和參考。
您選擇的 IDE。
綁定
術語「綁定」用於指稱 C++ 實作中的一個函式,該函式可以從另一種語言的函式中呼叫。在 C++ 中定義函式後,我們必須手動建立綁定,才能在該實作中使用它。
注意
您可以透過查看Pull Request 和單元測試來學習許多關於類似問題的知識。
在 Python 中新增修正
如果您要更新現有的函式,最簡單的方法是以互動方式執行 Python 或執行 Jupyter Notebook,並研究問題,直到您了解需要做什麼。
之後,您可以在 GitHub 上搜尋函式名稱,以查看函式的定義位置。
此外,如果產生錯誤,錯誤很可能會將您指向您需要查看的檔案。
Python - Cython - C++
當處理 Python 問題時,您很可能會遇到 Cython 程式碼。C++ 程式碼需要更新的可能性較小,儘管這可能會發生。
如前所述,底層程式碼是以 C++ 撰寫的。然後 Python 透過 Cython 連接到它。如果您不熟悉它,可以尋求協助,並記住,尋找類似的 Pull Request 和 GitHub 議題!
新增測試
有些議題只缺少測試。在這裡,您可以搜尋類似的函式,並查看這些函式的單元測試是如何撰寫的,以及它們如何在您的案例中應用。
這也適用於為您已解決的議題新增測試。
新功能
如果您要在 Python 中新增新功能,您可以查看 教學 以取得想法。
R 綁定背後的哲學
在撰寫 C++ 運算函式和 R 函式之間的綁定時,目標是透過與現有 R 函式相同的介面公開 C++ 功能。