İçeriğe geç
Muslu Yüksektepe

cemirutils

Python'a yeni başlayanların ve deneyimli geliştiricilerin zaman kazanması için hazırlanmış yardımcı fonksiyon ve dekoratör kütüphanesi.

cemirutils, Python'a yeni başlayanların ve Python'u zaten kullananların günlük işlerde vakit kazanmasını sağlayacak fonksiyonları, sınıfları ve dekoratörleri tek pakette toplayan bir yardımcı kütüphane. Linux'ta ve Python'da sık kullanılan komutları, basit veri işleme işlevlerini, HTTP, e-posta ve PostgreSQL işlemlerini aynı çatı altında sunuyor. Kütüphaneyi Cem Emir Yüksektepe ile birlikte geliştirdik. İlk sürüm 2024 yılının Mayıs ayında PyPI'da yayınlandı, son sürüm olan 2.2.5 ise 2025 yılının Ağustos ayında çıktı.

Amaç

Farklı projelerde aynı küçük yardımcı fonksiyonları tekrar tekrar yazdığımı fark ettim. Bir fonksiyonun ne kadar sürdüğünü ölçmek, başarısız olan bir işlemi birkaç kez yeniden denemek, iki tarih arasındaki iş günlerini saymak ya da bir listeyi düzleştirmek gibi işler her projede yeniden karşıma çıkıyordu. cemirutils'i bu parçaları bir araya toplamak ve hem kendimiz hem de Python öğrenen kişiler için tek bir import ile kullanılabilir hâle getirmek amacıyla hazırladık. Kodun içindeki açıklamaları hem Türkçe hem İngilizce yazdık; böylece kütüphaneyi inceleyen herkes fonksiyonların ne yaptığını kendi dilinde okuyabiliyor.

Nasıl çalışır

Kütüphane, her biri belirli bir iş alanını kapsayan sınıflardan oluşuyor. Ana sınıf olan CemirUtils, kendisine verilen bir liste ya da sözlük üzerinde çalışıyor. Bu sınıfla bir listenin ilk ve son elemanları, benzersiz değerleri, toplamı, ortalaması, en büyük ve en küçük değeri alınabiliyor. Liste artan ya da azalan sıraya dizilebiliyor, belirli bir değerden büyük ya da küçük elemanlar süzülebiliyor, iç içe listeler tek katmana indirilebiliyor. Sözlük tarafında anahtarları listelemek, anahtara göre süzmek ve iki sözlüğü birleştirmek mümkün.

Aynı sınıf zaman hesapları için de fonksiyonlar içeriyor. İki tarih arasındaki gün ve iş günü sayısını bulmak, iki saat arasındaki farkı saat, dakika ve saniye olarak almak, bir tarihe gün eklemek, bir günün hafta sonu olup olmadığını ve bir yılın artık yıl olup olmadığını kontrol etmek bunlardan bazıları. ls, cat, cp, mv, mkdir, find ve grep gibi Linux komutlarını Python içinden çağıran fonksiyonlar da bu sınıfta bulunuyor.

Öne çıkan özellikler

  • CemirUtilsDecorators sınıfı, bir fonksiyonun süresini ölçen, çağrılarını loglayan, hata verdiğinde belirli sayıda yeniden deneyen, sonucunu önbelleğe alan ve belirli bir süre sonunda önbelleği geçersiz kılan dekoratörler sunuyor.
  • Aynı sınıfta, belirli bir zaman diliminde bir fonksiyonun kaç kez çağrılabileceğini sınırlayan bir hız sınırlama dekoratörü, eski fonksiyonlar için kullanımdan kaldırma uyarısı veren bir dekoratör ve fonksiyon bittiğinde sonucu bir webhook adresine gönderen bir dekoratör de var.
  • CemirUtilsLoopTimer, bir fonksiyonun içindeki her döngünün ne kadar sürdüğünü satır numarasıyla birlikte ayrı ayrı raporluyor.
  • CemirUtilsConditions, bir fonksiyon çalışırken hangi if ve elif koşullarının tetiklendiğini satır numaralarıyla gösteriyor; bu, karmaşık koşul bloklarında hata ayıklarken işe yarıyor.
  • cprint fonksiyonu sözlük, liste, sayı ve metin gibi veri türlerini terminalde farklı renklerle yazdırıyor.
  • CemirUtilsHTTP sınıfı GET, POST, PUT, PATCH ve DELETE istekleri göndermeyi sağlıyor ve isteğe bağlı SSL ile temel kimlik doğrulamalı basit bir HTTP sunucusu başlatabiliyor.
  • CemirUtilsEmail ile HTML gövdeli ve ekli e-posta gönderilebiliyor; ekler istenirse zip dosyasına sıkıştırılıyor. CemirUtilsFunctionNotification ise bir fonksiyon çalıştığında sonucunu e-postayla bildiriyor.
  • CemirPostgreSQL sınıfı tablo oluşturma, kayıt ekleme, okuma, güncelleme ve silme işlemlerini yapıyor; veritabanı yoksa oluşturabiliyor ve JSONB kolonlarda sorgu yazmayı destekliyor.
  • IPGeolocation sınıfı ücretsiz IP2Location LITE veritabanını indirip SQLite veritabanına aktarıyor ve bir IP adresinin hangi ülkeye ait olduğunu buluyor.
  • CemirUtilsAMP bir web sayfasının HTML içeriğini alıp AMP biçimine dönüştürüyor. AMP, mobil cihazlarda hızlı açılması için sadeleştirilmiş bir HTML biçimi.

Teknik altyapı

cemirutils yalnızca Python standart kütüphanesiyle yazıldı ve kurulumda hiçbir ek paket istemiyor. HTTP işlemleri için http.client ve urllib, e-posta için smtplib ve email, IP veritabanı için sqlite3, csv ve zipfile, koşul ve döngü analizi için ast ve inspect modülleri kullanılıyor. PostgreSQL işlemleri bir veritabanı sürücüsü yerine sistemdeki psql komut satırı istemcisi üzerinden yürütülüyor ve çıktısı sözlük yapısına çevriliyor. Paket Python 3.9 ve üzerini destekliyor ve MIT lisansıyla dağıtılıyor.

Kullanım alanları

  • Küçük betiklerde ve otomasyon işlerinde süre ölçme, yeniden deneme ve önbellekleme gibi ihtiyaçları birkaç dekoratörle karşılamak için kullanırım.
  • Python öğrenen kişilere liste, sözlük ve tarih işlemlerinin nasıl yapıldığını açıklamalı örneklerle göstermek için iyi bir başlangıç noktası.
  • Uzun süren ya da önemli bir işlem bittiğinde e-posta veya webhook ile haber almak için kullanılabiliyor.
  • Ek paket kurulamayan sunucularda HTTP isteği, e-posta gönderimi ve basit veritabanı işlemleri için hazır araçlar sağlıyor.
Kategori
Python kütüphaneleri
Yıl
2024

Teknolojiler

  • Python
  • PyPI
  • Open Source

Bağlantılar

  • PyPI https://pypi.org/project/cemirutils/
  • GitHub https://github.com/cememir/cemirutils

Tüm projelere dön