Convert Figma logo to code with AI

twitter-archive logocommons

Twitter common libraries for python and the JVM (deprecated)

2,099
564
2,099
86

Top Related Projects

8,771

A fault tolerant, protocol-agnostic RPC system

2,685

Wonderful reusable code from Twitter

A Scala API for Cascading

13,024

Build highly concurrent, distributed, and resilient message-driven applications on the JVM

12,136

Apache ZooKeeper

33,257

Netty project - an event-driven asynchronous network application framework

Quick Overview

Twitter Commons is an open-source library of Python utilities developed by Twitter. It provides a collection of reusable components for building Python applications, including configuration management, logging, testing, and more. The library aims to simplify common tasks and promote best practices in Python development.

Pros

  • Comprehensive set of utilities for various aspects of Python development
  • Battle-tested in production environments at Twitter
  • Well-documented with clear examples and API references
  • Actively maintained with regular updates and improvements

Cons

  • Some components may be overly complex for simpler projects
  • Learning curve can be steep for developers new to the library
  • Potential dependency conflicts with other libraries in larger projects
  • Some utilities may be Twitter-specific and less applicable to general use cases

Code Examples

  1. Configuration management:
from twitter.common import app

app.add_option("--name", default="World", help="Name to greet")

def main(args, options):
    print(f"Hello, {options.name}!")

app.main()

This example demonstrates how to use the app module for configuration management, allowing command-line options to be easily added and parsed.

  1. Logging:
from twitter.common import log

log.info("Application started")
log.warning("Unexpected input received")
log.error("Failed to connect to database")

Here, the log module is used to output log messages at different severity levels.

  1. Testing:
from twitter.common.testing import MockObject

def test_user_service():
    mock_db = MockObject()
    mock_db.expect_call('get_user', args=[1]).and_return({'id': 1, 'name': 'John'})
    
    user_service = UserService(db=mock_db)
    user = user_service.get_user(1)
    
    assert user['name'] == 'John'
    mock_db.verify()

This example shows how to use the MockObject class for creating mock objects in unit tests.

Getting Started

To get started with Twitter Commons, follow these steps:

  1. Install the library using pip:

    pip install twitter.common
    
  2. Import the desired modules in your Python script:

    from twitter.common import app, log
    
  3. Use the utilities in your code as needed:

    app.add_option("--verbose", default=False, action="store_true", help="Enable verbose logging")
    
    def main(args, options):
        if options.verbose:
            log.set_level(log.DEBUG)
        log.info("Application started")
        # Your application logic here
    
    app.main()
    
  4. Run your script with command-line options:

    python your_script.py --verbose
    

Competitor Comparisons

8,771

A fault tolerant, protocol-agnostic RPC system

Pros of Finagle

  • More actively maintained with regular updates and contributions
  • Focused on building scalable RPC systems, offering more specialized functionality
  • Extensive documentation and examples available

Cons of Finagle

  • Steeper learning curve due to its more complex architecture
  • Heavier dependency footprint compared to Commons

Code Comparison

Commons (Scala):

import com.twitter.util.Future

val future: Future[Int] = Future.value(42)
future.onSuccess { value =>
  println(s"The answer is $value")
}

Finagle (Scala):

import com.twitter.finagle.{Http, Service}
import com.twitter.finagle.http.{Request, Response}
import com.twitter.util.Future

val service: Service[Request, Response] = new Service[Request, Response] {
  def apply(request: Request): Future[Response] = Future.value(Response())
}
val server = Http.serve(":8080", service)

Summary

Finagle is a more specialized and actively maintained project focused on building scalable RPC systems, while Commons provides a broader set of utilities. Finagle offers more advanced features but comes with a steeper learning curve and larger dependency footprint. Commons, being more general-purpose, may be easier to integrate for simpler use cases but lacks the specialized networking capabilities of Finagle.

2,685

Wonderful reusable code from Twitter

Pros of util

  • More actively maintained with recent updates
  • Broader scope of utilities and functionality
  • Better documentation and examples

Cons of util

  • Larger codebase, potentially more complex to use
  • May include unnecessary features for some projects
  • Steeper learning curve for newcomers

Code Comparison

commons:

import com.twitter.common.base.ExceptionalSupplier
import com.twitter.common.base.MorePreconditions.checkNotBlank

val supplier = new ExceptionalSupplier[String, Exception] {
  def get() = checkNotBlank("value")
}

util:

import com.twitter.util.Future
import com.twitter.util.Try

val future = Future.value("Hello")
val result = Try(future.get())

Summary

util offers a more comprehensive set of utilities and is actively maintained, making it suitable for larger projects or those requiring a wide range of functionalities. However, commons may be preferable for simpler projects or those seeking a more lightweight solution. The choice between the two depends on the specific needs and scale of the project at hand.

A Scala API for Cascading

Pros of Scalding

  • More active development and maintenance
  • Specifically designed for Hadoop and MapReduce jobs
  • Better documentation and community support

Cons of Scalding

  • Steeper learning curve due to its domain-specific language
  • More complex setup and configuration
  • Limited to Scala programming language

Code Comparison

Commons (Java):

List<String> result = Lists.newArrayList(
  Iterables.filter(input, new Predicate<String>() {
    public boolean apply(String s) {
      return s.length() > 5;
    }
  })
);

Scalding (Scala):

val result = input
  .filter { _.length > 5 }
  .toList

Summary

Commons is a general-purpose Java library with utility classes, while Scalding is a Scala DSL for writing MapReduce jobs. Scalding offers more specialized functionality for big data processing but is limited to Scala. Commons provides broader utility but may require more boilerplate code. The choice between them depends on the specific project requirements and team expertise.

13,024

Build highly concurrent, distributed, and resilient message-driven applications on the JVM

Pros of Akka

  • More active development with frequent updates and releases
  • Comprehensive actor-based concurrency model for building distributed systems
  • Extensive documentation and community support

Cons of Akka

  • Steeper learning curve due to its complex architecture
  • Heavier resource usage compared to lighter-weight libraries
  • Potential overkill for simpler applications not requiring distributed systems

Code Comparison

Akka (Scala):

import akka.actor.{Actor, ActorSystem, Props}

class HelloActor extends Actor {
  def receive = {
    case "hello" => println("Hello, Akka!")
  }
}

Commons (Java):

import com.twitter.util.Future;

public class HelloFuture {
  public static Future<String> sayHello() {
    return Future.value("Hello, Commons!");
  }
}

Summary

Akka is a powerful toolkit for building distributed, concurrent, and resilient applications, particularly suited for complex systems. It offers a robust actor model and extensive features but may be overkill for simpler projects. Commons, on the other hand, provides a set of utility libraries that are lighter-weight and easier to integrate into existing projects. The choice between the two depends on the specific requirements of your application, with Akka being more suitable for large-scale distributed systems and Commons for general-purpose utility needs.

12,136

Apache ZooKeeper

Pros of Zookeeper

  • Active development with regular updates and releases
  • Extensive documentation and community support
  • Widely adopted in industry for distributed coordination

Cons of Zookeeper

  • More complex setup and configuration
  • Higher resource requirements for deployment
  • Steeper learning curve for new users

Code Comparison

Commons:

public final class Duration implements Comparable<Duration> {
  public static final Duration ZERO = new Duration(0L);
  private final long millis;
  public Duration(long millis) { this.millis = millis; }
  // ...
}

Zookeeper:

public class ZooKeeper implements AutoCloseable {
  public ZooKeeper(String connectString, int sessionTimeout, Watcher watcher) throws IOException {
    this(connectString, sessionTimeout, watcher, false);
  }
  // ...
}

Summary

Commons is a lightweight utility library for Java, while Zookeeper is a robust distributed coordination service. Commons offers simple, reusable components for common programming tasks, whereas Zookeeper provides a more comprehensive solution for managing distributed systems. The code comparison shows Commons' focus on basic utility classes, while Zookeeper's code reflects its distributed nature and connection handling capabilities.

33,257

Netty project - an event-driven asynchronous network application framework

Pros of Netty

  • More active development with frequent updates and releases
  • Broader scope as a networking framework, supporting various protocols
  • Larger community and ecosystem with extensive documentation

Cons of Netty

  • Steeper learning curve due to its comprehensive feature set
  • Higher complexity, which may be overkill for simpler networking tasks
  • Requires more configuration and setup compared to Commons

Code Comparison

Commons (Java):

Future<Response> response = HttpClient.fetchUrl(url)
  .withTimeout(Duration.ofSeconds(5))
  .execute();

Netty (Java):

Bootstrap b = new Bootstrap();
b.group(group)
 .channel(NioSocketChannel.class)
 .handler(new HttpClientInitializer());
ChannelFuture f = b.connect(host, port).sync();

Summary

Netty is a more comprehensive networking framework with a wider range of features and protocols supported. It offers better performance and scalability for complex networking applications. Commons, on the other hand, provides a simpler and more focused set of utilities for common tasks, making it easier to use for basic networking operations.

While Netty excels in building high-performance network applications, Commons may be more suitable for projects that require straightforward HTTP client functionality or other common utilities without the need for advanced networking capabilities.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

This collection of libraries is deprecated. Users should migrate to other libraries.