{"id":14959442,"url":"https://github.com/spotify/magnolify","last_synced_at":"2025-04-08T16:08:07.446Z","repository":{"id":38430041,"uuid":"215604631","full_name":"spotify/magnolify","owner":"spotify","description":"A collection of Magnolia add-on modules","archived":false,"fork":false,"pushed_at":"2025-03-26T19:45:51.000Z","size":5591,"stargazers_count":173,"open_issues_count":40,"forks_count":26,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-04-05T17:13:40.941Z","etag":null,"topics":["avro","bigquery","bigtable","cats","datastore","guava","magnolia","neo4j","parquet","protobuf","scala","scalacheck","tensorflow"],"latest_commit_sha":null,"homepage":"https://spotify.github.io/magnolify","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spotify.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-16T17:22:31.000Z","updated_at":"2025-03-03T14:37:21.000Z","dependencies_parsed_at":"2023-10-24T10:27:42.853Z","dependency_job_id":"ecbb1cf3-7f15-4141-bcc4-8fefb128cd8e","html_url":"https://github.com/spotify/magnolify","commit_stats":{"total_commits":1097,"total_committers":32,"mean_commits":34.28125,"dds":"0.45761166818596166","last_synced_commit":"1ff0f303d9fef9024305bf3a1505e89261dd231c"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spotify%2Fmagnolify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spotify%2Fmagnolify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spotify%2Fmagnolify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spotify%2Fmagnolify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spotify","download_url":"https://codeload.github.com/spotify/magnolify/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247878022,"owners_count":21011158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avro","bigquery","bigtable","cats","datastore","guava","magnolia","neo4j","parquet","protobuf","scala","scalacheck","tensorflow"],"created_at":"2024-09-24T13:19:44.656Z","updated_at":"2025-04-08T16:08:07.430Z","avatar_url":"https://github.com/spotify.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"magnolify\n=========\n\n[![Build Status](https://github.com/spotify/magnolify/actions/workflows/ci.yml/badge.svg)](https://github.com/spotify/magnolify/actions/workflows/ci.yml)\n[![codecov.io](https://codecov.io/github/spotify/magnolify/coverage.svg?branch=master)](https://codecov.io/github/spotify/magnolify?branch=master)\n[![GitHub license](https://img.shields.io/github/license/spotify/magnolify.svg)](./LICENSE)\n[![Maven Central](https://img.shields.io/maven-central/v/com.spotify/magnolify-shared_2.13.svg)](https://maven-badges.herokuapp.com/maven-central/com.spotify/magnolify-shared_2.13)\n[![Scala Steward badge](https://img.shields.io/badge/Scala_Steward-helping-brightgreen.svg?style=flat\u0026logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAMAAAARSr4IAAAAVFBMVEUAAACHjojlOy5NWlrKzcYRKjGFjIbp293YycuLa3pYY2LSqql4f3pCUFTgSjNodYRmcXUsPD/NTTbjRS+2jomhgnzNc223cGvZS0HaSD0XLjbaSjElhIr+AAAAAXRSTlMAQObYZgAAAHlJREFUCNdNyosOwyAIhWHAQS1Vt7a77/3fcxxdmv0xwmckutAR1nkm4ggbyEcg/wWmlGLDAA3oL50xi6fk5ffZ3E2E3QfZDCcCN2YtbEWZt+Drc6u6rlqv7Uk0LdKqqr5rk2UCRXOk0vmQKGfc94nOJyQjouF9H/wCc9gECEYfONoAAAAASUVORK5CYII=)](https://scala-steward.org)\n\nA collection of [Magnolia](https://github.com/propensive/magnolia) add-ons for common type class derivation, data type conversion, etc.; a simpler and faster successor to [shapeless-datatype](https://github.com/nevillelyh/shapeless-datatype).\n\n# Modules\n\nThis library includes the following modules.\n\n- `magnolify-avro` - conversion between Scala types and [Apache Avro](https://github.com/apache/avro) `GenericRecord`\n- `magnolify-bigquery` - conversion between Scala types and [Google Cloud BigQuery](https://cloud.google.com/bigquery/) `TableRow`\n- `magnolify-bigtable` - conversion between Scala types and [Google Cloud Bigtable](https://cloud.google.com/bigtable) to `Mutation`, from `Row`\n- `magnolify-cats` - type class derivation for [Cats](https://github.com/typelevel/cats), specifically\n  - [`Eq[T]`](https://typelevel.org/cats/api/cats/kernel/Eq.html)\n  - [`Hash[T]`](https://typelevel.org/cats/api/cats/kernel/Hash.html)\n  - [`Semigroup[T]`](https://typelevel.org/cats/api/cats/kernel/Semigroup.html), [`CommutativeSemigroup[T]`](https://typelevel.org/cats/api/cats/kernel/CommutativeSemigroup.html), [`Band[T]`](https://typelevel.org/cats/api/cats/kernel/Band.html)\n  - [`Monoid[T]`](https://typelevel.org/cats/api/cats/kernel/Monoid.html), [`CommutativeMonoid[T]`](https://typelevel.org/cats/api/cats/kernel/CommutativeMonoid.html)\n  - [`Group[T]`](https://typelevel.org/cats/api/cats/kernel/Group.html), [`CommutativeGroup[T]`](https://typelevel.org/cats/api/cats/kernel/CommutativeGroup.html)\n- `magnolify-datastore` - conversion between Scala types and [Google Cloud Datastore](https://cloud.google.com/datastore/) `Entity`\n- `magnolify-guava` - type class derivation for [Guava](https://guava.dev)\n  - [`Funnel[T]`](https://guava.dev/releases/snapshot-jre/api/docs/com/google/common/hash/Funnel.html)\n- `magnolify-neo4j` - conversion between Scala types and [Value](https://neo4j.com/docs/driver-manual/1.7/cypher-values/)\n- `magnolify-parquet` - support for [Parquet](http://parquet.apache.org/) columnar storage format.\n- `magnolify-protobuf` - conversion between Scala types and [Google Protocol Buffer](https://developers.google.com/protocol-buffers/docs/overview) `Message`\n- `magnolify-refined` - support for simple refinement types from [Refined](https://github.com/fthomas/refined).\n- `magnolify-scalacheck` - type class derivation for [ScalaCheck](https://github.com/typelevel/scalacheck)\n  - [`Arbitrary[T]`](https://github.com/typelevel/scalacheck/blob/master/doc/UserGuide.md#universally-quantified-properties)\n  - [`Cogen[T]`](https://github.com/typelevel/scalacheck/blob/master/src/main/scala/org/scalacheck/Cogen.scala)\n- `magnolify-tensorflow` - conversion between Scala types and [TensorFlow](https://www.tensorflow.org/) `Example`\n\n# Usage\n\nSee [micro-site](https://spotify.github.io/magnolify/) for documentation.\n\n# How to Release\n\nMagnolify automates releases using [sbt-ci-release](https://github.com/sbt/sbt-ci-release) with Github Actions. Simply push a new tag:\n\n```shell\ngit tag -a v0.1.0 -m \"v0.1.0\"\ngit push origin v0.1.0\n```\n\nNote that the tag version MUST start with `v` to be picked up as the release version.\n\n# License\n\nCopyright 2019-2021 Spotify AB.\n\nLicensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspotify%2Fmagnolify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspotify%2Fmagnolify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspotify%2Fmagnolify/lists"}