Giter VIP home page Giter VIP logo

flyteorg / flytestdlib Goto Github PK

View Code? Open in Web Editor NEW
60.0 277.0 23.0 1.18 MB

A apache commons style library in Golang, use by the Flyte project. Contains utilities for metrics, pflags, config management, storage abstraction, caching etc

Home Page: https://flyte.org

License: Apache License 2.0

Makefile 0.55% Go 95.93% Shell 3.52%
prometheus-metrics pflags metrics convenient storage flyte golang-library battle-tested

flytestdlib's Introduction

๐Ÿ—‘ As of Oct-23 we moved the development of this component to the monorepo. ๐Ÿ—‘

Common Go Tools

Current Release Build Status GoDoc License CodeCoverage Go Report Card Commit activity Commit since last releast Slack

Shared components we found ourselves building time and time again, so we collected them in one place!

This library consists of:

  • config

    Enables strongly typed config throughout your application. Offers a way to represent config in go structs. takes care of parsing, validating and watching for changes on config.

  • cli/pflags

    Tool to generate a pflags for all fields in a given struct.

    Install

    On POSIX systems, run: curl -sfL https://raw.githubusercontent.com/flyteorg/flytestdlib/godownloader/godownloader.sh | sh

    On Windows:

    Install scoop: iex (new-object net.webclient).downloadstring('https://get.scoop.sh')

    Run: scoop bucket add flytestdlib https://github.com/flyteorg/flytestdlib.git

    Run: scoop install pflags

  • storage

    Abstract storage library that uses stow behind the scenes to connect to s3/azure/gcs but also offers configurable factory, in-memory storage (for testing) as well as native protobuf support.

  • contextutils

    Wrapper around golang's context to set/get known keys.

  • logger

    Wrapper around logrus that's configurable, taggable and context-aware.

  • profutils

    Starts an http server that serves /metrics (exposes prometheus metrics), /healthcheck and /version endpoints.

  • promutils

    Exposes a Scope instance that's a more convenient way to construct prometheus metrics and scope them per component.

  • atomic

    Wrapper around sync.atomic library to offer AtomicInt32 and other convenient types.

  • sets

    Offers strongly types and convenient interface sets.

  • utils

  • version

Contributing

Versioning

This repo follows semantic versioning.

Releases

This repository is hooked up with goreleaser. Maintainers are expected to create tags and let goreleaser compose the release message and create a release.

To create a new release, follow these steps:

  • Create a PR with your changes.

  • [Optional] Create an alpha tag on your branch and push that.

    • First get existing tags git describe --abbrev=0 --tags

    • Figure out the next alpha version (e.g. if tag is v1.2.3 then you should create a v1.2.4-alpha.0 tag)

    • Create a tag git tag v1.2.4-alpha.0

    • Push tag git push --tags

  • Merge your changes and checkout master branch git checkout master && git pull

  • Bump version tag and push to branch.

    • First get existing tags git describe --abbrev=0 --tags

    • Figure out the next release version (e.g. if tag is v1.2.3 then you should create a v1.2.4 tag or v1.3.0 or a v2.0.0 depending on what has changed. Refer to Semantic Versioning for information about when to bump each)

    • Create a tag git tag v1.2.4

    • Push tag git push --tags

flytestdlib's People

Contributors

alexlipa91 avatar aliabbasjaffri avatar anandswaminathan avatar antaxify avatar bnsblue avatar brucearctor avatar ckiosidis avatar eapolinario avatar enghabu avatar flyte-bot avatar goreleaserbot avatar gvashishtha avatar hamersaw avatar honnix avatar iaroslav-ciupin avatar katrogan avatar kumare3 avatar matthewphsmith avatar mayitbeegh avatar morpheusxaut avatar pingsutw avatar pmahindrakar-oss avatar samhita-alla avatar wild-endeavor avatar yindia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.