並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 64件

新着順 人気順

dataclassesの検索結果1 - 40 件 / 64件

  • 2024年のPythonプログラミング - Uzabase for Engineers

    ソーシャル経済メディア「NewsPicks」で推薦や検索などのアルゴリズム開発をしている北内です。Pythonは頻繁に新機能や便利なライブラリが登場し、ベストプラクティスの変化が激しい言語です。そこで、2024年2月時点で利用頻度の高そうな新機能、ライブラリ、ツールなどを紹介したいと思います。 この記事では広く浅く紹介することに重点を置き、各トピックについては概要のみを紹介します。詳細な使用方法に関しては各公式サイト等での確認をおすすめします。なお、本記事ではOSとしてmacOSを前提としています。 環境構築 Pythonの環境構築はpyenvとPoetryの組み合わせがもっとも標準的でしょう。 以下の手順でpyenvとPythonをインストールできます。 brew install pyenv # Bashの場合 echo 'eval "$(pyenv init -)"' >> ~/.ba

      2024年のPythonプログラミング - Uzabase for Engineers
    • Pythonが教育用途において十分だという話

      Pythonが教育用途において十分だという話 今話題のPythonを教えている現役の講師です。Pythonを教える際に重視すべきだと考えている機能等について書いておきます。 dataclass / Pydantic 自分は型ヒントよりもdataclassやPydanticを使った型付けを重視しています。いわゆるクラスベースな言語の書き方が大事だと考えています。 dataclass Pythonは動的型付け言語であり、interface相当の機能すらclassの構文で書く変わった言語です。近年Pythonの型ヒントは少しづつ充実してきていますが発展途上であることは否めないですし、何より実行時にその型であることは保証されないので、dataclass等を使った開発スタイルが依然強力だと考えています。 Python+TypeScriptというようなスタックを使う際には両言語の差に混乱するでしょう。

        Pythonが教育用途において十分だという話
      • ChatGPT と Whisper で発音練習アプリを作ってみた - NTT Communications Engineers' Blog

        この記事は NTTコミュニケーションズ Advent Calendar 2023 の15日目の記事です。 この記事では、ChatGPT と 音声認識モデルの Whisper を用いた発音練習アプリケーションをご紹介します。 ChatGPT に読み上げる文章を考えてもらい、その文章の読み上げた音声を Whisper で文字起こしします。 正確に発音できていれば、正確に文字起こしできる、という考えから、 原稿と文字起こし結果を比較すれば発音練習に使えるのではないかと考えました。 実際に使ってみた結果、発音のどこが悪かったのかといったフィードバックはもらえませんが、 自分の発話した音声に対して評価がつくだけでも、結構楽しく練習できると感じました。 音声認識を活用したアプリケーションは、一般に音声認識精度がネックになると思いますが、 このアプリケーションは音声認識精度が100%ではないことを逆手に

          ChatGPT と Whisper で発音練習アプリを作ってみた - NTT Communications Engineers' Blog
        • 【LCM】512×512pxの画像を0.02秒でリアルタイム画風変換する

          はじめに こんにちは。 一昨日、土日を1日潰してLatent Cosistency Model(LCM)の推論高速化に取り組んでみたところ、そこそこ上手くいき、512×512pxの画像をimage-to-image(img2img)するタスクにおいてRTX3090で26fps、A100で33fpsの推論速度が出るようになりました。 【追記】RTX4090だと45fps出たそうなので、記事のタイトルをわずかに更新しました。記事作成当時はA100で検証していたので、以下ご了承ください。 画像1枚につき0.03秒で処理できていることになるので、ほぼリアルタイムで変換できていると言ってもいいのではないでしょうか。 プログレスバーが1%進むごとに1枚の画像のimg2imgが完了しています。気持ちいいですね。 そこで、この記事では、当高速化に取り組んだとき経験的に(理論的にではない)得られた、LCM推

            【LCM】512×512pxの画像を0.02秒でリアルタイム画風変換する
          • Statically Typed Functional Programming with Python 3.12

            Lately I’ve been messing around with Python 3.12, discovering new features around typing and pattern matching. Combined with dataclasses, they provide support for a style of programming that I’ve employed in Kotlin and Typescript at work. That style in turn is based on what I’d do in OCaml or Haskell, like modelling data with algebraic data types. However, the more advanced concepts from Haskell —

            • 先読みを用いたLLMの文章生成の高速化 - NTT Communications Engineers' Blog

              こんにちは、イノベーションセンターの加藤です。普段はコンピュータビジョンの技術開発やAI/機械学習(ML: Machine Learning)システムの検証に取り組んでいます。一方で、兼務1で大規模言語モデル(LLM: Large Language Model)について調査を行なっており、特にLLMの推論や学習の高速化に関心を持っています。 今回は、小さな言語モデルによる先読みを活用してLLMの文章生成を高速化する手法(Assisted Generation2, Speculative Sampling3などと呼ばれています)についてご紹介します。 LLMの推論は計算コストが高く、文章生成の遅さが課題としてよく挙げられています。特に日本語はトークンあたりの文字数が少なく、ChatGPTのようなストリーム出力でもかなり生成が遅く感じるかと思います。 これに対して、いくらか余分にメモリを利用し

                先読みを用いたLLMの文章生成の高速化 - NTT Communications Engineers' Blog
              • 【DDD】ドメイン駆動設計を自分なりにまとめてみる - Qiita

                ■ はじめに 少し前にドメイン駆動設計の本を読んでかなり勉強になったので、自分なりの理解をまとめておきます。 この記事に書いてあるコードはこちらのリポジトリにまとまっています。 ■ ドメイン駆動設計とは ドメイン駆動設計とはなにか ソフトウェアの利用者を取り巻く世界(ドメイン)と実装を結びつけることを目的としている。 ※ ドメインとは「プログラムを適用する対象となる領域」 モデルとは現実の事象・概念を抽象化した概念。 ドメインモデルとは、ドメインをソフトウェア上で扱うために抽象化したもの ドメイン駆動設計のパターン ドメイン駆動設計にはいくつかの要素があり、「知識を表現するもの」と「アプリケーションを実現するもの」に分類される。 <> 知識を表現するパターン 値オブジェクト ドメインの知識を表現するオブジェクト エンティティ ドメインの概念を表現するオブジェクト ドメインサービス 値オブジ

                  【DDD】ドメイン駆動設計を自分なりにまとめてみる - Qiita
                • Pydanticで始めるPythonのバリデーションとシリアライゼーション

                  はじめに Pydanticを使用することで、Pythonコードでのデータバリデーションとデータシリアライゼーションを簡単かつ効率的に行うことができます。 この記事では、Pydanticの基本的な使い方から、より高度なバリデーションとシリアライゼーションまで幅広く紹介します。また、簡易的なものですが他のバリデーションライブラリとの速度比較も行っています。 Pydanticとは Pydanticは、Pythonのバリデーションライブラリです。以下のような特徴を持ちます。 型アノテーションをつけるだけでバリデーションとシリアライゼーションを実現できる 独自のバリデーションやシリアライゼーションを柔軟に定義することができる Pydantic V2はコアロジックがRustで実装されていて高速に動作する dataclasses+jsonと比較 dataclasses+jsonを使ったコードとPydan

                    Pydanticで始めるPythonのバリデーションとシリアライゼーション
                  • 「Clean Architectures in Python」を読み解いてクリーンアーキテクチャを具体的に理解する

                    はじめに ソフトウェアアーキテクチャーの一種として、クリーンアーキテクチャがあります。クリーンアーキテクチャは、Robert C. Martin氏(「ボブおじさん」と呼ばれているらしい)が提唱したもので、以下のブログの説明が有名なようです。 私もこのブログの内容をざっと読んでみたのですが、具体的にはどんな実装になるのかがさっぱりわかりませんでした😇。そこで、いつも利用しているPythonでの実装例を探してみたところ、「Clean Architectures in Python」という英語の書籍を見つけました。以下のページから無料で閲覧できます。 この書籍では、物件情報を閲覧するためのアプリをPythonで実装することで、クリーンアーキテクチャの実例やメリットなどを説明しています。また、テスト駆動開発、エラー処理、本番環境へのデプロイなど、実業務における開発に役立ちそうな情報も記載されてい

                      「Clean Architectures in Python」を読み解いてクリーンアーキテクチャを具体的に理解する
                    • Python業務歴1年目から5年目でコードはこう変わった - Qiita

                      class DBClient: PATH = 'hoge/fuga' @classmethod def insert(cls, recs): for rec in recs: # ここでは仮でprintするだけとする print(f"PATH: {cls.PATH}, name: {rec['name']}, age: {rec['age']}") records = [ {"name": "Taro", "age": 20}, {"name": "Jiro", "age": 18}, {"name": "Saburo", "age": 12} ] DBClient.insert(records) import dataclasses from typing import Final @dataclasses.dataclass class Record: name: str age: i

                        Python業務歴1年目から5年目でコードはこう変わった - Qiita
                      • はじめての自然言語処理 ELYZA 日本語 Llama 2 指示応答モデルのファインチューニングと vLLM での推論 | オブジェクトの広場

                        今回は Elyza さんの日本語 Llama 2 指示応答モデルをファインチューニングし、vLLM にデプロイして高速に推論してみます。70 億パラメータモデルならギリギリ Tesla T4 x 1 の構成でも float16 で動かせるかと思ったのですが、どうだったでしょうか。vLLM には OpenAI 互換の API インタフェースも備えているので、ついでに LangChain からも接続してみたり。 1. はじめに 今回は Elyza さんが公開されている大規模指示応答言語モデルである、ELYZA-japanese-Llama-2-7b-fast-instruct1 をファインチューニングして vLLM で推論してみます。 そんな訳で今回あまり書くことがなく、動かし方だけサラっと書いて「動きましたー。では良いお年を~。」で締めることにします。 しかし、時代感覚無視の隔月連載でネタを

                          はじめての自然言語処理 ELYZA 日本語 Llama 2 指示応答モデルのファインチューニングと vLLM での推論 | オブジェクトの広場
                        • 現場のPython──Webシステム開発から、機械学習・データ分析まで

                          2024年9月12日紙版発売 株式会社ビープラウド 監修,altnight,石上晋,delhi09,鈴木たかのり,斎藤努 著 A5判/384ページ 定価3,520円(本体3,200円+税10%) ISBN 978-4-297-14401-2 Gihyo Direct Amazon 楽天ブックス 丸善ジュンク堂書店 ヨドバシ.com 電子版 Amazon Kindle honto この本の概要 『WEB+DB PRESS』の人気連載が待望の書籍化です。Webシステム開発から機械学習・データ分析まで,現場で使えるPythonのノウハウが1冊にまとまっています。取り上げる話題は,環境構築,コード品質,テスト,構造化ログ,リリース管理,Django,Django REST framework,GraphQL,Fast API,Django ORM,データサイエンスプログラムの品質,データ分析レポー

                            現場のPython──Webシステム開発から、機械学習・データ分析まで
                          • Pythonでハッシュ可能なものの整理 | DevelopersIO

                            Pythonで辞書型のキーにリストを入れてunhashableとエラーを出した経験はないでしょうか? 辞書型のキーや集合型ではその値がhashableである必要があります。 今回は何がハッシュ可能で何ができないのかを簡単に整理しました。 はじめに Pythonでは、辞書(dictionary)や集合(set)などのデータ構造で使用するために、ハッシュ可能なオブジェクトが必要です。 ハッシュ可能なオブジェクトは、hash() 関数を用いてユニークなハッシュ値を生成できるものです。 ただ、全てのオブジェクトがハッシュ可能なわけではありません。 この記事では、Pythonにおいてハッシュ可能なオブジェクトについて整理していきます。 Hashable(ハッシュ可能)なオブジェクトとは? Pythonにおけるhashableとは以下のような意味です。 An object is hashable if

                              Pythonでハッシュ可能なものの整理 | DevelopersIO
                            • Temporal Python 1.0.0 – A Durable, Distributed Asyncio Event Loop

                              We are excited about the GA release of the Temporal Python SDK. Python is now a fully-supported workflow language in Temporal, and our use of native asyncio constructs makes it a perfect fit for Python developers looking to write durable workflows. Here are some links to read more about Temporal Python: Repository Application Development Guide Code Samples API Documentation Like essentially all of

                              • 7 Things I've learned building a modern TUI Framework

                                7 Things I've learned building a modern TUI Framework I've be working on Textual for over a year now. Here's a few things I've discovered (or re-discovered) regarding terminals in Python, and software development in general. I've be working on Textual for over a year now. Here's a few things I've discovered (or re-discovered) regarding terminals in Python, and software development in general. — Wi

                                • Python業務歴1年目から5年目でコードはこう変わった - Qiita

                                  class DBClient: PATH = 'hoge/fuga' @classmethod def insert(cls, recs): for rec in recs: # ここでは仮でprintするだけとする print(f"PATH: {cls.PATH}, name: {rec['name']}, age: {rec['age']}") records = [ {"name": "Taro", "age": 20}, {"name": "Jiro", "age": 18}, {"name": "Saburo", "age": 12} ] DBClient.insert(records) import dataclasses from typing import Final @dataclasses.dataclass class Record: name: str age: i

                                    Python業務歴1年目から5年目でコードはこう変わった - Qiita
                                  • 【AWS】Lambda Powertoolsを布教したい!|朝日新聞社 メディア研究開発センター

                                    現在対応している言語はPython・Java・TypeScript・.NETです。この記事のサンプルコードは全てPythonになります。 ちなみにYOLOでは、メイン機能である音声認識まわりをLambdaに移行するタイミングでPowertoolsを導入しました(2023年3月、下記記事もご覧ください)。 導入して感じたメリットはざっとこんな感じでしょうか。 構造化ログが簡単に生成される バリデーションを自前で実装しなくて良くなる API Gatewayとの統合がいろいろ楽になる それぞれ後ほど紹介したいと思いますが、とにかくよしなにやってくれるのです。 インストール方法と使い方導入はとても簡単で、Lambdaレイヤーかpipから使えます。 AWSコンソールでサクッと使う「AWSレイヤー」にPowertoolsのレイヤーが用意されています。使いたいLambda関数でこのレイヤー追加するだけで

                                      【AWS】Lambda Powertoolsを布教したい!|朝日新聞社 メディア研究開発センター
                                    • Summarization | 🦜️🔗 Langchain

                                      Use case​Suppose you have a set of documents (PDFs, Notion pages, customer questions, etc.) and you want to summarize the content. LLMs are a great tool for this given their proficiency in understanding and synthesizing text. In this walkthrough we'll go over how to perform document summarization using LLMs. Overview​A central question for building a summarizer is how to pass your documents into t

                                        Summarization | 🦜️🔗 Langchain
                                      • UnstructuredでWebのURLもローカルのPDFも読み込める! さらにユーザはpartition関数を呼ぶだけととっても簡単! (arXivの論文を例に) - nikkie-ftnextの日記

                                        はじめに #ラブライバーに見て欲しいアイマス公式絵 で涙腺崩壊😭😭 異次元フェスの余韻で夢見心地なnikkieです。 存在を知った興味深いライブラリの素振り(初手)です。 目次 はじめに 目次 Unstructured LangChainが使ってます1 partition 動作環境 WebのURLから ローカルのPDFから ファサードpartition 終わりに Unstructured We get your data LLM-ready 訳してみると「あなたのデータにLLMで使う準備を」といった感じでしょうか。 どんなソースのデータもUnstructuredで扱えるのが売りのようです。 80% of enterprise data exists in difficult-to-use formats like HTML, PDF, CSV, PNG, PPTX, and more.

                                          UnstructuredでWebのURLもローカルのPDFも読み込める! さらにユーザはpartition関数を呼ぶだけととっても簡単! (arXivの論文を例に) - nikkie-ftnextの日記
                                        • Pythonの列挙型と型チェッカについて - 何かを書き留める何か

                                          言いたいこと Pythonの列挙型を定義する方法としてクラスと関数呼び出しの2種類存在する。 関数呼び出しで列挙型を定義するべき状況とは、列挙型を動的に制御したい状況である。 しかし、関数呼び出しで列挙型を定義すると、mypyを通して型チェックをする際に都合が悪い。 列挙型を動的に制御したい場合は列挙型を使わずに素直に辞書を使う。 列挙型とは Pythonの公式ドキュメントには、列挙型について次のように説明している。 一意の値に紐付けられたシンボリックな名前の集合です 要は、まとめて扱いたい定数の集まりである。 列挙型の定義方法 Pythonには列挙型の定義方法として、クラスによる定義、関数呼び出しによる定義の2種類存在する。 公式ドキュメントの例に基づいて、それぞれの例を示す。 クラスによる定義 import enum class Planet(enum.Enum): MERCURY =

                                            Pythonの列挙型と型チェッカについて - 何かを書き留める何か
                                          • PEP 751 – A file format to list Python dependencies for installation reproducibility | peps.python.org

                                            PEP 751 – A file format to list Python dependencies for installation reproducibility Author: Brett Cannon <brett at python.org> Discussions-To: Discourse thread Status: Draft Type: Standards Track Topic: Packaging Created: 24-Jul-2024 Post-History: 25-Jul-2024 Replaces: 665 Table of Contents Abstract Motivation Rationale Locking Scenarios Per-file Locking Package Locking Specification File Name Fi

                                              PEP 751 – A file format to list Python dependencies for installation reproducibility | peps.python.org
                                            • EDINET APIを用いて企業情報を取得するPythonコードを書いた。

                                              はじめに 株で大損しました。反省点も多々あるのですがやはり1番大きなところは、みんかぶなどの情報サイトだけで銘柄選びをしていたという点にあります。 もちろん株のプロが選んでいるため素人の私があれこれ言うよりも情報は正しいものの、いつの情報を参考にしているのかなど不透明な部分も多くあります。 自分の大切な資産を他人に委ねる事自体間違えていたと言わざるをえないわけです。 必要な情報は自分の目で確認して納得してから取引すべきなのです。 というわけで今回は現金に直結する可能性があるため熱量が違います。 金融庁が公開しているEDINET APIから各企業が登録している有価証券報告書などの業績記録を取得できるように進めましょう。 先行きは長いのですが、まずはEDINETが提供している2つのAPIをリクエストするところまでを行います。 手法 まずは一括取得ようにサクッと動くものを用意したいため、Pyth

                                                EDINET APIを用いて企業情報を取得するPythonコードを書いた。
                                              • Summary of Major Changes Between Python Versions

                                                This post is designed to be a quick reference for the major changes introduced with each new version of Python. This can help with taking advantages of using new features as you upgrade your code base, or ensuring that you have the correct guards for compatibility with older versions. There are two sections to this post: the first covers the actual changes, the second useful tools, links, and util

                                                  Summary of Major Changes Between Python Versions
                                                • Setting up a FastAPI App with Async SQLALchemy 2.0 & Pydantic V2

                                                  Setting up a FastAPI App with Async SQLALchemy 2.0 & Pydantic V2 Early this year, a major update was made to SQLAlchemy with the release of SQLAlchemy 2.0. Among other things, this includes significant updates to basic ORM syntax and to some technical machinery necessary for a good experience using an async engine with asyncio. (You can read more about these updates here: https://docs.sqlalchemy.o

                                                  • Compiling With Constraints

                                                    There are lots of interesting little subproblems in compilation like instruction selection, register allocation and instruction scheduling. These can be expressed in declarative interlinked way to constraint solvers. I’ve been fiddling with probably 6 iterations of using constraint solvers for compiler backends over the last 3 years and never written a blog post on it. This is long over due, and s

                                                      Compiling With Constraints
                                                    • 半環と図

                                                      こんにちは。GMO NIKKOのshunkiです。 最近、ChatGPTなどの大規模言語モデルの出現によって、平易な説明が不要になってきた気がします。 なぜなら目の前の文章が難解だと感じても、大規模言語モデルが文意を紐解いてくれるからです。 そうなると、興味深い情報が詰め込まれた文章でさえあれば、読み手にとっては十分ではないでしょうか。 さて、簡単な予防線も張ったところで、ここから先は大した説明もなく専門用語を使っていく。 用語に興味がそそられれば、その用語を中心に周辺知識を調査すると楽しいだろう。 あるいは話の流れ上、図が多くなるので、図を眺めるだけで何らかの直感が働くこともあるだろう。 この記事では、半環とよばれる代数的構造と図の相性の良さについて垣間見ることを目標とする。 記事の流れとしては、最初に図をさまざまに解釈しながら眺めていく。 次に半環の定義と、半環と整合する図を導入する。

                                                        半環と図
                                                      • Pydanticを活用してCSVファイルを型安全に扱う - RevComm Tech Blog

                                                        RevCommでバックエンド開発をしている小門です。 最近、CSVファイルのアップロードを受け付けて処理するバックエンドAPIの機能開発を担いました。 CSVファイルのパース、バリデーションにPydanticが便利でしたので紹介したいと思います。 なお開発言語はPython、コードの動作バージョンは以下です。 Python 3.12 Pydantic: 2.6.0 PythonでCSVファイルの取り扱い Pythonでは組み込みモジュールcsvを使うことで基本的なCSVファイルの読み取り・書き込みができます。 # persons.csv の例 """ "name","age" "alice",20 "bob",21 """ import csv with open("persons.csv", newline="") as csvfile: reader = csv.DictReader(

                                                          Pydanticを活用してCSVファイルを型安全に扱う - RevComm Tech Blog
                                                        • pytestのparametrizeでdataclassを利用してみる | DevelopersIO

                                                          データクラス名やキーワード引数名を明示できるため、テストコードを見たときに分かりやすくなることが期待できます。 pytestのparametrizeを活用すれば、ひとつのテストメソッドに対して、パラメータを変えるテストが便利に書けます。 How to parametrize fixtures and test functions — pytest documentation しかし、parametrizeのパラメータの数が多かったり、数は少なくとも内容が多いとき、テストコードが縦に長くなって見づらくなることがあります。 改善方法を考えているとき、ふと、「そういえば、pytestのparametrizeでdataclassが使えたりするかな?」と閃いたので、試してみました。 おすすめの方 pytestのparametrizeでdataclassを利用したい方 テストパターンが見づらい例 たと

                                                            pytestのparametrizeでdataclassを利用してみる | DevelopersIO
                                                          • Google Colabでの日本語Mambaの事前学習|はち

                                                            はじめに昨年(2023年)末にMambaアーキテクチャが公開されました。 MambaはS4などと同様の状態空間モデルというもので、Transformerと比べて、 高速な推論 シーケンス長が伸びた際のメモリ効率の良さ 単純なモデル性能の良さ で優れている様です。 日本語モデルがないので、日本語Mambaの事前学習のコードを作成しました。Google colabで動くことは確認したもののA100(40B)でも15時間近くかかるので実質最後までは実行できないです。コードの参考にしていただければ幸いです。 Paperspace gradientなどを使ってそのうち最後まで実行してみようと考えています。 1. 準備Google colabにCheckpointを保存するためにGoogle Driveにマウントします。 # Google ColabとGoogle Driveを接続 from goog

                                                              Google Colabでの日本語Mambaの事前学習|はち
                                                            • LangGraph ではじめるAIエージェント操作 その2 on Azure OpenAI - Qiita

                                                              ▼会話のテーマ 「当社の商品A、B、Cの過去5年分のデータを調べ、今年の販売戦略を立てる。」 環境 Windows10 Python v3.11.4 主なlangchainライブラリバージョン ・langchain-core==0.1.27 ・langgraph==0.0.26 ・langchain==0.1.9 APIキー等の環境変数は、試したコードと同じフォルダに".env"ファイルを作り、その中に記述しています。 requirements.txt は、最後の方に載せています。 AZURE_OPENAI_TYPE = "azure" AZURE_OPENAI_KEY = "YOUR AZURE OPENAI KEY" azure_endpoint = "YOUR AZURE ENDPOINT URL" AZURE_OPENAI_DEPLOYMENT_NAME = "YOUR AZURE

                                                                LangGraph ではじめるAIエージェント操作 その2 on Azure OpenAI - Qiita
                                                              • dataclass-wizardを使ってyamlをdataclassの値に変換する - kazasiki's blog

                                                                Pythonに限らずプログラムを書いてれば固定値の集まりをJSONやYAMLなどの別ファイルに分けたいことがあると思います。今回はそんな時に便利なライブラリとしてJSONやYAMLをdataclassにmarshalしてくれるdataclass-wizardをご紹介します。 背景 PythonでYAMLを読み込んで扱う場合、普通はPyYAMLを使いますが、例えば yaml.load の戻り値はdict型になってしまいます。そこから値を取り出す場合も、 dict["key"] などといった風にキーを指定する形になります。 これでも問題ないかも知れませんが、キーの名前に対するIDEやエディタの補完が効かなかったり、まとまった値を関数に渡す場合もdict型になってしまうので、関数の方で何のキーを指定すれば良いのか分かりづらくなる原因になります。 そこでJSONやYAMLを読み込んでdatacla

                                                                  dataclass-wizardを使ってyamlをdataclassの値に変換する - kazasiki's blog
                                                                • pydanticを用いて堅牢な型を作成する - Qiita

                                                                  概要 堅牢な型(Strict Type)が現時点で5つしかなく、結局__post_init__などでバリデーションを行う必要があるのは面倒と感じていましたが、なんとpydanticでは型を自分で作ることが出来ます! ただの型の作成であれば、下記のQiita記事やドキュメントを参照すれば作ることが出来ます。 今回はこれの堅牢な型バージョンです。 型の作成方法 めちゃくちゃ簡単です。 作成する型のクラスを定義する __get_validators__を定義して、次で作成するvalidate関数を呼び出す validateを定義する関数を作成し、エラーパターンを記述する 簡単な例を紹介すると、0以外の数値を受け取るNotZeroNumber型を定義してみます。 from pydantic.dataclasses import dataclass class NotZeroNumber(int):

                                                                    pydanticを用いて堅牢な型を作成する - Qiita
                                                                  • モジュール性を高めるテクニック: 戻り値を通じた実装の詳細の漏洩を防ぐ

                                                                    コードの可読性と保守性を向上させるためには、モジュール性を高めることが重要です。 そのために、実装の詳細を隠蔽し、適切な抽象化レイヤーを維持します。 その際、メソッドの戻り値を通じて実装の詳細が漏洩することに注意が必要です。 本記事では、戻り値から実装の詳細が漏洩することによる問題点と、その解決策について解説します。 サンプルコードを交えながら、抽象化レイヤーを維持するための戻り値の設計について見ていきましょう。 この記事を通じて、より保守性の高いコードを書くための具体的な手法を学びます。 戻り値からの実装の詳細の漏洩による問題 以下のコードは、ユーザーの連絡先情報を取得するための get_user_contact メソッドの例です。 def get_user_contact(self, user_id): query = f"SELECT * FROM contacts WHERE us

                                                                      モジュール性を高めるテクニック: 戻り値を通じた実装の詳細の漏洩を防ぐ
                                                                    • ファーストクラスコレクションのPythonでの実装例を見て考えたこと - nikkie-ftnextの日記

                                                                      はじめに 京都リサーチパークにて開催のYAPC::Kyotoでノベルティを受け取りし参加者の1人、nikkieです。 読書会駆動でミノ駆動本(『良いコード/悪いコードで学ぶ設計入門』)を読んでいます。 7章ではファーストクラスコレクションが紹介されます。 Pythonで実装する上で参考になりそうな先駆者の例が見つかりました。 それを見て考えたことをアウトプットします。 目次 はじめに 目次 ファーストクラスコレクション Pythonでファーストクラスコレクション、先駆者による例 なるほどと思った点 dataclassにする 変更提案したい点 1-1. appendの返り値はNoneなのです 1-2. ファーストクラスコレクションが持つコレクションは変更しないほうがいいのではないか 2. as_listメソッドが返すのはtuple 提案実装 終わりに ファーストクラスコレクション ファースト

                                                                        ファーストクラスコレクションのPythonでの実装例を見て考えたこと - nikkie-ftnextの日記
                                                                      • Python業務歴1年目から5年目でコードはこう変わった - Qiita

                                                                        class DBClient: PATH = 'hoge/fuga' @classmethod def insert(cls, recs): for rec in recs: # ここでは仮でprintするだけとする print(f"PATH: {cls.PATH}, name: {rec['name']}, age: {rec['age']}") records = [ {"name": "Taro", "age": 20}, {"name": "Jiro", "age": 18}, {"name": "Saburo", "age": 12} ] DBClient.insert(records) import dataclasses from typing import Final @dataclasses.dataclass class Record: name: str age: i

                                                                          Python業務歴1年目から5年目でコードはこう変わった - Qiita
                                                                        • Vertex AI Pipelines で利用している Kubeflow Pipelines を v2 へ移行しました - Commune Engineer Blog

                                                                          こんにちは,コミューンで機械学習エンジニアとして働いている柏木(@asteriam_fp)です. 最近は,鬼滅の刃の柱稽古編が毎週日曜日に放送されていて,それを見て楽しんだ勢いで月曜日からの仕事も勤しんでいます!(無限城編も楽しみです) はじめに 現在我々のチームでは,Google Cloud 上の Vertex AI Pipelines 上で機械学習パイプライン(バッチレコメンド等で利用中)を動かしています.その裏側では,Kubeflow Pipelines (KFP) を利用していますが,このライブラリ(フレームワーク)が2023年6月にバージョン2.0をリリースしました. 以前まで使用していたバージョン1.8は2024年12月にサポートが終了してしまいます.これに伴い我々のチームでもバージョン2.0への移行対応を実施したため,本ブログではその内容を紹介したいと思います. https:

                                                                            Vertex AI Pipelines で利用している Kubeflow Pipelines を v2 へ移行しました - Commune Engineer Blog
                                                                          • Pythonでpython-rapidjsonモジュールを使用しJSONデータの読み書きを行う

                                                                            Pythonでpython-rapidjsonモジュールを使用しJSONデータの読み書きを行ってみます。 今回はpython-rapidjsonを用います。このライブラリ・モジュールはPythonの標準ライブラリではありませんので事前にインストールする必要があります。 ■Python 今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows11) ■arrowとdataclasses-jsonを用いて現在の日時を取得しJSON形式に変換するでは、早速arrowとdataclasses-jsonを用いて現在の日時を取得しJSON形式に変換(シリアライズ)するスクリプトを書いていきます。 ■コードimport rapidjson # JSONデータの作成 data = { "name": "田中 テスト勇也", "age": 30, "city": "宮城" } #

                                                                              Pythonでpython-rapidjsonモジュールを使用しJSONデータの読み書きを行う
                                                                            • GoogleChromeのブックマークを登録日順に出力する

                                                                              はじめに GoogleChromeのブックマーク一覧を登録時の時系列順に並べて出力するpythonプログラムを実装しました。 ディレクトリの中にさらにディレクトリがあるような入れ子の場合にも対応しています。 ブックマークの情報には登録時のタイムスタンプが保存されているのでそれを使って並び替えています。 出力 後述のプログラムを実行した際の出力は以下のようになります。 3 urls 2022-10-04 Zenn|エンジニアのための情報共有コミュニティ https://zenn.dev/ 2022-10-05 Zenn|エンジニアのための情報共有コミュニティ https://zenn.dev/ 2022-10-06 Zenn|エンジニアのための情報共有コミュニティ https://zenn.dev/ from pathlib import Path import json from data

                                                                                GoogleChromeのブックマークを登録日順に出力する
                                                                              • Pythonのクラスメソッドで自身の型を返す方法 - Qiita

                                                                                概要 自身のインスタンスを返すクラスメソッドを作成する際、下記のように返り値の型をクォーテーションで囲む必要がある from __future__ import annotations from dataclasses import dataclass @dataclass class User: name: str name_in_lowercase: str name_in_uppercase: str age: int @classmethod def create(cls, name: str, age: int ) -> User: return User(name=name, name_in_lowercase=name.lower(), name_in_uppercase=name.upper(), age=age) def print_description(self):

                                                                                  Pythonのクラスメソッドで自身の型を返す方法 - Qiita
                                                                                • Diffusionモデルによる漢字の生成 - Qiita

                                                                                  はじめに This Kanji doesn't exist (一部ありそうですが...) diffusionモデルを作成して、漢字を生成した記録になります Diffusionモデルを実際にPythonで動かして、学習方法を理解することが目的です 詳しい理論や数式の導出は説明はしておりません 多様でありながら単純であり、かつ簡単に準備できる学習データとして"漢字"を利用しました コードはこちらを参考にしており、ネットワーク部分はそのまま利用しています https://github.com/tcapelle/Diffusion-Models-pytorch もくじ ライブラリのインポート 漢字データセットの作成 拡散過程 逆拡散過程 学習コード 結果 漢字生成 0. ライブラリのインポート 学習で利用するライブラリをインポートします。 学習はGoogle Colaboratoryで実施しました

                                                                                    Diffusionモデルによる漢字の生成 - Qiita