├── .github ├── labeler.yml ├── labels.yml ├── release-drafter.yml └── workflows │ ├── labeler.yml │ ├── labels.yml │ └── release-drafter.yml ├── .gitignore ├── README.md ├── renovate.json ├── twitter-client ├── .gitignore ├── Cargo.toml ├── README.md ├── cron.log ├── cronjob.sh └── src │ └── main.rs ├── twitter-crawler ├── .gitignore ├── README.md ├── go.mod ├── go.sum └── src │ ├── crawler.go │ └── main.go ├── ujimaru-api ├── .gitignore ├── Dockerfile ├── README.md ├── app.py ├── docker-compose.yml └── pyproject.toml ├── ujimaru-markov-experiment ├── .gitignore ├── README.rst ├── poetry.lock ├── pyproject.toml ├── tests │ ├── __init__.py │ └── test_ujimaru_markov_experiment.py └── ujimaru_markov_experiment │ ├── __init__.py │ ├── __main__.py │ ├── build_model.py │ ├── build_models.py │ ├── cleansing.py │ ├── library_test.py │ └── make_ujimaru.py ├── ujimaru-markov-model ├── .gitignore ├── README.md ├── poetry.lock ├── pyproject.toml ├── tests │ ├── __init__.py │ └── test_ujimaru_markov_model.py └── ujimaru_markov_model │ ├── __init__.py │ ├── cli.py │ └── ujimaru.py └── ujimaru-reformer ├── .gitignore ├── README.md ├── poetry.lock ├── pyproject.toml ├── tests ├── __init__.py └── test_ujimaru_text_generate.py └── ujimaru_reformer ├── __init__.py ├── __main__.py ├── config.gin ├── generate.py └── sentence_piece.py /.github/labeler.yml: -------------------------------------------------------------------------------- 1 | workflow: 2 | - .github/*.yml 3 | - .github/workflows/**/* 4 | 5 | dependencies: 6 | - Cargo.toml 7 | 8 | source: 9 | - src/**/*.rs 10 | 11 | tests: 12 | - tests/**/*.rs 13 | 14 | config: 15 | - Makefile.toml 16 | - .gitignore 17 | 18 | document: 19 | - README.md 20 | - LICENSE 21 | -------------------------------------------------------------------------------- /.github/labels.yml: -------------------------------------------------------------------------------- 1 | - name: ready-for-merge 2 | color: "02c39a" 3 | 4 | - name: experimental 5 | color: "e76f51" 6 | 7 | - name: WIP 8 | color: "0077b6" 9 | 10 | - name: workflow 11 | color: "bfc0c0" 12 | 13 | - name: dependencies 14 | color: "222E50" 15 | 16 | - name: source 17 | color: "88d498" 18 | 19 | - name: tests 20 | color: "3a86ff" 21 | 22 | - name: config 23 | color: "f8e16c" 24 | -------------------------------------------------------------------------------- /.github/release-drafter.yml: -------------------------------------------------------------------------------- 1 | name-template: "v$NEXT_PATCH_VERSION 🌈" 2 | tag-template: "v$NEXT_PATCH_VERSION" 3 | categories: 4 | - title: "🚀 Features" 5 | labels: 6 | - "feature" 7 | - "enhancement" 8 | 9 | - title: ":bug: Bug Fixes" 10 | labels: 11 | - "fix" 12 | - "bugfix" 13 | - "bug" 14 | 15 | - title: "🧰 Maintenance" 16 | label: "chore" 17 | 18 | - title: ":white_check_mark: Workflows" 19 | label: "workflow" 20 | 21 | - title: ":up: Dependencies" 22 | label: "dependencies" 23 | 24 | - title: ":art: Tests" 25 | label: "tests" 26 | 27 | - title: ":shirt: Config" 28 | label: "tests" 29 | 30 | - title: ":memo: Document" 31 | label: "document" 32 | 33 | change-template: "- $TITLE @$AUTHOR (#$NUMBER)" 34 | template: | 35 | ## :sparkles: Changes :sparkles: 36 | 37 | $CHANGES 38 | -------------------------------------------------------------------------------- /.github/workflows/labeler.yml: -------------------------------------------------------------------------------- 1 | name: Labeler 2 | 3 | on: 4 | - pull_request 5 | 6 | jobs: 7 | triage: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/labeler@v2 11 | with: 12 | repo-token: "${{ secrets.GITHUB_TOKEN }}" 13 | configuration-path: ".github/labeler.yml" 14 | -------------------------------------------------------------------------------- /.github/workflows/labels.yml: -------------------------------------------------------------------------------- 1 | name: Sync labels 2 | 3 | on: 4 | push: 5 | paths: 6 | - ".github/labels.yml" 7 | - ".github/workflows/label_sync.yml" 8 | 9 | jobs: 10 | labeler: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | - uses: crazy-max/ghaction-github-labeler@v2 15 | with: 16 | yaml_file: ".github/labels.yml" 17 | skip_delete: true # 定義ファイルに記載の無いラベルの削除を行わない 18 | dry_run: false # 実際に反映する。trueの場合は、結果のみ表示で反映しない。 19 | env: 20 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 21 | -------------------------------------------------------------------------------- /.github/workflows/release-drafter.yml: -------------------------------------------------------------------------------- 1 | name: Release Drafter 2 | on: 3 | push: 4 | branches: 5 | # branches to consider in the event; optional, defaults to all 6 | - master 7 | 8 | jobs: 9 | update_release_draft: 10 | runs-on: ubuntu-latest 11 | steps: 12 | # Drafts your next Release notes as Pull Requests are merged into "master" 13 | - uses: release-drafter/release-drafter@v5 14 | with: 15 | # (Optional) specify config name to use, relative to .github/. Default: release-drafter.yml 16 | config-name: release-drafter.yml 17 | env: 18 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .envrc 2 | .env 3 | *.txt 4 | *.json 5 | .vscode -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ujimaru (Happy Birthday uzimaru0000) 2 | 3 | This project is a twitter bot like [@uzimaru0000](https://twitter.com/uzimaru0000) 4 | 5 | projects: 6 | - Twitter Client (Rust, Kuon) 7 | - Twitter Crawler (Go, anaconda) 8 | - Ujimaru API (Python, flask) 9 | - Ujimaru Markov Experiment(Python, NLP) 10 | - Ujimaru Markov Model (Python, NLP) 11 | - Ujimaru Reformer (Python, NLP) 12 | 13 | ## Twitter Client 14 | 15 | Twitter client implementations for [@ujimaru0000](https://twitter.com/ujimaru0000) 16 | 17 | Written in Rust. (Using [Kuon](https://github.com/hppRC/kuon)) 18 | 19 | ### TL;DR 20 | 21 | Just below. 22 | 23 | ```rust 24 | let api: kuon::TwitterAPI = get_api_client().await?; 25 | 26 | let endpoint = &std::env::var("UJIMARU_API")?; 27 | let text = reqwest::get(endpoint).await?.text().await?; 28 | 29 | api.tweet(&text).await?; 30 | ``` 31 | 32 | 33 | ## Twitter Crawler 34 | 35 | Twitter crawler to collect tweets of Uzimaru and other users. 36 | 37 | Written in Go. (Using [anaconda](https://github.com/ChimeraCoder/anaconda)) 38 | 39 | 40 | ## Ujimaru API 41 | 42 | Text generation API for ujimaru. 43 | 44 | Written in Python. (Using [markovify](https://github.com/jsvine/markovify) and [ujimaru-markov-model](https://pypi.org/project/ujimaru-markov-model/)) 45 | 46 | This is a flask application, and deployed on the Cloud Run. 47 | 48 | 49 | ## Ujimaru Markov Experiment 50 | 51 | Implementations and experiments. 52 | 53 | - build Markov models 54 | - dump models as JSON 55 | - cleansing texts 56 | - library usage tests 57 | 58 | 59 | ## Ujimaru Markov Model 60 | 61 | An easy ujimaru(uzimaru0000 like) text generator library. 62 | 63 | PyPI: [ujimaru-markov-model](https://pypi.org/project/ujimaru-markov-model/) 64 | 65 | This library generates text using a third-order Markov chain. 66 | 67 | ``` 68 | pip install ujimaru-markov-model 69 | ``` 70 | 71 | ### Usage 72 | 73 | ``` 74 | # On CLI 75 | ujimaru 76 | # へーー自然を撮るならいいってことか(それはそうなんだけど普通のRTになってるって! 77 | ``` 78 | 79 | or 80 | 81 | ```python 82 | # In a Python program 83 | # load model (model included). 84 | from ujimaru_markov_model import Ujimaru 85 | ujimaru = Ujimaru() 86 | 87 | print(ujimaru.make_sentence()) 88 | # なんでかElmでCLI作って得られた知見をいくつかqiitaとかにいれておいてcpすることにします!! 89 | print(ujimaru.make_tweet()) # A sentence of 140 characters or less 90 | # 検索しても無限にredux-thunkが出てきて「なっっっっつ」ってなったけど0.1.0のtagを打ったらちゃんとブランチ分けます 91 | ``` 92 | 93 | ## Ujimaru Reformer 94 | 95 | A text generation program by [reformer](https://github.com/google/trax/tree/master/trax/models/reformer) and [sentencepiece](https://github.com/google/sentencepiece). 96 | 97 | 98 | see below 99 | - [https://ai-scholar.tech/articles/treatise/reformer-ai-364](https://ai-scholar.tech/articles/treatise/reformer-ai-364) 100 | - [Reformer: The Efficient Transformer](https://arxiv.org/abs/2001.04451) 101 | 102 | 103 | ### Caution 104 | 105 | This program will use your computer resources extremely. 106 | You should use Google Colaboratory to run this model. 107 | 108 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "config:base" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /twitter-client/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | 5 | # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries 6 | # More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html 7 | Cargo.lock 8 | 9 | # These are backup files generated by rustfmt 10 | **/*.rs.bk 11 | -------------------------------------------------------------------------------- /twitter-client/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "twitter-client" 3 | version = "0.1.0" 4 | authors = ["hppRC "] 5 | edition = "2018" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | [dependencies] 9 | kuon = "0.0.4" 10 | tokio = { version = "0.2.21", features = ["full"] } 11 | anyhow = "1.0.31" 12 | reqwest = "0.10.6" 13 | -------------------------------------------------------------------------------- /twitter-client/README.md: -------------------------------------------------------------------------------- 1 | # Ujimaru Twitter Client 2 | 3 | -------------------------------------------------------------------------------- /twitter-client/cron.log: -------------------------------------------------------------------------------- 1 | 端的に言うとUnityで仮想DOM的なアプローチをしたい感もある気もするんですが、こんな感じのコードが大変そうでしたね(読むのが辛い) 2 | ここあたりのhelper的なやつはコンパイラの方に変えられてた見たいな使い方を学んでる 3 | 今使ってるAirPodsを親に売ってProを買うことにした方がいいものが作れそう、というところが現実だと納得している自分もいる 4 | 何言ってるんだけど、緑茶の甘さがちゃんと分かるレベルの味が出てました 5 | 良さそう名前被りとかもなさそうだけど見え方どうなってるんだ・・・ 6 | ほえーガチでカメラ初心者なんだけど、なんか使うのやめたんですよね 7 | 最低限だけなのでこれは偽この部分すき 8 | 島クリエイターが使えるようになったから何を作ればいいかわからんが 9 | 家にPCが5台ある人になってしまったので完全にお一人様仕様になってしまったな 10 | 豆腐なくなっちゃった・・・ちゃんと見てみます 11 | ぷらす先生、毎回センスあるバーチャル背景にしてるって認識であってます?? 12 | 僕よりstarついてるリポジトリ持ってるしもうすでに越しているのではなくて、他も見渡した上で投資価値が低めの時間 13 | 自前で用意するのはちょっとだるいな・・・!(普通に痛い) 14 | どうやったら6.5号室になるんだ???ってなった 15 | 強い意志を持つのです...?それともガチ...!! 16 | 着ないとかではなく、自分は耳になんかぶっ刺さってたほうが楽しい 17 | マヤミトがついに触覚を錯覚し始めたか・・・」「これはバイトn日分・・・ 18 | コートを捨てたいんだけど、膝が痛くなってる 19 | 有線LANにすると解決出来ます(そんなことはしないほうがきれいな見た目になりそう(これは馬肉) 20 | おっ今日のコンピュータ言語論ってどうなんだろ意外と居そうだけど 21 | エスプレッソ、面白いのが失敗だといつもより1.2倍位やる気が出なくて活動できないバグでは?」ってなった 22 | マッチングアプリやるよりマッチングアプリを使ってるからaddとcommit出来ればgitは大丈夫だよ 23 | のあ生きてるのか気になる👀招待希望TechFeedPro使いたい 24 | Nodeのジェネリクスだけ違ったらRedrawじゃなくてジェネリクスを付け替える見たいなケースだったから住所が違うとか・・・なんかCloudRun使えないし 25 | 牛乳に砂糖を入れて泡立てたら泡が固くなるということはと言うことでMarkdownにも使われていた 26 | 実はあまり好きじゃないんだよね(あくまで理想) 27 | 次会ったとき楽しみにしてるよ😎 28 | 世の中いろんな人間がいるな・・・ちょっと検討してみます! 29 | COMP飲んだあと絶対お腹ゴロゴロするんだけどなんでなんだろ・・・ 30 | コンビニで牛乳買ったんだけど、たくさんあって悪くなったら嫌だなーって思いました(ただ面白い(?)の数かな 31 | なんか企画されてましたうじまる生誕LT会に参加を申し込みました!OthloTech 32 | 僕も使ったこと無いから触ってみよう 33 | timesも全員分通知が来るからお掃除しないと・・・ 34 | 金曜日だしお酒飲みたいけど牛乳が無いのでなんで休みなのに仕事してる人3人いるんだが? 35 | Slackを文字絵文字が追加された 36 | 彼は今のままが(見てる人がいたら、それ僕です 37 | 富士急の絶望要塞行きたい。福岡帰りたい、何時までだ? 38 | 参照が剥がれてる気がするんだけど今作だと全然違うねー 39 | 毎食ちゃんと食べた気がするな・・・ 40 | 酒を飲んでしまったので今年の営業は終了です 41 | 関節痛男になってる気がする 42 | じいさんち、やること無いから触ってみよう 43 | 電波のあるところにきた瞬間に通知がいってウザがられる回 44 | 春休み、生活リズムが終わるからどうにかしてくれ・・・! 45 | それになっているからこのforループでリストを回すことができる(しなくてもいい)ってことか(それはそう 46 | TransformClassに生えてる・・・?人間かそれ以外か見たいな生活になってるので無理だ 47 | ZliのTimesが完全にTwitterになってるから来週までにどうにかしたいというモチベーションしか無いが・・・ 48 | 今日、気軽にGitHubのtopページを人前で見れなくなった・・・はvercelに置いてをにするか・・・! 49 | マヤミト誕生日&はとバスを慰める会になってしまうのは仕方ないのかな・・・ 50 | 待機所が公開されてたりする? 51 | ロゴが好き、というところが現実だと思いました)なるほどー別のライブラリでchildがいる可能性があるのでちゃんとした物送った 52 | そうそう!ちょうど使いたいやつだなーって思ってたのOKIPPAがあたってる音か 53 | プログラミング、結構遊びの延長みたいなところがあるから4分木でよさそう感ある 54 | 寝て起きたら志村けん亡くなってた...ってよく分かる 55 | これの→のボタンのhoverを1枚の画像のようなinterfaceのポインタを渡してもインタフェースとしてはkeywordで大文字小文字の区別をつけないのでストックがないマン的にはつらい 56 | ふと思ったんだけどリュウグウノツカイ釣ってる人、石油王とかか? 57 | やってませんでしたになってしまうから相談とかが動いてるんだっけ 58 | んーそんなことないか 59 | 自分、何がいいんだ? 60 | ロゴが好き、というところが現実だと思いますが... 61 | TSでこれ使って似たようなことあったけど、2週間目あたりからやる気が出なくて活動できないお腹が空くとやる気が出ないの日光を浴びて内接が出てきた 62 | 最初に適当につけてから変えてないやつですね。それか土下座してレシピを教えてもらう。 63 | 今日、ハンバーグ作るときパン粉が無くて代用品を調べてたんだけど関数合成なんて高校でやってたっけ...? 64 | どう森、1.0にした 65 | おうふ。ちょうど出てて見てなかったです、、、出世払いでおごって下さい!🤑🤑🤑 66 | あー無限Listの説明のときに買ったやつだからだいぶ前だなー 67 | これからコードを書こうと思っていたのにお酒を飲んでしまった普段からは信じられない 68 | それはそうと今日中に良いイスをポチりたい 69 | parcelでtailwindをやるの調べたらelmの記事が無いので飲めない・・・ 70 | 創作欲が爆発してはいけないのか...? 71 | 昨日からプログラミングより料理してるときに出てきたのかなーVDOM実装を読む配信をしようと思ったがウンコしてたらコードが書きたくなってきたマン 72 | 「愛国心持ってますよね!やりたい感ある 73 | やってほしい!!!!!! 74 | インターネット帰ってきて...!! 75 | いこ!!!!!!!オリジナルドラマが五十嵐裕美&高田憂希!?!?!?どうぶつの森AnimalCrossingACNHNintendoSwitch 76 | うぅ・・・? 77 | 俺はなんでPCでdeckを開いてスマホでtweetしてるんだけどYouTubeMusicのフロントエンドってWebComponents? 78 | 昔のどう森、1.3倍位美味しくなる気がするリングフィットアドベンチャーRingFitAdventureNintendoSwitch 79 | LGTM、どうせTwitterのファボがいいねになって今普通に使ってる人は使ってると思ってた) 80 | 腰が死んでるな 81 | は?4時じゃん、草 82 | 彼は今のままが(見てる人がいるのは知ってるんだ!仮眠しようって言って寝たら朝になってるな 83 | 電池ってどうやって表現してるんだろステンシルで抜いてるのか丸わかりになってしまった 84 | YouTubeの表示名ってどうやって作るんだっけか 85 | SVG化してないからMacに多段SSHしないと・・・!そう考えるとちょっと悲しいな 86 | 歯医者から帰ってきた!研究室だれもいないからね・・・ 87 | マジです(学生証の写真があって〜って言う話をしてるおじいちゃんがいた 88 | 布団から出れないんだよね 89 | 人類どうやってOGP画像生成してるのいい・・・ 90 | うーん不具合ですかね、やる気が一気に無くなった気がする 91 | って思ったら0.19に対応してないから昔のアイコンの緑 92 | ElmFile->ElmAST->TSAST->TSAST->TSDeclarationFilesをしようとしてそう 93 | プロフページが変わった感じなのかな」ペロッ?「石鹸やで」🤢 94 | 入ってからメアドを変えればいいのでは?という気持ちになってるな 95 | thunkってなんかのときに聞いた記憶があるんだけどtrackpadがほしいからなーってなってる(あと画面も) 96 | なるほど・・・・ 97 | 京都に行って京大の人たち普通につよつよでは? 98 | 11日前のがやっとマージされたーstoreから解放されたー 99 | これかなり致命的で生産性が10倍くらい出るな 100 | RTAやってみたいなー 101 | 人参を千切りにしてるんだ...つら... 102 | きれいなうんこがあるわけ無いだろ!!!!出る!!!!! 103 | マカロン、「混ぜる」と「クソ」を掛けた高度なギャグです 104 | 勝った...(意志がないとリモート授業は教授も不安になるんだろうな 105 | cssのプロパティの並びはフォーマットのレベルではないので見たくない人がいてびっくりした 106 | 急にネット死ぬのやめてくれって感じ 107 | 夢を見て起きてしまってから寝れないのなんかわかりませんでした 108 | あ、そうなのか・・・ 109 | DMで送られてきた 110 | Suchmos聴いてるだけで無限に時間が潰せる 111 | うぅ・・・有線使ってからのギャップなのかな・・・ 112 | 今年の就活生大変そう、と言うだけで感謝すべきなんですけどね 113 | 3時だから1日寝てない・・・ちょっと検討してみます 114 | 発射されたで変なことを考えて保険をかけて「楽勝ではないooc_2020 115 | あの人寝てるんですかは良さそう 116 | 金遣いが荒いので常にお金がほしいのでバイトをするマンになってた 117 | 今寝ると生活習慣の時間に起きてたら帰れませんでした🔚 118 | 鴨川カップル、奈良の鹿と同じ存在だと思ってたのですが... 119 | それだVerticalLayoutとHorizontalLayoutをスクリプトから入れ替えようとするとって言われるやつでした 120 | あとswitchで型でパターンマッチしてキャスをするとStackOverflowになってしまう 121 | ちょうど1年くらいtigを使ってるのかよ 122 | 確かにそう言われるとそうなんです、、、 123 | 評価を遅らせるためにthunkにしてるのが理想なんだろうけどね...休み...って途方に暮れてる 124 | Error: missing field `created_at` at line 1 column 60 125 | 確かにそうかも知れないんだけど、普通に良さだったから定期的に行こ 126 | 最後にやったの5年前くらいだしそれはそうって感じなんだけど、httpsじゃないサイトがあるんだよなぁ 127 | うぅ・・・? 128 | マヤミトがKotlinを使ってフルスタックエンジニアになっていく・・・?(パッチを当てる部分はあるけど) 129 | あ、Scriptが実行されてない説が出てきた(4日くらい家から出てない) 130 | ビルドが地獄みたいに遅いんだけどなんでなんだろ・・・ 131 | GitHubのパーソナルダッシュボードっていい感じに川を作るアルゴリズムとかないのか 132 | ここあたりのhelper的なやつはコンパイラの方に接続ができないんだけど準備が面倒なんだよなどうやってそれを判断するか 133 | 会社によりけりって感じはしますね、すごい・・・ 134 | えらいので大学に行く 135 | いくぞいくぞいくぞ(秋田に誰もいないからね・・・ 136 | nowだとSPAするのにそもそもidがわからなくてフォークして書き換えるのがいい気がする 137 | アマプラにありますね・・・ 138 | ZOOMのアイコン設定してるから制限されてるので一人でコーディングしてたらなんか虚しくなってきたんだが? 139 | プログラミング、結構遊びの延長みたいなところがある程度分かったから成長を感じる 140 | あつ森、細部が神なんだよな、Subって、きっと 141 | 本物のGAFAのどこかに所属している人はだめらしい、、、 142 | なぜなのかなー 143 | 課題をやるのを忘れていた顔をしていると思っていたやつが思ったよりちゃんとやっていておーってなった 144 | 普通にアプリケーションを実装するのめんどくさそうだなーって思ったけどどう森やるもんねー 145 | 馬肉が安かったので今日は料理しようかな 146 | 新年度になったので普通にこれからありだなってなってる 147 | クローラーはサイトを巡回するやつでスクレイピングは情報をとってくる手段 148 | USキーだと入力モードがどっちなのか分からないんだけどSDKつかうよりHTTPで通信したほうがいいのでは? 149 | これからコードを書こうと思っていたやつが思ったよりちゃんとやっていておーってなった 150 | あしたのLT、スライドはもう出来てるからFreeだと思ってる 151 | マヤミト誕生日&はとバスを慰める会になってしまうので死活問題だしなー 152 | これに答えようとしたけど無事に失敗しました 153 | USキーだと入力モードがどっちなのかmin<=x<=maxなのか・・・ 154 | Slackを文字絵文字が追加されてて良さげじゃんって鳴ってる 155 | 電池ってどうやって表現してるんだろステンシルで抜いてるのか気になる👀招待希望TechFeedPro使いたい 156 | topのblurかかってて端が白くなってるのか気になる👀招待希望TechFeedPro使いたい 157 | 洗濯してたの忘れててスピーカーで音楽流しながら作業してるけどうるさいな 158 | -------------------------------------------------------------------------------- /twitter-client/cronjob.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd ~/ghq/github.com/hppRC/ujimaru/twitter-client 3 | 4 | # source Twitter API tokens and keys 5 | source .envrc 6 | 7 | ./target/release/twitter-client || echo " 8 | `date` 9 | ☠️ ujimaru Run failed ☠️ 10 | " | slackcat --channel misc -t -s -u bot 11 | -------------------------------------------------------------------------------- /twitter-client/src/main.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Result; 2 | 3 | async fn get_api_client() -> Result { 4 | let access_token = &std::env::var("ACCESS_TOKEN")?; 5 | let access_token_secret = &std::env::var("ACCESS_TOKEN_SECRET")?; 6 | let api_key = &std::env::var("API_KEY")?; 7 | let api_secret_key = &std::env::var("API_SECRET_KEY")?; 8 | 9 | kuon::TwitterAPI::new(api_key, api_secret_key, access_token, access_token_secret).await 10 | } 11 | 12 | #[tokio::main] 13 | async fn main() -> Result<()> { 14 | let api: kuon::TwitterAPI = get_api_client().await?; 15 | 16 | let endpoint = &std::env::var("UJIMARU_API")?; 17 | let text = reqwest::get(endpoint).await?.text().await?; 18 | 19 | let _ = api.tweet(&text).await; 20 | println!("{}", text); 21 | 22 | Ok(()) 23 | } 24 | -------------------------------------------------------------------------------- /twitter-crawler/.gitignore: -------------------------------------------------------------------------------- 1 | # Binaries for programs and plugins 2 | *.exe 3 | *.exe~ 4 | *.dll 5 | *.so 6 | *.dylib 7 | 8 | # Test binary, built with `go test -c` 9 | *.test 10 | 11 | # Output of the go coverage tool, specifically when used with LiteIDE 12 | *.out 13 | 14 | # Dependency directories (remove the comment below to include it) 15 | # vendor/ 16 | 17 | *.txt 18 | -------------------------------------------------------------------------------- /twitter-crawler/README.md: -------------------------------------------------------------------------------- 1 | # Ujimaru Twitter Crawler 2 | 3 | Twitter Crawler written in Go 4 | 5 | using [anaconda](https://github.com/ChimeraCoder/anaconda) -------------------------------------------------------------------------------- /twitter-crawler/go.mod: -------------------------------------------------------------------------------- 1 | module ujimaru-twitter-crawler 2 | 3 | go 1.14 4 | 5 | require ( 6 | github.com/ChimeraCoder/anaconda v2.0.0+incompatible // indirect 7 | github.com/ChimeraCoder/tokenbucket v0.0.0-20131201223612-c5a927568de7 // indirect 8 | github.com/azr/backoff v0.0.0-20160115115103-53511d3c7330 // indirect 9 | github.com/dustin/go-jsonpointer v0.0.0-20160814072949-ba0abeacc3dc // indirect 10 | github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad // indirect 11 | github.com/garyburd/go-oauth v0.0.0-20180319155456-bca2e7f09a17 // indirect 12 | github.com/hppRC/anaconda v2.2.6+incompatible // indirect 13 | github.com/hpprc/anaconda v2.2.6+incompatible // indirect 14 | github.com/kelseyhightower/envconfig v1.4.0 // indirect 15 | golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2 // indirect 16 | ) 17 | -------------------------------------------------------------------------------- /twitter-crawler/go.sum: -------------------------------------------------------------------------------- 1 | github.com/ChimeraCoder/anaconda v1.0.0 h1:B7KZV+CE2iwbC15sh+rh5vaWs4+XJx1XC4iHvHtsZrQ= 2 | github.com/ChimeraCoder/anaconda v2.0.0+incompatible h1:F0eD7CHXieZ+VLboCD5UAqCeAzJZxcr90zSCcuJopJs= 3 | github.com/ChimeraCoder/anaconda v2.0.0+incompatible/go.mod h1:TCt3MijIq3Qqo9SBtuW/rrM4x7rDfWqYWHj8T7hLcLg= 4 | github.com/ChimeraCoder/tokenbucket v0.0.0-20131201223612-c5a927568de7 h1:r+EmXjfPosKO4wfiMLe1XQictsIlhErTufbWUsjOTZs= 5 | github.com/ChimeraCoder/tokenbucket v0.0.0-20131201223612-c5a927568de7/go.mod h1:b2EuEMLSG9q3bZ95ql1+8oVqzzrTNSiOQqSXWFBzxeI= 6 | github.com/azr/backoff v0.0.0-20160115115103-53511d3c7330 h1:ekDALXAVvY/Ub1UtNta3inKQwZ/jMB/zpOtD8rAYh78= 7 | github.com/azr/backoff v0.0.0-20160115115103-53511d3c7330/go.mod h1:nH+k0SvAt3HeiYyOlJpLLv1HG1p7KWP7qU9QPp2/pCo= 8 | github.com/dustin/go-jsonpointer v0.0.0-20160814072949-ba0abeacc3dc h1:tP7tkU+vIsEOKiK+l/NSLN4uUtkyuxc6hgYpQeCWAeI= 9 | github.com/dustin/go-jsonpointer v0.0.0-20160814072949-ba0abeacc3dc/go.mod h1:ORH5Qp2bskd9NzSfKqAF7tKfONsEkCarTE5ESr/RVBw= 10 | github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad h1:Qk76DOWdOp+GlyDKBAG3Klr9cn7N+LcYc82AZ2S7+cA= 11 | github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad/go.mod h1:mPKfmRa823oBIgl2r20LeMSpTAteW5j7FLkc0vjmzyQ= 12 | github.com/garyburd/go-oauth v0.0.0-20180319155456-bca2e7f09a17 h1:GOfMz6cRgTJ9jWV0qAezv642OhPnKEG7gtUjJSdStHE= 13 | github.com/garyburd/go-oauth v0.0.0-20180319155456-bca2e7f09a17/go.mod h1:HfkOCN6fkKKaPSAeNq/er3xObxTW4VLeY6UUK895gLQ= 14 | github.com/hppRC/anaconda v2.2.6+incompatible h1:V2M0mzm9UqS7e4y6PA2AJQ1FSAMXkOOxtV8HTo3YPAk= 15 | github.com/hppRC/anaconda v2.2.6+incompatible/go.mod h1:nmekssbtgblZJ4YDPOGnC6kq43Z29ZbEhrQSXdVtQz8= 16 | github.com/hpprc/anaconda v1.0.0 h1:J9wziCBqulNmihN0E6s5SQJG6OqirykJI0jZYDs99ZU= 17 | github.com/hpprc/anaconda v2.2.6+incompatible h1:Ogw7qt8SUd4U1aVmWnhP6QsFehY7nS28eRDX1uifT6E= 18 | github.com/hpprc/anaconda v2.2.6+incompatible/go.mod h1:Lez2TGhZ1hVeKSwVfqiHO6oG8i5+3Ur78bsf5X/0s9c= 19 | github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8= 20 | github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= 21 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 22 | golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2 h1:eDrdRpKgkcCqKZQwyZRyeFZgfqt37SL7Kv3tok06cKE= 23 | golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= 24 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 25 | golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 26 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 27 | -------------------------------------------------------------------------------- /twitter-crawler/src/crawler.go: -------------------------------------------------------------------------------- 1 | // package main 2 | 3 | // import ( 4 | // "fmt" 5 | // "html" 6 | // "log" 7 | // "net/url" 8 | // "os" 9 | // "regexp" 10 | // "strings" 11 | // "time" 12 | 13 | // "github.com/hpprc/anaconda" 14 | // "github.com/kelseyhightower/envconfig" 15 | // ) 16 | 17 | // type specification struct { 18 | // APIKey string `envconfig:"API_KEY"` 19 | // APISecretKey string `envconfig:"API_SECRET_KEY"` 20 | // AccesssToken string `envconfig:"ACCESS_TOKEN"` 21 | // AccessTokenSecret string `envconfig:"ACCESS_TOKEN_SECRET"` 22 | // } 23 | 24 | // var rep *regexp.Regexp = regexp.MustCompile("(@[A-Za-z0-9_]+\\s)|(https?://[\\w/:%#\\$&\\?\\(\\)~\\.=\\+\\-]+)|(`[\\s\\S]*?`)|(\n|\r\n|\r)") 25 | 26 | // func deleteAutomaticTweet(text string) string { 27 | // if strings.HasSuffix(text, "#contributter_report") || 28 | // strings.HasPrefix(text, "Liked on YouTube:") || 29 | // strings.Contains(text, "のポスト数") { 30 | // text = "" 31 | // } 32 | 33 | // return text 34 | // } 35 | 36 | // func cleansingTweet(text string) string { 37 | // text = deleteAutomaticTweet(text) 38 | // text = rep.ReplaceAllString(text, "") 39 | // text = html.UnescapeString(text) 40 | // text = strings.TrimSpace(text) 41 | // return text 42 | // } 43 | 44 | // func main() { 45 | // var s specification 46 | // err := envconfig.Process("", &s) 47 | // if err != nil { 48 | // log.Fatal(err.Error()) 49 | // } 50 | // format := "API_KEY: %s\nAPI_SECRET_KEY: %s\nACCESS_TOKEN: %s\nACCESS_TOKEN_SECRET: %s\n" 51 | // _, err = fmt.Printf(format, s.APIKey, s.APISecretKey, s.AccessTokenSecret, s.AccesssToken) 52 | // if err != nil { 53 | // log.Fatal(err.Error()) 54 | // } 55 | 56 | // // := anaconda.NewTwitterApiWithCredentials("your-access-token", "your-access-token-secret", "your-consumer-key", "your-consumer-secret") 57 | // api := anaconda.NewTwitterApiWithCredentials(s.AccesssToken, s.AccessTokenSecret, s.APIKey, s.APISecretKey) 58 | 59 | // var ( 60 | // res anaconda.SearchFullArchiveResponse 61 | // ) 62 | 63 | // //os.O_RDWRを渡しているので、同時に読み込みも可能 64 | // file, err := os.OpenFile("tweets-extra-7.txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) 65 | // if err != nil { 66 | // log.Fatal(err) 67 | // } 68 | // defer file.Close() 69 | 70 | // // fullArchiveAPIUrl := "https://api.twitter.com/1.1/tweets/search/fullarchive/ujimaru.json" 71 | // query := "from:uzimaru0000" 72 | // date := "202005170000" 73 | // params := url.Values{ 74 | // "toDate": []string{date}, 75 | // } 76 | 77 | // // fmt.Println(api.GetSearch("にじさんじ", nil)) 78 | // res, _ = api.GetSearchFrom30dayArchive(query, params, "ujimaru") 79 | // fmt.Println("Next: ", res.Next) 80 | // fmt.Println("Parameters: ", res.RequestParameters) 81 | // fmt.Println("FromDate: ", res.RequestParameters.FromDate) 82 | // fmt.Println("ToDate: ", res.RequestParameters.ToDate) 83 | // fmt.Println("MaxResults: ", res.RequestParameters.MaxResults) 84 | // for _, tweet := range res.Results { 85 | // text := cleansingTweet(tweet.FullText) 86 | // if text != "" { 87 | // fmt.Fprintln(file, text) 88 | // } 89 | // fmt.Println(text) 90 | // fmt.Println(tweet.CreatedAtTime()) 91 | // } 92 | // time.Sleep(time.Second * 3) 93 | 94 | // for i := 0; i < 100; i++ { 95 | // params = url.Values{ 96 | // "toDate": []string{date}, 97 | // "next": []string{res.Next}, 98 | // } 99 | 100 | // res, _ = api.GetSearchFrom30dayArchive(query, params, "ujimaru") 101 | // if len(res.Results) == 0 { 102 | // break 103 | // } 104 | 105 | // for _, tweet := range res.Results { 106 | // text := cleansingTweet(tweet.FullText) 107 | // if text != "" { 108 | // fmt.Fprintln(file, text) 109 | // } 110 | // fmt.Println(text) 111 | // fmt.Println(tweet.CreatedAtTime()) 112 | // } 113 | 114 | // time.Sleep(time.Second * 3) 115 | // } 116 | 117 | // } 118 | -------------------------------------------------------------------------------- /twitter-crawler/src/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "html" 6 | "log" 7 | "net/url" 8 | "os" 9 | "regexp" 10 | "strconv" 11 | "strings" 12 | "time" 13 | 14 | "github.com/ChimeraCoder/anaconda" 15 | "github.com/kelseyhightower/envconfig" 16 | ) 17 | 18 | type specification struct { 19 | APIKey string `envconfig:"API_KEY"` 20 | APISecretKey string `envconfig:"API_SECRET_KEY"` 21 | AccesssToken string `envconfig:"ACCESS_TOKEN"` 22 | AccessTokenSecret string `envconfig:"ACCESS_TOKEN_SECRET"` 23 | } 24 | 25 | var rep *regexp.Regexp = regexp.MustCompile("(@[A-Za-z0-9_]+)|(https?://[\\w/:%#\\$&\\?\\(\\)~\\.=\\+\\-]+)|(`[\\s\\S]*?`)|(\n|\r\n|\r)") 26 | 27 | func deleteAutomaticTweet(text string) string { 28 | if strings.Contains(text, "#contributter_report") || 29 | strings.Contains(text, "#contributter") || 30 | strings.Contains(text, "Liked on YouTube:") || 31 | strings.Contains(text, "のポスト数") || 32 | strings.Contains(text, "ポストに到達") || 33 | strings.Contains(text, "RT @") || 34 | strings.Contains(text, "#LAPRASポートフォリオ") || 35 | strings.Contains(text, "#pixiv") { 36 | text = "" 37 | } 38 | 39 | return text 40 | } 41 | 42 | func cleansingTweet(text string) string { 43 | text = deleteAutomaticTweet(text) 44 | text = rep.ReplaceAllString(text, "") 45 | text = html.UnescapeString(text) 46 | text = strings.TrimSpace(text) 47 | return text 48 | } 49 | 50 | func main() { 51 | var s specification 52 | err := envconfig.Process("", &s) 53 | if err != nil { 54 | log.Fatal(err.Error()) 55 | } 56 | format := "API_KEY: %s\nAPI_SECRET_KEY: %s\nACCESS_TOKEN: %s\nACCESS_TOKEN_SECRET: %s\n" 57 | _, err = fmt.Printf(format, s.APIKey, s.APISecretKey, s.AccessTokenSecret, s.AccesssToken) 58 | if err != nil { 59 | log.Fatal(err.Error()) 60 | } 61 | 62 | // := anaconda.NewTwitterApiWithCredentials("your-access-token", "your-access-token-secret", "your-consumer-key", "your-consumer-secret") 63 | api := anaconda.NewTwitterApiWithCredentials(s.AccesssToken, s.AccessTokenSecret, s.APIKey, s.APISecretKey) 64 | 65 | var ( 66 | timeline []anaconda.Tweet 67 | query url.Values 68 | maxID string 69 | ) 70 | 71 | userNames := []string{ 72 | "uzimaru0000", 73 | "p1ass", 74 | "hpp_ricecake", 75 | "yt8492", 76 | "takanakahiko", 77 | "nasa_desu", 78 | "saitoeku3", 79 | "d0ra1998", 80 | "schktjm", 81 | } 82 | 83 | self, _ := api.GetSelf(query) 84 | fmt.Println("me", self.Name) 85 | 86 | time.Sleep(time.Second * 3) 87 | 88 | for _, userName := range userNames { 89 | maxID = "" 90 | fmt.Println("start:", userName) 91 | time.Sleep(time.Second * 3) 92 | //os.O_RDWRを渡しているので、同時に読み込みも可能 93 | file, err := os.OpenFile("tweets-"+userName+".txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) 94 | if err != nil { 95 | log.Fatal(err) 96 | } 97 | defer file.Close() 98 | 99 | for { 100 | // get tweet id older than last tweet 101 | if len(timeline) != 0 { 102 | maxID = strconv.FormatInt(timeline[len(timeline)-1].Id-1, 10) 103 | } 104 | query = url.Values{ 105 | "screen_name": []string{userName}, 106 | "include_rts": []string{"false"}, 107 | } 108 | if maxID != "" { 109 | query.Add("max_id", maxID) 110 | } 111 | 112 | timeline, _ = api.GetUserTimeline(query) 113 | if len(timeline) == 0 { 114 | break 115 | } 116 | 117 | for _, tweet := range timeline { 118 | text := cleansingTweet(tweet.FullText) 119 | if text != "" { 120 | fmt.Fprintln(file, text) 121 | } 122 | fmt.Println(text) 123 | } 124 | time.Sleep(time.Second * 3) 125 | } 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /ujimaru-api/.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 98 | __pypackages__/ 99 | 100 | # Celery stuff 101 | celerybeat-schedule 102 | celerybeat.pid 103 | 104 | # SageMath parsed files 105 | *.sage.py 106 | 107 | # Environments 108 | .env 109 | .venv 110 | env/ 111 | venv/ 112 | ENV/ 113 | env.bak/ 114 | venv.bak/ 115 | 116 | # Spyder project settings 117 | .spyderproject 118 | .spyproject 119 | 120 | # Rope project settings 121 | .ropeproject 122 | 123 | # mkdocs documentation 124 | /site 125 | 126 | # mypy 127 | .mypy_cache/ 128 | .dmypy.json 129 | dmypy.json 130 | 131 | # Pyre type checker 132 | .pyre/ 133 | 134 | # pytype static type analyzer 135 | .pytype/ 136 | 137 | # Cython debug symbols 138 | cython_debug/ 139 | -------------------------------------------------------------------------------- /ujimaru-api/Dockerfile: -------------------------------------------------------------------------------- 1 | # Use the official Python image. 2 | # https://hub.docker.com/_/python 3 | FROM python:3.8 4 | 5 | # Copy local code to the container image. 6 | ENV APP_HOME /app 7 | WORKDIR $APP_HOME 8 | COPY . . 9 | 10 | # Install production dependencies. 11 | RUN pip install Flask gunicorn 12 | RUN pip install ujimaru-markov-model 13 | 14 | # Run the web service on container startup. Here we use the gunicorn 15 | # webserver, with one worker process and 8 threads. 16 | # For environments with multiple CPU cores, increase the number of workers 17 | # to be equal to the cores available. 18 | CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 app:app -------------------------------------------------------------------------------- /ujimaru-api/README.md: -------------------------------------------------------------------------------- 1 | # Ujimaru API 2 | 3 | ## URL 4 | 5 | API endpoint for tweet. 6 | 7 | [https://ujimaru-api-l3qfihnisq-an.a.run.app/tweet](https://ujimaru-api-l3qfihnisq-an.a.run.app/tweet) 8 | 9 | 10 | ### Build 11 | 12 | ``` 13 | docker build -t ujimaru-api . 14 | ``` 15 | 16 | ### Run locally 17 | 18 | ``` 19 | docker run -e PORT=8000 -p 8000:8000 ujimaru-api 20 | ``` 21 | 22 | ### Deploy 23 | 24 | ``` 25 | gcloud builds submit --tag gcr.io/ujimaru-api/api --project ujimaru-api 26 | ``` -------------------------------------------------------------------------------- /ujimaru-api/app.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from ujimaru_markov_model import Ujimaru 4 | 5 | from flask import Flask 6 | 7 | app = Flask(__name__) 8 | ujimaru = Ujimaru() 9 | 10 | 11 | @app.route("/") 12 | def generate(): 13 | return ujimaru.make_sentence() 14 | 15 | 16 | @app.route("/tweet") 17 | def tweet(): 18 | return ujimaru.make_tweet() 19 | 20 | 21 | if __name__ == "__main__": 22 | app.run(debug=True, host='0.0.0.0', port=int(os.environ.get('PORT', 8080))) 23 | -------------------------------------------------------------------------------- /ujimaru-api/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | ujimaru: 5 | image: ujimaru-api 6 | build: . 7 | -------------------------------------------------------------------------------- /ujimaru-api/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "ujimaru-api" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["hppRC "] 6 | 7 | [tool.poetry.dependencies] 8 | python = "^3.8" 9 | 10 | [tool.poetry.dev-dependencies] 11 | pytest = "^5.2" 12 | 13 | [build-system] 14 | requires = ["poetry>=0.12"] 15 | build-backend = "poetry.masonry.api" 16 | -------------------------------------------------------------------------------- /ujimaru-markov-experiment/.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 98 | __pypackages__/ 99 | 100 | # Celery stuff 101 | celerybeat-schedule 102 | celerybeat.pid 103 | 104 | # SageMath parsed files 105 | *.sage.py 106 | 107 | # Environments 108 | .env 109 | .venv 110 | env/ 111 | venv/ 112 | ENV/ 113 | env.bak/ 114 | venv.bak/ 115 | 116 | # Spyder project settings 117 | .spyderproject 118 | .spyproject 119 | 120 | # Rope project settings 121 | .ropeproject 122 | 123 | # mkdocs documentation 124 | /site 125 | 126 | # mypy 127 | .mypy_cache/ 128 | .dmypy.json 129 | dmypy.json 130 | 131 | # Pyre type checker 132 | .pyre/ 133 | 134 | # pytype static type analyzer 135 | .pytype/ 136 | 137 | # Cython debug symbols 138 | cython_debug/ 139 | 140 | *.txt -------------------------------------------------------------------------------- /ujimaru-markov-experiment/README.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hppRC/ujimaru/1999f19a4ba81d60419e549e6093bc2c44e0fe76/ujimaru-markov-experiment/README.rst -------------------------------------------------------------------------------- /ujimaru-markov-experiment/poetry.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | category = "dev" 3 | description = "Atomic file writes." 4 | marker = "sys_platform == \"win32\"" 5 | name = "atomicwrites" 6 | optional = false 7 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 8 | version = "1.4.0" 9 | 10 | [[package]] 11 | category = "dev" 12 | description = "Classes Without Boilerplate" 13 | name = "attrs" 14 | optional = false 15 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 16 | version = "19.3.0" 17 | 18 | [package.extras] 19 | azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"] 20 | dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"] 21 | docs = ["sphinx", "zope.interface"] 22 | tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] 23 | 24 | [[package]] 25 | category = "dev" 26 | description = "Cross-platform colored terminal text." 27 | marker = "sys_platform == \"win32\"" 28 | name = "colorama" 29 | optional = false 30 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 31 | version = "0.4.3" 32 | 33 | [[package]] 34 | category = "main" 35 | description = "A simple, extensible Markov chain generator. Uses include generating random semi-plausible sentences based on an existing text." 36 | name = "markovify" 37 | optional = false 38 | python-versions = "*" 39 | version = "0.8.0" 40 | 41 | [package.dependencies] 42 | unidecode = "*" 43 | 44 | [[package]] 45 | category = "main" 46 | description = "Python wrapper for the MeCab morphological analyzer for Japanese" 47 | name = "mecab-python3" 48 | optional = false 49 | python-versions = "*" 50 | version = "0.996.5" 51 | 52 | [[package]] 53 | category = "dev" 54 | description = "More routines for operating on iterables, beyond itertools" 55 | name = "more-itertools" 56 | optional = false 57 | python-versions = ">=3.5" 58 | version = "8.3.0" 59 | 60 | [[package]] 61 | category = "dev" 62 | description = "Core utilities for Python packages" 63 | name = "packaging" 64 | optional = false 65 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 66 | version = "20.4" 67 | 68 | [package.dependencies] 69 | pyparsing = ">=2.0.2" 70 | six = "*" 71 | 72 | [[package]] 73 | category = "dev" 74 | description = "plugin and hook calling mechanisms for python" 75 | name = "pluggy" 76 | optional = false 77 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 78 | version = "0.13.1" 79 | 80 | [package.extras] 81 | dev = ["pre-commit", "tox"] 82 | 83 | [[package]] 84 | category = "dev" 85 | description = "library with cross-python path, ini-parsing, io, code, log facilities" 86 | name = "py" 87 | optional = false 88 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 89 | version = "1.8.1" 90 | 91 | [[package]] 92 | category = "main" 93 | description = "Python module for JUMAN/KNP." 94 | name = "pyknp" 95 | optional = false 96 | python-versions = "*" 97 | version = "0.4.1" 98 | 99 | [package.dependencies] 100 | six = "*" 101 | 102 | [[package]] 103 | category = "dev" 104 | description = "Python parsing module" 105 | name = "pyparsing" 106 | optional = false 107 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" 108 | version = "2.4.7" 109 | 110 | [[package]] 111 | category = "dev" 112 | description = "pytest: simple powerful testing with Python" 113 | name = "pytest" 114 | optional = false 115 | python-versions = ">=3.5" 116 | version = "5.4.2" 117 | 118 | [package.dependencies] 119 | atomicwrites = ">=1.0" 120 | attrs = ">=17.4.0" 121 | colorama = "*" 122 | more-itertools = ">=4.0.0" 123 | packaging = "*" 124 | pluggy = ">=0.12,<1.0" 125 | py = ">=1.5.0" 126 | wcwidth = "*" 127 | 128 | [package.extras] 129 | checkqa-mypy = ["mypy (v0.761)"] 130 | testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] 131 | 132 | [[package]] 133 | category = "main" 134 | description = "Python 2 and 3 compatibility utilities" 135 | name = "six" 136 | optional = false 137 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" 138 | version = "1.15.0" 139 | 140 | [[package]] 141 | category = "main" 142 | description = "" 143 | name = "ujimaru-markov-model" 144 | optional = false 145 | python-versions = ">=3.8,<4.0" 146 | version = "0.3.0" 147 | 148 | [package.dependencies] 149 | markovify = ">=0.8.0,<0.9.0" 150 | 151 | [[package]] 152 | category = "main" 153 | description = "ASCII transliterations of Unicode text" 154 | name = "unidecode" 155 | optional = false 156 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 157 | version = "1.1.1" 158 | 159 | [[package]] 160 | category = "dev" 161 | description = "Measures number of Terminal column cells of wide-character codes" 162 | name = "wcwidth" 163 | optional = false 164 | python-versions = "*" 165 | version = "0.1.9" 166 | 167 | [metadata] 168 | content-hash = "f54751a4361a60a04f1cae1407088a6c276eefe572000243181f8e8f39690012" 169 | python-versions = "^3.8" 170 | 171 | [metadata.files] 172 | atomicwrites = [ 173 | {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, 174 | {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, 175 | ] 176 | attrs = [ 177 | {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, 178 | {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, 179 | ] 180 | colorama = [ 181 | {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, 182 | {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, 183 | ] 184 | markovify = [ 185 | {file = "markovify-0.8.0.tar.gz", hash = "sha256:c533a2e1aba8148bb98031b7159e8bf1a276c61db53d2e882ecb74fa5603a4f4"}, 186 | ] 187 | mecab-python3 = [ 188 | {file = "mecab-python3-0.996.5.tar.gz", hash = "sha256:e7f09caf136903ce908b8b001ffc178d6caa129c1550d47d8f7f733a213749a8"}, 189 | {file = "mecab_python3-0.996.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:2d066afe09a95716facf60a673f538257f595a282beb1e021d1b495f995ee70e"}, 190 | {file = "mecab_python3-0.996.5-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:4fb35dd2486b3d8b1868cfa8e1772e195c26a90b02f2509e4b61e11fd846b442"}, 191 | {file = "mecab_python3-0.996.5-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:52e5eb828d42f4cdd41eb3e689d6130d06a3576fee067e04c40566c7ce09ba1b"}, 192 | {file = "mecab_python3-0.996.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:3187479c79151f384f44c0d12a87305bfab94bef90183bd6db0bcd44c2c3374b"}, 193 | {file = "mecab_python3-0.996.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:304ee365de78cf9c48373122bb68a5f2c2cb60c9d058a690b3cdaf1059d4c91c"}, 194 | {file = "mecab_python3-0.996.5-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:730898c5e55f6a5f894251603afd44ebfdbe7ddec00113c233ef1b9c91b8690a"}, 195 | {file = "mecab_python3-0.996.5-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:429c92effeb46336e994b2d4b29a8b9e57ff947df55fd5b8042315fdb50d573a"}, 196 | {file = "mecab_python3-0.996.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:e2118906bbdfd17d002c4eab649a71c9635de175728933c2a226fd8533d13ff7"}, 197 | {file = "mecab_python3-0.996.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:5864b6e55796e982fba8a8bb073f97893cbe2c55481692d83e6bd1ad60125585"}, 198 | {file = "mecab_python3-0.996.5-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:bd8bce5251153199acb3aff72d22954801ef3c46a37b4ee17de5e32c37388f58"}, 199 | {file = "mecab_python3-0.996.5-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:0758c4e428c9eda01b14f2e93b4b48055264c4044c43992a8421bfd2a27d9ae0"}, 200 | {file = "mecab_python3-0.996.5-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:4732677c74dae291587d930d307bfd92776a198cbb1ea2836ede652180c9dbd1"}, 201 | {file = "mecab_python3-0.996.5-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:b80cb1af8b7c3e8d5e88fd7b5511e8ad630717f81e9117685613b10216c0f648"}, 202 | {file = "mecab_python3-0.996.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b33f212afff92fc292a8b20ab82d2fbc9a4d2f6fbe6dd96e9104ef3cf1150944"}, 203 | {file = "mecab_python3-0.996.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:52aa68cb5bbf993d3862feb9c477f230ed27c4cfc8e3fa3388419561cd02ffcb"}, 204 | {file = "mecab_python3-0.996.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:6ddf32a2e0bda7628f0f57ded67be4601a31ffbca6524e328bec3ef098abff10"}, 205 | {file = "mecab_python3-0.996.5-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:92019635b0686a6aa30f4d908155696077abe8848203e102ae7befab0b96b9ea"}, 206 | {file = "mecab_python3-0.996.5-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:0e309f7f55c608b66c5dbd9a1e62f2686e9ff0923a5f1c28406985c4d8a80549"}, 207 | {file = "mecab_python3-0.996.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:32864543977281dcbb52f54e42d9fd060c9d869874d49806bbee5a0ff689e665"}, 208 | {file = "mecab_python3-0.996.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:e07f3ff74185d286a138258b7d7f01877ddad2338c8177bd579a580f0c589abc"}, 209 | {file = "mecab_python3-0.996.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:8d13b2732b3951a0defaa56acd628d1d83f123fdafee4f40701e001a66717a85"}, 210 | {file = "mecab_python3-0.996.5-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:47ba0cf7b5b03137ba7b3998a6fe82da1407ac577016df10b6da7f1979dfb0ca"}, 211 | {file = "mecab_python3-0.996.5-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:9af5050a093172123be6eedf65f263fb936885c5c200b1808cb1d2f15a59e871"}, 212 | {file = "mecab_python3-0.996.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec6e3872b716eff99a0b3cad1079eeb16a5efdcf6dd48727e3372345a0d0d124"}, 213 | {file = "mecab_python3-0.996.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1bfe39e3c6a5be7bf54d36fcc14c5938fc831960507f9d7337cd2cc0e8de07d3"}, 214 | {file = "mecab_python3-0.996.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:3f2a591460f28faf27318961c49e70b9e464a283c8184a677bdddc70aa8835b6"}, 215 | {file = "mecab_python3-0.996.5-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:f256a1dec3d6bea8cf9b6fd77b345903acf978c07c592c0dc470d20398693da8"}, 216 | {file = "mecab_python3-0.996.5-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:1af08a46774ac219bf93cc0c52d87d5cbcce9f4c3abba6b14c374f81ebc718c5"}, 217 | ] 218 | more-itertools = [ 219 | {file = "more-itertools-8.3.0.tar.gz", hash = "sha256:558bb897a2232f5e4f8e2399089e35aecb746e1f9191b6584a151647e89267be"}, 220 | {file = "more_itertools-8.3.0-py3-none-any.whl", hash = "sha256:7818f596b1e87be009031c7653d01acc46ed422e6656b394b0f765ce66ed4982"}, 221 | ] 222 | packaging = [ 223 | {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, 224 | {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, 225 | ] 226 | pluggy = [ 227 | {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, 228 | {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, 229 | ] 230 | py = [ 231 | {file = "py-1.8.1-py2.py3-none-any.whl", hash = "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0"}, 232 | {file = "py-1.8.1.tar.gz", hash = "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa"}, 233 | ] 234 | pyknp = [ 235 | {file = "pyknp-0.4.1-py2-none-any.whl", hash = "sha256:98922d13395512fa4def77c15cf9fe4c81c65c072ba432db68a4fde1309f1193"}, 236 | {file = "pyknp-0.4.1-py3-none-any.whl", hash = "sha256:5d165a0387f493bf72e917f56ca55047d162d5f5771a06d713012c428efdd480"}, 237 | ] 238 | pyparsing = [ 239 | {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, 240 | {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, 241 | ] 242 | pytest = [ 243 | {file = "pytest-5.4.2-py3-none-any.whl", hash = "sha256:95c710d0a72d91c13fae35dce195633c929c3792f54125919847fdcdf7caa0d3"}, 244 | {file = "pytest-5.4.2.tar.gz", hash = "sha256:eb2b5e935f6a019317e455b6da83dd8650ac9ffd2ee73a7b657a30873d67a698"}, 245 | ] 246 | six = [ 247 | {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, 248 | {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, 249 | ] 250 | ujimaru-markov-model = [ 251 | {file = "ujimaru-markov-model-0.3.0.tar.gz", hash = "sha256:70ad8cbb6282d4111d6adc7826e6e343208130cecead4579922a0984f9464c9d"}, 252 | {file = "ujimaru_markov_model-0.3.0-py3-none-any.whl", hash = "sha256:444540a2b4cc0077c7b0e4340dc3b6b0a70c492eaa618827d060183d6deec2ff"}, 253 | ] 254 | unidecode = [ 255 | {file = "Unidecode-1.1.1-py2.py3-none-any.whl", hash = "sha256:1d7a042116536098d05d599ef2b8616759f02985c85b4fef50c78a5aaf10822a"}, 256 | {file = "Unidecode-1.1.1.tar.gz", hash = "sha256:2b6aab710c2a1647e928e36d69c21e76b453cd455f4e2621000e54b2a9b8cce8"}, 257 | ] 258 | wcwidth = [ 259 | {file = "wcwidth-0.1.9-py2.py3-none-any.whl", hash = "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1"}, 260 | {file = "wcwidth-0.1.9.tar.gz", hash = "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1"}, 261 | ] 262 | -------------------------------------------------------------------------------- /ujimaru-markov-experiment/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "ujimaru-markov-experiment" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["hppRC "] 6 | 7 | [tool.poetry.dependencies] 8 | python = "^3.8" 9 | pyknp = "^0.4.1" 10 | markovify = "^0.8.0" 11 | mecab-python3 = "^0.996.5" 12 | ujimaru-markov-model = "^0.3.0" 13 | 14 | [tool.poetry.dev-dependencies] 15 | pytest = "^5.2" 16 | 17 | [build-system] 18 | requires = ["poetry>=0.12"] 19 | build-backend = "poetry.masonry.api" 20 | -------------------------------------------------------------------------------- /ujimaru-markov-experiment/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hppRC/ujimaru/1999f19a4ba81d60419e549e6093bc2c44e0fe76/ujimaru-markov-experiment/tests/__init__.py -------------------------------------------------------------------------------- /ujimaru-markov-experiment/tests/test_ujimaru_markov_experiment.py: -------------------------------------------------------------------------------- 1 | from ujimaru_markov_experiment import __version__ 2 | 3 | 4 | def test_version(): 5 | assert __version__ == '0.1.0' 6 | -------------------------------------------------------------------------------- /ujimaru-markov-experiment/ujimaru_markov_experiment/__init__.py: -------------------------------------------------------------------------------- 1 | __version__ = '0.1.0' 2 | -------------------------------------------------------------------------------- /ujimaru-markov-experiment/ujimaru_markov_experiment/__main__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hppRC/ujimaru/1999f19a4ba81d60419e549e6093bc2c44e0fe76/ujimaru-markov-experiment/ujimaru_markov_experiment/__main__.py -------------------------------------------------------------------------------- /ujimaru-markov-experiment/ujimaru_markov_experiment/build_model.py: -------------------------------------------------------------------------------- 1 | from pyknp import Juman 2 | import markovify 3 | import MeCab 4 | from pyknp import Juman 5 | import json 6 | 7 | 8 | jumanpp = Juman() 9 | 10 | 11 | def wakati(sentence: str) -> str: 12 | try: 13 | return " ".join(token.midasi for token in jumanpp.analysis(sentence.strip())) 14 | except: 15 | return "" 16 | 17 | 18 | def parse_text(filepath): 19 | with open(filepath) as f: 20 | corpus = f.readlines() 21 | 22 | return "\n".join(wakati(line) for line in corpus) 23 | 24 | 25 | def build_model(parsed_text, state_size=2): 26 | return markovify.NewlineText(parsed_text, state_size) 27 | 28 | 29 | filepath = "../shared/uzimaru0000.txt" 30 | 31 | parsed_text = parse_text(filepath) 32 | 33 | model = build_model(parsed_text, state_size=3) 34 | 35 | with open("models/trimodel-uzimaru0000-big.json", "w") as f: 36 | json.dump(model.to_json(), f) 37 | -------------------------------------------------------------------------------- /ujimaru-markov-experiment/ujimaru_markov_experiment/build_models.py: -------------------------------------------------------------------------------- 1 | from build_model import build_model, parse_text 2 | import json 3 | 4 | users = ["uzimaru0000", 5 | "p1ass", 6 | "hpp_ricecake", 7 | "yt8492", 8 | "takanakahiko", 9 | "nasa_desu", 10 | "saitoeku3", 11 | "d0ra1998", 12 | "schktjm"] 13 | 14 | for name in users: 15 | filepath = f"../shared/users/tweets-{name}.txt" 16 | parsed_text = parse_text(filepath) 17 | 18 | model = build_model(parsed_text, state_size=3) 19 | with open(f"models/trimodel-{name}.json", "w") as f: 20 | json.dump(model.to_json(), f) 21 | -------------------------------------------------------------------------------- /ujimaru-markov-experiment/ujimaru_markov_experiment/cleansing.py: -------------------------------------------------------------------------------- 1 | 2 | def isClean(sentence): 3 | if "RT @" in sentence or "ポストに到達しました!" in sentence: 4 | return False 5 | else: 6 | return True 7 | 8 | 9 | with open("ujimaru_markov_model/uzimaru0000.txt") as f: 10 | texts = f.readlines() 11 | 12 | texts = filter(lambda x: isClean(x), texts) 13 | 14 | with open("ujimaru_markov_model/clean.txt", "w") as f: 15 | f.write("".join(texts)) 16 | -------------------------------------------------------------------------------- /ujimaru-markov-experiment/ujimaru_markov_experiment/library_test.py: -------------------------------------------------------------------------------- 1 | from ujimaru_markov_model import Ujimaru 2 | 3 | ujimaru = Ujimaru() 4 | print(ujimaru.make_sentence()) 5 | print(ujimaru.make_tweet()) 6 | -------------------------------------------------------------------------------- /ujimaru-markov-experiment/ujimaru_markov_experiment/make_ujimaru.py: -------------------------------------------------------------------------------- 1 | import markovify 2 | import json 3 | 4 | 5 | def clean_text(sentence: str) -> str: 6 | if sentence: 7 | sentence = sentence.replace(" ", "") 8 | return sentence + "\n" 9 | else: 10 | return "" 11 | 12 | 13 | models = [] 14 | 15 | model_paths = [ 16 | "models/trimodel-d0ra1998.json", 17 | "models/trimodel-hpp_ricecake.json", 18 | "models/trimodel-nasa_desu.json", 19 | "models/trimodel-p1ass.json", 20 | "models/trimodel-saitoeku3.json", 21 | "models/trimodel-schktjm.json", 22 | "models/trimodel-takanakahiko.json", 23 | "models/trimodel-uzimaru0000.json", 24 | "models/trimodel-yt8492.json", 25 | ] 26 | 27 | for path in model_paths: 28 | with open(path) as f: 29 | model_json = json.load(f) 30 | models.append(markovify.Text.from_json(model_json)) 31 | 32 | with open("models/trimodel-uzimaru0000-big.json") as f: 33 | big_model_json = json.load(f) 34 | models.append(markovify.Text.from_json(big_model_json)) 35 | 36 | weights = [0.1] * (len(models) - 1) 37 | weights.append(3.1) 38 | 39 | model = markovify.combine(models, weights) 40 | 41 | with open("../shared/markov-generated/tri-generated-all-3.txt", "w") as f: 42 | for _ in range(1000): 43 | sentence = clean_text(model.make_sentence()) 44 | f.write(sentence) 45 | 46 | with open("models/ujimaru.json", "w") as f: 47 | json.dump(model.to_json(), f) 48 | -------------------------------------------------------------------------------- /ujimaru-markov-model/.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 98 | __pypackages__/ 99 | 100 | # Celery stuff 101 | celerybeat-schedule 102 | celerybeat.pid 103 | 104 | # SageMath parsed files 105 | *.sage.py 106 | 107 | # Environments 108 | .env 109 | .venv 110 | env/ 111 | venv/ 112 | ENV/ 113 | env.bak/ 114 | venv.bak/ 115 | 116 | # Spyder project settings 117 | .spyderproject 118 | .spyproject 119 | 120 | # Rope project settings 121 | .ropeproject 122 | 123 | # mkdocs documentation 124 | /site 125 | 126 | # mypy 127 | .mypy_cache/ 128 | .dmypy.json 129 | dmypy.json 130 | 131 | # Pyre type checker 132 | .pyre/ 133 | 134 | # pytype static type analyzer 135 | .pytype/ 136 | 137 | # Cython debug symbols 138 | cython_debug/ 139 | 140 | *.txt -------------------------------------------------------------------------------- /ujimaru-markov-model/README.md: -------------------------------------------------------------------------------- 1 | # Ujimaru Markov Model 2 | 3 | An easy ujimaru(uzimaru0000 like) text generator library and a CLI tool using it. 4 | 5 | Language model file inclued(28MiB). 6 | 7 | ## Example 8 | 9 | In normal python program. 10 | 11 | ```python 12 | from ujimaru_markov_model import Ujimaru 13 | ujimaru = Ujimaru() 14 | 15 | print(ujimaru.make_sentence()) 16 | # なんでかElmでCLI作って得られた知見をいくつかqiitaとかにいれておいてcpすることにします!! 17 | print(ujimaru.make_tweet()) # A sentence of 140 characters or less 18 | # 検索しても無限にredux-thunkが出てきて「なっっっっつ」ってなったけど0.1.0のtagを打ったらちゃんとブランチ分けます 19 | ``` 20 | 21 | ## Installation 22 | 23 | ``` 24 | pip install ujimaru-markov-model 25 | ``` 26 | 27 | ### Usage 28 | 29 | ``` 30 | ujimaru 31 | # へーー自然を撮るならいいってことか(それはそうなんだけど普通のRTになってるって! 32 | ``` 33 | 34 | ## What is this 35 | 36 | see [うじまる生誕LT会](https://zli.connpass.com/event/176933/) 37 | 38 | ## Used 39 | 40 | Text is generated from third order markov chain model based on some twitter users' tweets. 41 | 42 | Using [markovify](https://github.com/jsvine/markovify) -------------------------------------------------------------------------------- /ujimaru-markov-model/poetry.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | category = "dev" 3 | description = "Atomic file writes." 4 | marker = "sys_platform == \"win32\"" 5 | name = "atomicwrites" 6 | optional = false 7 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 8 | version = "1.4.0" 9 | 10 | [[package]] 11 | category = "dev" 12 | description = "Classes Without Boilerplate" 13 | name = "attrs" 14 | optional = false 15 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 16 | version = "19.3.0" 17 | 18 | [package.extras] 19 | azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"] 20 | dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"] 21 | docs = ["sphinx", "zope.interface"] 22 | tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] 23 | 24 | [[package]] 25 | category = "dev" 26 | description = "Cross-platform colored terminal text." 27 | marker = "sys_platform == \"win32\"" 28 | name = "colorama" 29 | optional = false 30 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 31 | version = "0.4.3" 32 | 33 | [[package]] 34 | category = "main" 35 | description = "Python library for Hidden Markov Models" 36 | name = "markov" 37 | optional = false 38 | python-versions = "*" 39 | version = "0.4.0" 40 | 41 | [[package]] 42 | category = "main" 43 | description = "A simple, extensible Markov chain generator. Uses include generating random semi-plausible sentences based on an existing text." 44 | name = "markovify" 45 | optional = false 46 | python-versions = "*" 47 | version = "0.8.0" 48 | 49 | [package.dependencies] 50 | unidecode = "*" 51 | 52 | [[package]] 53 | category = "main" 54 | description = "Python wrapper for the MeCab morphological analyzer for Japanese" 55 | name = "mecab-python3" 56 | optional = false 57 | python-versions = "*" 58 | version = "0.996.5" 59 | 60 | [[package]] 61 | category = "dev" 62 | description = "More routines for operating on iterables, beyond itertools" 63 | name = "more-itertools" 64 | optional = false 65 | python-versions = ">=3.5" 66 | version = "8.3.0" 67 | 68 | [[package]] 69 | category = "dev" 70 | description = "Core utilities for Python packages" 71 | name = "packaging" 72 | optional = false 73 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 74 | version = "20.4" 75 | 76 | [package.dependencies] 77 | pyparsing = ">=2.0.2" 78 | six = "*" 79 | 80 | [[package]] 81 | category = "dev" 82 | description = "plugin and hook calling mechanisms for python" 83 | name = "pluggy" 84 | optional = false 85 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 86 | version = "0.13.1" 87 | 88 | [package.extras] 89 | dev = ["pre-commit", "tox"] 90 | 91 | [[package]] 92 | category = "dev" 93 | description = "library with cross-python path, ini-parsing, io, code, log facilities" 94 | name = "py" 95 | optional = false 96 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 97 | version = "1.8.1" 98 | 99 | [[package]] 100 | category = "main" 101 | description = "Python module for JUMAN/KNP." 102 | name = "pyknp" 103 | optional = false 104 | python-versions = "*" 105 | version = "0.4.1" 106 | 107 | [package.dependencies] 108 | six = "*" 109 | 110 | [[package]] 111 | category = "dev" 112 | description = "Python parsing module" 113 | name = "pyparsing" 114 | optional = false 115 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" 116 | version = "2.4.7" 117 | 118 | [[package]] 119 | category = "dev" 120 | description = "pytest: simple powerful testing with Python" 121 | name = "pytest" 122 | optional = false 123 | python-versions = ">=3.5" 124 | version = "5.4.2" 125 | 126 | [package.dependencies] 127 | atomicwrites = ">=1.0" 128 | attrs = ">=17.4.0" 129 | colorama = "*" 130 | more-itertools = ">=4.0.0" 131 | packaging = "*" 132 | pluggy = ">=0.12,<1.0" 133 | py = ">=1.5.0" 134 | wcwidth = "*" 135 | 136 | [package.extras] 137 | checkqa-mypy = ["mypy (v0.761)"] 138 | testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] 139 | 140 | [[package]] 141 | category = "main" 142 | description = "Python 2 and 3 compatibility utilities" 143 | name = "six" 144 | optional = false 145 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" 146 | version = "1.15.0" 147 | 148 | [[package]] 149 | category = "main" 150 | description = "ASCII transliterations of Unicode text" 151 | name = "unidecode" 152 | optional = false 153 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 154 | version = "1.1.1" 155 | 156 | [[package]] 157 | category = "dev" 158 | description = "Measures number of Terminal column cells of wide-character codes" 159 | name = "wcwidth" 160 | optional = false 161 | python-versions = "*" 162 | version = "0.1.9" 163 | 164 | [metadata] 165 | content-hash = "d102656539b1ebceeb4fc21c7b63fc709a0438179d931266c8e55a4e554fb170" 166 | python-versions = "^3.8" 167 | 168 | [metadata.files] 169 | atomicwrites = [ 170 | {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, 171 | {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, 172 | ] 173 | attrs = [ 174 | {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, 175 | {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, 176 | ] 177 | colorama = [ 178 | {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, 179 | {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, 180 | ] 181 | markov = [ 182 | {file = "Markov-0.4.0-py3-none-any.whl", hash = "sha256:44ac4cf5f747e68656a3c6912bf630a6149afb3635cb10596b50c2a69b558f7b"}, 183 | ] 184 | markovify = [ 185 | {file = "markovify-0.8.0.tar.gz", hash = "sha256:c533a2e1aba8148bb98031b7159e8bf1a276c61db53d2e882ecb74fa5603a4f4"}, 186 | ] 187 | mecab-python3 = [ 188 | {file = "mecab-python3-0.996.5.tar.gz", hash = "sha256:e7f09caf136903ce908b8b001ffc178d6caa129c1550d47d8f7f733a213749a8"}, 189 | {file = "mecab_python3-0.996.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:2d066afe09a95716facf60a673f538257f595a282beb1e021d1b495f995ee70e"}, 190 | {file = "mecab_python3-0.996.5-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:4fb35dd2486b3d8b1868cfa8e1772e195c26a90b02f2509e4b61e11fd846b442"}, 191 | {file = "mecab_python3-0.996.5-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:52e5eb828d42f4cdd41eb3e689d6130d06a3576fee067e04c40566c7ce09ba1b"}, 192 | {file = "mecab_python3-0.996.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:3187479c79151f384f44c0d12a87305bfab94bef90183bd6db0bcd44c2c3374b"}, 193 | {file = "mecab_python3-0.996.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:304ee365de78cf9c48373122bb68a5f2c2cb60c9d058a690b3cdaf1059d4c91c"}, 194 | {file = "mecab_python3-0.996.5-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:730898c5e55f6a5f894251603afd44ebfdbe7ddec00113c233ef1b9c91b8690a"}, 195 | {file = "mecab_python3-0.996.5-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:429c92effeb46336e994b2d4b29a8b9e57ff947df55fd5b8042315fdb50d573a"}, 196 | {file = "mecab_python3-0.996.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:e2118906bbdfd17d002c4eab649a71c9635de175728933c2a226fd8533d13ff7"}, 197 | {file = "mecab_python3-0.996.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:5864b6e55796e982fba8a8bb073f97893cbe2c55481692d83e6bd1ad60125585"}, 198 | {file = "mecab_python3-0.996.5-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:bd8bce5251153199acb3aff72d22954801ef3c46a37b4ee17de5e32c37388f58"}, 199 | {file = "mecab_python3-0.996.5-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:0758c4e428c9eda01b14f2e93b4b48055264c4044c43992a8421bfd2a27d9ae0"}, 200 | {file = "mecab_python3-0.996.5-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:4732677c74dae291587d930d307bfd92776a198cbb1ea2836ede652180c9dbd1"}, 201 | {file = "mecab_python3-0.996.5-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:b80cb1af8b7c3e8d5e88fd7b5511e8ad630717f81e9117685613b10216c0f648"}, 202 | {file = "mecab_python3-0.996.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b33f212afff92fc292a8b20ab82d2fbc9a4d2f6fbe6dd96e9104ef3cf1150944"}, 203 | {file = "mecab_python3-0.996.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:52aa68cb5bbf993d3862feb9c477f230ed27c4cfc8e3fa3388419561cd02ffcb"}, 204 | {file = "mecab_python3-0.996.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:6ddf32a2e0bda7628f0f57ded67be4601a31ffbca6524e328bec3ef098abff10"}, 205 | {file = "mecab_python3-0.996.5-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:92019635b0686a6aa30f4d908155696077abe8848203e102ae7befab0b96b9ea"}, 206 | {file = "mecab_python3-0.996.5-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:0e309f7f55c608b66c5dbd9a1e62f2686e9ff0923a5f1c28406985c4d8a80549"}, 207 | {file = "mecab_python3-0.996.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:32864543977281dcbb52f54e42d9fd060c9d869874d49806bbee5a0ff689e665"}, 208 | {file = "mecab_python3-0.996.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:e07f3ff74185d286a138258b7d7f01877ddad2338c8177bd579a580f0c589abc"}, 209 | {file = "mecab_python3-0.996.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:8d13b2732b3951a0defaa56acd628d1d83f123fdafee4f40701e001a66717a85"}, 210 | {file = "mecab_python3-0.996.5-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:47ba0cf7b5b03137ba7b3998a6fe82da1407ac577016df10b6da7f1979dfb0ca"}, 211 | {file = "mecab_python3-0.996.5-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:9af5050a093172123be6eedf65f263fb936885c5c200b1808cb1d2f15a59e871"}, 212 | {file = "mecab_python3-0.996.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec6e3872b716eff99a0b3cad1079eeb16a5efdcf6dd48727e3372345a0d0d124"}, 213 | {file = "mecab_python3-0.996.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1bfe39e3c6a5be7bf54d36fcc14c5938fc831960507f9d7337cd2cc0e8de07d3"}, 214 | {file = "mecab_python3-0.996.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:3f2a591460f28faf27318961c49e70b9e464a283c8184a677bdddc70aa8835b6"}, 215 | {file = "mecab_python3-0.996.5-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:f256a1dec3d6bea8cf9b6fd77b345903acf978c07c592c0dc470d20398693da8"}, 216 | {file = "mecab_python3-0.996.5-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:1af08a46774ac219bf93cc0c52d87d5cbcce9f4c3abba6b14c374f81ebc718c5"}, 217 | ] 218 | more-itertools = [ 219 | {file = "more-itertools-8.3.0.tar.gz", hash = "sha256:558bb897a2232f5e4f8e2399089e35aecb746e1f9191b6584a151647e89267be"}, 220 | {file = "more_itertools-8.3.0-py3-none-any.whl", hash = "sha256:7818f596b1e87be009031c7653d01acc46ed422e6656b394b0f765ce66ed4982"}, 221 | ] 222 | packaging = [ 223 | {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, 224 | {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, 225 | ] 226 | pluggy = [ 227 | {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, 228 | {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, 229 | ] 230 | py = [ 231 | {file = "py-1.8.1-py2.py3-none-any.whl", hash = "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0"}, 232 | {file = "py-1.8.1.tar.gz", hash = "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa"}, 233 | ] 234 | pyknp = [ 235 | {file = "pyknp-0.4.1-py2-none-any.whl", hash = "sha256:98922d13395512fa4def77c15cf9fe4c81c65c072ba432db68a4fde1309f1193"}, 236 | {file = "pyknp-0.4.1-py3-none-any.whl", hash = "sha256:5d165a0387f493bf72e917f56ca55047d162d5f5771a06d713012c428efdd480"}, 237 | ] 238 | pyparsing = [ 239 | {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, 240 | {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, 241 | ] 242 | pytest = [ 243 | {file = "pytest-5.4.2-py3-none-any.whl", hash = "sha256:95c710d0a72d91c13fae35dce195633c929c3792f54125919847fdcdf7caa0d3"}, 244 | {file = "pytest-5.4.2.tar.gz", hash = "sha256:eb2b5e935f6a019317e455b6da83dd8650ac9ffd2ee73a7b657a30873d67a698"}, 245 | ] 246 | six = [ 247 | {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, 248 | {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, 249 | ] 250 | unidecode = [ 251 | {file = "Unidecode-1.1.1-py2.py3-none-any.whl", hash = "sha256:1d7a042116536098d05d599ef2b8616759f02985c85b4fef50c78a5aaf10822a"}, 252 | {file = "Unidecode-1.1.1.tar.gz", hash = "sha256:2b6aab710c2a1647e928e36d69c21e76b453cd455f4e2621000e54b2a9b8cce8"}, 253 | ] 254 | wcwidth = [ 255 | {file = "wcwidth-0.1.9-py2.py3-none-any.whl", hash = "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1"}, 256 | {file = "wcwidth-0.1.9.tar.gz", hash = "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1"}, 257 | ] 258 | -------------------------------------------------------------------------------- /ujimaru-markov-model/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "ujimaru-markov-model" 3 | version = "0.3.0" 4 | description = "" 5 | authors = ["hppRC "] 6 | include = ["ujimaru_markov_model/data/ujimaru.json"] 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.8" 10 | markovify = "^0.8.0" 11 | 12 | [tool.poetry.dev-dependencies] 13 | pytest = "^5.2" 14 | 15 | [tool.poetry.scripts] 16 | ujimaru = "ujimaru_markov_model.cli:main" 17 | 18 | [build-system] 19 | requires = ["poetry>=0.12"] 20 | build-backend = "poetry.masonry.api" 21 | -------------------------------------------------------------------------------- /ujimaru-markov-model/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hppRC/ujimaru/1999f19a4ba81d60419e549e6093bc2c44e0fe76/ujimaru-markov-model/tests/__init__.py -------------------------------------------------------------------------------- /ujimaru-markov-model/tests/test_ujimaru_markov_model.py: -------------------------------------------------------------------------------- 1 | from ujimaru_markov_model import __version__ 2 | 3 | 4 | def test_version(): 5 | assert __version__ == '0.1.0' 6 | -------------------------------------------------------------------------------- /ujimaru-markov-model/ujimaru_markov_model/__init__.py: -------------------------------------------------------------------------------- 1 | __version__ = '0.1.0' 2 | from .ujimaru import Ujimaru 3 | -------------------------------------------------------------------------------- /ujimaru-markov-model/ujimaru_markov_model/cli.py: -------------------------------------------------------------------------------- 1 | from .ujimaru import Ujimaru 2 | 3 | ujimaru = Ujimaru() 4 | 5 | 6 | def main(): 7 | print(ujimaru.make_sentence()) 8 | 9 | 10 | if __name__ == "__main__": 11 | main() 12 | -------------------------------------------------------------------------------- /ujimaru-markov-model/ujimaru_markov_model/ujimaru.py: -------------------------------------------------------------------------------- 1 | import markovify 2 | import json 3 | import os 4 | 5 | class Ujimaru(object): 6 | def __init__(self): 7 | this_dir, this_filename = os.path.split(__file__) 8 | DATA_PATH = os.path.join(this_dir, "data", "ujimaru.json") 9 | with open(DATA_PATH) as f: 10 | big_model_json = json.load(f) 11 | self.model = markovify.Text.from_json(big_model_json) 12 | 13 | @staticmethod 14 | def clean_text(sentence: str) -> str: 15 | if sentence: 16 | sentence = sentence.replace(" ", "") 17 | return sentence.strip() 18 | else: 19 | return "" 20 | 21 | def make_sentence(self): 22 | while not (sentence := Ujimaru.clean_text(self.model.make_sentence())): 23 | continue 24 | return sentence 25 | 26 | def make_tweet(self): 27 | while not (sentence := Ujimaru.clean_text(self.model.make_short_sentence(140))): 28 | continue 29 | return sentence 30 | 31 | 32 | if __name__ == "__main__": 33 | ujimaru = Ujimaru() 34 | print(ujimaru.make_sentence()) 35 | print(ujimaru.make_tweet()) 36 | -------------------------------------------------------------------------------- /ujimaru-reformer/.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 98 | __pypackages__/ 99 | 100 | # Celery stuff 101 | celerybeat-schedule 102 | celerybeat.pid 103 | 104 | # SageMath parsed files 105 | *.sage.py 106 | 107 | # Environments 108 | .env 109 | .venv 110 | env/ 111 | venv/ 112 | ENV/ 113 | env.bak/ 114 | venv.bak/ 115 | 116 | # Spyder project settings 117 | .spyderproject 118 | .spyproject 119 | 120 | # Rope project settings 121 | .ropeproject 122 | 123 | # mkdocs documentation 124 | /site 125 | 126 | # mypy 127 | .mypy_cache/ 128 | .dmypy.json 129 | dmypy.json 130 | 131 | # Pyre type checker 132 | .pyre/ 133 | 134 | # pytype static type analyzer 135 | .pytype/ 136 | 137 | # Cython debug symbols 138 | cython_debug/ 139 | 140 | reformer 141 | sentencepiece -------------------------------------------------------------------------------- /ujimaru-reformer/README.md: -------------------------------------------------------------------------------- 1 | # Ujimaru Reformer 2 | 3 | ## 主題 4 | 5 | Reformerによるツイートの模倣・生成 6 | 7 | ## 結果 8 | 9 | しょっぺぇ 10 | 11 | ### 3000文6万文字を使用 12 | 2000step(1.5h)程度でサチった、accuracyが41.5%より上がらなくなった 13 | 14 | ### 8000文字18万文字を使用 15 | 同様に2000step程度でサチる、accuracyが46.5%程度 16 | 17 | 100万分程度あればまともな文が出てくる可能性 18 | 19 | 20 | ## 実装、データ 21 | 22 | [Google Drive](https://drive.google.com/file/d/1-3DzppHf9vy_7NUepw-yv6qBlHjtxNkQ/view?usp=sharing) 23 | 24 | 25 | ## 詰まったところ 26 | 27 | - trax@1.2.4と@1.2.0の間にbreaking change有り、インストールするバージョンに注意 28 | - テキスト生成系は大規模モデルをベースに個人用のモデルで追加学習とかしてもそんなにいい結果にはならないらしい -------------------------------------------------------------------------------- /ujimaru-reformer/poetry.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | category = "main" 3 | description = "Abseil Python Common Libraries, see https://github.com/abseil/abseil-py." 4 | name = "absl-py" 5 | optional = false 6 | python-versions = "*" 7 | version = "0.9.0" 8 | 9 | [package.dependencies] 10 | six = "*" 11 | 12 | [[package]] 13 | category = "main" 14 | description = "An AST unparser for Python" 15 | name = "astunparse" 16 | optional = false 17 | python-versions = "*" 18 | version = "1.6.3" 19 | 20 | [package.dependencies] 21 | six = ">=1.6.1,<2.0" 22 | wheel = ">=0.23.0,<1.0" 23 | 24 | [[package]] 25 | category = "dev" 26 | description = "Atomic file writes." 27 | marker = "sys_platform == \"win32\"" 28 | name = "atomicwrites" 29 | optional = false 30 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 31 | version = "1.4.0" 32 | 33 | [[package]] 34 | category = "main" 35 | description = "Classes Without Boilerplate" 36 | name = "attrs" 37 | optional = false 38 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 39 | version = "19.3.0" 40 | 41 | [package.extras] 42 | azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"] 43 | dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"] 44 | docs = ["sphinx", "zope.interface"] 45 | tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] 46 | 47 | [[package]] 48 | category = "main" 49 | description = "Screen-scraping library" 50 | name = "beautifulsoup4" 51 | optional = false 52 | python-versions = "*" 53 | version = "4.9.1" 54 | 55 | [package.dependencies] 56 | soupsieve = [">1.2", "<2.0"] 57 | 58 | [package.extras] 59 | html5lib = ["html5lib"] 60 | lxml = ["lxml"] 61 | 62 | [[package]] 63 | category = "main" 64 | description = "Dummy package for Beautiful Soup" 65 | name = "bs4" 66 | optional = false 67 | python-versions = "*" 68 | version = "0.0.1" 69 | 70 | [package.dependencies] 71 | beautifulsoup4 = "*" 72 | 73 | [[package]] 74 | category = "main" 75 | description = "Read and write bzip2-compressed files." 76 | name = "bz2file" 77 | optional = false 78 | python-versions = "*" 79 | version = "0.98" 80 | 81 | [[package]] 82 | category = "main" 83 | description = "Extensible memoizing collections and decorators" 84 | name = "cachetools" 85 | optional = false 86 | python-versions = "~=3.5" 87 | version = "4.1.0" 88 | 89 | [[package]] 90 | category = "main" 91 | description = "Python package for providing Mozilla's CA Bundle." 92 | name = "certifi" 93 | optional = false 94 | python-versions = "*" 95 | version = "2020.4.5.1" 96 | 97 | [[package]] 98 | category = "main" 99 | description = "Foreign Function Interface for Python calling C code." 100 | marker = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\"" 101 | name = "cffi" 102 | optional = false 103 | python-versions = "*" 104 | version = "1.14.0" 105 | 106 | [package.dependencies] 107 | pycparser = "*" 108 | 109 | [[package]] 110 | category = "main" 111 | description = "Universal encoding detector for Python 2 and 3" 112 | name = "chardet" 113 | optional = false 114 | python-versions = "*" 115 | version = "3.0.4" 116 | 117 | [[package]] 118 | category = "main" 119 | description = "Composable command line interface toolkit" 120 | name = "click" 121 | optional = false 122 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 123 | version = "7.1.2" 124 | 125 | [[package]] 126 | category = "main" 127 | description = "Extended pickling support for Python objects" 128 | name = "cloudpickle" 129 | optional = false 130 | python-versions = "*" 131 | version = "1.2.2" 132 | 133 | [[package]] 134 | category = "dev" 135 | description = "Cross-platform colored terminal text." 136 | marker = "sys_platform == \"win32\"" 137 | name = "colorama" 138 | optional = false 139 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 140 | version = "0.4.3" 141 | 142 | [[package]] 143 | category = "main" 144 | description = "Composable style cycles" 145 | name = "cycler" 146 | optional = false 147 | python-versions = "*" 148 | version = "0.10.0" 149 | 150 | [package.dependencies] 151 | six = "*" 152 | 153 | [[package]] 154 | category = "main" 155 | description = "Decorators for Humans" 156 | name = "decorator" 157 | optional = false 158 | python-versions = ">=2.6, !=3.0.*, !=3.1.*" 159 | version = "4.4.2" 160 | 161 | [[package]] 162 | category = "main" 163 | description = "serialize all of python" 164 | name = "dill" 165 | optional = false 166 | python-versions = ">=2.6, !=3.0.*" 167 | version = "0.3.1.1" 168 | 169 | [package.extras] 170 | graph = ["objgraph (>=1.7.2)"] 171 | 172 | [[package]] 173 | category = "main" 174 | description = "Dopamine: A framework for flexible Reinforcement Learning research" 175 | name = "dopamine-rl" 176 | optional = false 177 | python-versions = "*" 178 | version = "3.0.1" 179 | 180 | [package.dependencies] 181 | Pillow = ">=5.4.1" 182 | absl-py = ">=0.2.2" 183 | gin-config = ">=0.1.1" 184 | gym = ">=0.10.5" 185 | opencv-python = ">=3.4.1.15" 186 | 187 | [[package]] 188 | category = "main" 189 | description = "A simple framework for building complex web applications." 190 | name = "flask" 191 | optional = false 192 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 193 | version = "1.1.2" 194 | 195 | [package.dependencies] 196 | Jinja2 = ">=2.10.1" 197 | Werkzeug = ">=0.15" 198 | click = ">=5.1" 199 | itsdangerous = ">=0.24" 200 | 201 | [package.extras] 202 | dev = ["pytest", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet", "sphinx-issues"] 203 | docs = ["sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet", "sphinx-issues"] 204 | dotenv = ["python-dotenv"] 205 | 206 | [[package]] 207 | category = "main" 208 | description = "Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2+" 209 | name = "funcsigs" 210 | optional = false 211 | python-versions = "*" 212 | version = "1.0.2" 213 | 214 | [[package]] 215 | category = "main" 216 | description = "Clean single-source support for Python 3 and 2" 217 | name = "future" 218 | optional = false 219 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" 220 | version = "0.18.2" 221 | 222 | [[package]] 223 | category = "main" 224 | description = "Python AST that abstracts the underlying Python version" 225 | name = "gast" 226 | optional = false 227 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 228 | version = "0.3.3" 229 | 230 | [[package]] 231 | category = "main" 232 | description = "Coroutine-based network library" 233 | name = "gevent" 234 | optional = false 235 | python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" 236 | version = "20.5.0" 237 | 238 | [package.dependencies] 239 | cffi = ">=1.12.2" 240 | greenlet = ">=0.4.14" 241 | 242 | [package.extras] 243 | dnspython = ["dnspython (>=1.16.0)", "idna"] 244 | docs = ["repoze.sphinx.autointerface", "sphinxcontrib-programoutput"] 245 | events = ["zope.event", "zope.interface"] 246 | monitor = ["psutil (>=5.6.1)", "psutil (5.6.3)"] 247 | recommended = ["dnspython (>=1.16.0)", "idna", "zope.event", "zope.interface", "cffi (>=1.12.2)", "psutil (>=5.6.1)", "psutil (5.6.3)"] 248 | test = ["dnspython (>=1.16.0)", "idna", "zope.event", "zope.interface", "requests", "objgraph", "cffi (>=1.12.2)", "psutil (>=5.6.1)", "psutil (5.6.3)", "futures", "mock", "contextvars (2.4)", "coverage (<5.0)", "coveralls (>=1.7.0)"] 249 | 250 | [[package]] 251 | category = "main" 252 | description = "Git index file parser" 253 | name = "gin" 254 | optional = false 255 | python-versions = "*" 256 | version = "0.1.006" 257 | 258 | [[package]] 259 | category = "main" 260 | description = "Gin-Config: A lightweight configuration library for Python" 261 | name = "gin-config" 262 | optional = false 263 | python-versions = "*" 264 | version = "0.3.0" 265 | 266 | [package.dependencies] 267 | six = ">=1.10.0" 268 | 269 | [package.extras] 270 | tensorflow = ["tensorflow (>=1.13.0)"] 271 | tensorflow-gpu = ["tensorflow-gpu (>=1.13.0)"] 272 | testing = ["absl-py (>=0.1.6)", "mock (>=3.0.5)", "nose", "six (>=1.10.0)"] 273 | tf-nightly = ["tf-nightly"] 274 | 275 | [[package]] 276 | category = "main" 277 | description = "Google API client core library" 278 | name = "google-api-core" 279 | optional = false 280 | python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" 281 | version = "1.17.0" 282 | 283 | [package.dependencies] 284 | google-auth = ">=1.14.0,<2.0dev" 285 | googleapis-common-protos = ">=1.6.0,<2.0dev" 286 | protobuf = ">=3.4.0" 287 | pytz = "*" 288 | requests = ">=2.18.0,<3.0.0dev" 289 | setuptools = ">=34.0.0" 290 | six = ">=1.10.0" 291 | 292 | [package.extras] 293 | grpc = ["grpcio (>=1.8.2,<2.0dev)"] 294 | grpcgcp = ["grpcio-gcp (>=0.2.2)"] 295 | grpcio-gcp = ["grpcio-gcp (>=0.2.2)"] 296 | 297 | [[package]] 298 | category = "main" 299 | description = "Google API Client Library for Python" 300 | name = "google-api-python-client" 301 | optional = false 302 | python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" 303 | version = "1.8.3" 304 | 305 | [package.dependencies] 306 | google-api-core = ">=1.13.0,<2dev" 307 | google-auth = ">=1.4.1" 308 | google-auth-httplib2 = ">=0.0.3" 309 | httplib2 = ">=0.9.2,<1dev" 310 | six = ">=1.6.1,<2dev" 311 | uritemplate = ">=3.0.0,<4dev" 312 | 313 | [[package]] 314 | category = "main" 315 | description = "Google Authentication Library" 316 | name = "google-auth" 317 | optional = false 318 | python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" 319 | version = "1.15.0" 320 | 321 | [package.dependencies] 322 | cachetools = ">=2.0.0,<5.0" 323 | pyasn1-modules = ">=0.2.1" 324 | rsa = ">=3.1.4,<4.1" 325 | setuptools = ">=40.3.0" 326 | six = ">=1.9.0" 327 | 328 | [[package]] 329 | category = "main" 330 | description = "Google Authentication Library: httplib2 transport" 331 | name = "google-auth-httplib2" 332 | optional = false 333 | python-versions = "*" 334 | version = "0.0.3" 335 | 336 | [package.dependencies] 337 | google-auth = "*" 338 | httplib2 = ">=0.9.1" 339 | 340 | [[package]] 341 | category = "main" 342 | description = "Google Authentication Library" 343 | name = "google-auth-oauthlib" 344 | optional = false 345 | python-versions = "*" 346 | version = "0.4.1" 347 | 348 | [package.dependencies] 349 | google-auth = "*" 350 | requests-oauthlib = ">=0.7.0" 351 | 352 | [package.extras] 353 | tool = ["click"] 354 | 355 | [[package]] 356 | category = "main" 357 | description = "pasta is an AST-based Python refactoring library" 358 | name = "google-pasta" 359 | optional = false 360 | python-versions = "*" 361 | version = "0.2.0" 362 | 363 | [package.dependencies] 364 | six = "*" 365 | 366 | [[package]] 367 | category = "main" 368 | description = "Common protobufs used in Google APIs" 369 | name = "googleapis-common-protos" 370 | optional = false 371 | python-versions = "*" 372 | version = "1.51.0" 373 | 374 | [package.dependencies] 375 | protobuf = ">=3.6.0" 376 | 377 | [package.extras] 378 | grpc = ["grpcio (>=1.0.0)"] 379 | 380 | [[package]] 381 | category = "main" 382 | description = "Lightweight in-process concurrent programming" 383 | marker = "platform_python_implementation == \"CPython\"" 384 | name = "greenlet" 385 | optional = false 386 | python-versions = "*" 387 | version = "0.4.15" 388 | 389 | [[package]] 390 | category = "main" 391 | description = "HTTP/2-based RPC framework" 392 | name = "grpcio" 393 | optional = false 394 | python-versions = "*" 395 | version = "1.29.0" 396 | 397 | [package.dependencies] 398 | six = ">=1.5.2" 399 | 400 | [[package]] 401 | category = "main" 402 | description = "WSGI HTTP Server for UNIX" 403 | name = "gunicorn" 404 | optional = false 405 | python-versions = ">=3.4" 406 | version = "20.0.4" 407 | 408 | [package.dependencies] 409 | setuptools = ">=3.0" 410 | 411 | [package.extras] 412 | eventlet = ["eventlet (>=0.9.7)"] 413 | gevent = ["gevent (>=0.13)"] 414 | setproctitle = ["setproctitle"] 415 | tornado = ["tornado (>=0.2)"] 416 | 417 | [[package]] 418 | category = "main" 419 | description = "The OpenAI Gym: A toolkit for developing and comparing your reinforcement learning agents." 420 | name = "gym" 421 | optional = false 422 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 423 | version = "0.14.0" 424 | 425 | [package.dependencies] 426 | cloudpickle = ">=1.2.0,<1.3.0" 427 | numpy = ">=1.10.4" 428 | pyglet = ">=1.2.0,<=1.3.2" 429 | scipy = "*" 430 | six = "*" 431 | 432 | [package.extras] 433 | all = ["atari_py (>=0.2.0,<0.3.0)", "pillow", "opencv-python", "box2d-py (>=2.3.5,<2.4.0)", "mujoco_py (>=1.50,<2.1)", "imageio", "mujoco_py (>=1.50,<2.1)", "imageio"] 434 | atari = ["atari_py (>=0.2.0,<0.3.0)", "pillow", "opencv-python"] 435 | box2d = ["box2d-py (>=2.3.5,<2.4.0)"] 436 | mujoco = ["mujoco_py (>=1.50,<2.1)", "imageio"] 437 | robotics = ["mujoco_py (>=1.50,<2.1)", "imageio"] 438 | 439 | [[package]] 440 | category = "main" 441 | description = "Read and write HDF5 files from Python" 442 | name = "h5py" 443 | optional = false 444 | python-versions = "*" 445 | version = "2.10.0" 446 | 447 | [package.dependencies] 448 | numpy = ">=1.7" 449 | six = "*" 450 | 451 | [[package]] 452 | category = "main" 453 | description = "A comprehensive HTTP client library." 454 | name = "httplib2" 455 | optional = false 456 | python-versions = "*" 457 | version = "0.18.1" 458 | 459 | [[package]] 460 | category = "main" 461 | description = "Internationalized Domain Names in Applications (IDNA)" 462 | name = "idna" 463 | optional = false 464 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 465 | version = "2.9" 466 | 467 | [[package]] 468 | category = "main" 469 | description = "Various helpers to pass data to untrusted environments and back." 470 | name = "itsdangerous" 471 | optional = false 472 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 473 | version = "1.1.0" 474 | 475 | [[package]] 476 | category = "main" 477 | description = "Differentiate, compile, and transform Numpy code." 478 | name = "jax" 479 | optional = false 480 | python-versions = ">=3.6" 481 | version = "0.1.68" 482 | 483 | [package.dependencies] 484 | absl-py = "*" 485 | numpy = ">=1.12" 486 | opt_einsum = "*" 487 | 488 | [[package]] 489 | category = "main" 490 | description = "XLA library for JAX" 491 | name = "jaxlib" 492 | optional = false 493 | python-versions = ">=3.6" 494 | version = "0.1.47" 495 | 496 | [package.dependencies] 497 | absl-py = "*" 498 | numpy = ">=1.12" 499 | scipy = "*" 500 | 501 | [[package]] 502 | category = "main" 503 | description = "A very fast and expressive template engine." 504 | name = "jinja2" 505 | optional = false 506 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 507 | version = "2.11.2" 508 | 509 | [package.dependencies] 510 | MarkupSafe = ">=0.23" 511 | 512 | [package.extras] 513 | i18n = ["Babel (>=0.8)"] 514 | 515 | [[package]] 516 | category = "main" 517 | description = "Easy data preprocessing and data augmentation for deep learning models" 518 | name = "keras-preprocessing" 519 | optional = false 520 | python-versions = "*" 521 | version = "1.1.2" 522 | 523 | [package.dependencies] 524 | numpy = ">=1.9.1" 525 | six = ">=1.9.0" 526 | 527 | [package.extras] 528 | image = ["scipy (>=0.14)", "Pillow (>=5.2.0)"] 529 | pep8 = ["flake8"] 530 | tests = ["pandas", "pillow", "tensorflow", "keras", "pytest", "pytest-xdist", "pytest-cov"] 531 | 532 | [[package]] 533 | category = "main" 534 | description = "K-FAC for TensorFlow" 535 | name = "kfac" 536 | optional = false 537 | python-versions = "*" 538 | version = "0.2.0" 539 | 540 | [package.dependencies] 541 | numpy = "*" 542 | six = "*" 543 | tensorflow-probability = "*" 544 | 545 | [package.extras] 546 | tensorflow = ["tensorflow (>=1.14)"] 547 | tensorflow_gpu = ["tensorflow-gpu (>=1.14)"] 548 | tests = ["dm-sonnet", "pytest"] 549 | 550 | [[package]] 551 | category = "main" 552 | description = "A fast implementation of the Cassowary constraint solver" 553 | name = "kiwisolver" 554 | optional = false 555 | python-versions = ">=3.6" 556 | version = "1.2.0" 557 | 558 | [[package]] 559 | category = "main" 560 | description = "Python implementation of Markdown." 561 | name = "markdown" 562 | optional = false 563 | python-versions = ">=3.5" 564 | version = "3.2.2" 565 | 566 | [package.extras] 567 | testing = ["coverage", "pyyaml"] 568 | 569 | [[package]] 570 | category = "main" 571 | description = "Safely add untrusted strings to HTML/XML markup." 572 | name = "markupsafe" 573 | optional = false 574 | python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" 575 | version = "1.1.1" 576 | 577 | [[package]] 578 | category = "main" 579 | description = "Python plotting package" 580 | name = "matplotlib" 581 | optional = false 582 | python-versions = ">=3.6" 583 | version = "3.2.1" 584 | 585 | [package.dependencies] 586 | cycler = ">=0.10" 587 | kiwisolver = ">=1.0.1" 588 | numpy = ">=1.11" 589 | pyparsing = ">=2.0.1,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6" 590 | python-dateutil = ">=2.1" 591 | 592 | [[package]] 593 | category = "main" 594 | description = "Mesh TensorFlow" 595 | name = "mesh-tensorflow" 596 | optional = false 597 | python-versions = "*" 598 | version = "0.1.13" 599 | 600 | [package.dependencies] 601 | absl-py = "*" 602 | future = "*" 603 | gin-config = "*" 604 | six = "*" 605 | 606 | [package.extras] 607 | auto_mtf = ["ortools"] 608 | tensorflow = ["tensorflow (>=1.15.0)"] 609 | transformer = ["tensorflow-datasets"] 610 | 611 | [[package]] 612 | category = "dev" 613 | description = "More routines for operating on iterables, beyond itertools" 614 | name = "more-itertools" 615 | optional = false 616 | python-versions = ">=3.5" 617 | version = "8.3.0" 618 | 619 | [[package]] 620 | category = "main" 621 | description = "Python library for arbitrary-precision floating-point arithmetic" 622 | name = "mpmath" 623 | optional = false 624 | python-versions = "*" 625 | version = "1.1.0" 626 | 627 | [[package]] 628 | category = "main" 629 | description = "NumPy is the fundamental package for array computing with Python." 630 | name = "numpy" 631 | optional = false 632 | python-versions = ">=3.5" 633 | version = "1.18.4" 634 | 635 | [[package]] 636 | category = "main" 637 | description = "OAuth 2.0 client library" 638 | name = "oauth2client" 639 | optional = false 640 | python-versions = "*" 641 | version = "4.1.3" 642 | 643 | [package.dependencies] 644 | httplib2 = ">=0.9.1" 645 | pyasn1 = ">=0.1.7" 646 | pyasn1-modules = ">=0.0.5" 647 | rsa = ">=3.1.4" 648 | six = ">=1.6.1" 649 | 650 | [[package]] 651 | category = "main" 652 | description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" 653 | name = "oauthlib" 654 | optional = false 655 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 656 | version = "3.1.0" 657 | 658 | [package.extras] 659 | rsa = ["cryptography"] 660 | signals = ["blinker"] 661 | signedtoken = ["cryptography", "pyjwt (>=1.0.0)"] 662 | 663 | [[package]] 664 | category = "main" 665 | description = "Wrapper package for OpenCV python bindings." 666 | name = "opencv-python" 667 | optional = false 668 | python-versions = "*" 669 | version = "4.2.0.34" 670 | 671 | [package.dependencies] 672 | numpy = ">=1.11.1" 673 | 674 | [[package]] 675 | category = "main" 676 | description = "Optimizing numpys einsum function" 677 | name = "opt-einsum" 678 | optional = false 679 | python-versions = ">=3.5" 680 | version = "3.2.1" 681 | 682 | [package.dependencies] 683 | numpy = ">=1.7" 684 | 685 | [package.extras] 686 | docs = ["sphinx (1.2.3)", "sphinxcontrib-napoleon", "sphinx-rtd-theme", "numpydoc"] 687 | tests = ["pytest", "pytest-cov", "pytest-pep8"] 688 | 689 | [[package]] 690 | category = "dev" 691 | description = "Core utilities for Python packages" 692 | name = "packaging" 693 | optional = false 694 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 695 | version = "20.4" 696 | 697 | [package.dependencies] 698 | pyparsing = ">=2.0.2" 699 | six = "*" 700 | 701 | [[package]] 702 | category = "main" 703 | description = "Python Imaging Library (Fork)" 704 | name = "pillow" 705 | optional = false 706 | python-versions = ">=3.5" 707 | version = "7.1.2" 708 | 709 | [[package]] 710 | category = "dev" 711 | description = "plugin and hook calling mechanisms for python" 712 | name = "pluggy" 713 | optional = false 714 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 715 | version = "0.13.1" 716 | 717 | [package.extras] 718 | dev = ["pre-commit", "tox"] 719 | 720 | [[package]] 721 | category = "main" 722 | description = "Promises/A+ implementation for Python" 723 | name = "promise" 724 | optional = false 725 | python-versions = "*" 726 | version = "2.3" 727 | 728 | [package.dependencies] 729 | six = "*" 730 | 731 | [package.extras] 732 | test = ["pytest (>=2.7.3)", "pytest-cov", "coveralls", "futures", "pytest-benchmark", "mock"] 733 | 734 | [[package]] 735 | category = "main" 736 | description = "Protocol Buffers" 737 | name = "protobuf" 738 | optional = false 739 | python-versions = "*" 740 | version = "3.12.1" 741 | 742 | [package.dependencies] 743 | setuptools = "*" 744 | six = ">=1.9" 745 | 746 | [[package]] 747 | category = "dev" 748 | description = "library with cross-python path, ini-parsing, io, code, log facilities" 749 | name = "py" 750 | optional = false 751 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 752 | version = "1.8.1" 753 | 754 | [[package]] 755 | category = "main" 756 | description = "ASN.1 types and codecs" 757 | name = "pyasn1" 758 | optional = false 759 | python-versions = "*" 760 | version = "0.4.8" 761 | 762 | [[package]] 763 | category = "main" 764 | description = "A collection of ASN.1-based protocols modules." 765 | name = "pyasn1-modules" 766 | optional = false 767 | python-versions = "*" 768 | version = "0.2.8" 769 | 770 | [package.dependencies] 771 | pyasn1 = ">=0.4.6,<0.5.0" 772 | 773 | [[package]] 774 | category = "main" 775 | description = "C parser in Python" 776 | marker = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\"" 777 | name = "pycparser" 778 | optional = false 779 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 780 | version = "2.20" 781 | 782 | [[package]] 783 | category = "main" 784 | description = "Cross-platform windowing and multimedia library" 785 | name = "pyglet" 786 | optional = false 787 | python-versions = "*" 788 | version = "1.3.2" 789 | 790 | [package.dependencies] 791 | future = "*" 792 | 793 | [[package]] 794 | category = "main" 795 | description = "Python parsing module" 796 | name = "pyparsing" 797 | optional = false 798 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" 799 | version = "2.4.7" 800 | 801 | [[package]] 802 | category = "main" 803 | description = "Pure Python PNG image encoder/decoder" 804 | name = "pypng" 805 | optional = false 806 | python-versions = "*" 807 | version = "0.0.20" 808 | 809 | [[package]] 810 | category = "dev" 811 | description = "pytest: simple powerful testing with Python" 812 | name = "pytest" 813 | optional = false 814 | python-versions = ">=3.5" 815 | version = "5.4.2" 816 | 817 | [package.dependencies] 818 | atomicwrites = ">=1.0" 819 | attrs = ">=17.4.0" 820 | colorama = "*" 821 | more-itertools = ">=4.0.0" 822 | packaging = "*" 823 | pluggy = ">=0.12,<1.0" 824 | py = ">=1.5.0" 825 | wcwidth = "*" 826 | 827 | [package.extras] 828 | checkqa-mypy = ["mypy (v0.761)"] 829 | testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] 830 | 831 | [[package]] 832 | category = "main" 833 | description = "Extensions to the standard Python datetime module" 834 | name = "python-dateutil" 835 | optional = false 836 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" 837 | version = "2.8.1" 838 | 839 | [package.dependencies] 840 | six = ">=1.5" 841 | 842 | [[package]] 843 | category = "main" 844 | description = "World timezone definitions, modern and historical" 845 | name = "pytz" 846 | optional = false 847 | python-versions = "*" 848 | version = "2020.1" 849 | 850 | [[package]] 851 | category = "main" 852 | description = "Python HTTP for Humans." 853 | name = "requests" 854 | optional = false 855 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 856 | version = "2.23.0" 857 | 858 | [package.dependencies] 859 | certifi = ">=2017.4.17" 860 | chardet = ">=3.0.2,<4" 861 | idna = ">=2.5,<3" 862 | urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" 863 | 864 | [package.extras] 865 | security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] 866 | socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] 867 | 868 | [[package]] 869 | category = "main" 870 | description = "OAuthlib authentication support for Requests." 871 | name = "requests-oauthlib" 872 | optional = false 873 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 874 | version = "1.3.0" 875 | 876 | [package.dependencies] 877 | oauthlib = ">=3.0.0" 878 | requests = ">=2.0.0" 879 | 880 | [package.extras] 881 | rsa = ["oauthlib (>=3.0.0)"] 882 | 883 | [[package]] 884 | category = "main" 885 | description = "Pure-Python RSA implementation" 886 | name = "rsa" 887 | optional = false 888 | python-versions = "*" 889 | version = "4.0" 890 | 891 | [package.dependencies] 892 | pyasn1 = ">=0.1.3" 893 | 894 | [[package]] 895 | category = "main" 896 | description = "SciPy: Scientific Library for Python" 897 | name = "scipy" 898 | optional = false 899 | python-versions = ">=3.5" 900 | version = "1.4.1" 901 | 902 | [package.dependencies] 903 | numpy = ">=1.13.3" 904 | 905 | [[package]] 906 | category = "main" 907 | description = "SentencePiece python wrapper" 908 | name = "sentencepiece" 909 | optional = false 910 | python-versions = "*" 911 | version = "0.1.91" 912 | 913 | [[package]] 914 | category = "main" 915 | description = "Python 2 and 3 compatibility utilities" 916 | name = "six" 917 | optional = false 918 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" 919 | version = "1.15.0" 920 | 921 | [[package]] 922 | category = "main" 923 | description = "A modern CSS selector implementation for Beautiful Soup." 924 | name = "soupsieve" 925 | optional = false 926 | python-versions = "*" 927 | version = "1.9.6" 928 | 929 | [[package]] 930 | category = "main" 931 | description = "Computer algebra system (CAS) in Python" 932 | name = "sympy" 933 | optional = false 934 | python-versions = ">=3.5" 935 | version = "1.6" 936 | 937 | [package.dependencies] 938 | mpmath = ">=0.19" 939 | 940 | [[package]] 941 | category = "main" 942 | description = "Tensor2Tensor" 943 | name = "tensor2tensor" 944 | optional = false 945 | python-versions = "*" 946 | version = "1.15.5" 947 | 948 | [package.dependencies] 949 | Pillow = "*" 950 | absl-py = "*" 951 | bz2file = "*" 952 | dopamine-rl = "*" 953 | flask = "*" 954 | future = "*" 955 | gevent = "*" 956 | gin-config = "*" 957 | google-api-python-client = "*" 958 | gunicorn = "*" 959 | gym = "0.14.0" 960 | h5py = "*" 961 | kfac = "*" 962 | mesh-tensorflow = "*" 963 | numpy = "*" 964 | oauth2client = "*" 965 | opencv-python = "*" 966 | pypng = "*" 967 | requests = "*" 968 | scipy = "*" 969 | six = ">=1.12.0" 970 | sympy = "*" 971 | tensorflow-datasets = "*" 972 | tensorflow-gan = "*" 973 | tensorflow-probability = "0.7.0" 974 | tqdm = "*" 975 | 976 | [package.extras] 977 | allen = ["Pillow (5.1.0)", "pandas (0.23.0)"] 978 | tensorflow = ["tensorflow (>=1.15.0,<2.0)"] 979 | tensorflow-hub = ["tensorflow-hub (>=0.1.1)"] 980 | tests = ["attrs (>=17.4.0)", "pytest (>=3.8.0)", "mock", "jupyter", "matplotlib"] 981 | 982 | [[package]] 983 | category = "main" 984 | description = "TensorBoard lets you watch Tensors Flow" 985 | name = "tensorboard" 986 | optional = false 987 | python-versions = ">= 2.7, != 3.0.*, != 3.1.*" 988 | version = "2.2.1" 989 | 990 | [package.dependencies] 991 | absl-py = ">=0.4" 992 | google-auth = ">=1.6.3,<2" 993 | google-auth-oauthlib = ">=0.4.1,<0.5" 994 | grpcio = ">=1.24.3" 995 | markdown = ">=2.6.8" 996 | numpy = ">=1.12.0" 997 | protobuf = ">=3.6.0" 998 | requests = ">=2.21.0,<3" 999 | setuptools = ">=41.0.0" 1000 | six = ">=1.10.0" 1001 | tensorboard-plugin-wit = ">=1.6.0" 1002 | werkzeug = ">=0.11.15" 1003 | 1004 | [package.dependencies.wheel] 1005 | python = ">=3" 1006 | version = ">=0.26" 1007 | 1008 | [[package]] 1009 | category = "main" 1010 | description = "What-If Tool TensorBoard plugin." 1011 | name = "tensorboard-plugin-wit" 1012 | optional = false 1013 | python-versions = "*" 1014 | version = "1.6.0.post3" 1015 | 1016 | [[package]] 1017 | category = "main" 1018 | description = "TensorFlow is an open source machine learning framework for everyone." 1019 | name = "tensorflow" 1020 | optional = false 1021 | python-versions = "*" 1022 | version = "2.2.0" 1023 | 1024 | [package.dependencies] 1025 | absl-py = ">=0.7.0" 1026 | astunparse = "1.6.3" 1027 | gast = "0.3.3" 1028 | google-pasta = ">=0.1.8" 1029 | grpcio = ">=1.8.6" 1030 | h5py = ">=2.10.0,<2.11.0" 1031 | keras-preprocessing = ">=1.1.0" 1032 | numpy = ">=1.16.0,<2.0" 1033 | opt-einsum = ">=2.3.2" 1034 | protobuf = ">=3.8.0" 1035 | six = ">=1.12.0" 1036 | tensorboard = ">=2.2.0,<2.3.0" 1037 | tensorflow-estimator = ">=2.2.0,<2.3.0" 1038 | termcolor = ">=1.1.0" 1039 | wrapt = ">=1.11.1" 1040 | 1041 | [package.dependencies.scipy] 1042 | python = ">=3" 1043 | version = "1.4.1" 1044 | 1045 | [package.dependencies.wheel] 1046 | python = ">=3" 1047 | version = ">=0.26" 1048 | 1049 | [[package]] 1050 | category = "main" 1051 | description = "tensorflow/datasets is a library of datasets ready to use with TensorFlow." 1052 | name = "tensorflow-datasets" 1053 | optional = false 1054 | python-versions = "*" 1055 | version = "3.1.0" 1056 | 1057 | [package.dependencies] 1058 | absl-py = "*" 1059 | attrs = ">=18.1.0" 1060 | dill = "*" 1061 | future = "*" 1062 | numpy = "*" 1063 | promise = "*" 1064 | protobuf = ">=3.6.1" 1065 | requests = ">=2.19.0" 1066 | six = "*" 1067 | tensorflow-metadata = "*" 1068 | termcolor = "*" 1069 | tqdm = "*" 1070 | wrapt = "*" 1071 | 1072 | [package.extras] 1073 | aflw2k3d = ["scipy"] 1074 | apache-beam = ["apache-beam"] 1075 | c4 = ["apache-beam", "langdetect", "nltk", "tldextract"] 1076 | cats_vs_dogs = ["matplotlib"] 1077 | colorectal_histology = ["pillow"] 1078 | common_voice = ["pydub"] 1079 | duke_ultrasound = ["scipy"] 1080 | eurosat = ["scikit-image"] 1081 | groove = ["pretty-midi", "pydub"] 1082 | imagenet2012_corrupted = ["opencv-python (3.4.0.14)", "scikit-image", "scipy"] 1083 | librispeech = ["pydub"] 1084 | lsun = ["tensorflow-io"] 1085 | matplotlib = ["matplotlib"] 1086 | nsynth = ["crepe (>=0.0.11)", "librosa", "scikit-learn (0.20.3)"] 1087 | pet_finder = ["pandas"] 1088 | robonet = ["h5py"] 1089 | svhn = ["scipy"] 1090 | tensorflow = ["tensorflow (>=1.15.0)"] 1091 | tensorflow_gpu = ["tensorflow-gpu (>=1.15.0)"] 1092 | tests = ["apache-beam", "jupyter", "mako", "pytest", "pytest-xdist", "scipy", "langdetect", "nltk", "tldextract", "matplotlib", "pillow", "pydub", "scikit-image", "pretty-midi", "opencv-python (3.4.0.14)", "pandas", "h5py", "mwparserfromhell", "mock"] 1093 | the300w_lp = ["scipy"] 1094 | wider_face = ["pillow"] 1095 | wikipedia = ["mwparserfromhell", "apache-beam"] 1096 | 1097 | [[package]] 1098 | category = "main" 1099 | description = "TensorFlow Estimator." 1100 | name = "tensorflow-estimator" 1101 | optional = false 1102 | python-versions = "*" 1103 | version = "2.2.0" 1104 | 1105 | [[package]] 1106 | category = "main" 1107 | description = "TF-GAN: A Generative Adversarial Networks library for TensorFlow." 1108 | name = "tensorflow-gan" 1109 | optional = false 1110 | python-versions = "*" 1111 | version = "2.0.0" 1112 | 1113 | [package.dependencies] 1114 | tensorflow-hub = ">=0.2" 1115 | tensorflow-probability = ">=0.7" 1116 | 1117 | [package.extras] 1118 | tensorflow-datasets = ["tensorflow-datasets (>=0.5.0)"] 1119 | tf = ["tensorflow (>=1.12)"] 1120 | 1121 | [[package]] 1122 | category = "main" 1123 | description = "TensorFlow Hub is a library to foster the publication, discovery, and consumption of reusable parts of machine learning models." 1124 | name = "tensorflow-hub" 1125 | optional = false 1126 | python-versions = "*" 1127 | version = "0.8.0" 1128 | 1129 | [package.dependencies] 1130 | numpy = ">=1.12.0" 1131 | protobuf = ">=3.8.0" 1132 | six = ">=1.12.0" 1133 | 1134 | [package.extras] 1135 | make_image_classifier = ["keras-preprocessing"] 1136 | make_nearest_neighbour_index = ["apache-beam", "annoy"] 1137 | 1138 | [[package]] 1139 | category = "main" 1140 | description = "Library and standards for schema and statistics." 1141 | name = "tensorflow-metadata" 1142 | optional = false 1143 | python-versions = ">=2.7,<4" 1144 | version = "0.22.0" 1145 | 1146 | [package.dependencies] 1147 | googleapis-common-protos = "*" 1148 | protobuf = ">=3.7,<4" 1149 | 1150 | [[package]] 1151 | category = "main" 1152 | description = "Probabilistic modeling and statistical inference in TensorFlow" 1153 | name = "tensorflow-probability" 1154 | optional = false 1155 | python-versions = "*" 1156 | version = "0.7.0" 1157 | 1158 | [package.dependencies] 1159 | cloudpickle = ">=0.6.1" 1160 | decorator = "*" 1161 | numpy = ">=1.13.3" 1162 | six = ">=1.10.0" 1163 | 1164 | [[package]] 1165 | category = "main" 1166 | description = "ANSII Color formatting for output in terminal." 1167 | name = "termcolor" 1168 | optional = false 1169 | python-versions = "*" 1170 | version = "1.1.0" 1171 | 1172 | [[package]] 1173 | category = "main" 1174 | description = "Fast, Extensible Progress Meter" 1175 | name = "tqdm" 1176 | optional = false 1177 | python-versions = ">=2.6, !=3.0.*, !=3.1.*" 1178 | version = "4.46.0" 1179 | 1180 | [package.extras] 1181 | dev = ["py-make (>=0.1.0)", "twine", "argopt", "pydoc-markdown"] 1182 | 1183 | [[package]] 1184 | category = "main" 1185 | description = "Trax" 1186 | name = "trax" 1187 | optional = false 1188 | python-versions = "*" 1189 | version = "1.2.0" 1190 | 1191 | [package.dependencies] 1192 | absl-py = "*" 1193 | funcsigs = "*" 1194 | gin-config = "*" 1195 | gym = "*" 1196 | jax = "*" 1197 | jaxlib = "*" 1198 | numpy = "*" 1199 | scipy = "*" 1200 | six = "*" 1201 | tensor2tensor = "*" 1202 | tensorflow-datasets = "*" 1203 | 1204 | [package.extras] 1205 | tensorflow = ["tensorflow (>=1.14.0)"] 1206 | tensorflow_gpu = ["tensorflow-gpu (>=1.14.0)"] 1207 | tests = ["attrs", "pytest", "mock", "pylint", "jupyter", "matplotlib"] 1208 | 1209 | [[package]] 1210 | category = "main" 1211 | description = "URI templates" 1212 | name = "uritemplate" 1213 | optional = false 1214 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 1215 | version = "3.0.1" 1216 | 1217 | [[package]] 1218 | category = "main" 1219 | description = "HTTP library with thread-safe connection pooling, file post, and more." 1220 | name = "urllib3" 1221 | optional = false 1222 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" 1223 | version = "1.25.9" 1224 | 1225 | [package.extras] 1226 | brotli = ["brotlipy (>=0.6.0)"] 1227 | secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "pyOpenSSL (>=0.14)", "ipaddress"] 1228 | socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] 1229 | 1230 | [[package]] 1231 | category = "dev" 1232 | description = "Measures number of Terminal column cells of wide-character codes" 1233 | name = "wcwidth" 1234 | optional = false 1235 | python-versions = "*" 1236 | version = "0.1.9" 1237 | 1238 | [[package]] 1239 | category = "main" 1240 | description = "The comprehensive WSGI web application library." 1241 | name = "werkzeug" 1242 | optional = false 1243 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 1244 | version = "1.0.1" 1245 | 1246 | [package.extras] 1247 | dev = ["pytest", "pytest-timeout", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinx-issues"] 1248 | watchdog = ["watchdog"] 1249 | 1250 | [[package]] 1251 | category = "main" 1252 | description = "A built-package format for Python" 1253 | name = "wheel" 1254 | optional = false 1255 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 1256 | version = "0.34.2" 1257 | 1258 | [package.extras] 1259 | test = ["pytest (>=3.0.0)", "pytest-cov"] 1260 | 1261 | [[package]] 1262 | category = "main" 1263 | description = "Module for decorators, wrappers and monkey patching." 1264 | name = "wrapt" 1265 | optional = false 1266 | python-versions = "*" 1267 | version = "1.12.1" 1268 | 1269 | [metadata] 1270 | content-hash = "7a6b4bdcfdaf156bc2303b81c097cd1288e54986bf1460f0d34ba66ace50a1ed" 1271 | python-versions = "^3.8" 1272 | 1273 | [metadata.files] 1274 | absl-py = [ 1275 | {file = "absl-py-0.9.0.tar.gz", hash = "sha256:75e737d6ce7723d9ff9b7aa1ba3233c34be62ef18d5859e706b8fdc828989830"}, 1276 | ] 1277 | astunparse = [ 1278 | {file = "astunparse-1.6.3-py2.py3-none-any.whl", hash = "sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8"}, 1279 | {file = "astunparse-1.6.3.tar.gz", hash = "sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872"}, 1280 | ] 1281 | atomicwrites = [ 1282 | {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, 1283 | {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, 1284 | ] 1285 | attrs = [ 1286 | {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, 1287 | {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, 1288 | ] 1289 | beautifulsoup4 = [ 1290 | {file = "beautifulsoup4-4.9.1-py2-none-any.whl", hash = "sha256:e718f2342e2e099b640a34ab782407b7b676f47ee272d6739e60b8ea23829f2c"}, 1291 | {file = "beautifulsoup4-4.9.1-py3-none-any.whl", hash = "sha256:a6237df3c32ccfaee4fd201c8f5f9d9df619b93121d01353a64a73ce8c6ef9a8"}, 1292 | {file = "beautifulsoup4-4.9.1.tar.gz", hash = "sha256:73cc4d115b96f79c7d77c1c7f7a0a8d4c57860d1041df407dd1aae7f07a77fd7"}, 1293 | ] 1294 | bs4 = [ 1295 | {file = "bs4-0.0.1.tar.gz", hash = "sha256:36ecea1fd7cc5c0c6e4a1ff075df26d50da647b75376626cc186e2212886dd3a"}, 1296 | ] 1297 | bz2file = [ 1298 | {file = "bz2file-0.98.tar.gz", hash = "sha256:64c1f811e31556ba9931953c8ec7b397488726c63e09a4c67004f43bdd28da88"}, 1299 | ] 1300 | cachetools = [ 1301 | {file = "cachetools-4.1.0-py3-none-any.whl", hash = "sha256:de5d88f87781602201cde465d3afe837546663b168e8b39df67411b0bf10cefc"}, 1302 | {file = "cachetools-4.1.0.tar.gz", hash = "sha256:1d057645db16ca7fe1f3bd953558897603d6f0b9c51ed9d11eb4d071ec4e2aab"}, 1303 | ] 1304 | certifi = [ 1305 | {file = "certifi-2020.4.5.1-py2.py3-none-any.whl", hash = "sha256:1d987a998c75633c40847cc966fcf5904906c920a7f17ef374f5aa4282abd304"}, 1306 | {file = "certifi-2020.4.5.1.tar.gz", hash = "sha256:51fcb31174be6e6664c5f69e3e1691a2d72a1a12e90f872cbdb1567eb47b6519"}, 1307 | ] 1308 | cffi = [ 1309 | {file = "cffi-1.14.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1cae98a7054b5c9391eb3249b86e0e99ab1e02bb0cc0575da191aedadbdf4384"}, 1310 | {file = "cffi-1.14.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:cf16e3cf6c0a5fdd9bc10c21687e19d29ad1fe863372b5543deaec1039581a30"}, 1311 | {file = "cffi-1.14.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:f2b0fa0c01d8a0c7483afd9f31d7ecf2d71760ca24499c8697aeb5ca37dc090c"}, 1312 | {file = "cffi-1.14.0-cp27-cp27m-win32.whl", hash = "sha256:99f748a7e71ff382613b4e1acc0ac83bf7ad167fb3802e35e90d9763daba4d78"}, 1313 | {file = "cffi-1.14.0-cp27-cp27m-win_amd64.whl", hash = "sha256:c420917b188a5582a56d8b93bdd8e0f6eca08c84ff623a4c16e809152cd35793"}, 1314 | {file = "cffi-1.14.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:399aed636c7d3749bbed55bc907c3288cb43c65c4389964ad5ff849b6370603e"}, 1315 | {file = "cffi-1.14.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:cab50b8c2250b46fe738c77dbd25ce017d5e6fb35d3407606e7a4180656a5a6a"}, 1316 | {file = "cffi-1.14.0-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:001bf3242a1bb04d985d63e138230802c6c8d4db3668fb545fb5005ddf5bb5ff"}, 1317 | {file = "cffi-1.14.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:e56c744aa6ff427a607763346e4170629caf7e48ead6921745986db3692f987f"}, 1318 | {file = "cffi-1.14.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:b8c78301cefcf5fd914aad35d3c04c2b21ce8629b5e4f4e45ae6812e461910fa"}, 1319 | {file = "cffi-1.14.0-cp35-cp35m-win32.whl", hash = "sha256:8c0ffc886aea5df6a1762d0019e9cb05f825d0eec1f520c51be9d198701daee5"}, 1320 | {file = "cffi-1.14.0-cp35-cp35m-win_amd64.whl", hash = "sha256:8a6c688fefb4e1cd56feb6c511984a6c4f7ec7d2a1ff31a10254f3c817054ae4"}, 1321 | {file = "cffi-1.14.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:95cd16d3dee553f882540c1ffe331d085c9e629499ceadfbda4d4fde635f4b7d"}, 1322 | {file = "cffi-1.14.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:66e41db66b47d0d8672d8ed2708ba91b2f2524ece3dee48b5dfb36be8c2f21dc"}, 1323 | {file = "cffi-1.14.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:028a579fc9aed3af38f4892bdcc7390508adabc30c6af4a6e4f611b0c680e6ac"}, 1324 | {file = "cffi-1.14.0-cp36-cp36m-win32.whl", hash = "sha256:cef128cb4d5e0b3493f058f10ce32365972c554572ff821e175dbc6f8ff6924f"}, 1325 | {file = "cffi-1.14.0-cp36-cp36m-win_amd64.whl", hash = "sha256:337d448e5a725bba2d8293c48d9353fc68d0e9e4088d62a9571def317797522b"}, 1326 | {file = "cffi-1.14.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e577934fc5f8779c554639376beeaa5657d54349096ef24abe8c74c5d9c117c3"}, 1327 | {file = "cffi-1.14.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:62ae9af2d069ea2698bf536dcfe1e4eed9090211dbaafeeedf5cb6c41b352f66"}, 1328 | {file = "cffi-1.14.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:14491a910663bf9f13ddf2bc8f60562d6bc5315c1f09c704937ef17293fb85b0"}, 1329 | {file = "cffi-1.14.0-cp37-cp37m-win32.whl", hash = "sha256:c43866529f2f06fe0edc6246eb4faa34f03fe88b64a0a9a942561c8e22f4b71f"}, 1330 | {file = "cffi-1.14.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2089ed025da3919d2e75a4d963d008330c96751127dd6f73c8dc0c65041b4c26"}, 1331 | {file = "cffi-1.14.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3b911c2dbd4f423b4c4fcca138cadde747abdb20d196c4a48708b8a2d32b16dd"}, 1332 | {file = "cffi-1.14.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:7e63cbcf2429a8dbfe48dcc2322d5f2220b77b2e17b7ba023d6166d84655da55"}, 1333 | {file = "cffi-1.14.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:3d311bcc4a41408cf5854f06ef2c5cab88f9fded37a3b95936c9879c1640d4c2"}, 1334 | {file = "cffi-1.14.0-cp38-cp38-win32.whl", hash = "sha256:675686925a9fb403edba0114db74e741d8181683dcf216be697d208857e04ca8"}, 1335 | {file = "cffi-1.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:00789914be39dffba161cfc5be31b55775de5ba2235fe49aa28c148236c4e06b"}, 1336 | {file = "cffi-1.14.0.tar.gz", hash = "sha256:2d384f4a127a15ba701207f7639d94106693b6cd64173d6c8988e2c25f3ac2b6"}, 1337 | ] 1338 | chardet = [ 1339 | {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, 1340 | {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, 1341 | ] 1342 | click = [ 1343 | {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"}, 1344 | {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"}, 1345 | ] 1346 | cloudpickle = [ 1347 | {file = "cloudpickle-1.2.2-py2.py3-none-any.whl", hash = "sha256:f3ef2c9d438f1553ce7795afb18c1f190d8146132496169ef6aa9b7b65caa4c3"}, 1348 | {file = "cloudpickle-1.2.2.tar.gz", hash = "sha256:922401d7140e133253ff5fab4faa4a1166416066453a783b00b507dca93f8859"}, 1349 | ] 1350 | colorama = [ 1351 | {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, 1352 | {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, 1353 | ] 1354 | cycler = [ 1355 | {file = "cycler-0.10.0-py2.py3-none-any.whl", hash = "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d"}, 1356 | {file = "cycler-0.10.0.tar.gz", hash = "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"}, 1357 | ] 1358 | decorator = [ 1359 | {file = "decorator-4.4.2-py2.py3-none-any.whl", hash = "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760"}, 1360 | {file = "decorator-4.4.2.tar.gz", hash = "sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7"}, 1361 | ] 1362 | dill = [ 1363 | {file = "dill-0.3.1.1.tar.gz", hash = "sha256:42d8ef819367516592a825746a18073ced42ca169ab1f5f4044134703e7a049c"}, 1364 | ] 1365 | dopamine-rl = [ 1366 | {file = "dopamine_rl-3.0.1-py3-none-any.whl", hash = "sha256:b37dcacf651462345a1ed9aac41e282553e0f095040f4c996d264aa8482e5d92"}, 1367 | {file = "dopamine_rl-3.0.1.tar.gz", hash = "sha256:4ff031de580c0d2e4a64ef0e11d52f3f2f2978e08a4e02ef2ac665a7d8183f62"}, 1368 | ] 1369 | flask = [ 1370 | {file = "Flask-1.1.2-py2.py3-none-any.whl", hash = "sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557"}, 1371 | {file = "Flask-1.1.2.tar.gz", hash = "sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060"}, 1372 | ] 1373 | funcsigs = [ 1374 | {file = "funcsigs-1.0.2-py2.py3-none-any.whl", hash = "sha256:330cc27ccbf7f1e992e69fef78261dc7c6569012cf397db8d3de0234e6c937ca"}, 1375 | {file = "funcsigs-1.0.2.tar.gz", hash = "sha256:a7bb0f2cf3a3fd1ab2732cb49eba4252c2af4240442415b4abce3b87022a8f50"}, 1376 | ] 1377 | future = [ 1378 | {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, 1379 | ] 1380 | gast = [ 1381 | {file = "gast-0.3.3-py2.py3-none-any.whl", hash = "sha256:8f46f5be57ae6889a4e16e2ca113b1703ef17f2b0abceb83793eaba9e1351a45"}, 1382 | {file = "gast-0.3.3.tar.gz", hash = "sha256:b881ef288a49aa81440d2c5eb8aeefd4c2bb8993d5f50edae7413a85bfdb3b57"}, 1383 | ] 1384 | gevent = [ 1385 | {file = "gevent-20.5.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:efd9546468502a30ddd4699c3124ccb9d3099130f9b5ae1e2a54ad5b46e86120"}, 1386 | {file = "gevent-20.5.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:3ff477b6d275396123faf8ce2d5b82f96d85ba264e0b9d4b56a2bac49d1b9adc"}, 1387 | {file = "gevent-20.5.0-cp27-cp27m-win32.whl", hash = "sha256:92edc18a357473e01a4e4a82c073ed3c99ceca6e3ce93c23668dd4a2401f07dc"}, 1388 | {file = "gevent-20.5.0-cp27-cp27m-win_amd64.whl", hash = "sha256:1dd95433be45e1115053878366e3f5332ae99c39cb345be23851327c062b9f4a"}, 1389 | {file = "gevent-20.5.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:fcb64f3a28420d1b872b7ef41b12e8a1a4dcadfc8eff3c09993ab0cdf52584a1"}, 1390 | {file = "gevent-20.5.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:4d2729dd4bf9c4d0f29482f53cdf9fc90a498aebb5cd7ae8b45d35657437d2ac"}, 1391 | {file = "gevent-20.5.0-cp35-cp35m-win32.whl", hash = "sha256:00b03601b8dd1ee2aa07811cb60a4befe36173b15d91c6e207e37f8d77dd6fac"}, 1392 | {file = "gevent-20.5.0-cp35-cp35m-win_amd64.whl", hash = "sha256:937d36730f2b0dee3387712074b1f15b802e2e074a3d7c6dcaf70521236d607c"}, 1393 | {file = "gevent-20.5.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:929c33df8e9bcbe31906024fcd21580bd018196dbd3249eb5b2f19d63e11092d"}, 1394 | {file = "gevent-20.5.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:52e5cd607749ed3b8aa0272cacf2c11deec61fca4c3bec57a9fea8c49316627d"}, 1395 | {file = "gevent-20.5.0-cp36-cp36m-win32.whl", hash = "sha256:15eae3cd450dac7dae7f4ac59e01db1378965c9ef565c39c5ae78c5a888f9ac9"}, 1396 | {file = "gevent-20.5.0-cp36-cp36m-win_amd64.whl", hash = "sha256:9b4e940fc6071afebb86ba5f48dbb5f1fc3cb96ebeb8cf145eb5b499e9c6ee33"}, 1397 | {file = "gevent-20.5.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:e01d5373528e4ebdde66dc47a608d225fa3c4408ccd828d26c49b7ff75d82bd9"}, 1398 | {file = "gevent-20.5.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:31dc5d4ab8172cc00c4ff17cb18edee633babd961f64bf54214244d769bc3a74"}, 1399 | {file = "gevent-20.5.0-cp37-cp37m-win32.whl", hash = "sha256:0acc15ba2ac2a555529ad82d5a28fc85dbb6b2ff947657d67bebfd352e2b5c14"}, 1400 | {file = "gevent-20.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a7805934e8ce81610b61f806572c3d504cedd698cc8c9460d78d2893ba598c4a"}, 1401 | {file = "gevent-20.5.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:5c604179cebcc57f10505d8db177b92a715907815a464b066e7eba322d1c33ac"}, 1402 | {file = "gevent-20.5.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:88c76df4967c5229f853aa67ad1b394d9e4f985b0359c9bc9879416bba3e7c68"}, 1403 | {file = "gevent-20.5.0-cp38-cp38-win32.whl", hash = "sha256:d07a2afe4215731eb57d5b257a2e7e7e170d8a7ae1f02f6d0682cd3403debea9"}, 1404 | {file = "gevent-20.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:28b7d83b4327ceb79668eca2049bf4b9ce66d5ace18a88335e3035b573f889fd"}, 1405 | {file = "gevent-20.5.0-pp27-pypy_73-win32.whl", hash = "sha256:38db524ea88d81d596b2cbb6948fced26654a15fec40ea4529224e239a6f45e8"}, 1406 | {file = "gevent-20.5.0.tar.gz", hash = "sha256:1dc7f1f6bc1f67d625e4272b01e717eba0b4fa024d2ff7934c8d320674d6f7fa"}, 1407 | ] 1408 | gin = [ 1409 | {file = "gin-0.1.006.tar.bz2", hash = "sha256:0747da840881792f1726f9145094953b0a1499e9b41324a14ca6a10c03baa1ef"}, 1410 | ] 1411 | gin-config = [ 1412 | {file = "gin-config-0.3.0.tar.gz", hash = "sha256:6a83b7639ae76c276c0380d71d583f151b327a7c37978add314180ec1280a6cc"}, 1413 | {file = "gin_config-0.3.0-py3-none-any.whl", hash = "sha256:e2141da0525c9275bf08f11ef7d25cdd65e415f74f77fab54227af9f5d2d8c93"}, 1414 | ] 1415 | google-api-core = [ 1416 | {file = "google-api-core-1.17.0.tar.gz", hash = "sha256:e4082a0b479dc2dee2f8d7b80ea8b5d0184885b773caab15ab1836277a01d689"}, 1417 | {file = "google_api_core-1.17.0-py2.py3-none-any.whl", hash = "sha256:c0e430658ed6be902d7ba7095fb0a9cac810270d71bf7ac4484e76c300407aae"}, 1418 | ] 1419 | google-api-python-client = [ 1420 | {file = "google-api-python-client-1.8.3.tar.gz", hash = "sha256:be4e8dcf399d7d1dcaae004b7f18694907f740bf6e6cebda91da8ebd968c5481"}, 1421 | {file = "google_api_python_client-1.8.3-py3-none-any.whl", hash = "sha256:b764be88cf2a1f8b4c4d17c9187a279fea93f4d767e7d7c24f71bf25385a8b10"}, 1422 | ] 1423 | google-auth = [ 1424 | {file = "google-auth-1.15.0.tar.gz", hash = "sha256:fbf25fee328c0828ef293459d9c649ef84ee44c0b932bb999d19df0ead1b40cf"}, 1425 | {file = "google_auth-1.15.0-py2.py3-none-any.whl", hash = "sha256:73b141d122942afe12e8bfdcb6900d5df35c27d39700f078363ba0b1298ad33b"}, 1426 | ] 1427 | google-auth-httplib2 = [ 1428 | {file = "google-auth-httplib2-0.0.3.tar.gz", hash = "sha256:098fade613c25b4527b2c08fa42d11f3c2037dda8995d86de0745228e965d445"}, 1429 | {file = "google_auth_httplib2-0.0.3-py2.py3-none-any.whl", hash = "sha256:f1c437842155680cf9918df9bc51c1182fda41feef88c34004bd1978c8157e08"}, 1430 | ] 1431 | google-auth-oauthlib = [ 1432 | {file = "google-auth-oauthlib-0.4.1.tar.gz", hash = "sha256:88d2cd115e3391eb85e1243ac6902e76e77c5fe438b7276b297fbe68015458dd"}, 1433 | {file = "google_auth_oauthlib-0.4.1-py2.py3-none-any.whl", hash = "sha256:a92a0f6f41a0fb6138454fbc02674e64f89d82a244ea32f98471733c8ef0e0e1"}, 1434 | ] 1435 | google-pasta = [ 1436 | {file = "google-pasta-0.2.0.tar.gz", hash = "sha256:c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e"}, 1437 | {file = "google_pasta-0.2.0-py2-none-any.whl", hash = "sha256:4612951da876b1a10fe3960d7226f0c7682cf901e16ac06e473b267a5afa8954"}, 1438 | {file = "google_pasta-0.2.0-py3-none-any.whl", hash = "sha256:b32482794a366b5366a32c92a9a9201b107821889935a02b3e51f6b432ea84ed"}, 1439 | ] 1440 | googleapis-common-protos = [ 1441 | {file = "googleapis-common-protos-1.51.0.tar.gz", hash = "sha256:013c91704279119150e44ef770086fdbba158c1f978a6402167d47d5409e226e"}, 1442 | ] 1443 | greenlet = [ 1444 | {file = "greenlet-0.4.15-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:99a26afdb82ea83a265137a398f570402aa1f2b5dfb4ac3300c026931817b163"}, 1445 | {file = "greenlet-0.4.15-cp27-cp27m-win32.whl", hash = "sha256:beeabe25c3b704f7d56b573f7d2ff88fc99f0138e43480cecdfcaa3b87fe4f87"}, 1446 | {file = "greenlet-0.4.15-cp27-cp27m-win_amd64.whl", hash = "sha256:9854f612e1b59ec66804931df5add3b2d5ef0067748ea29dc60f0efdcda9a638"}, 1447 | {file = "greenlet-0.4.15-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ac57fcdcfb0b73bb3203b58a14501abb7e5ff9ea5e2edfa06bb03035f0cff248"}, 1448 | {file = "greenlet-0.4.15-cp33-cp33m-win32.whl", hash = "sha256:d634a7ea1fc3380ff96f9e44d8d22f38418c1c381d5fac680b272d7d90883720"}, 1449 | {file = "greenlet-0.4.15-cp33-cp33m-win_amd64.whl", hash = "sha256:0d48200bc50cbf498716712129eef819b1729339e34c3ae71656964dac907c28"}, 1450 | {file = "greenlet-0.4.15-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:bcb530089ff24f6458a81ac3fa699e8c00194208a724b644ecc68422e1111939"}, 1451 | {file = "greenlet-0.4.15-cp34-cp34m-win32.whl", hash = "sha256:8b4572c334593d449113f9dc8d19b93b7b271bdbe90ba7509eb178923327b625"}, 1452 | {file = "greenlet-0.4.15-cp34-cp34m-win_amd64.whl", hash = "sha256:a9f145660588187ff835c55a7d2ddf6abfc570c2651c276d3d4be8a2766db490"}, 1453 | {file = "greenlet-0.4.15-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:51503524dd6f152ab4ad1fbd168fc6c30b5795e8c70be4410a64940b3abb55c0"}, 1454 | {file = "greenlet-0.4.15-cp35-cp35m-win32.whl", hash = "sha256:a19bf883b3384957e4a4a13e6bd1ae3d85ae87f4beb5957e35b0be287f12f4e4"}, 1455 | {file = "greenlet-0.4.15-cp35-cp35m-win_amd64.whl", hash = "sha256:853da4f9563d982e4121fed8c92eea1a4594a2299037b3034c3c898cb8e933d6"}, 1456 | {file = "greenlet-0.4.15-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:23d12eacffa9d0f290c0fe0c4e81ba6d5f3a5b7ac3c30a5eaf0126bf4deda5c8"}, 1457 | {file = "greenlet-0.4.15-cp36-cp36m-win32.whl", hash = "sha256:000546ad01e6389e98626c1367be58efa613fa82a1be98b0c6fc24b563acc6d0"}, 1458 | {file = "greenlet-0.4.15-cp36-cp36m-win_amd64.whl", hash = "sha256:d97b0661e1aead761f0ded3b769044bb00ed5d33e1ec865e891a8b128bf7c656"}, 1459 | {file = "greenlet-0.4.15-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:8041e2de00e745c0e05a502d6e6db310db7faa7c979b3a5877123548a4c0b214"}, 1460 | {file = "greenlet-0.4.15-cp37-cp37m-win32.whl", hash = "sha256:81fcd96a275209ef117e9ec91f75c731fa18dcfd9ffaa1c0adbdaa3616a86043"}, 1461 | {file = "greenlet-0.4.15-cp37-cp37m-win_amd64.whl", hash = "sha256:37c9ba82bd82eb6a23c2e5acc03055c0e45697253b2393c9a50cef76a3985304"}, 1462 | {file = "greenlet-0.4.15-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:e538b8dae561080b542b0f5af64d47ef859f22517f7eca617bb314e0e03fd7ef"}, 1463 | {file = "greenlet-0.4.15-cp38-cp38-win32.whl", hash = "sha256:51155342eb4d6058a0ffcd98a798fe6ba21195517da97e15fca3db12ab201e6e"}, 1464 | {file = "greenlet-0.4.15-cp38-cp38-win_amd64.whl", hash = "sha256:7457d685158522df483196b16ec648b28f8e847861adb01a55d41134e7734122"}, 1465 | {file = "greenlet-0.4.15.tar.gz", hash = "sha256:9416443e219356e3c31f1f918a91badf2e37acf297e2fa13d24d1cc2380f8fbc"}, 1466 | ] 1467 | grpcio = [ 1468 | {file = "grpcio-1.29.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:e90f3d11185c36593186e5ff1f581acc6ddfa4190f145b0366e579de1f52803b"}, 1469 | {file = "grpcio-1.29.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:5024b26e17a1bfc9390fb3b8077bf886eee02970af780fd23072970ef08cefe8"}, 1470 | {file = "grpcio-1.29.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:23bc395a32c2465564cb242e48bdd2fdbe5a4aebf307649a800da1b971ee7f29"}, 1471 | {file = "grpcio-1.29.0-cp27-cp27m-win32.whl", hash = "sha256:886d48c32960b39e059494637eb0157a694956248d03b0de814447c188b74799"}, 1472 | {file = "grpcio-1.29.0-cp27-cp27m-win_amd64.whl", hash = "sha256:da0ca9b1089d00e39a8b83deec799a4e5c37ec1b44d804495424acde50531868"}, 1473 | {file = "grpcio-1.29.0-cp27-cp27mu-linux_armv7l.whl", hash = "sha256:ebf0ccb782027ef9e213e03b6d00bbd8dabd80959db7d468c0738e6d94b5204c"}, 1474 | {file = "grpcio-1.29.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:2637ce96b7c954d2b71060f50eb4c72f81668f1b2faa6cbdc74677e405978901"}, 1475 | {file = "grpcio-1.29.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:75b2247307a7ecaf6abc9eb2bd04af8f88816c111b87bf0044d7924396e9549c"}, 1476 | {file = "grpcio-1.29.0-cp35-cp35m-linux_armv7l.whl", hash = "sha256:7bf3cb1e0f4a9c89f7b748583b994bdce183103d89d5ff486da48a7668a052c7"}, 1477 | {file = "grpcio-1.29.0-cp35-cp35m-macosx_10_7_intel.whl", hash = "sha256:a6dddb177b3cfa0cfe299fb9e07d6a3382cc79466bef48fe9c4326d5c5b1dcb8"}, 1478 | {file = "grpcio-1.29.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:b49f243936b0f6ae8eb6adf88a1e54e736f1c6724a1bff6b591d105d708263ad"}, 1479 | {file = "grpcio-1.29.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:9cfb4b71cc3c8757f137d47000f9d90d4bd818733f9ab4f78bd447e052a4cb9a"}, 1480 | {file = "grpcio-1.29.0-cp35-cp35m-win32.whl", hash = "sha256:10cdc8946a7c2284bbc8e16d346eaa2beeaae86ea598f345df86d4ef7dfedb84"}, 1481 | {file = "grpcio-1.29.0-cp35-cp35m-win_amd64.whl", hash = "sha256:806c9759f5589b3761561187408e0313a35c5c53f075c7590effab8d27d67dfe"}, 1482 | {file = "grpcio-1.29.0-cp36-cp36m-linux_armv7l.whl", hash = "sha256:57c8cc2ae8cb94c3a89671af7e1380a4cdfcd6bab7ba303f4461ec32ded250ae"}, 1483 | {file = "grpcio-1.29.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:97b72bf2242a351a89184134adbb0ae3b422e6893c6c712bc7669e2eab21501b"}, 1484 | {file = "grpcio-1.29.0-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:517538a54afdd67162ea2af1ac3326c0752c5d13e6ddadbc4885f6a28e91ab28"}, 1485 | {file = "grpcio-1.29.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:eede3039c3998e2cc0f6713f4ac70f235bd32967c9b958a17bf937aceebc12c3"}, 1486 | {file = "grpcio-1.29.0-cp36-cp36m-win32.whl", hash = "sha256:54e4658c09084b09cd83a5ea3a8bce78e4031ff1010bb8908c399a22a76a6f08"}, 1487 | {file = "grpcio-1.29.0-cp36-cp36m-win_amd64.whl", hash = "sha256:7e02a7c40304eecee203f809a982732bd37fad4e798acad98fe73c66e44ff2db"}, 1488 | {file = "grpcio-1.29.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ff7931241351521b8df01d7448800ce0d59364321d8d82c49b826d455678ff08"}, 1489 | {file = "grpcio-1.29.0-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:5fd9ffe938e9225c654c60eb21ff011108cc27302db85200413807e0eda99a4a"}, 1490 | {file = "grpcio-1.29.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:9ef0370bcf629ece4e7e37796e4604e2514b920669be2911fc3f9c163a73a57b"}, 1491 | {file = "grpcio-1.29.0-cp37-cp37m-win32.whl", hash = "sha256:3d8c510b6eabce5192ce126003d74d7751c7218d3e2ad39fcf02400d7ec43abe"}, 1492 | {file = "grpcio-1.29.0-cp37-cp37m-win_amd64.whl", hash = "sha256:81bbf78a399e0ee516c81ddad8601f12af3fc9b30f2e4b2fbd64efd327304a4d"}, 1493 | {file = "grpcio-1.29.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:80e9f9f6265149ca7c84e1c8c31c2cf3e2869c45776fbe8880a3133a11d6d290"}, 1494 | {file = "grpcio-1.29.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:524ae8d3da61b856cf08abb3d0947df05402919e4be1f88328e0c1004031f72e"}, 1495 | {file = "grpcio-1.29.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:c3a0ef12ee86f6e72db50e01c3dba7735a76d8c30104b9b0f7fd9d65ceb9d93f"}, 1496 | {file = "grpcio-1.29.0-cp38-cp38-win32.whl", hash = "sha256:97fcbdf1f12e0079d26db73da11ee35a09adc870b1e72fbff0211f6a8003a4e8"}, 1497 | {file = "grpcio-1.29.0-cp38-cp38-win_amd64.whl", hash = "sha256:b85f355fc24b68a6c52f2750e7141110d1fcd07dfdc9b282de0000550fe0511b"}, 1498 | {file = "grpcio-1.29.0.tar.gz", hash = "sha256:a97ea91e31863c9a3879684b5fb3c6ab4b17c5431787548fc9f52b9483ea9c25"}, 1499 | ] 1500 | gunicorn = [ 1501 | {file = "gunicorn-20.0.4-py2.py3-none-any.whl", hash = "sha256:cd4a810dd51bf497552cf3f863b575dabd73d6ad6a91075b65936b151cbf4f9c"}, 1502 | {file = "gunicorn-20.0.4.tar.gz", hash = "sha256:1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626"}, 1503 | ] 1504 | gym = [ 1505 | {file = "gym-0.14.0.tar.gz", hash = "sha256:30f7aaa3c7177da4c50b235fd967dd918f7fc37485c2e5667e7ab5a6e7483a98"}, 1506 | ] 1507 | h5py = [ 1508 | {file = "h5py-2.10.0-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:ecf4d0b56ee394a0984de15bceeb97cbe1fe485f1ac205121293fc44dcf3f31f"}, 1509 | {file = "h5py-2.10.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:86868dc07b9cc8cb7627372a2e6636cdc7a53b7e2854ad020c9e9d8a4d3fd0f5"}, 1510 | {file = "h5py-2.10.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aac4b57097ac29089f179bbc2a6e14102dd210618e94d77ee4831c65f82f17c0"}, 1511 | {file = "h5py-2.10.0-cp27-cp27m-win32.whl", hash = "sha256:7be5754a159236e95bd196419485343e2b5875e806fe68919e087b6351f40a70"}, 1512 | {file = "h5py-2.10.0-cp27-cp27m-win_amd64.whl", hash = "sha256:13c87efa24768a5e24e360a40e0bc4c49bcb7ce1bb13a3a7f9902cec302ccd36"}, 1513 | {file = "h5py-2.10.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:79b23f47c6524d61f899254f5cd5e486e19868f1823298bc0c29d345c2447172"}, 1514 | {file = "h5py-2.10.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:cbf28ae4b5af0f05aa6e7551cee304f1d317dbed1eb7ac1d827cee2f1ef97a99"}, 1515 | {file = "h5py-2.10.0-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:c0d4b04bbf96c47b6d360cd06939e72def512b20a18a8547fa4af810258355d5"}, 1516 | {file = "h5py-2.10.0-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:549ad124df27c056b2e255ea1c44d30fb7a17d17676d03096ad5cd85edb32dc1"}, 1517 | {file = "h5py-2.10.0-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:a5f82cd4938ff8761d9760af3274acf55afc3c91c649c50ab18fcff5510a14a5"}, 1518 | {file = "h5py-2.10.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3dad1730b6470fad853ef56d755d06bb916ee68a3d8272b3bab0c1ddf83bb99e"}, 1519 | {file = "h5py-2.10.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:063947eaed5f271679ed4ffa36bb96f57bc14f44dd4336a827d9a02702e6ce6b"}, 1520 | {file = "h5py-2.10.0-cp35-cp35m-win32.whl", hash = "sha256:c54a2c0dd4957776ace7f95879d81582298c5daf89e77fb8bee7378f132951de"}, 1521 | {file = "h5py-2.10.0-cp35-cp35m-win_amd64.whl", hash = "sha256:6998be619c695910cb0effe5eb15d3a511d3d1a5d217d4bd0bebad1151ec2262"}, 1522 | {file = "h5py-2.10.0-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:ff7d241f866b718e4584fa95f520cb19405220c501bd3a53ee11871ba5166ea2"}, 1523 | {file = "h5py-2.10.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:54817b696e87eb9e403e42643305f142cd8b940fe9b3b490bbf98c3b8a894cf4"}, 1524 | {file = "h5py-2.10.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d3c59549f90a891691991c17f8e58c8544060fdf3ccdea267100fa5f561ff62f"}, 1525 | {file = "h5py-2.10.0-cp36-cp36m-win32.whl", hash = "sha256:d7ae7a0576b06cb8e8a1c265a8bc4b73d05fdee6429bffc9a26a6eb531e79d72"}, 1526 | {file = "h5py-2.10.0-cp36-cp36m-win_amd64.whl", hash = "sha256:bffbc48331b4a801d2f4b7dac8a72609f0b10e6e516e5c480a3e3241e091c878"}, 1527 | {file = "h5py-2.10.0-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:51ae56894c6c93159086ffa2c94b5b3388c0400548ab26555c143e7cfa05b8e5"}, 1528 | {file = "h5py-2.10.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:16ead3c57141101e3296ebeed79c9c143c32bdd0e82a61a2fc67e8e6d493e9d1"}, 1529 | {file = "h5py-2.10.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:f0e25bb91e7a02efccb50aba6591d3fe2c725479e34769802fcdd4076abfa917"}, 1530 | {file = "h5py-2.10.0-cp37-cp37m-win32.whl", hash = "sha256:f23951a53d18398ef1344c186fb04b26163ca6ce449ebd23404b153fd111ded9"}, 1531 | {file = "h5py-2.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:8bb1d2de101f39743f91512a9750fb6c351c032e5cd3204b4487383e34da7f75"}, 1532 | {file = "h5py-2.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:64f74da4a1dd0d2042e7d04cf8294e04ddad686f8eba9bb79e517ae582f6668d"}, 1533 | {file = "h5py-2.10.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:d35f7a3a6cefec82bfdad2785e78359a0e6a5fbb3f605dd5623ce88082ccd681"}, 1534 | {file = "h5py-2.10.0-cp38-cp38-win32.whl", hash = "sha256:6ef7ab1089e3ef53ca099038f3c0a94d03e3560e6aff0e9d6c64c55fb13fc681"}, 1535 | {file = "h5py-2.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:769e141512b54dee14ec76ed354fcacfc7d97fea5a7646b709f7400cf1838630"}, 1536 | {file = "h5py-2.10.0.tar.gz", hash = "sha256:84412798925dc870ffd7107f045d7659e60f5d46d1c70c700375248bf6bf512d"}, 1537 | ] 1538 | httplib2 = [ 1539 | {file = "httplib2-0.18.1-py3-none-any.whl", hash = "sha256:ca2914b015b6247791c4866782fa6042f495b94401a0f0bd3e1d6e0ba2236782"}, 1540 | {file = "httplib2-0.18.1.tar.gz", hash = "sha256:8af66c1c52c7ffe1aa5dc4bcd7c769885254b0756e6e69f953c7f0ab49a70ba3"}, 1541 | ] 1542 | idna = [ 1543 | {file = "idna-2.9-py2.py3-none-any.whl", hash = "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa"}, 1544 | {file = "idna-2.9.tar.gz", hash = "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb"}, 1545 | ] 1546 | itsdangerous = [ 1547 | {file = "itsdangerous-1.1.0-py2.py3-none-any.whl", hash = "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"}, 1548 | {file = "itsdangerous-1.1.0.tar.gz", hash = "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19"}, 1549 | ] 1550 | jax = [ 1551 | {file = "jax-0.1.68.tar.gz", hash = "sha256:1fafccdeac3992b0850f409866e88daa48c4f365dda5a100300c208a6f713747"}, 1552 | ] 1553 | jaxlib = [ 1554 | {file = "jaxlib-0.1.47-cp36-none-macosx_10_9_x86_64.whl", hash = "sha256:a8149b874611dcb429eb1c4e8d9a0f41671fdbdbd56c559fe9cab69a3fb83acd"}, 1555 | {file = "jaxlib-0.1.47-cp36-none-manylinux2010_x86_64.whl", hash = "sha256:ea411ccbf7065d58764c5490c15238a69544e01524fe4d94479a3489f71ba04b"}, 1556 | {file = "jaxlib-0.1.47-cp37-none-macosx_10_9_x86_64.whl", hash = "sha256:be50f333572b6e020c30bc8322e1e95d735624b1e743430bdc3becbda40369b8"}, 1557 | {file = "jaxlib-0.1.47-cp37-none-manylinux2010_x86_64.whl", hash = "sha256:bba0e8cf9769aa6a68538f209a5b2c8ca2b09af2d87464d6b3cd9f2a8a774482"}, 1558 | {file = "jaxlib-0.1.47-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:02b262c9fa013c962477de5389d2bff3f308421ce72641701fe8d7e2b620ce6e"}, 1559 | {file = "jaxlib-0.1.47-cp38-none-manylinux2010_x86_64.whl", hash = "sha256:2185843f48f1c68e0a8d34de4589a342cf84a839b49b7c2e478b609ff561a871"}, 1560 | ] 1561 | jinja2 = [ 1562 | {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"}, 1563 | {file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"}, 1564 | ] 1565 | keras-preprocessing = [ 1566 | {file = "Keras_Preprocessing-1.1.2-py2.py3-none-any.whl", hash = "sha256:7b82029b130ff61cc99b55f3bd27427df4838576838c5b2f65940e4fcec99a7b"}, 1567 | {file = "Keras_Preprocessing-1.1.2.tar.gz", hash = "sha256:add82567c50c8bc648c14195bf544a5ce7c1f76761536956c3d2978970179ef3"}, 1568 | ] 1569 | kfac = [ 1570 | {file = "kfac-0.2.0-py2.py3-none-any.whl", hash = "sha256:1d9c18ed0c93e96f2d439a43ca704cbf1400b4fb9d590d959b34b16f79c360c9"}, 1571 | {file = "kfac-0.2.0.tar.gz", hash = "sha256:0081f9b3a4460cab688ba36609a1dcf8f6a3b7d98ea488556451d1399658c420"}, 1572 | ] 1573 | kiwisolver = [ 1574 | {file = "kiwisolver-1.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:443c2320520eda0a5b930b2725b26f6175ca4453c61f739fef7a5847bd262f74"}, 1575 | {file = "kiwisolver-1.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:efcf3397ae1e3c3a4a0a0636542bcad5adad3b1dd3e8e629d0b6e201347176c8"}, 1576 | {file = "kiwisolver-1.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fccefc0d36a38c57b7bd233a9b485e2f1eb71903ca7ad7adacad6c28a56d62d2"}, 1577 | {file = "kiwisolver-1.2.0-cp36-none-win32.whl", hash = "sha256:60a78858580761fe611d22127868f3dc9f98871e6fdf0a15cc4203ed9ba6179b"}, 1578 | {file = "kiwisolver-1.2.0-cp36-none-win_amd64.whl", hash = "sha256:556da0a5f60f6486ec4969abbc1dd83cf9b5c2deadc8288508e55c0f5f87d29c"}, 1579 | {file = "kiwisolver-1.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cc095a4661bdd8a5742aaf7c10ea9fac142d76ff1770a0f84394038126d8fc7"}, 1580 | {file = "kiwisolver-1.2.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c955791d80e464da3b471ab41eb65cf5a40c15ce9b001fdc5bbc241170de58ec"}, 1581 | {file = "kiwisolver-1.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:603162139684ee56bcd57acc74035fceed7dd8d732f38c0959c8bd157f913fec"}, 1582 | {file = "kiwisolver-1.2.0-cp37-none-win32.whl", hash = "sha256:03662cbd3e6729f341a97dd2690b271e51a67a68322affab12a5b011344b973c"}, 1583 | {file = "kiwisolver-1.2.0-cp37-none-win_amd64.whl", hash = "sha256:4eadb361baf3069f278b055e3bb53fa189cea2fd02cb2c353b7a99ebb4477ef1"}, 1584 | {file = "kiwisolver-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c31bc3c8e903d60a1ea31a754c72559398d91b5929fcb329b1c3a3d3f6e72113"}, 1585 | {file = "kiwisolver-1.2.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:d52b989dc23cdaa92582ceb4af8d5bcc94d74b2c3e64cd6785558ec6a879793e"}, 1586 | {file = "kiwisolver-1.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:e586b28354d7b6584d8973656a7954b1c69c93f708c0c07b77884f91640b7657"}, 1587 | {file = "kiwisolver-1.2.0-cp38-none-win32.whl", hash = "sha256:d069ef4b20b1e6b19f790d00097a5d5d2c50871b66d10075dab78938dc2ee2cf"}, 1588 | {file = "kiwisolver-1.2.0-cp38-none-win_amd64.whl", hash = "sha256:18d749f3e56c0480dccd1714230da0f328e6e4accf188dd4e6884bdd06bf02dd"}, 1589 | {file = "kiwisolver-1.2.0.tar.gz", hash = "sha256:247800260cd38160c362d211dcaf4ed0f7816afb5efe56544748b21d6ad6d17f"}, 1590 | ] 1591 | markdown = [ 1592 | {file = "Markdown-3.2.2-py3-none-any.whl", hash = "sha256:c467cd6233885534bf0fe96e62e3cf46cfc1605112356c4f9981512b8174de59"}, 1593 | {file = "Markdown-3.2.2.tar.gz", hash = "sha256:1fafe3f1ecabfb514a5285fca634a53c1b32a81cb0feb154264d55bf2ff22c17"}, 1594 | ] 1595 | markupsafe = [ 1596 | {file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"}, 1597 | {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"}, 1598 | {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183"}, 1599 | {file = "MarkupSafe-1.1.1-cp27-cp27m-win32.whl", hash = "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b"}, 1600 | {file = "MarkupSafe-1.1.1-cp27-cp27m-win_amd64.whl", hash = "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e"}, 1601 | {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f"}, 1602 | {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1"}, 1603 | {file = "MarkupSafe-1.1.1-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5"}, 1604 | {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1"}, 1605 | {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735"}, 1606 | {file = "MarkupSafe-1.1.1-cp34-cp34m-win32.whl", hash = "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21"}, 1607 | {file = "MarkupSafe-1.1.1-cp34-cp34m-win_amd64.whl", hash = "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235"}, 1608 | {file = "MarkupSafe-1.1.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b"}, 1609 | {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f"}, 1610 | {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905"}, 1611 | {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"}, 1612 | {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"}, 1613 | {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"}, 1614 | {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"}, 1615 | {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"}, 1616 | {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"}, 1617 | {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"}, 1618 | {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"}, 1619 | {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"}, 1620 | {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"}, 1621 | {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"}, 1622 | {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"}, 1623 | {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"}, 1624 | {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"}, 1625 | {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"}, 1626 | {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"}, 1627 | {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"}, 1628 | {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"}, 1629 | ] 1630 | matplotlib = [ 1631 | {file = "matplotlib-3.2.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e06304686209331f99640642dee08781a9d55c6e32abb45ed54f021f46ccae47"}, 1632 | {file = "matplotlib-3.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ce378047902b7a05546b6485b14df77b2ff207a0054e60c10b5680132090c8ee"}, 1633 | {file = "matplotlib-3.2.1-cp36-cp36m-win32.whl", hash = "sha256:2466d4dddeb0f5666fd1e6736cc5287a4f9f7ae6c1a9e0779deff798b28e1d35"}, 1634 | {file = "matplotlib-3.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f4412241e32d0f8d3713b68d3ca6430190a5e8a7c070f1c07d7833d8c5264398"}, 1635 | {file = "matplotlib-3.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e20ba7fb37d4647ac38f3c6d8672dd8b62451ee16173a0711b37ba0ce42bf37d"}, 1636 | {file = "matplotlib-3.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:282b3fc8023c4365bad924d1bb442ddc565c2d1635f210b700722776da466ca3"}, 1637 | {file = "matplotlib-3.2.1-cp37-cp37m-win32.whl", hash = "sha256:c1cf735970b7cd424502719b44288b21089863aaaab099f55e0283a721aaf781"}, 1638 | {file = "matplotlib-3.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:56d3147714da5c7ac4bc452d041e70e0e0b07c763f604110bd4e2527f320b86d"}, 1639 | {file = "matplotlib-3.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:af14e77829c5b5d5be11858d042d6f2459878f8e296228c7ea13ec1fd308eb68"}, 1640 | {file = "matplotlib-3.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:aae7d107dc37b4bb72dcc45f70394e6df2e5e92ac4079761aacd0e2ad1d3b1f7"}, 1641 | {file = "matplotlib-3.2.1-cp38-cp38-win32.whl", hash = "sha256:d35891a86a4388b6965c2d527b9a9f9e657d9e110b0575ca8a24ba0d4e34b8fc"}, 1642 | {file = "matplotlib-3.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4bb50ee4755271a2017b070984bcb788d483a8ce3132fab68393d1555b62d4ba"}, 1643 | {file = "matplotlib-3.2.1-pp373-pypy36_pp73-win32.whl", hash = "sha256:7a9baefad265907c6f0b037c8c35a10cf437f7708c27415a5513cf09ac6d6ddd"}, 1644 | {file = "matplotlib-3.2.1.tar.gz", hash = "sha256:ffe2f9cdcea1086fc414e82f42271ecf1976700b8edd16ca9d376189c6d93aee"}, 1645 | ] 1646 | mesh-tensorflow = [ 1647 | {file = "mesh-tensorflow-0.1.13.tar.gz", hash = "sha256:a84ed848e1688064e4df3f9dcc09512193dea390372ac8967fd0f81a6be5d931"}, 1648 | {file = "mesh_tensorflow-0.1.13-py3-none-any.whl", hash = "sha256:af9f727fd40f1dd4e3fea262ed712b103bdf82ecf9f99d1078ba8e17334480d0"}, 1649 | ] 1650 | more-itertools = [ 1651 | {file = "more-itertools-8.3.0.tar.gz", hash = "sha256:558bb897a2232f5e4f8e2399089e35aecb746e1f9191b6584a151647e89267be"}, 1652 | {file = "more_itertools-8.3.0-py3-none-any.whl", hash = "sha256:7818f596b1e87be009031c7653d01acc46ed422e6656b394b0f765ce66ed4982"}, 1653 | ] 1654 | mpmath = [ 1655 | {file = "mpmath-1.1.0.tar.gz", hash = "sha256:fc17abe05fbab3382b61a123c398508183406fa132e0223874578e20946499f6"}, 1656 | ] 1657 | numpy = [ 1658 | {file = "numpy-1.18.4-cp35-cp35m-macosx_10_9_intel.whl", hash = "sha256:efdba339fffb0e80fcc19524e4fdbda2e2b5772ea46720c44eaac28096d60720"}, 1659 | {file = "numpy-1.18.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:2b573fcf6f9863ce746e4ad00ac18a948978bb3781cffa4305134d31801f3e26"}, 1660 | {file = "numpy-1.18.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:3f0dae97e1126f529ebb66f3c63514a0f72a177b90d56e4bce8a0b5def34627a"}, 1661 | {file = "numpy-1.18.4-cp35-cp35m-win32.whl", hash = "sha256:dccd380d8e025c867ddcb2f84b439722cf1f23f3a319381eac45fd077dee7170"}, 1662 | {file = "numpy-1.18.4-cp35-cp35m-win_amd64.whl", hash = "sha256:02ec9582808c4e48be4e93cd629c855e644882faf704bc2bd6bbf58c08a2a897"}, 1663 | {file = "numpy-1.18.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:904b513ab8fbcbdb062bed1ce2f794ab20208a1b01ce9bd90776c6c7e7257032"}, 1664 | {file = "numpy-1.18.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:e22cd0f72fc931d6abc69dc7764484ee20c6a60b0d0fee9ce0426029b1c1bdae"}, 1665 | {file = "numpy-1.18.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2466fbcf23711ebc5daa61d28ced319a6159b260a18839993d871096d66b93f7"}, 1666 | {file = "numpy-1.18.4-cp36-cp36m-win32.whl", hash = "sha256:00d7b54c025601e28f468953d065b9b121ddca7fff30bed7be082d3656dd798d"}, 1667 | {file = "numpy-1.18.4-cp36-cp36m-win_amd64.whl", hash = "sha256:7d59f21e43bbfd9a10953a7e26b35b6849d888fc5a331fa84a2d9c37bd9fe2a2"}, 1668 | {file = "numpy-1.18.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:efb7ac5572c9a57159cf92c508aad9f856f1cb8e8302d7fdb99061dbe52d712c"}, 1669 | {file = "numpy-1.18.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:0e6f72f7bb08f2f350ed4408bb7acdc0daba637e73bce9f5ea2b207039f3af88"}, 1670 | {file = "numpy-1.18.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:9933b81fecbe935e6a7dc89cbd2b99fea1bf362f2790daf9422a7bb1dc3c3085"}, 1671 | {file = "numpy-1.18.4-cp37-cp37m-win32.whl", hash = "sha256:96dd36f5cdde152fd6977d1bbc0f0561bccffecfde63cd397c8e6033eb66baba"}, 1672 | {file = "numpy-1.18.4-cp37-cp37m-win_amd64.whl", hash = "sha256:57aea170fb23b1fd54fa537359d90d383d9bf5937ee54ae8045a723caa5e0961"}, 1673 | {file = "numpy-1.18.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ed722aefb0ebffd10b32e67f48e8ac4c5c4cf5d3a785024fdf0e9eb17529cd9d"}, 1674 | {file = "numpy-1.18.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:50fb72bcbc2cf11e066579cb53c4ca8ac0227abb512b6cbc1faa02d1595a2a5d"}, 1675 | {file = "numpy-1.18.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:709c2999b6bd36cdaf85cf888d8512da7433529f14a3689d6e37ab5242e7add5"}, 1676 | {file = "numpy-1.18.4-cp38-cp38-win32.whl", hash = "sha256:f22273dd6a403ed870207b853a856ff6327d5cbce7a835dfa0645b3fc00273ec"}, 1677 | {file = "numpy-1.18.4-cp38-cp38-win_amd64.whl", hash = "sha256:1be2e96314a66f5f1ce7764274327fd4fb9da58584eaff00b5a5221edefee7d6"}, 1678 | {file = "numpy-1.18.4.zip", hash = "sha256:bbcc85aaf4cd84ba057decaead058f43191cc0e30d6bc5d44fe336dc3d3f4509"}, 1679 | ] 1680 | oauth2client = [ 1681 | {file = "oauth2client-4.1.3-py2.py3-none-any.whl", hash = "sha256:b8a81cc5d60e2d364f0b1b98f958dbd472887acaf1a5b05e21c28c31a2d6d3ac"}, 1682 | {file = "oauth2client-4.1.3.tar.gz", hash = "sha256:d486741e451287f69568a4d26d70d9acd73a2bbfa275746c535b4209891cccc6"}, 1683 | ] 1684 | oauthlib = [ 1685 | {file = "oauthlib-3.1.0-py2.py3-none-any.whl", hash = "sha256:df884cd6cbe20e32633f1db1072e9356f53638e4361bef4e8b03c9127c9328ea"}, 1686 | {file = "oauthlib-3.1.0.tar.gz", hash = "sha256:bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889"}, 1687 | ] 1688 | opencv-python = [ 1689 | {file = "opencv_python-4.2.0.34-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:e3c57d6579e5bf85f564d6d48d8ee89868b92879a9232b9975d072c346625e92"}, 1690 | {file = "opencv_python-4.2.0.34-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:aa3ca1f54054e1c6439fdf1edafa2a2b940a9eaac04a7b422a1cba9b2d7b9690"}, 1691 | {file = "opencv_python-4.2.0.34-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:31d634dea1b47c231b88d384f90605c598214d0c596443c9bb808e11761829f5"}, 1692 | {file = "opencv_python-4.2.0.34-cp35-cp35m-win32.whl", hash = "sha256:78cc89ebc808886eb190626ee71ab65e47f374121975f86e4d5f7c0e3ce6bed9"}, 1693 | {file = "opencv_python-4.2.0.34-cp35-cp35m-win_amd64.whl", hash = "sha256:7c7ba11720d01cb572b4b6945d115cb103462c0a28996b44d4e540d06e6a90fd"}, 1694 | {file = "opencv_python-4.2.0.34-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6fa8fac14dd5af4819d475f74af12d65fbbfa391d3110c3a972934a5e6507c24"}, 1695 | {file = "opencv_python-4.2.0.34-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a37ee82f1b8ed4b4645619c504311e71ce845b78f40055e78d71add5fab7da82"}, 1696 | {file = "opencv_python-4.2.0.34-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:dcb8da8c5ebaa6360c8555547a4c7beb6cd983dd95ba895bb78b86cc8cf3de2b"}, 1697 | {file = "opencv_python-4.2.0.34-cp36-cp36m-win32.whl", hash = "sha256:ef89cbf332b9a735d8a82e9ff79cc743eeeb775ad1cd7100bc2aa2429b496f07"}, 1698 | {file = "opencv_python-4.2.0.34-cp36-cp36m-win_amd64.whl", hash = "sha256:f45c1c3cdda1857bedd4dfe0bbd49c9419af0cc57f33490341edeae97d18f037"}, 1699 | {file = "opencv_python-4.2.0.34-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c0087b428cef9a32d977390656d91b02245e0e91f909870492df7e39202645dd"}, 1700 | {file = "opencv_python-4.2.0.34-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:fb3c855347310788e4286b867997be354c55535597966ed5dac876d9166013a4"}, 1701 | {file = "opencv_python-4.2.0.34-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d87e506ab205799727f0efa34b3888949bf029a3ada5eb000ff632606370ca6e"}, 1702 | {file = "opencv_python-4.2.0.34-cp37-cp37m-win32.whl", hash = "sha256:b9de3dd956574662712da8e285f0f54327959a4e95b96a2847d3c3f5ee7b96e2"}, 1703 | {file = "opencv_python-4.2.0.34-cp37-cp37m-win_amd64.whl", hash = "sha256:d8a55585631f9c9eca4b1a996e9732ae023169cf2f46f69e4518d67d96198226"}, 1704 | {file = "opencv_python-4.2.0.34-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5fdfc0bed37315f27d30ae5ae9bad47ec0a0a28c323739d39c8177b7e0929238"}, 1705 | {file = "opencv_python-4.2.0.34-cp38-cp38-manylinux1_i686.whl", hash = "sha256:068928b9907b3d3acd53b129062557d6b0b8b324bfade77f028dbe4dfe482bf2"}, 1706 | {file = "opencv_python-4.2.0.34-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0e7c91718351449877c2d4141abd64eee1f9c8701bcfaf4e8627bd023e303368"}, 1707 | {file = "opencv_python-4.2.0.34-cp38-cp38-win32.whl", hash = "sha256:1ab92d807427641ec45d28d5907426aa06b4ffd19c5b794729c74d91cd95090e"}, 1708 | {file = "opencv_python-4.2.0.34-cp38-cp38-win_amd64.whl", hash = "sha256:e2206bb8c17c0f212f1f356d82d72dd090ff4651994034416da9bf0c29732825"}, 1709 | ] 1710 | opt-einsum = [ 1711 | {file = "opt_einsum-3.2.1-py3-none-any.whl", hash = "sha256:96f819d46da2f937eaf326336a114aaeccbcbdb9de460d42e8b5f480a69adca7"}, 1712 | {file = "opt_einsum-3.2.1.tar.gz", hash = "sha256:83b76a98d18ae6a5cc7a0d88955a7f74881f0e567a0f4c949d24c942753eb998"}, 1713 | ] 1714 | packaging = [ 1715 | {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, 1716 | {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, 1717 | ] 1718 | pillow = [ 1719 | {file = "Pillow-7.1.2-cp35-cp35m-macosx_10_10_intel.whl", hash = "sha256:ae2b270f9a0b8822b98655cb3a59cdb1bd54a34807c6c56b76dd2e786c3b7db3"}, 1720 | {file = "Pillow-7.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:d23e2aa9b969cf9c26edfb4b56307792b8b374202810bd949effd1c6e11ebd6d"}, 1721 | {file = "Pillow-7.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:b532bcc2f008e96fd9241177ec580829dee817b090532f43e54074ecffdcd97f"}, 1722 | {file = "Pillow-7.1.2-cp35-cp35m-win32.whl", hash = "sha256:12e4bad6bddd8546a2f9771485c7e3d2b546b458ae8ff79621214119ac244523"}, 1723 | {file = "Pillow-7.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:9744350687459234867cbebfe9df8f35ef9e1538f3e729adbd8fde0761adb705"}, 1724 | {file = "Pillow-7.1.2-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:f54be399340aa602066adb63a86a6a5d4f395adfdd9da2b9a0162ea808c7b276"}, 1725 | {file = "Pillow-7.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:1f694e28c169655c50bb89a3fa07f3b854d71eb47f50783621de813979ba87f3"}, 1726 | {file = "Pillow-7.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:f784aad988f12c80aacfa5b381ec21fd3f38f851720f652b9f33facc5101cf4d"}, 1727 | {file = "Pillow-7.1.2-cp36-cp36m-win32.whl", hash = "sha256:b37bb3bd35edf53125b0ff257822afa6962649995cbdfde2791ddb62b239f891"}, 1728 | {file = "Pillow-7.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:b67a6c47ed963c709ed24566daa3f95a18f07d3831334da570c71da53d97d088"}, 1729 | {file = "Pillow-7.1.2-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:eaa83729eab9c60884f362ada982d3a06beaa6cc8b084cf9f76cae7739481dfa"}, 1730 | {file = "Pillow-7.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f46e0e024346e1474083c729d50de909974237c72daca05393ee32389dabe457"}, 1731 | {file = "Pillow-7.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:0e2a3bceb0fd4e0cb17192ae506d5f082b309ffe5fc370a5667959c9b2f85fa3"}, 1732 | {file = "Pillow-7.1.2-cp37-cp37m-win32.whl", hash = "sha256:ccc9ad2460eb5bee5642eaf75a0438d7f8887d484490d5117b98edd7f33118b7"}, 1733 | {file = "Pillow-7.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b943e71c2065ade6fef223358e56c167fc6ce31c50bc7a02dd5c17ee4338e8ac"}, 1734 | {file = "Pillow-7.1.2-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:04766c4930c174b46fd72d450674612ab44cca977ebbcc2dde722c6933290107"}, 1735 | {file = "Pillow-7.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:f455efb7a98557412dc6f8e463c1faf1f1911ec2432059fa3e582b6000fc90e2"}, 1736 | {file = "Pillow-7.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:ee94fce8d003ac9fd206496f2707efe9eadcb278d94c271f129ab36aa7181344"}, 1737 | {file = "Pillow-7.1.2-cp38-cp38-win32.whl", hash = "sha256:4b02b9c27fad2054932e89f39703646d0c543f21d3cc5b8e05434215121c28cd"}, 1738 | {file = "Pillow-7.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:3d25dd8d688f7318dca6d8cd4f962a360ee40346c15893ae3b95c061cdbc4079"}, 1739 | {file = "Pillow-7.1.2-pp373-pypy36_pp73-win32.whl", hash = "sha256:0f01e63c34f0e1e2580cc0b24e86a5ccbbfa8830909a52ee17624c4193224cd9"}, 1740 | {file = "Pillow-7.1.2-py3.8-macosx-10.9-x86_64.egg", hash = "sha256:70e3e0d99a0dcda66283a185f80697a9b08806963c6149c8e6c5f452b2aa59c0"}, 1741 | {file = "Pillow-7.1.2.tar.gz", hash = "sha256:a0b49960110bc6ff5fead46013bcb8825d101026d466f3a4de3476defe0fb0dd"}, 1742 | ] 1743 | pluggy = [ 1744 | {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, 1745 | {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, 1746 | ] 1747 | promise = [ 1748 | {file = "promise-2.3.tar.gz", hash = "sha256:dfd18337c523ba4b6a58801c164c1904a9d4d1b1747c7d5dbf45b693a49d93d0"}, 1749 | ] 1750 | protobuf = [ 1751 | {file = "protobuf-3.12.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:fdb1742f883ee4662e39fcc5916f2725fec36a5191a52123fec60f8c53b70495"}, 1752 | {file = "protobuf-3.12.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:49fb6fab19cd3f30fa0e976eeedcbf2558e9061e5fa65b4fe51ded1f4002e04d"}, 1753 | {file = "protobuf-3.12.1-cp35-cp35m-macosx_10_9_intel.whl", hash = "sha256:4c7cae1f56056a4a2a2e3b00b26ab8550eae738bd9548f4ea0c2fcb88ed76ae5"}, 1754 | {file = "protobuf-3.12.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:519abfacbb421c3591d26e8daf7a4957763428db7267f7207e3693e29f6978db"}, 1755 | {file = "protobuf-3.12.1-cp35-cp35m-win32.whl", hash = "sha256:c45f5980ce32879391144b5766120fd7b8803129f127ce36bd060dd38824801f"}, 1756 | {file = "protobuf-3.12.1-cp35-cp35m-win_amd64.whl", hash = "sha256:60f32af25620abc4d7928d8197f9f25d49d558c5959aa1e08c686f974ac0b71a"}, 1757 | {file = "protobuf-3.12.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:04d0b2bd99050d09393875a5a25fd12337b17f3ac2e29c0c1b8e65b277cbfe72"}, 1758 | {file = "protobuf-3.12.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:175d85370947f89e33b3da93f4ccdda3f326bebe3e599df5915ceb7f804cd9df"}, 1759 | {file = "protobuf-3.12.1-cp36-cp36m-win32.whl", hash = "sha256:9b1462c033a2cee7f4e8eb396905c69de2c532c3b835ff8f71f8e5fb77c38023"}, 1760 | {file = "protobuf-3.12.1-cp36-cp36m-win_amd64.whl", hash = "sha256:613ac49f6db266fba243daf60fb32af107cfe3678e5c003bb40a381b6786389d"}, 1761 | {file = "protobuf-3.12.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:440a8c77531b3652f24999b249256ed01fd44c498ab0973843066681bd276685"}, 1762 | {file = "protobuf-3.12.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:954bb14816edd24e746ba1a6b2d48c43576393bbde2fb8e1e3bd6d4504c7feac"}, 1763 | {file = "protobuf-3.12.1-cp37-cp37m-win32.whl", hash = "sha256:c0767f4d93ce4288475afe0571663c78870924f1f8881efd5406c10f070c75e4"}, 1764 | {file = "protobuf-3.12.1-cp37-cp37m-win_amd64.whl", hash = "sha256:eeb7502f59e889a88bcb59f299493e215d1864f3d75335ea04a413004eb4fe24"}, 1765 | {file = "protobuf-3.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:05288e44638e91498f13127a3699a6528dec6f9d3084d60959d721bfb9ea5b98"}, 1766 | {file = "protobuf-3.12.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:fe554066c4962c2db0a1d4752655223eb948d2bfa0fb1c4a7f2c00ec07324f1c"}, 1767 | ] 1768 | py = [ 1769 | {file = "py-1.8.1-py2.py3-none-any.whl", hash = "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0"}, 1770 | {file = "py-1.8.1.tar.gz", hash = "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa"}, 1771 | ] 1772 | pyasn1 = [ 1773 | {file = "pyasn1-0.4.8-py2.4.egg", hash = "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3"}, 1774 | {file = "pyasn1-0.4.8-py2.5.egg", hash = "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf"}, 1775 | {file = "pyasn1-0.4.8-py2.6.egg", hash = "sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00"}, 1776 | {file = "pyasn1-0.4.8-py2.7.egg", hash = "sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8"}, 1777 | {file = "pyasn1-0.4.8-py2.py3-none-any.whl", hash = "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d"}, 1778 | {file = "pyasn1-0.4.8-py3.1.egg", hash = "sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86"}, 1779 | {file = "pyasn1-0.4.8-py3.2.egg", hash = "sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7"}, 1780 | {file = "pyasn1-0.4.8-py3.3.egg", hash = "sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576"}, 1781 | {file = "pyasn1-0.4.8-py3.4.egg", hash = "sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12"}, 1782 | {file = "pyasn1-0.4.8-py3.5.egg", hash = "sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2"}, 1783 | {file = "pyasn1-0.4.8-py3.6.egg", hash = "sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359"}, 1784 | {file = "pyasn1-0.4.8-py3.7.egg", hash = "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776"}, 1785 | {file = "pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"}, 1786 | ] 1787 | pyasn1-modules = [ 1788 | {file = "pyasn1-modules-0.2.8.tar.gz", hash = "sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e"}, 1789 | {file = "pyasn1_modules-0.2.8-py2.4.egg", hash = "sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199"}, 1790 | {file = "pyasn1_modules-0.2.8-py2.5.egg", hash = "sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405"}, 1791 | {file = "pyasn1_modules-0.2.8-py2.6.egg", hash = "sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb"}, 1792 | {file = "pyasn1_modules-0.2.8-py2.7.egg", hash = "sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8"}, 1793 | {file = "pyasn1_modules-0.2.8-py2.py3-none-any.whl", hash = "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74"}, 1794 | {file = "pyasn1_modules-0.2.8-py3.1.egg", hash = "sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d"}, 1795 | {file = "pyasn1_modules-0.2.8-py3.2.egg", hash = "sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45"}, 1796 | {file = "pyasn1_modules-0.2.8-py3.3.egg", hash = "sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4"}, 1797 | {file = "pyasn1_modules-0.2.8-py3.4.egg", hash = "sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811"}, 1798 | {file = "pyasn1_modules-0.2.8-py3.5.egg", hash = "sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed"}, 1799 | {file = "pyasn1_modules-0.2.8-py3.6.egg", hash = "sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0"}, 1800 | {file = "pyasn1_modules-0.2.8-py3.7.egg", hash = "sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd"}, 1801 | ] 1802 | pycparser = [ 1803 | {file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"}, 1804 | {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"}, 1805 | ] 1806 | pyglet = [ 1807 | {file = "pyglet-1.3.2-py2.py3-none-any.whl", hash = "sha256:8b07aea16f34ac861cffd06a0c17723ca944d172e577b57b21859b7990709a66"}, 1808 | {file = "pyglet-1.3.2.tar.gz", hash = "sha256:b00570e7cdf6971af8953b6ece50d83d13272afa5d1f1197c58c0f478dd17743"}, 1809 | ] 1810 | pyparsing = [ 1811 | {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, 1812 | {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, 1813 | ] 1814 | pypng = [ 1815 | {file = "pypng-0.0.20.tar.gz", hash = "sha256:1032833440c91bafee38a42c38c02d00431b24c42927feb3e63b104d8550170b"}, 1816 | ] 1817 | pytest = [ 1818 | {file = "pytest-5.4.2-py3-none-any.whl", hash = "sha256:95c710d0a72d91c13fae35dce195633c929c3792f54125919847fdcdf7caa0d3"}, 1819 | {file = "pytest-5.4.2.tar.gz", hash = "sha256:eb2b5e935f6a019317e455b6da83dd8650ac9ffd2ee73a7b657a30873d67a698"}, 1820 | ] 1821 | python-dateutil = [ 1822 | {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, 1823 | {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, 1824 | ] 1825 | pytz = [ 1826 | {file = "pytz-2020.1-py2.py3-none-any.whl", hash = "sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed"}, 1827 | {file = "pytz-2020.1.tar.gz", hash = "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048"}, 1828 | ] 1829 | requests = [ 1830 | {file = "requests-2.23.0-py2.py3-none-any.whl", hash = "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee"}, 1831 | {file = "requests-2.23.0.tar.gz", hash = "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6"}, 1832 | ] 1833 | requests-oauthlib = [ 1834 | {file = "requests-oauthlib-1.3.0.tar.gz", hash = "sha256:b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a"}, 1835 | {file = "requests_oauthlib-1.3.0-py2.py3-none-any.whl", hash = "sha256:7f71572defaecd16372f9006f33c2ec8c077c3cfa6f5911a9a90202beb513f3d"}, 1836 | {file = "requests_oauthlib-1.3.0-py3.7.egg", hash = "sha256:fa6c47b933f01060936d87ae9327fead68768b69c6c9ea2109c48be30f2d4dbc"}, 1837 | ] 1838 | rsa = [ 1839 | {file = "rsa-4.0-py2.py3-none-any.whl", hash = "sha256:14ba45700ff1ec9eeb206a2ce76b32814958a98e372006c8fb76ba820211be66"}, 1840 | {file = "rsa-4.0.tar.gz", hash = "sha256:1a836406405730121ae9823e19c6e806c62bbad73f890574fff50efa4122c487"}, 1841 | ] 1842 | scipy = [ 1843 | {file = "scipy-1.4.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:c5cac0c0387272ee0e789e94a570ac51deb01c796b37fb2aad1fb13f85e2f97d"}, 1844 | {file = "scipy-1.4.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:a144811318853a23d32a07bc7fd5561ff0cac5da643d96ed94a4ffe967d89672"}, 1845 | {file = "scipy-1.4.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:71eb180f22c49066f25d6df16f8709f215723317cc951d99e54dc88020ea57be"}, 1846 | {file = "scipy-1.4.1-cp35-cp35m-win32.whl", hash = "sha256:770254a280d741dd3436919d47e35712fb081a6ff8bafc0f319382b954b77802"}, 1847 | {file = "scipy-1.4.1-cp35-cp35m-win_amd64.whl", hash = "sha256:a1aae70d52d0b074d8121333bc807a485f9f1e6a69742010b33780df2e60cfe0"}, 1848 | {file = "scipy-1.4.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:bb517872058a1f087c4528e7429b4a44533a902644987e7b2fe35ecc223bc408"}, 1849 | {file = "scipy-1.4.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:dba8306f6da99e37ea08c08fef6e274b5bf8567bb094d1dbe86a20e532aca088"}, 1850 | {file = "scipy-1.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:386086e2972ed2db17cebf88610aab7d7f6e2c0ca30042dc9a89cf18dcc363fa"}, 1851 | {file = "scipy-1.4.1-cp36-cp36m-win32.whl", hash = "sha256:8d3bc3993b8e4be7eade6dcc6fd59a412d96d3a33fa42b0fa45dc9e24495ede9"}, 1852 | {file = "scipy-1.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:dc60bb302f48acf6da8ca4444cfa17d52c63c5415302a9ee77b3b21618090521"}, 1853 | {file = "scipy-1.4.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:787cc50cab3020a865640aba3485e9fbd161d4d3b0d03a967df1a2881320512d"}, 1854 | {file = "scipy-1.4.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:0902a620a381f101e184a958459b36d3ee50f5effd186db76e131cbefcbb96f7"}, 1855 | {file = "scipy-1.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:00af72998a46c25bdb5824d2b729e7dabec0c765f9deb0b504f928591f5ff9d4"}, 1856 | {file = "scipy-1.4.1-cp37-cp37m-win32.whl", hash = "sha256:9508a7c628a165c2c835f2497837bf6ac80eb25291055f56c129df3c943cbaf8"}, 1857 | {file = "scipy-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a2d6df9eb074af7f08866598e4ef068a2b310d98f87dc23bd1b90ec7bdcec802"}, 1858 | {file = "scipy-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3092857f36b690a321a662fe5496cb816a7f4eecd875e1d36793d92d3f884073"}, 1859 | {file = "scipy-1.4.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:8a07760d5c7f3a92e440ad3aedcc98891e915ce857664282ae3c0220f3301eb6"}, 1860 | {file = "scipy-1.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:1e3190466d669d658233e8a583b854f6386dd62d655539b77b3fa25bfb2abb70"}, 1861 | {file = "scipy-1.4.1-cp38-cp38-win32.whl", hash = "sha256:cc971a82ea1170e677443108703a2ec9ff0f70752258d0e9f5433d00dda01f59"}, 1862 | {file = "scipy-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:2cce3f9847a1a51019e8c5b47620da93950e58ebc611f13e0d11f4980ca5fecb"}, 1863 | {file = "scipy-1.4.1.tar.gz", hash = "sha256:dee1bbf3a6c8f73b6b218cb28eed8dd13347ea2f87d572ce19b289d6fd3fbc59"}, 1864 | ] 1865 | sentencepiece = [ 1866 | {file = "sentencepiece-0.1.91-cp27-cp27m-macosx_10_6_x86_64.whl", hash = "sha256:f2f109514b28326d5c6d69b43ba6b08e6fedf8fc77416b9a9c16be55c9ac138d"}, 1867 | {file = "sentencepiece-0.1.91-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:b3643634e043fd7a5914d51d7dc60003dad0af976b8496df0406a487b0b83a8e"}, 1868 | {file = "sentencepiece-0.1.91-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:21a2e9f476f0c3e45da1e5da00b7ec5241bbddb524bd7b1b3d61b1bcbc05efa6"}, 1869 | {file = "sentencepiece-0.1.91-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:30224b1f77af9cef79ffe3a40ed0e536be44df75c066f771e9e769b48379bd98"}, 1870 | {file = "sentencepiece-0.1.91-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:679fcdd01e01d990950a46a814210445f2202260d092d3b69f9826739d8aed2b"}, 1871 | {file = "sentencepiece-0.1.91-cp35-cp35m-macosx_10_6_x86_64.whl", hash = "sha256:123ac26429025b3153f8bae53d044e9dd29539e888dcb9f39a4982e6daf9dbe9"}, 1872 | {file = "sentencepiece-0.1.91-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:53f4a91c8a6b55a75caad70d9f34bf331a576e9708c549729b06412c857aacb9"}, 1873 | {file = "sentencepiece-0.1.91-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f1c0cf36fcff4a3ea8925babc3ed7f5f3d58628e062b24f9fad92c400bc9210c"}, 1874 | {file = "sentencepiece-0.1.91-cp36-cp36m-macosx_10_6_x86_64.whl", hash = "sha256:c0b01bb8ab3b62aba76d6b0851a1d0fcf5df5ef5616f114ea85917d8ab5f59db"}, 1875 | {file = "sentencepiece-0.1.91-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:70b4164c98dba43246a068c848fab5ac9966b5bcd731ee4cb9bcf6ae976389a4"}, 1876 | {file = "sentencepiece-0.1.91-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:b858805ac3c6d92e5454a89476b1f9e0505e1511276cd258d5a70776c70374f1"}, 1877 | {file = "sentencepiece-0.1.91-cp36-cp36m-win32.whl", hash = "sha256:8bbb9173168d53165ba00172a5db7734e4826c30e6ffc4b3f8a6098713f6111d"}, 1878 | {file = "sentencepiece-0.1.91-cp36-cp36m-win_amd64.whl", hash = "sha256:51c25d504beeef4c697b8f55e2baf7c6b31733a190ff9b983a6db57faa59d3d8"}, 1879 | {file = "sentencepiece-0.1.91-cp37-cp37m-macosx_10_6_x86_64.whl", hash = "sha256:a04218f1b93b5669f3cee1dc8d6c397428e2f6af8843a20ddb2b629f6a86e632"}, 1880 | {file = "sentencepiece-0.1.91-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:7fcda06cab76136346dd279268664c65f0b66bb2147ceb97e2cec25b426e8210"}, 1881 | {file = "sentencepiece-0.1.91-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:3b4175a9d883a3b27436d51cb82794e3a62d0955bb36cc96d5d7932095c13135"}, 1882 | {file = "sentencepiece-0.1.91-cp37-cp37m-win32.whl", hash = "sha256:f0b383de68604195fe806072e7c8837eb5156455dfdb18fd26a9a94df3f57d42"}, 1883 | {file = "sentencepiece-0.1.91-cp37-cp37m-win_amd64.whl", hash = "sha256:82d819eb1e997b39424d7422aa885d2ef514f754dd2935a4f4fcfdedeee955c6"}, 1884 | {file = "sentencepiece-0.1.91-cp38-cp38-macosx_10_6_x86_64.whl", hash = "sha256:f331fd58f438d5d5476d189e9a4944c84f7e4b027533809292b9c119b58e43b8"}, 1885 | {file = "sentencepiece-0.1.91-cp38-cp38-manylinux1_i686.whl", hash = "sha256:79ad2f82b412859c516b569fb89b5e5c0ceba74d71c8d4b99cc8a2c734f3c79d"}, 1886 | {file = "sentencepiece-0.1.91-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:796726d680d6c26f0f4ff213a0f6b1ef790b02071268adf5f449739c1c903f93"}, 1887 | {file = "sentencepiece-0.1.91-cp38-cp38-win32.whl", hash = "sha256:9bdff324279359598a516de8413fd2c62bc3c9c8f569f4431829599fbe57e417"}, 1888 | {file = "sentencepiece-0.1.91-cp38-cp38-win_amd64.whl", hash = "sha256:c2a004470d388272d6c17ca160ef73d6ea1ffcddc345771d817ece5c85d85dcb"}, 1889 | {file = "sentencepiece-0.1.91.tar.gz", hash = "sha256:f9700cf607ea064d9fad34c751fbf49953dcc56fe68c54b277481aa0aec5c18f"}, 1890 | ] 1891 | six = [ 1892 | {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, 1893 | {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, 1894 | ] 1895 | soupsieve = [ 1896 | {file = "soupsieve-1.9.6-py2.py3-none-any.whl", hash = "sha256:feb1e937fa26a69e08436aad4a9037cd7e1d4c7212909502ba30701247ff8abd"}, 1897 | {file = "soupsieve-1.9.6.tar.gz", hash = "sha256:7985bacc98c34923a439967c1a602dc4f1e15f923b6fcf02344184f86cc7efaa"}, 1898 | ] 1899 | sympy = [ 1900 | {file = "sympy-1.6-py3-none-any.whl", hash = "sha256:7af1e11e9fcb72362c47a481dc010e518cfcb60a594d1ee8bd268f86ea7d6cbf"}, 1901 | {file = "sympy-1.6.tar.gz", hash = "sha256:9769e3d2952e211b1245f1d0dfdbfbdde1f7779a3953832b7dd2b88a21ca6cc6"}, 1902 | ] 1903 | tensor2tensor = [ 1904 | {file = "tensor2tensor-1.15.5-py2.py3-none-any.whl", hash = "sha256:5bf852a2bc6410074da6ca1b07a7c2a4615cb53be3e0e5312edf4595f6d40a5f"}, 1905 | {file = "tensor2tensor-1.15.5.tar.gz", hash = "sha256:711c8fc1f991cde2832a5ad0169e63b6ab8269187fa38c64f01beb050ddbbce9"}, 1906 | ] 1907 | tensorboard = [ 1908 | {file = "tensorboard-2.2.1-py3-none-any.whl", hash = "sha256:9a2a2dc9856187679e93f3c95e5dc771dd47e3257db09767b4be118d734b4dc2"}, 1909 | ] 1910 | tensorboard-plugin-wit = [ 1911 | {file = "tensorboard_plugin_wit-1.6.0.post3-py2-none-any.whl", hash = "sha256:243f117d117f9e81a21dc64b602b2bcb256ca5ba038867b96022d02271b17106"}, 1912 | {file = "tensorboard_plugin_wit-1.6.0.post3-py3-none-any.whl", hash = "sha256:1fdf4ac343f1665453205aef8bb227b0204893bb5ffb792d2ed4509b1daf3d4f"}, 1913 | ] 1914 | tensorflow = [ 1915 | {file = "tensorflow-2.2.0-cp35-cp35m-macosx_10_11_x86_64.whl", hash = "sha256:7ed67b47cdf6598a79583de5b57c595493eac2b8b6b3a828f912354716cb8149"}, 1916 | {file = "tensorflow-2.2.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:267017724a49c367ca5df536e5f6d3d59643eaed946c82233d6b371e62b5ddc8"}, 1917 | {file = "tensorflow-2.2.0-cp35-cp35m-win_amd64.whl", hash = "sha256:572f69d2d0a3d3d83ebfb2c24e6d73d88b85a09f5da796974ef4a0ad83ff7cde"}, 1918 | {file = "tensorflow-2.2.0-cp36-cp36m-macosx_10_11_x86_64.whl", hash = "sha256:6735486ee9c3cb0807476e2b36ef7a4cd6c597cb24abf496e66b703360e1e54e"}, 1919 | {file = "tensorflow-2.2.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:dc5548562308acde7931f040e73d46ae31b398924cf675c3486fd3504e00a4af"}, 1920 | {file = "tensorflow-2.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:3ee8819732d8594913b7d22ded7b22e48a49aa015050d8dd8464eaa010ba2e41"}, 1921 | {file = "tensorflow-2.2.0-cp37-cp37m-macosx_10_11_x86_64.whl", hash = "sha256:c332c7fc5cfd54cb86d5da99787c9693e3a924848097c54df1b71ee595a39c93"}, 1922 | {file = "tensorflow-2.2.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:f5f27528570fc0d7b90668be10c5dfd90d6ceb8fd2ed62d7d679554acb616bfe"}, 1923 | {file = "tensorflow-2.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:68ea22aee9c269a6a0c1061c141f1ec1cd1b1be7569390519c1bf4773f434a40"}, 1924 | {file = "tensorflow-2.2.0-cp38-cp38-macosx_10_11_x86_64.whl", hash = "sha256:bbcfb04738099bd46822db91584db74703fdddacf4cd0a76acfc5e086956b5ba"}, 1925 | {file = "tensorflow-2.2.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:8f364528f70d895b96a0de36c7c6002644bf4c5df1ee3fbfa775f5cee6571ad7"}, 1926 | {file = "tensorflow-2.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:784ab8217e4b0eb4d121c28430c6cdc2ce56c02634a9720d84fb30598b338b8c"}, 1927 | ] 1928 | tensorflow-datasets = [ 1929 | {file = "tensorflow-datasets-3.1.0.tar.gz", hash = "sha256:e59ca00b6307a6c9ba5a940f48172eac839db397405674aea92aa887ae42ddc7"}, 1930 | {file = "tensorflow_datasets-3.1.0-py3-none-any.whl", hash = "sha256:ed347054cc75fd47009b08d72b4fd4f8c97dfcf45fa5a727def68e3cd403b324"}, 1931 | ] 1932 | tensorflow-estimator = [ 1933 | {file = "tensorflow_estimator-2.2.0-py2.py3-none-any.whl", hash = "sha256:d09dacdd127f2579cea8d5af21f4a918036b8ae246adc82f26b61f91cc247dc2"}, 1934 | ] 1935 | tensorflow-gan = [ 1936 | {file = "tensorflow_gan-2.0.0-py2.py3-none-any.whl", hash = "sha256:65a7cc3952cbf2e05e73e2ba391a6a745d9f1a014e00c571feb3268569d48bd2"}, 1937 | ] 1938 | tensorflow-hub = [ 1939 | {file = "tensorflow_hub-0.8.0-py2.py3-none-any.whl", hash = "sha256:9dc65aa9980851236e30a1f59f071286abc52523fa75933fdc1fba9e3c1c96c8"}, 1940 | ] 1941 | tensorflow-metadata = [ 1942 | {file = "tensorflow_metadata-0.22.0-py2.py3-none-any.whl", hash = "sha256:3b0a3ebc479b461ea40104888f689c6536d8d82cd4fdce9da236e0caded30005"}, 1943 | ] 1944 | tensorflow-probability = [ 1945 | {file = "tensorflow_probability-0.7.0-py2.py3-none-any.whl", hash = "sha256:d743282ac42bff38bf98882f4de3e30f915f38eb084c50fb72c36de967610b30"}, 1946 | ] 1947 | termcolor = [ 1948 | {file = "termcolor-1.1.0.tar.gz", hash = "sha256:1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b"}, 1949 | ] 1950 | tqdm = [ 1951 | {file = "tqdm-4.46.0-py2.py3-none-any.whl", hash = "sha256:acdafb20f51637ca3954150d0405ff1a7edde0ff19e38fb99a80a66210d2a28f"}, 1952 | {file = "tqdm-4.46.0.tar.gz", hash = "sha256:4733c4a10d0f2a4d098d801464bdaf5240c7dadd2a7fde4ee93b0a0efd9fb25e"}, 1953 | ] 1954 | trax = [ 1955 | {file = "trax-1.2.0-py2.py3-none-any.whl", hash = "sha256:a27b88244cc79b35f53969a907bdded51cf90802f8537b8552535da76a944cf5"}, 1956 | {file = "trax-1.2.0.tar.gz", hash = "sha256:97443fc175d1974f00ebff77edfb156b6f19ecc3770c78e644781a4e88f954fa"}, 1957 | ] 1958 | uritemplate = [ 1959 | {file = "uritemplate-3.0.1-py2.py3-none-any.whl", hash = "sha256:07620c3f3f8eed1f12600845892b0e036a2420acf513c53f7de0abd911a5894f"}, 1960 | {file = "uritemplate-3.0.1.tar.gz", hash = "sha256:5af8ad10cec94f215e3f48112de2022e1d5a37ed427fbd88652fa908f2ab7cae"}, 1961 | ] 1962 | urllib3 = [ 1963 | {file = "urllib3-1.25.9-py2.py3-none-any.whl", hash = "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"}, 1964 | {file = "urllib3-1.25.9.tar.gz", hash = "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527"}, 1965 | ] 1966 | wcwidth = [ 1967 | {file = "wcwidth-0.1.9-py2.py3-none-any.whl", hash = "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1"}, 1968 | {file = "wcwidth-0.1.9.tar.gz", hash = "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1"}, 1969 | ] 1970 | werkzeug = [ 1971 | {file = "Werkzeug-1.0.1-py2.py3-none-any.whl", hash = "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43"}, 1972 | {file = "Werkzeug-1.0.1.tar.gz", hash = "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"}, 1973 | ] 1974 | wheel = [ 1975 | {file = "wheel-0.34.2-py2.py3-none-any.whl", hash = "sha256:df277cb51e61359aba502208d680f90c0493adec6f0e848af94948778aed386e"}, 1976 | {file = "wheel-0.34.2.tar.gz", hash = "sha256:8788e9155fe14f54164c1b9eb0a319d98ef02c160725587ad60f14ddc57b6f96"}, 1977 | ] 1978 | wrapt = [ 1979 | {file = "wrapt-1.12.1.tar.gz", hash = "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"}, 1980 | ] 1981 | -------------------------------------------------------------------------------- /ujimaru-reformer/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "ujimaru-text-generate" 3 | version = "0.0.1" 4 | description = "" 5 | authors = ["hppRC "] 6 | readme = "README.rst" 7 | repository = "https://github.com/hppRC/ujimaru" 8 | license = "MIT" 9 | 10 | [tool.poetry.dependencies] 11 | python = "^3.8" 12 | gin = "^0.1.6" 13 | jax = "^0.1.68" 14 | trax = "v1.2.0" 15 | numpy = "^1.18.4" 16 | scipy = "^1.4.1" 17 | sentencepiece = "^0.1.91" 18 | tensorflow = "^2.2.0" 19 | matplotlib = "^3.2.1" 20 | bs4 = "^0.0.1" 21 | 22 | [tool.poetry.dev-dependencies] 23 | pytest = "^5.2" 24 | 25 | [build-system] 26 | requires = ["poetry>=0.12"] 27 | build-backend = "poetry.masonry.api" 28 | -------------------------------------------------------------------------------- /ujimaru-reformer/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hppRC/ujimaru/1999f19a4ba81d60419e549e6093bc2c44e0fe76/ujimaru-reformer/tests/__init__.py -------------------------------------------------------------------------------- /ujimaru-reformer/tests/test_ujimaru_text_generate.py: -------------------------------------------------------------------------------- 1 | from ujimaru_text_generate import __version__ 2 | 3 | 4 | def test_version(): 5 | assert __version__ == '0.1.0' 6 | -------------------------------------------------------------------------------- /ujimaru-reformer/ujimaru_reformer/__init__.py: -------------------------------------------------------------------------------- 1 | __version__ = '0.1.0' 2 | 3 | import requests 4 | import sys 5 | 6 | 7 | def get(country: str) -> str: 8 | url = f"https://corona-stats.online/{country}?minimal=true" 9 | response = requests.get(url, headers={'user-agent': 'curl'}) 10 | return response.text 11 | 12 | 13 | def main() -> None: 14 | country = sys.argv[1] if len(sys.argv) > 1 else "" 15 | print(get(country)) 16 | 17 | -------------------------------------------------------------------------------- /ujimaru-reformer/ujimaru_reformer/__main__.py: -------------------------------------------------------------------------------- 1 | from . import main 2 | main() 3 | -------------------------------------------------------------------------------- /ujimaru-reformer/ujimaru_reformer/config.gin: -------------------------------------------------------------------------------- 1 | import trax.layers 2 | import trax.models 3 | import trax.optimizers 4 | import trax.supervised.inputs 5 | import trax.supervised.trainer_lib 6 | 7 | # Parameters that will vary between experiments: 8 | # ============================================================================== 9 | train.model = @trax.models.ReformerLM 10 | # Our model will have 6 layers, alternating between the LSH attention proposed 11 | # in the Reformer paper and local attention within a certain context window. 12 | n_layers = 6 13 | attn_type = [ 14 | @TimeBinCausalAttention, 15 | @LSHCausalAttention, 16 | @TimeBinCausalAttention, 17 | @LSHCausalAttention, 18 | @TimeBinCausalAttention, 19 | @LSHCausalAttention, 20 | ] 21 | share_qk = False # LSHCausalAttention ignores this flag and always shares q & k 22 | n_heads = 2 23 | attn_kv = 64 24 | dropout = 0.05 25 | n_tokens = 524288 26 | 27 | # Parameters for MultifactorSchedule: 28 | # ============================================================================== 29 | MultifactorSchedule.constant = 0.01 30 | MultifactorSchedule.factors = 'constant * linear_warmup * cosine_decay' 31 | MultifactorSchedule.warmup_steps = 100 32 | MultifactorSchedule.steps_per_cycle = 900 33 | 34 | # Parameters for Adam: 35 | # ============================================================================== 36 | Adam.weight_decay_rate=0.0 37 | Adam.b1 = 0.86 38 | Adam.b2 = 0.92 39 | Adam.eps = 1e-9 40 | 41 | # Parameters for TimeBinCausalAttention: 42 | # ============================================================================== 43 | TimeBinCausalAttention.bin_length = 64 44 | TimeBinCausalAttention.dropout = 0.05 45 | TimeBinCausalAttention.n_bins = None 46 | TimeBinCausalAttention.share_qk = %share_qk 47 | 48 | # Parameters for LSHCausalAttention: 49 | # ============================================================================== 50 | LSHCausalAttention.allow_duplicate_attention = False 51 | LSHCausalAttention.attend_across_buckets = True 52 | LSHCausalAttention.rehash_each_round = True 53 | LSHCausalAttention.data_rotation = False 54 | LSHCausalAttention.n_bins = 4096 55 | LSHCausalAttention.n_buckets = 8192 56 | LSHCausalAttention.factorize_hash = [64, 128] 57 | LSHCausalAttention.n_hashes = 1 58 | LSHCausalAttention.one_rng = False 59 | LSHCausalAttention.hard_k = 0 60 | LSHCausalAttention.dropout = 0.0 61 | LSHCausalAttention.drop_for_hash_rate = 0.0 62 | LSHCausalAttention.max_len_for_inference = 2048 63 | LSHCausalAttention.bucket_capacity_for_inference = 64 64 | 65 | # Parameters for ReformerLM: 66 | # ============================================================================== 67 | ReformerLM.attention_type = %attn_type 68 | ReformerLM.d_attention_key = %attn_kv 69 | ReformerLM.d_attention_value = %attn_kv 70 | ReformerLM.d_model = 256 71 | ReformerLM.d_ff = 512 72 | ReformerLM.dropout = %dropout 73 | ReformerLM.ff_activation = @trax.layers.Relu 74 | ReformerLM.max_len = %n_tokens 75 | ReformerLM.mode = 'train' 76 | ReformerLM.n_heads = %n_heads 77 | ReformerLM.n_layers = %n_layers 78 | ReformerLM.vocab_size = 320 79 | ReformerLM.share_qk = %share_qk 80 | ReformerLM.axial_pos_shape = (512, 1024) 81 | ReformerLM.d_axial_pos_embs= (64, 192) -------------------------------------------------------------------------------- /ujimaru-reformer/ujimaru_reformer/generate.py: -------------------------------------------------------------------------------- 1 | # %% 2 | 3 | import gin 4 | import os 5 | import jax 6 | import trax 7 | from trax.supervised import inputs 8 | 9 | import numpy as onp 10 | import jax.numpy as np 11 | 12 | from scipy.special import softmax 13 | 14 | from sentencepiece import SentencePieceProcessor 15 | 16 | import subprocess 17 | 18 | # %% 19 | sentencepice_dir = os.path.expanduser('ujimaru_text_generate/sentencepiece') 20 | reformer_dir = os.path.expanduser('ujimaru_text_generate/reformer') 21 | 22 | with open(os.path.join(sentencepice_dir, "wiki-daimyo.txt")) as f: 23 | text = f.read().strip() 24 | 25 | # %% 26 | TOKENIZER = SentencePieceProcessor() 27 | TOKENIZER.load(os.path.join(sentencepice_dir, 'wiki-daimyo.model')) 28 | 29 | # %% 30 | IDS = TOKENIZER.EncodeAsIds(text) 31 | IDS = onp.asarray(IDS, dtype=onp.int32) 32 | print("Number of tokens:", IDS.shape[0]) 33 | 34 | # Configure hyperparameters. 35 | gin.parse_config_file('ujimaru_text_generate/config.gin') 36 | 37 | # %% 38 | 39 | # As we report in the Reformer paper, increasing the number of hashing rounds 40 | # helps with quality. We can even increase the number of hashing rounds at 41 | # evaluation time only. 42 | gin.parse_config("""LSHCausalAttention.n_hashes = 4""") 43 | model_infer = trax.models.ReformerLM(mode='predict') 44 | 45 | # Set up the initial state for sampling. 46 | initial_state = model_infer.new_weights_and_state( 47 | trax.supervised.trainer_lib.ShapeDtype((1, 1), dtype=np.int32))[1] 48 | 49 | # load pretrained weight 50 | model_infer.init_from_file(os.path.join( 51 | reformer_dir, "model.pkl"), weights_only=True) 52 | 53 | print(trax.math.device_count()) 54 | 55 | 56 | def prediction(length=2048, prompt=None,): 57 | """Sample from the ReformerLM model""" 58 | # Token id 0 is the equivalent of a "start" token 59 | model_infer.state = initial_state # stateの初期化 60 | cur_inputs = np.zeros((1, 1), dtype=np.int32) # 初期値=0の挿入 61 | all_samples = [] 62 | if prompt is not None: 63 | prompt = np.asarray(TOKENIZER.EncodeAsIds(prompt)) 64 | 65 | for iteration in range(length): 66 | logits = model_infer(cur_inputs) 67 | 68 | if prompt is not None and iteration < prompt.shape[0]: 69 | cur_samples = onp.array(prompt[iteration], dtype=int) 70 | else: 71 | logits = onp.array(logits)[0, 0, :] 72 | probs = onp.exp(logits) 73 | cur_samples = onp.random.choice(probs.shape[-1], p=probs[:]) 74 | cur_samples = onp.array(cur_samples, dtype=int) 75 | 76 | all_samples.append(cur_samples) 77 | cur_inputs = np.array(cur_samples[None, None]) 78 | 79 | all_samples = onp.stack(all_samples, -1) 80 | 81 | return all_samples 82 | 83 | 84 | prefix = [5, 3, 5, 2, 1, 6] 85 | pred = prediction(10, "家康は") 86 | 87 | print(TOKENIZER.DecodeIds(pred.tolist())) 88 | -------------------------------------------------------------------------------- /ujimaru-reformer/ujimaru_reformer/sentence_piece.py: -------------------------------------------------------------------------------- 1 | # %% 2 | import sentencepiece as spm 3 | from bs4 import BeautifulSoup 4 | 5 | with open("ujimaru_text_generate/sentencepiece/uzimaru0000.txt") as f: 6 | corpus = [s.strip() for s in f.readlines()] 7 | 8 | # %% 9 | spm.SentencePieceTrainer.Train( 10 | '--input=ujimaru_text_generate/sentencepiece/uzimaru0000.txt, --model_prefix=ujimaru_text_generate/sentencepiece/uzimaru0000 --character_coverage=0.9995 --vocab_size=7000 --pad_id=3' 11 | ) 12 | 13 | # %% 14 | sp = spm.SentencePieceProcessor() 15 | sp.Load("ujimaru_text_generate/sentencepiece/uzimaru0000.model") 16 | 17 | # %% 18 | print(sp.EncodeAsPieces(corpus[70])) 19 | 20 | # %% 21 | print(sp.EncodeAsIds(corpus[70])) 22 | # [16, 111, 17, 211, 28, 4, 4228, 67, 2268, 10, 1564, 20, 4, 6106, 3832, 81, 15, 2268, 124, 55, 2311, 23, 2268, 157, 12, 4909, 366, 476, 1050, 61, 15, 113, 7923, 242, 13, 7, 4, 3870, 15, 98, 1010, 13, 6069, 4, 6106, 653, 2377, 6, 52, 4, 3030, 997, 1144, 10, 6024, 18, 2738, 1537, 20, 4, 93, 1413, 5, 3947, 39, 10, 1564, 12, 654, 101, 2634, 63, 70, 7974, 232, 15, 4582, 55, 1195, 56, 4, 793, 2180, 12, 4388, 51, 958, 736, 529, 9, 4287, 10, 4, 76, 17, 5, 2015, 18, 229, 12, 2635, 7, 2738, 1537, 20, 4, 7784, 285, 7, 3539, 6] 23 | 24 | # %% 25 | tokens = ["コミット", "と", "迷った", "けど", "RT", "は", "デプロイ", 26 | "って", "感じ", "が", "した", "ので", "CD", "って", "言い", "ました"] 27 | print("sp.DecodePieces(tokens)", sp.DecodePieces(tokens)) 28 | 29 | # %% 30 | ids = sp.EncodeAsIds(corpus[70]) 31 | print("sp.EncodeAsIds(corpus[70])", ids) 32 | print("sp.DecodeIds(ids)", sp.DecodeIds(ids)) 33 | 34 | # %% 35 | print("sp.GetPieceSize()", sp.GetPieceSize()) 36 | # 8000 37 | 38 | # %% 39 | print(sp.PieceToId('')) 40 | print(sp[""]) 41 | print("-" * 10) 42 | # %% 43 | print("CDされるから...") 44 | for i in sp.EncodeAsIds("CDされるから..."): 45 | print(i, sp.IdToPiece(i)) 46 | print("-" * 10) 47 | 48 | # %% 49 | print("最近ツイート数がおおい気がする") 50 | for i in sp.EncodeAsIds("最近ツイート数がおおい気がする"): 51 | print(i, sp.IdToPiece(i)) 52 | print("-" * 10) 53 | # %% 54 | print("ひさびさに寝過ぎた") 55 | for i in sp.EncodeAsIds("ひさびさに寝過ぎた"): 56 | print(i, sp.IdToPiece(i),) 57 | --------------------------------------------------------------------------------