iT邦幫忙

2024 iThome 鐵人賽

DAY 30
0

跌跌撞撞也終於到這次鐵人賽的最後一天了,這次因為是趕在最後一天參賽,每天的主題也只有大概的安排,變成寫什麼就介紹什麼,所以篇幅安排應該會覺得滿跳的,今天就來好好做個總整理,把上傳套件的流程再完整介紹一次。

上傳 Python 套件總整理

  1. 申請 PyPI 帳號,為了測試也可以一起申請 TestPyPI 的帳號,這兩邊不會互相影響,但要分別申請,資料不會共用。關於 PyPI 的介紹可以參考 Day 04 - PyPI 與 Github
  2. 通常我們在管理開源程式碼的時候,都會使用 Git 相關的網站來管理我們的公開程式碼,在第一步的介紹文章有提到其中一個,就是 Github。不管是我們自己開發,或是去其他開源貢獻 Github 都是一個很好的開源資源,這個系列也有介紹怎麼創建自己的 repository,以及如何操作 git 來對程式碼進行版本控制,可以參考下面幾篇文章:
  1. 把 Github 跟本地端程式碼搭配好,就可以開始撰寫套件內容,這次的開發環境可以參考:Day 02 - 開發環境介紹Day 03 - VSCode 程式編輯器。我後來在這次鐵人賽後開發都用 Cursor,他的 autocomplete 是真的滿好用的,大家可以去試用看看他們的 Pro 方案,有七天免費可以使用。
  2. 這次開發的套件主要功能是 Baseball Savant 的 Statcast Search 以及他們去年新釋出的 Minor League Statcast Search,會用到 Python 第三方套件 requests 來使用 API Url 獲得資料,API 的組成會使用 Utils 並且使用 Enums 幫助管理數值。

功能介紹會從系列文章 Day 13 - Statcast Search 開始

  1. 功能完成後,就可以上傳到 PyPI 上面給別人下載,有手動的上傳介紹:Day 09 - 簡單上傳一版到 TestPyPI,跟使用 Github Actions 的上傳介紹:Day 11 - 用 Github Actions 建立 workflowDay 12 - Github Actions 上傳 PyPI 版號問題,另外要記得同個版號不能重複上傳,記得在上傳前確認一下。最後附上我目前的設定檔:publish.yml,他會在我上傳 Github tag 的時候自動上傳到 PyPI 並且 release 到 Github 上。

  2. 以上大概就完成上傳套件的基本流程,也別忘了開源要附上 License,在這篇 Day 06 - Open Source License 有介紹到。其他還有一些不是一定必要,但可以幫助到使用者或其他貢獻者的工具,像是:

大家也都可以參考看看,希望對大家都有幫助。

鐵人賽總結

其實這次的鐵人賽主題滿早之前就想好了,因為 pybaseball 已經一陣子沒更新,就想說自己來寫一個看看,但沒想到後來九月份我剛好工作遇到特別忙的專案,所以沒提前做準備,最後還趕在最後一天才開賽,導致內容安排有點凌亂,實在抱歉。最後也有些東西還沒講到,像是可能介紹文件的多國語化,或是運用多執行序來抓資料來讓效能變好等等,之後可能會繼續用這個系列繼續介紹也不一定。

跟上次比起來這次比較像是不斷有新內容,所以會打亂原本的安排,但我也學到滿多東西的,挺開心。上次因為大多數是已經是既定內容,每天要寫什麼大概都定好了,變成可能要自己想點延伸的東西內容才會比較豐富,只能說都是一個不錯的經驗。

最後附上套件的 Repo 連結:baseball-stats-python,我最近應該都會在上面繼續修修改改,歡迎大家有興趣一起來開發,或是有遇到問題開 Issue 也是完全沒問題的。另外這次內容很多參考 Python Packaging User Guide 以及 Python 官方文件,雖然文件裡還不是全部都是繁中,但一直有一群志工在幫忙翻譯,之後他們又有再開 Meet-up 可以去支持一下,社群連結如下:

還有偷偷宣傳一下,之前有受邀去 Hello World Dev Conference 演講,有介紹關於工程師如何在體育界發展的介紹,大家有興趣也可以去看看:運動x程式x工程師

最後的最後,感謝大家耐心地看完這個系列,一樣有任何問題或建議歡迎留言告訴我,或是直接 E-mail 我也沒問題,我們有緣再見了,掰掰。


上一篇
Day 29 - 使用 logging 顯示更多訊息給使用者
下一篇
Day 31 - Formatter 與 Pre-commit 運用
系列文
上次介紹的棒球套件很少更新了,那就只好自己寫一個!?31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言