Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

コマンド一発でdocsの下にスライドや静的ファイルを配置できる #11

Closed
4 tasks done
ftnext opened this issue Feb 4, 2021 · 5 comments · Fixed by #12
Closed
4 tasks done

Comments

@ftnext
Copy link
Owner

ftnext commented Feb 4, 2021

#10 (comment) のリリース手順を自動化する

コマンドのイメージ

deployslide rakus_Feb_oss

機能(MVP)

  • docs/rakus_Feb_oss ディレクトリが作られる
  • build/revealjs/rakus_Feb_oss 下のHTMLファイルが docs/rakus_Feb_oss の下に置かれる
    • _static/revealjs4 という文字列は reveal.js に置換される
  • HTMLで使っている build/revealjs/_images 下の画像ファイルが docs/_images の下に置かれる
@ftnext
Copy link
Owner Author

ftnext commented Feb 11, 2021

インターフェースを揃えるために抽象クラスを利用
https://docs.python.org/ja/3/library/abc.html#abc.ABC

ABCMeta をメタクラスとするヘルパークラスです。このクラスを使うと、混乱しがちなメタクラスを使わずに、単に ABC を継承するだけで抽象基底クラスを作成できます。

デコレータはabstractmethodに一本化されていた(abstractpropertyなどは非推奨)
https://docs.python.org/ja/3/library/abc.html#abc.abstractmethod

@ftnext
Copy link
Owner Author

ftnext commented Feb 11, 2021

ハマった事象
https://bugs.python.org/issue41768

it introduced a getattr call [1] that causes class properties to be called when the class is used as a mock spec.

dataclassをMockのspecに指定するには、Noneなどを渡してインスタンス化する必要がある。
specに設定する中で、プロパティが呼び出されるらしく、Noneを渡していたことでTypeErrorになった。
→TypeErrorが発生しない型の値を渡して先に進んだ

検索して見つけた:specには文字列を要素とするイテラブルを使って属性を渡せるらしい
https://realpython.com/python-mock-library/#avoiding-common-problems-using-specifications

@ftnext
Copy link
Owner Author

ftnext commented Feb 11, 2021

TemporaryDirectory
https://docs.python.org/ja/3/library/tempfile.html#tempfile.TemporaryDirectory

name は with 文内の as のターゲットに割り当てられます。

asのターゲットからPathを作って一時ディレクトリへのPathとした(asのターゲットがname)

@ftnext
Copy link
Owner Author

ftnext commented Feb 11, 2021

画像ファイルのコピーには shutil.copyfile を使用
https://docs.python.org/ja/3/library/shutil.html#shutil.copyfile

@ftnext
Copy link
Owner Author

ftnext commented Feb 11, 2021

クラス分けとして、HTML用、画像用にsourceとdestinationのペアを表すクラス(XXXNamingRule)を作った。
このあとCSSについても追加する想定

buildの下とdocsの下で考えるとクラスは2つで済むが、こちらは考えがまとまらなかった。
今回の実装のように、ファイルの種類ごとに考えた場合、sourceとdestinationのディレクトリの指定は比較的容易な印象

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant