You can write a setup.py with no version information specified, and vcversioner
will find a recent, properly-formatted VCS tag and extract a version from it.
It's much more convenient to be able to use your version control system's
tagging mechanism to derive a version number than to have to duplicate that
information all over the place. I eventually ended up copy-pasting the same
code into a couple different setup.py files just to avoid duplicating version
information. But, copy-pasting is dumb and unit testing setup.py files is hard.
This code got factored out into vcversioner.
Package glog implements logging analogous to the Google-internal
C++ INFO/ERROR/V setup. It provides functions Info, Warning,
Error, Fatal, plus formatting variants such as Infof. It
also provides V-style logging controlled by the -v and
-vmodule=file=2 flags.
This is an efficient pure Go implementation of leveled logs in the
manner of the open source C++ package
https://github.com/google/glog
(pkgsrc/devel/google-glog)
By binding methods to booleans it is possible to use the log package
without paying the expense of evaluating the arguments to the log.
Through the -vmodule flag, the package also provides fine-grained
control over logging at the file level.
Protocol Buffers are Google's data interchange format.
This software implements Go bindings for protocol buffers. For information
about protocol buffers themselves, see
https://developers.google.com/protocol-buffers/
Every so often, a thread shows up on the golang-nuts asking for some form of
goroutine-local-storage, or some kind of goroutine id, or some kind of context.
There are a few valid use cases for goroutine-local-storage, one of the most
prominent being log line context. One poster was interested in being able to
log an HTTP request context id in every log line in the same goroutine as the
incoming HTTP request, without having to change every library and function call
he was interested in logging.
It is my duty to point you to https://blog.golang.org/context, which is how
Google solves all of the problems you'd perhaps consider using this package for
at scale.
Termbox is a library that provides a minimalistic API which allows the
programmer to write text-based user interfaces. The library is crossplatform
and has both terminal-based implementations on *nix operating systems and a
winapi console based implementation for windows operating systems. The basic
idea is an abstraction of the greatest common subset of features available on
all major terminals and other terminal-like APIs in a minimalistic fashion.
Small API means it is easy to implement, test, maintain and learn it, that's
what makes the termbox a distinct library in its area.
Go code (golang) set of packages that provide many tools for testifying that
your code will behave as you intend.
Features include:
- Easy assertions
- Mocking
- HTTP response trapping
- Testing suite interfaces and functions
A framework to build command line applications in Go with most of the burden of
arguments parsing and validation placed on the framework instead of the
developer.