Skip to main content

A small & fast following/followers database.

Project description

friendlydb is a small & fast following/followers database written in Python. It can be either used directly from your Python code or over HTTP with small web API.

FriendlyDB isn’t meant to be a full user system; it should be used to augment an existing system to track relationships.

Usage

Using FriendlyDB from Python looks like:

from friendlydb.db import FriendlyDB

# Give Friendly a directory to work in.
fdb = FriendlyDB('/usr/data/friendly')

# Grab a user by their username.
daniel = fdb['daniel']

# Follow a couple users.
daniel.follow('alice')
daniel.follow('bob')
daniel.follow('joe')

# Check the following.
daniel.following()
# Returns:
# [
#     'alice',
#     'bob',
#     'joe',
# ]

# Check joe's followers.
fdb['joe'].followers()
# Returns:
# [
#     'daniel',
# ]

# Unfollow.
daniel.unfollow('bob')

# Check the following.
daniel.following()
# Returns:
# [
#     'alice',
#     'joe',
# ]

# Dust off & nuke everything from orbit.
fdb.clear()

Using FriendlyDB from HTTP looks like:

Coming soon.

Requirements

  • Python 2.6+

  • (Optional) gevent for the HTTP server

  • (Optional) unittest2 for running tests

Installation

Using pip, you can install it with pip install friendlydb.

Performance

You can scope out FriendlyDB’s performance for yourself by running the included benchmark.py script.

In tests on a 2011 MacBook Pro (i7), the benchmark script demonstrated:

  • created 1,000,000 relationships between 10,000 users: 7.3 minutes

  • avg time to fetch a user’s followers: 0.0008 seconds

  • never exceeding 40Mb of RAM RSS

Running Tests

friendlydb is maintained with passing tests at all times. Simply run:

python -m unittest2 tests

Contributions

In order for a contribution to be considered for merging, it must meet the following requirements:

  • Patch cleanly solves the problem

  • Added test coverage (now passing) to expose the bug & check for regression

  • If the behavior affects end-users, there must be docs on the changes

  • The patch/tests must be compatibly licensed with New BSD

The best way to submit contributions is by forking the project on Github, applying your changes on a new branch, pushing those changes back to GH & submitting a pull request through the GitHub interface.

License

New BSD license.

author:

Daniel Lindsley

version:

0.2.2

date:

2012-01-06

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

friendlydb-0.2.2.tar.gz (5.9 kB view details)

Uploaded Source

File details

Details for the file friendlydb-0.2.2.tar.gz.

File metadata

  • Download URL: friendlydb-0.2.2.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for friendlydb-0.2.2.tar.gz
Algorithm Hash digest
SHA256 416b3941f45d6444134622f41bf6ae5a84537c800af6e2b64bc66e839b792434
MD5 02fbf3399e98a3d1e8137068849e6ad2
BLAKE2b-256 ad2b9db4bcdd6aaac268a0d50e74bcf9d2fe0b35439c400afc8d74fef16cf5e0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page