{"id":27755,"library":"fyrnheim","title":"Fyrnheim","description":"Fyrnheim is a typed Python entity framework and dbt alternative built on Pydantic + Ibis. It allows defining typed entities with Pydantic, generating transformations, and running them anywhere. Current version 0.14.0, active development.","status":"active","version":"0.14.0","language":"python","source_language":"en","source_url":"https://github.com/deepskydatahq/fyrnheim","tags":["dbt-alternative","entity-framework","pydantic","ibis","data-transformation"],"install":[{"cmd":"pip install fyrnheim","lang":"bash","label":"Install latest"}],"dependencies":[{"reason":"Core query generation uses Ibis expressions","package":"ibis-framework","optional":false},{"reason":"Entity definitions are Pydantic models","package":"pydantic","optional":false}],"imports":[{"wrong":"from fyrnheim import Entity","symbol":"ActivityDefinition","correct":"from fyrnheim import ActivityDefinition"},{"symbol":"MetricsModel","correct":"from fyrnheim import MetricsModel"},{"symbol":"QualityRunner","correct":"from fyrnheim import QualityRunner"}],"quickstart":{"code":"import os\nimport pandas as pd\nfrom fyrnheim import Entity, Ingestor\n\nclass User(Entity):\n    id: int\n    name: str\n    email: str\n\ndf = pd.DataFrame([\n    {\"id\": 1, \"name\": \"Alice\", \"email\": \"alice@example.com\"},\n])\ningestor = Ingestor(target=os.environ.get('DATABASE_URL', 'sqlite://'))\ningestor.ingest(User, df)\nprint(\"Ingestion complete\")","lang":"python","description":"Defines a User entity and ingests a pandas DataFrame into a database via Ingestor."},"warnings":[{"fix":"Replace `derive()` calls with `transform()`.","message":"The old `Entity.derive()` method has been deprecated in favor of the new transformation API using `Entity.transform()`.","severity":"deprecated","affected_versions":">=0.9.0,<0.14.0"},{"fix":"Ensure your data sources are accessible from the Ibis backend (e.g., BigQuery, DuckDB).","message":"Event source loading now composes Ibis expressions and uses UNION ALL. Previously, it materialized sources locally. If you relied on pandas-only behavior, your pipeline may break.","severity":"gotcha","affected_versions":">=0.14.0"},{"fix":"Pass a connection string (e.g., 'sqlite:///db.sqlite') instead of an engine object.","message":"The `Ingestor` class signature changed: `target` parameter now expects a connection string instead of a SQLAlchemy engine.","severity":"breaking","affected_versions":">=0.10.0"}],"env_vars":null,"search_vec":"'0.14.0':31 'activ':32 'allow':17 'altern':11,36 'anywher':28 'built':12 'current':29 'data':43 'data-transform':42 'dbt':10,35 'dbt-altern':34 'defin':18 'develop':33 'entiti':7,20,38 'entity-framework':37 'framework':8,39 'fyrnheim':1,2 'generat':23 'ibi':15,41 'pydant':14,22,40 'python':6 'run':26 'transform':24,44 'type':5,19 'version':30","created_at":"2026-05-09T05:51:55.189713+00:00","updated_at":"2026-05-09T05:51:55.189713+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/deepskydatahq/fyrnheim","docs":null,"changelog":null,"pypi":"https://pypi.org/project/fyrnheim/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["web-framework","data","database","workflow"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-08-02","install_tag":null}}