Skip to main content

Turkish Suffix Library is a function for you to make suffixes according the Turkish grammatic rulues.

Project description

Turkish Suffix Library is a Turkish Suffix generator which changes nouns into ablative, genetice, locative, dative, acusative cases and possessive affix.

Installation:

pip: pip install turkish-suffix-library

manuel: python setup.py install

Quick start

Add “tr_sufix” to your INSTALLED_APPS setting like this:

INSTALLED_APPS = (
    ...
    'tr_suffix',
)

  Quick start
  -----------

  import tr_suffix



  Usage:
  ---------------

  Don't forget to put utf8 on top of the view:

        #-*- coding: utf-8 -*-

        import tr_suffix

        print (tr_suffix.makeInfinitive(sample_verb))
        print (tr_suffix.makeInfinitive(sample_verb, { "negative": True} ))

        print (tr_suffix.unifyVerbs(sample_verb, {"auxiliary": "bil", "negative": False}))
        print (tr_suffix.unifyVerbs(sample_verb, {"auxiliary": "bil", "negative": True}))

        print (tr_suffix.makeCommand(sample_verb, { "person": 2 }))
        print (tr_suffix.makeCommand(sample_verb, { "person": 3 }))
        print (tr_suffix.makeCommand(sample_verb, { "question": True, "person": 3 }))
        print (tr_suffix.makeCommand(sample_verb, { "person": 2, "quantity": "plural" }))
        print (tr_suffix.makeCommand(sample_verb, { "person": 2, "quantity": "plural", "formal": True }))
        print (tr_suffix.makeCommand(sample_verb, { "person": 3, "quantity": "plural" }))
        print (tr_suffix.makeCommand(sample_verb, { "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makeCommand(sample_verb, { "negative": True, "person": 2 }))
        print (tr_suffix.makeCommand(sample_verb, { "negative": True, "person": 3 }))
        print (tr_suffix.makeCommand(sample_verb, { "negative": True, "question": True, "person": 3 }))
        print (tr_suffix.makeCommand(sample_verb, { "negative": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makeCommand(sample_verb, { "negative": True, "person": 2, "quantity": "plural", "formal": True }))
        print (tr_suffix.makeCommand(sample_verb, { "negative": True, "person": 3, "quantity": "plural" }))
        print (tr_suffix.makeCommand(sample_verb, { "negative": True, "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePresentContinuous(sample_verb, { "person": 1 }), " > I am %s(ing)" % english)
        print (tr_suffix.makePresentContinuous(sample_verb, { "person": 2 }), " > You %s(ing)" % english)
        print (tr_suffix.makePresentContinuous(sample_verb, { "person": 3 }), " > He/She/It %s(ing)" % english)
        print (tr_suffix.makePresentContinuous(sample_verb, { "person": 1, "quantity": "plural" }), " > We are %s(ing)" % english)
        print (tr_suffix.makePresentContinuous(sample_verb, { "person": 2, "quantity": "plural" }), " > They %s(ing)" % english)
        print (tr_suffix.makePresentContinuous(sample_verb, { "person": 3, "quantity": "plural" }), " > We are %s(ing)" % english)

        print (tr_suffix.makePresentContinuous(sample_verb, { "question": True, "person": 1 }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "question": True, "person": 2 }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "question": True, "person": 3 }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePresentContinuous(sample_verb, { "negative": True, "person": 1 }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "negative": True, "person": 2 }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "negative": True, "person": 3 }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "negative": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "negative": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "negative": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePresentContinuous(sample_verb, { "negative": True, "question": True, "person": 1 }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "negative": True, "question": True, "person": 2 }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "negative": True, "question": True, "person": 3 }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "negative": True, "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "negative": True, "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous(sample_verb, { "negative": True, "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePresentContinuous2(sample_verb, { "person": 1 }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "person": 2 }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "person": 3 }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePresentContinuous2(sample_verb, { "question": True, "person": 1 }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "question": True, "person": 2 }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "question": True, "person": 3 }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePresentContinuous2(sample_verb, { "negative": True, "person": 1 }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "negative": True, "person": 2 }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "negative": True, "person": 3 }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "negative": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "negative": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "negative": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePresentContinuous2(sample_verb, { "negative": True, "question": True, "person": 1 }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "negative": True, "question": True, "person": 2 }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "negative": True, "question": True, "person": 3 }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "negative": True, "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "negative": True, "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePresentContinuous2(sample_verb, { "negative": True, "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makeFuture(sample_verb, { "person": 1 }))
        print (tr_suffix.makeFuture(sample_verb, { "person": 2 }))
        print (tr_suffix.makeFuture(sample_verb, { "person": 3 }))
        print (tr_suffix.makeFuture(sample_verb, { "person": 1, "quantity": "plural" }))
        print (tr_suffix.makeFuture(sample_verb, { "person": 2, "quantity": "plural" }))
        print (tr_suffix.makeFuture(sample_verb, { "person": 3, "quantity": "plural" }))

        print (tr_suffix.makeFuture(sample_verb, { "question": True, "person": 1 }))
        print (tr_suffix.makeFuture(sample_verb, { "question": True, "person": 2 }))
        print (tr_suffix.makeFuture(sample_verb, { "question": True, "person": 3 }))
        print (tr_suffix.makeFuture(sample_verb, { "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makeFuture(sample_verb, { "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makeFuture(sample_verb, { "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makeFuture(sample_verb, { "negative": True, "person": 1 }))
        print (tr_suffix.makeFuture(sample_verb, { "negative": True, "person": 2 }))
        print (tr_suffix.makeFuture(sample_verb, { "negative": True, "person": 3 }))
        print (tr_suffix.makeFuture(sample_verb, { "negative": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makeFuture(sample_verb, { "negative": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makeFuture(sample_verb, { "negative": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makeFuture(sample_verb, { "negative": True, "question": True, "person": 1}))
        print (tr_suffix.makeFuture(sample_verb, { "negative": True, "question": True, "person": 2}))
        print (tr_suffix.makeFuture(sample_verb, { "negative": True, "question": True, "person": 3}))
        print (tr_suffix.makeFuture(sample_verb, { "negative": True, "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makeFuture(sample_verb, { "negative": True, "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makeFuture(sample_verb, { "negative": True, "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePresentSimple(sample_verb, { "person": 1 }))
        print (tr_suffix.makePresentSimple(sample_verb, { "person": 2 }))
        print (tr_suffix.makePresentSimple(sample_verb, { "person": 3 }))
        print (tr_suffix.makePresentSimple(sample_verb, { "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePresentSimple(sample_verb, { "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePresentSimple(sample_verb, { "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePresentSimple(sample_verb, { "question": True, "person": 1 }))
        print (tr_suffix.makePresentSimple(sample_verb, { "question": True, "person": 2 }))
        print (tr_suffix.makePresentSimple(sample_verb, { "question": True, "person": 3 }))
        print (tr_suffix.makePresentSimple(sample_verb, { "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePresentSimple(sample_verb, { "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePresentSimple(sample_verb, { "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePresentSimple(sample_verb, { "negative": True, "person": 1 }))
        print (tr_suffix.makePresentSimple(sample_verb, { "negative": True, "person": 2 }))
        print (tr_suffix.makePresentSimple(sample_verb, { "negative": True, "person": 3 }))
        print (tr_suffix.makePresentSimple(sample_verb, { "negative": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePresentSimple(sample_verb, { "negative": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePresentSimple(sample_verb, { "negative": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePresentSimple(sample_verb, { "negative": True, "question": True, "person": 1 }))
        print (tr_suffix.makePresentSimple(sample_verb, { "negative": True, "question": True, "person": 2 }))
        print (tr_suffix.makePresentSimple(sample_verb, { "negative": True, "question": True, "person": 3 }))
        print (tr_suffix.makePresentSimple(sample_verb, { "negative": True, "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePresentSimple(sample_verb, { "negative": True, "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePresentSimple(sample_verb, { "negative": True, "question": True, "person": 3, "quantity": "plural" }))


        print (tr_suffix.makePast(sample_verb, { "person": 1 }))
        print (tr_suffix.makePast(sample_verb, { "person": 2 }))
        print (tr_suffix.makePast(sample_verb, { "person": 3 }))
        print (tr_suffix.makePast(sample_verb, { "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePast(sample_verb, { "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePast(sample_verb, { "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePast(sample_verb, { "question": True, "person": 1 }))
        print (tr_suffix.makePast(sample_verb, { "question": True, "person": 2 }))
        print (tr_suffix.makePast(sample_verb, { "question": True, "person": 3 }))
        print (tr_suffix.makePast(sample_verb, { "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePast(sample_verb, { "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePast(sample_verb, { "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePast(sample_verb, { "negative": True, "person": 1 }))
        print (tr_suffix.makePast(sample_verb, { "negative": True, "person": 2 }))
        print (tr_suffix.makePast(sample_verb, { "negative": True, "person": 3 }))
        print (tr_suffix.makePast(sample_verb, { "negative": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePast(sample_verb, { "negative": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePast(sample_verb, { "negative": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePast(sample_verb, { "negative": True, "question": True, "person": 1 }))
        print (tr_suffix.makePast(sample_verb, { "negative": True, "question": True, "person": 2 }))
        print (tr_suffix.makePast(sample_verb, { "negative": True, "question": True, "person": 3 }))
        print (tr_suffix.makePast(sample_verb, { "negative": True, "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePast(sample_verb, { "negative": True, "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePast(sample_verb, { "negative": True, "question": True, "person": 3, "quantity": "plural" }))


        print (tr_suffix.makePastPerfect(sample_verb, { "person": 1 }))
        print (tr_suffix.makePastPerfect(sample_verb, { "person": 2 }))
        print (tr_suffix.makePastPerfect(sample_verb, { "person": 3 }))
        print (tr_suffix.makePastPerfect(sample_verb, { "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePastPerfect(sample_verb, { "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePastPerfect(sample_verb, { "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePastPerfect(sample_verb, { "question": True, "person": 1 }))
        print (tr_suffix.makePastPerfect(sample_verb, { "question": True, "person": 2 }))
        print (tr_suffix.makePastPerfect(sample_verb, { "question": True, "person": 3 }))
        print (tr_suffix.makePastPerfect(sample_verb, { "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePastPerfect(sample_verb, { "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePastPerfect(sample_verb, { "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePastPerfect(sample_verb, { "negative": True, "person": 1 }))
        print (tr_suffix.makePastPerfect(sample_verb, { "negative": True, "person": 2 }))
        print (tr_suffix.makePastPerfect(sample_verb, { "negative": True, "person": 3 }))
        print (tr_suffix.makePastPerfect(sample_verb, { "negative": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePastPerfect(sample_verb, { "negative": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePastPerfect(sample_verb, { "negative": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePastPerfect(sample_verb, { "negative": True, "question": True, "person": 1 }))
        print (tr_suffix.makePastPerfect(sample_verb, { "negative": True, "question": True, "person": 2 }))
        print (tr_suffix.makePastPerfect(sample_verb, { "negative": True, "question": True, "person": 3 }))
        print (tr_suffix.makePastPerfect(sample_verb, { "negative": True, "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePastPerfect(sample_verb, { "negative": True, "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePastPerfect(sample_verb, { "negative": True, "question": True, "person": 3, "quantity": "plural" }))


        print (tr_suffix.makePastPastPerfect(sample_verb, { "person": 1 }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "person": 2 }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "person": 3 }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePastPastPerfect(sample_verb, { "question": True, "person": 1 }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "question": True, "person": 2 }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "question": True, "person": 3 }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePastPastPerfect(sample_verb, { "negative": True, "person": 1 }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "negative": True, "person": 2 }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "negative": True, "person": 3 }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "negative": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "negative": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "negative": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePastPastPerfect(sample_verb, { "negative": True, "question": True, "person": 1 }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "negative": True, "question": True, "person": 2 }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "negative": True, "question": True, "person": 3 }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "negative": True, "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "negative": True, "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePastPastPerfect(sample_verb, { "negative": True, "question": True, "person": 3, "quantity": "plural" }))


        print (tr_suffix.makePastPerfectFuture(sample_verb, { "person": 1 }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "person": 2 }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "person": 3 }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePastPerfectFuture(sample_verb, { "question": True, "person": 1 }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "question": True, "person": 2 }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "question": True, "person": 3 }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePastPerfectFuture(sample_verb, { "negative": True, "person": 1 }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "negative": True, "person": 2 }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "negative": True, "person": 3 }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "negative": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "negative": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "negative": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makePastPerfectFuture(sample_verb, { "negative": True, "question": True, "person": 1 }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "negative": True, "question": True, "person": 2 }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "negative": True, "question": True, "person": 3 }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "negative": True, "question": True, "person": 1, "quantity": "plural" }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "negative": True, "question": True, "person": 2, "quantity": "plural" }))
        print (tr_suffix.makePastPerfectFuture(sample_verb, { "negative": True, "question": True, "person": 3, "quantity": "plural" }))

        print (tr_suffix.makeGenitive(u"araba"))
        print (tr_suffix.makeDative("araba"))
        print (tr_suffix.makeAblative("araba"))
        print (tr_suffix.makeAccusative(u"araba"))

        print (tr_suffix.makeGenitive(u"Cem", { "proper_noun": True} ))
        print (tr_suffix.makeDative("Cem", { "proper_noun": True} ))
        print (tr_suffix.makeAblative("Cem", { "proper_noun": True} ))
        print (tr_suffix.makeAccusative(u"Cem", { "proper_noun": True} ))


        print (tr_suffix.possessiveAffix("çanta", {"person": 1, "quantity": "singular"}))
        print (tr_suffix.possessiveAffix("çanta", {"person": 2, "quantity": "singular"}))
        print (tr_suffix.possessiveAffix("çanta", {"person": 3, "quantity": "singular"}))

        print (tr_suffix.possessiveAffix("çanta", {"person": 1, "quantity": "plural"}))
        print (tr_suffix.possessiveAffix("çanta", {"person": 2, "quantity": "plural"}))
        print (tr_suffix.possessiveAffix("çanta", {"person": 3, "quantity": "plural"}))

Project details


Release history Release notifications

This version
History Node

0.2.0

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
turkish-suffix-library-0.2.0.tar.gz (10.7 kB) Copy SHA256 hash SHA256 Source None Jan 20, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page