Python
Flask-Featureflags というものを見つけた。 GitHub - trustrachel/Flask-FeatureFlags: A Flask extension that enables or disables features based on configuration.何をするものかというと、Flask でこの機能はまだ一部のユーザーにベータテストとして…
Flask-Injector を使っていて以下の様な警告が出た。 Injector Modules (ie. configure) should not be injected. This can result in non-deterministic initialization. Support will be removed in the next release of Injector.configure を直接注入す…
今までスキーマーの管理は普通に SQL ファイルで管理していた。 別に DDL を書くのは苦痛じゃないし分かり易いので良いんだけど、マイグレーションツールに Alembic を使ってみようと試している。 """Create users table. Revision ID: 197f6c68376 Revises:…
Python2.7 と Py.Test の組み合わせた場合に、examples にあるのが動かないと報告頂いた。 @pytest.fixture def setup(): setup = TestApp(create_app) return setup @autodoc.describe('POST /') def test_post(setup): res = setup.post_json('/', params=…
Ruby の Autodoc や Perl の Test::JsonAPI::Autodoc を真似て Python の Autodoc を作った。 GitHub - heavenshell/py-autodoc: Autodoc Python implementation. # まだ PyPi にはアップしてないアップロードした。 もともと Jokk という Mock サーバを作っ…
Google が作っている DI フレームワークに Pinject というのがあるのを知った。 Injector とどう違うのか試してみた。 詳しくは GitHub の Pinject のドキュメント参照。 # -*- coding: utf-8 -*- import pinject class Base(object): def save(self, path):…
Flask の render_template() で Jinja2 にちゃんと context が渡ったかどうかテストしたい。 from flask import Blueprint, render_template app = Blueprint('index', __name__, url_prefix='/') @app.route('/') def index(): return render_template('ind…
テストコードでテストデータを作る時に今までは以下のようにしてた。 from unittest import TestCase from models.user import User class TestUser(object): def setUp(self): self._init() def _init(): user = User(name='foo', password='pass') db_sess…
/tmp/python/virtualenvs/py3kproject/lib/python3.3/site-packages/pymysql/converters.py line 116 in convert_datetime if ' ' in obj: TypeError: Type str doesn't support the buffer APIってエラーが出た。 原因は SQLALCHEMY_DATABASE_URI = 'mysql+…
Injector を使って DI してるんだから、テストコードからも置き換えたいよねーってお話。 # Mock を使って差し替える事も出来る app.py # -*- coding: utf-8 -*- from flask import Flask from flask.ext.injector import init_app, post_init_app from bind…
Flask-Injector を試してる時に、これはどうしたら良いんだろうというのがあったので、色々試してみた。 コンストラクタに引数を渡したい 色々試していて以下のようにコンストラクタに引数を受け取りたい場合はどうしたら良いのか試行錯誤した所、binds でイ…
Python というか Flask でも DI コンテナ欲しいなーと思う事がある。 去年書いていたコードでは最初アップロードしたファイルの保存を Flask が動いているサーバのファイルシステムに保存していたが、後から RiakCS に保存するという仕様変更を行った。 こん…
今年は本格的に Python3 に移行しようと重い腰を上げた。 まずは自作の Flask のプロジェクトジェネレータを Python3 対応にした。 Application factory 内で itereitems() を使っている所があったので、_compat.py を作りその中で iteritem をラップするも…
API サーバとして Flask を使う場合にコードが簡略できそうなので、Flask-Restless を試してみた。 同様なプロダクトとして、Flask-Restful があるけど、Flask-Restless を選んでみたのは view を書かなくてよさそうだったから。 # 逆に言えば「おまかせ」に…
Flask-WTF0.8 を使っていて、0.9 にアップデートしたら色々互換性が無くなっていてハマった。 Field モジュールの廃止 0.8.x で動いてたコード from datetime import timedelta from flask.ext.wtf import Form, TextField, validators from flask.ext.babel…
Flask-SQLAlchemy を試してみるかと思って以下のようなのを書いた。 #!/usr/bin/env python # -*- coding: utf-8 -*- "" from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'…
メモ。 環境: Python2.7.4, MacVim Kaoriya 7.4.22, QuickRun.vim QuickRun-Unittest, vim-virtualenv Flask を使ってこんなコードを書いてた。app.py # -*- coding: utf-8 -*- from flask import Flask from flaskext.kvsession import KVSessionExtension…
メモ。 [program:celery] command=celery -A foo.tasks.task worker -l debug -E environment=PYTHONPATH=%(here)s/../../barproject directory=%(here)s/../barproject autostart=true autorestart=true redirect_stderr=true stdout_logfile=%(here)s/../l…
dataset っていう Python でデータベースを簡単に扱うライブラリがある。 雰囲気的には以前書いた MoSQL と似た感じ。 dataset: databases for lazy people — dataset 1.0.8 documentation こっちはバックエンドに SQLAlchemy を利用している。 ドキュメント…
メモ。 requirement.txt にどうやって書くのか分からなかった。 こう書く。 -e git://github.com/bycoffe/python-placemaker.git#egg=placemakerアンインストールの方法。 $ pip uninstall placemakerみたいな egg の名前を指定すれば行けるのかと思ったけど…
MoSQL って DB みたいな感じがするが、Python のライブラリ。 MoSQL — More than SQL — MoSQL v0.12.3 documentation 要は ORM を使う規模ではない、でも生の SQL を書くには苦痛という人向けのよう。 SQLAlchemy の Query オブジェクトみたいなのや SQLSoup…
jedi.vim に Pull Request した - Memo で Pull Request して dev ブランチに取り込んで貰った物が jedi が 0.7 になって他の変更と共に master にマージされた。 jedi.vim の設定値もいくつか変更があった模様。 変更前 変更後 g:jedi#get_definition_comma…
Flask がめでたく Python3.3 をサポートしたので、Flask に依存している Flask-Extension の Python3 対応状況が気になったので調べてみた。 #!/usr/bin/env python # -*- coding: utf-8 -*- import pprint import requests from bs4 import BeautifulSoup P…
jedi.vim をアップデートしたら以下の様な警告が表示された。 jedi-vim/jedi/jedi/api.py:209: DeprecationWarning: Use completions instead. warnings.warn("Use completions instead.", DeprecationWarning)補完自体は出来るが警告が気になったのでソース…
Riak が動いたので、Riak CS も試してみる。 Vagrant で作った CentOS 上に yum を使って Riak CS に必要なパッケージはインストール済み。 Riak CS は HTTP ポートに 8080 を使っているので、Virtual Box にポートフォワードさせる。 Vagrantfile に以下を…
昔ちょっと Celery を試した事があったが、ジョブキューなのが必要になったので再入門してみた。 WAF には Flask を使っている。 Celery には Flask の Extension があるが、Celery3.0 になってから非推奨になっており、Celery 本体の API を使う事が推奨さ…
昨日書いたやつで同期で Sentry にイベントを送りつけると送信元のサイトのパフォーマンスが遅くなるのが気になったので、非同期に送る方法がないか調べてみた。Github に raven-python/async.py at master · getsentry/raven-python · GitHub とかあるので…
Disqus が作っている Sentry というツールが凄そうというお話。 # 元 Disqus の社員さんだったみたい Sentry って何かというと "Sentry is a realtime event logging and aggregation platform." と書いてる通りアプリケーションからイベントログを送信して…
window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…
Vim で JSON 文字列なファイルを以下のようなコマンドを使って整形するとする。 :%!python -m json.tool綺麗にインデントが出て嬉しいけど、そこにマルチバイトな文字列があれば Unicode エスケープシーケンスにして変換してくれる。 Unicode エスケープシー…