python

PipenvからPoetryへのお引越しツール作った

動機 引っ越しツール 概要 インストール 使い方 既知の不具合 動機 1/13にPoetry 0.12.11 がリリースされました。 poetry.eustace.io それに伴い、poetry init で会話形式でいろいろ設定していく際に依存パッケージを事前に検索して記述する機能のバグが修正…

Poetry + Read the Docs でハマった話

pythonhosted.org でのホスティングはオワコン 以前は pythonhosted.org でホスティングしていた ホスティングサポート終了 Read the Docs を再び試す 依存ライブラリの ImportError が発生する 他のリポジトリを参考にする Yamlにビルドの設定を書く readth…

Poetryでインストール時にTooManyRedirectsが起こるときの対処法

問題 Issueを探る Poetryのキャッシュを削除する 問題 二日前は成功していた pre-commit というライブラリのインストールが失敗するようになった。 $ poetry add -D pre-commit Creating virtualenv demo-py3.7 in /Users/kk6/sandbox/demo/.venv [TooManyRe…

Poetryを使ったPythonパッケージ開発からPyPI公開まで

この記事は BeProud Advent Calender 2018 の20日目の記事です。そのためいつもよりボリュームたっぷり、文体も丁寧にお送りします。 adventar.org 本記事ではPoetryを使ってパッケージ開発→PyPIへ登録するまでの流れを紹介します。 github.com プロジェクト…

Pipenv から Poetry への乗り換え

乗り換えるリポジトリ pyproject.toml の生成 依存パッケージのインストール コマンドラインツールとして実行できるようにする 乗り換えるリポジトリ GitHub - kk6/aeroplast: Transparent PNG conversion (Mainly for Twitter) twitterにアップロードしたPN…

またPyenv環境に戻してみた

動機 事前確認 pyenvのインストール python3.6をインストールしてみるも失敗する 最近Mojaveにアップグレードしたのが原因だった それぞれのPythonを呼び出せるようにする simlink作成(非推奨) pyenv global コマンド brewで入れたpython3.7をどうするか問…

コミット時にpdb消し忘れてないかチェックするhg hook

チェック用のスクリプト こんな感じのスクリプト作成 #!/usr/bin/env python import os import sys COMMAND = r"find . -name '*.py' | xargs grep -lr '{pattern}'" INFO = '{filename}: pdb found.' def check(pattern): return os.popen(COMMAND.format(p…

インスタンスに動的にメソッドを追加する

追記: 記事を公開してからおんなじような記事あったりするかなと思ってググったら2年前にIanさんがほとんど同じ内容書いてた。 Pythonでメソッドをクラスまたはインスタンスに動的に追加する - Ian Lewis しかも僕その記事はてブしてたよ… Interactive Shel…

celeryのPeriodic Taskについてのメモ

必要になったので自分用にメモ。今必要な部分だけざっくりと把握しただけなので間違ったこと書いてたらごめんなさい。 Periodic Taskとは Periodic Tasks — Celery 3.0.9 documentationceleryにはPeriodic Taskというタスクをある一定時間ごとに実行してくれ…

sftpserverモジュールをforkしていじった件

諸事情によりテスト用のsftpサーバーが必要になったのでsftpserverなるモジュールを見つけてきた。しかしこいつシングルスレッドなので、やりたいことのためにはmultiprocessingと併用する必要があったわけなんだけど、そうするとなんかエラーが出る。 raise…

Djangoの発行する生SQLが見たい

ForeignKeyとfilterのメモ - AtAsAtAmAtArA DjangoのORマッパーでSQL文を簡単に出力するサンプル - 十番目のムーサというやりとりを見て。シェルで確かめるのが楽だし便利。 django.db.connection.queriesで見られます。おもむろにdjangoのシェルを起動 $ py…

シェル操作課題をPythonでやってみた

はてブのマイホットエントリーを眺めてたらこんなものを見つけた。 シェル操作課題 (cut, sort, uniq などで集計を行う) 設問編 - Yamashiro0217の日記 awkとか全然知らないから勉強になるかなと思って覗いてみたんだけど… いっそpythonのワンライナーで実行…

Python2.7のunittestのassertRaisesはコンテキストマネージャーとして使用出来る

テスト対象 def add(x, y): return x + y 適当すぎだけどご勘弁。異なった型同士を足そうとすれば当然TypeError吐きますよね。 本題 Python2.7以前のunittestのassertRaisesは assertRaises(exception, callback, *args, **kwargs) というように呼び出す必要…

Django 1.4 で新しくプロジェクトを作成した際にしておくsettings.pyの設定

django 1.4 からはプロジェクトを作成した際のディレクトリ構成が変わったのでどのように設定するのがいいかを、まだ数の少ないネット上のサンプルを参考にしつつまとめてみた。ちなみに以下の様な構成を想定してます。 └── project_root ├── app1 │ ├── __i…

デコレータを作ってみる

前回の記事(Pythonのデコレータを理解するときに残したメモ - kk6のメモ帳*)でデコレータについて理解したので、じゃあ今度はデコレータを作ってみようと思う。あんまり詳しくないけどflaskを題材としてみる。 # hello.py from flask import Flask from fl…

Pythonのデコレータを理解するときに残したメモ

Pythonのデコレータ(decorator)を理解する 3 - -を1,2,3全て読んで、以前僕がデコレータを理解するために残したメモもこんな感じだったなというのを思い出した。ずっと記事にしようと思いつつ忘れてたんだけどせっかくなので加筆修正しつつ公開してみる。 引…

集合演算の実行速度:メソッドと演算子

集合演算をメソッドでやる場合と演算子でやる場合、どちらが速いのか気になったので試してみた。なんとなくの予想だと、対象を全てset型に揃えないといけない演算子による計算よりも、メソッドの引数がイテラブルであればなんでもよいメソッド演算のほうが速…

pdbのデバッガコマンド

とりあえず自分用に。あとでちゃんとまとめ直す...かも。 コマンド h(elp) [command] コマンドのヘルプを表示。引数なしで利用可能コマンド一覧を表示| s(tep) 一行実行(ステップイン) n(ext) 一行実行(ステップオーバー)| unt(il) (Python2.6から)行番号が…

Ubuntuを12.04にupgradeしたらvirtualenv環境で'cannot import urandom'と出るようになった

Ubuntu 12.04 がリリースされたということで、僕も 11.10 から 12.04 にアップグレードしてみた。とりあえず仕事に支障がないかひと通り確認してみたところ、とある仕事用のvirtualenv環境をactivateした状態で、テストを走らせようとしたところ ImportError…

DjangoのモデルのManagerクラスのメソッドをメソッドチェインさせる

※追記:django-model-utils というパッケージの PassThroughManager が同じようなことしてくれるみたいです Model Managers — django-model-utils 2.3a1 documentation 例えば下記のような、書籍名・本棚登録済みかのフラグ・出版日を持ったモデルクラスがあ…

SQLAlchemyとpeeweeの比較

とりあえず導入部分だけざっくりと。 データベースへの接続 SQLAlchemy from sqlalchemy import create_engine engine = create_engine('sqlite:///:memory:', echo=True) peewee from peewee import SqliteDatabase engine = SqliteDatabase('db.sqlite') e…

mysql-pythonについて

自宅PCのDjangoで初めてMYSQLを使ってsyncdbしたときにエラーがでた。なんか足りてなかったので今後のためにメモっておく。 ちなみにMYSQLは sudo apt-get install mysql-client-5.1 mysql-server-5.1 でインストールした。その後の話。 $ python manage.py …

Problem 4 - Project Euler

左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される回文数のうち、最大のものは 9009 = 91 × 99 である。では、3桁の数の積で表される回文数のうち最大のものはいくらになるか。 翻訳の息抜きがてら久しぶりにProject Eulerやった…

OrderedDictのバグ?

OrderdDictで遊んでたら、下のような現象に遭遇しました。 >>> from collections import OrderedDict >>> d = OrderedDict(one=1, two=2, three=3) >>> d OrderedDict([('one', 1), ('three', 3), ('two', 2)]) >>> d['one'] 1 >>> d.one=100 >>> d OrderedD…

エキスパートPythonプログラミング読書会に参加してきました

この日は14章「Pythonのためのデザインパターン」。一度は行ってみたいと思っていたのと、デザインパターンに興味があったので参加してみました。以下気になったところのメモ。 GoFは「じーおーえふ」と読む。ゴフとは読まない。 元々は建築関係で生まれた言…

Pythonでカリー化と部分適用について考えてみる

まず前提として、ちゃんと学ぶなら自動カリー化をサポートしてるhaskellなりOCamlなりF#なりで学ぶほうが断然いいと思います。 カリー化TLだったので 自分の理解が正しいかどうか再確認。 # こういう関数があるとする def multiply(x, y): return x * y # こ…

pipでインストールしたパッケージのVersion checkとUpgradeをするscript

パッケージ毎に「pip install --upgrade パッケージ名」とするのが面倒だったので書いてみました。ちなみにLinuxだと $ pip freeze | cut -d = -f 1 | xargs pip install -U という方法もあるみたいですが、これだと最新版使ってても全部インストールし直し…

tweepyがUser Streamsに対応していた

ふとgithubのtweepyのコード(tweepy/tweepy/streaming.py at master · tweepy/tweepy · GitHub)を眺めてたら、userstreamなんてメソッドがあることに気づきました。つい数ヶ月前くらいまで「tweepyはUser Streamに対応してなかったので自力で対応した」なん…

Pythonbrew環境下にPySideをインストールしようとしたらはまった

はじめに PySideとはGUIライブラリであるQtのpythonバインディングです。兄弟にPyQtというのがいて、PyQtの技術要件にノキアが納得できなくなったからPySideを開発したとかなんとかいろいろ経緯があるようですけど、基本的に似たようなものとおもっていいと…

pythonのクロージャ

半年以上前に書いた記事ですがネタもないので、 はやくはてなダイアリー市民になりたいので、せっかくなので公開してみます。 なお、その後にid:atsuoishimotoさんがfunc_closureのひみつ - atsuoishimotoの日記というもっと突っ込んだ内容の記事も書かれて…