Skip to main content

Pythonic cffi port of libtcod.

Project description

Status

VersionsBadge ImplementationBadge LicenseBadge

PyPI Documentation Status Appveyor Travis Coveralls Codecov Codacy

Requirements Status Updates

About

This is a Python cffi port of libtcod.

This library is hosted on GitHub.

Any issues you have with this module can be reported at the GitHub issue tracker.

Usage

This module was designed to be backward compatible with the original libtcodpy module distributed with libtcod. If you had code that runs on libtcodpy then you can use this library as a drop-in replacement. This installs a libtcodpy module so you’ll only need to delete the libtcodpy/ folder that’s usually bundled in an older libtcodpy project.

Guides and Tutorials for libtcodpy should work with the tcod module.

The latest documentation can be found here.

Installation

The recommended way to install is by using pip. Older versions of pip will have issues installing tcod, so make sure it’s up-to-date.

Windows / MacOS

To install using pip, use the following command:

> python -m pip install tcod

If you get the error “ImportError: DLL load failed: The specified module could not be found.” when trying to import tcod/tdl then you may need the latest Microsoft Visual C runtime.

Linux

On Linux python-tcod will need to be built from source. Assuming you have Python, pip, and apt-get, then you’ll run these commands to install python-tcod and its dependencies to your user environment:

$ sudo apt-get install gcc python-dev python3-dev libsdl2-dev libffi-dev libomp5
$ pip2 install tcod
$ pip3 install tcod

Requirements

  • Python 3.5+

  • Windows, Linux, or MacOS X 10.9+.

  • On Linux, requires libsdl2 (2.0.5+) and libomp5 to run.

License

python-tcod is distributed under the Simplified 2-clause FreeBSD license.

Changelog

Changes relevant for users of the the tdl and tcod packages are documented here.

This project adheres to Semantic Versioning since v2.0.0

8.3.0 - 2018-12-08

Added
  • Added BSP traversal methods in tcod.bsp for parity with libtcodpy.

Deprecated
  • Already deprecated bsp functions are now even more deprecated.

8.2.0 - 2018-11-27

Added
  • New layout tcod.FONT_LAYOUT_CP437.

Changed
  • Updated libtcod to 1.10.2

  • tcod.console_print_frame and Console.print_frame now support Unicode strings.

Deprecated
  • Deprecated using bytes strings for all printing functions.

Fixed
  • Console objects are now initialized with spaces. This fixes some blit operations.

  • Unicode code-points above U+FFFF will now work on all platforms.

8.1.1 - 2018-11-16

Fixed
  • Printing a frame with an empty string no longer displays a title bar.

8.1.0 - 2018-11-15

Changed
  • Heightmap functions now support ‘F_CONTIGUOUS’ arrays.

  • tcod.heightmap_new now has an order parameter.

  • Updated SDL to 2.0.9

Deprecated
  • Deprecated heightmap functions which sample noise grids, this can be done using the Noise.sample_ogrid method.

8.0.0 - 2018-11-02

Changed
  • The default renderer can now be anything if not set manually.

  • Better error message for when a font file isn’t found.

7.0.1 - 2018-10-27

Fixed
  • Building from source was failing because console_2tris.glsl* was missing from source distributions.

7.0.0 - 2018-10-25

Added
  • New RENDERER_SDL2 and RENDERER_OPENGL2 renderers.

Changed
  • Updated libtcod to 1.9.0

  • Now requires SDL 2.0.5, which is not trivially installable on Ubuntu 16.04 LTS.

Removed
  • Dropped support for Python versions before 3.5

  • Dropped support for MacOS versions before 10.9 Mavericks.

6.0.7 - 2018-10-24

Fixed
  • The root console no longer loses track of buffers and console defaults on a renderer change.

6.0.6 - 2018-10-01

Fixed
  • Replaced missing wheels for older and 32-bit versions of MacOS.

6.0.5 - 2018-09-28

Fixed
  • Resolved CDefError error during source installs.

6.0.4 - 2018-09-11

Fixed
  • tcod.Key right-hand modifiers are now set independently at initialization, instead of mirroring the left-hand modifier value.

6.0.3 - 2018-09-05

Fixed
  • tcod.Key and tcod.Mouse no longer ignore initiation parameters.

6.0.2 - 2018-08-28

Fixed
  • Fixed color constants missing at build-time.

6.0.1 - 2018-08-24

Fixed
  • Source distributions were missing C++ source files.

6.0.0 - 2018-08-23

Changed
  • Project renamed to tcod on PyPI.

Deprecated
  • Passing bytes strings to libtcodpy print functions is deprecated.

Fixed
  • Fixed libtcodpy print functions not accepting bytes strings.

  • libtcod constants are now generated at build-time fixing static analysis tools.

5.0.1 - 2018-07-08

Fixed
  • tdl.event no longer crashes with StopIteration on Python 3.7

5.0.0 - 2018-07-05

Changed
  • tcod.path: all classes now use shape instead of width and height.

  • tcod.path now respects NumPy array shape, instead of assuming that arrays need to be transposed from C memory order. From now on x and y mean 1st and 2nd axis. This doesn’t affect non-NumPy code.

  • tcod.path now has full support of non-contiguous memory.

4.6.1 - 2018-06-30

Added
  • New function tcod.line_where for indexing NumPy arrays using a Bresenham line.

Deprecated
  • Python 2.7 support will be dropped in the near future.

4.5.2 - 2018-06-29

Added
  • New wheels for Python3.7 on Windows.

Fixed
  • Arrays from tcod.heightmap_new are now properly zeroed out.

4.5.1 - 2018-06-23

Deprecated
  • Deprecated all libtcodpy map functions.

Fixed
  • tcod.map_copy could break the tcod.map.Map class.

  • tcod.map_clear transparent and walkable parameters were reversed.

  • When multiple SDL2 headers were installed, the wrong ones would be used when the library is built.

  • Fails to build via pip unless Numpy is installed first.

4.5.0 - 2018-06-12

Changed
  • Updated libtcod to v1.7.0

  • Updated SDL to v2.0.8

  • Error messages when failing to create an SDL window should be a less vague.

  • You no longer need to initialize libtcod before you can print to an off-screen console.

Fixed
  • Avoid crashes if the root console has a character code higher than expected.

Removed
  • No more debug output when loading fonts.

4.4.0 - 2018-05-02

Added
  • Added the libtcodpy module as an alias for tcod. Actual use of it is deprecated, it exists primarily for backward compatibility.

  • Adding missing libtcodpy functions console_has_mouse_focus and console_is_active.

Changed
  • Updated libtcod to v1.6.6

4.3.2 - 2018-03-18

Deprecated
  • Deprecated the use of falsy console parameters with libtcodpy functions.

Fixed
  • Fixed libtcodpy image functions not supporting falsy console parameters.

  • Fixed tdl Window.get_char method. (Kaczor2704)

4.3.1 - 2018-03-07

Fixed
  • Fixed cffi.api.FFIError “unsupported expression: expected a simple numeric constant” error when building on platforms with an older cffi module and newer SDL headers.

  • tcod/tdl Map and Console objects were not saving stride data when pickled.

4.3.0 - 2018-02-01

Added
  • You can now set the numpy memory order on tcod.console.Console, tcod.map.Map, and tdl.map.Map objects well as from the tcod.console_init_root function.

Changed
  • The console_init_root title parameter is now optional.

Fixed
  • OpenGL renderer alpha blending is now consistent with all other render modes.

4.2.3 - 2018-01-06

Fixed
  • Fixed setup.py regression that could prevent building outside of the git repository.

4.2.2 - 2018-01-06

Fixed
  • The Windows dynamic linker will now prefer the bundled version of SDL. This fixes: “ImportError: DLL load failed: The specified procedure could not be found.”

  • key.c is no longer set when key.vk == KEY_TEXT, this fixes a regression which was causing events to be heard twice in the libtcod/Python tutorial.

4.2.0 - 2018-01-02

Changed
  • Updated libtcod backend to v1.6.4

  • Updated SDL to v2.0.7 for Windows/MacOS.

Removed
Fixed
  • Fixed “final link failed: Nonrepresentable section on output” error when compiling for Linux.

  • tcod.console_init_root defaults to the SDL renderer, other renderers cause issues with mouse movement events.

4.1.1 - 2017-11-02

Fixed
  • Fixed ConsoleBuffer.blit regression.

  • Console defaults corrected, the root console’s blend mode and alignment is the default value for newly made Console’s.

  • You can give a byte string as a filename to load parsers.

4.1.0 - 2017-07-19

Added
  • tdl Map class can now be pickled.

Changed
  • Added protection to the transparent, walkable, and fov attributes in tcod and tdl Map classes, to prevent them from being accidentally overridden.

  • tcod and tdl Map classes now use numpy arrays as their attributes.

4.0.1 - 2017-07-12

Fixed
  • tdl: Fixed NameError in set_fps.

4.0.0 - 2017-07-08

Changed
  • tcod.bsp: BSP.split_recursive parameter random is now seed.

  • tcod.console: Console.blit parameters have been rearranged. Most of the parameters are now optional.

  • tcod.noise: Noise.__init__ parameter rand is now named seed.

  • tdl: Changed set_fps paramter name to fps.

Fixed
  • tcod.bsp: Corrected spelling of max_vertical_ratio.

3.2.0 - 2017-07-04

Changed
  • Merged libtcod-cffi dependency with TDL.

Fixed
  • Fixed boolean related crashes with Key ‘text’ events.

  • tdl.noise: Fixed crash when given a negative seed. As well as cases where an instance could lose its seed being pickled.

3.1.0 - 2017-05-28

Added
  • You can now pass tdl Console instances as parameters to libtcod-cffi functions expecting a tcod Console.

Changed
  • Dependencies updated: libtcod-cffi>=2.5.0,<3

  • The Console.tcod_console attribute is being renamed to Console.console_c.

Deprecated
  • The tdl.noise and tdl.map modules will be deprecated in the future.

Fixed
  • Resolved crash-on-exit issues for Windows platforms.

3.0.2 - 2017-04-13

Changed
  • Dependencies updated: libtcod-cffi>=2.4.3,<3

  • You can now create Console instances before a call to tdl.init.

Removed
  • Dropped support for Python 3.3

Fixed
  • Resolved issues with MacOS builds.

  • ‘OpenGL’ and ‘GLSL’ renderers work again.

3.0.1 - 2017-03-22

Changed
  • KeyEvent’s with text now have all their modifier keys set to False.

Fixed
  • Undefined behaviour in text events caused crashes on 32-bit builds.

3.0.0 - 2017-03-21

Added
  • KeyEvent supports libtcod text and meta keys.

Changed
  • KeyEvent parameters have been moved.

  • This version requires libtcod-cffi>=2.3.0.

Deprecated
  • KeyEvent camel capped attribute names are deprecated.

Fixed
  • Crashes with key-codes undefined by libtcod.

  • tdl.map typedef issues with libtcod-cffi.

2.0.1 - 2017-02-22

Fixed
  • tdl.init renderer was defaulted to OpenGL which is not supported in the current version of libtcod.

2.0.0 - 2017-02-15

Changed
  • Dependencies updated, tdl now requires libtcod-cffi 2.x.x

  • Some event behaviours have changed with SDL2, event keys might be different than what you expect.

Removed
  • Key repeat functions were removed from SDL2. set_key_repeat is now stubbed, and does nothing.

1.6.0 - 2016-11-18

  • Console.blit methods can now take fg_alpha and bg_alpha parameters.

1.5.3 - 2016-06-04

  • set_font no longer crashes when loading a file without the implied font size in its name

1.5.2 - 2016-03-11

  • Fixed non-square Map instances

1.5.1 - 2015-12-20

  • Fixed errors with Unicode and non-Unicode literals on Python 2

  • Fixed attribute error in compute_fov

1.5.0 - 2015-07-13

  • python-tdl distributions are now universal builds

  • New Map class

  • map.bresenham now returns a list

  • This release will require libtcod-cffi v0.2.3 or later

1.4.0 - 2015-06-22

  • The DLL’s have been moved into another library which you can find at https://github.com/HexDecimal/libtcod-cffi You can use this library to have some raw access to libtcod if you want. Plus it can be used alongside TDL.

  • The libtocd console objects in Console instances have been made public.

  • Added tdl.event.wait function. This function can called with a timeout and can automatically call tdl.flush.

1.3.1 - 2015-06-19

  • Fixed pathfinding regressions.

1.3.0 - 2015-06-19

  • Updated backend to use python-cffi instead of ctypes. This gives decent boost to speed in CPython and a drastic to boost in speed in PyPy.

1.2.0 - 2015-06-06

  • The set_colors method now changes the default colors used by the draw_* methods. You can use Python’s Ellipsis to explicitly select default colors this way.

  • Functions and Methods renamed to match Python’s style-guide PEP 8, the old function names still exist and are depreciated.

  • The fgcolor and bgcolor parameters have been shortened to fg and bg.

1.1.7 - 2015-03-19

  • Noise generator now seeds properly.

  • The OS event queue will now be handled during a call to tdl.flush. This prevents a common newbie programmer hang where events are handled infrequently during long animations, simulations, or early development.

  • Fixed a major bug that would cause a crash in later versions of Python 3

1.1.6 - 2014-06-27

  • Fixed a race condition when importing on some platforms.

  • Fixed a type issue with quickFOV on Linux.

  • Added a bresenham function to the tdl.map module.

1.1.5 - 2013-11-10

  • A for loop can iterate over all coordinates of a Console.

  • drawStr can be configured to scroll or raise an error.

  • You can now configure or disable key repeating with tdl.event.setKeyRepeat

  • Typewriter class removed, use a Window instance for the same functionality.

  • setColors method fixed.

1.1.4 - 2013-03-06

  • Merged the Typewriter and MetaConsole classes, You now have a virtual cursor with Console and Window objects.

  • Fixed the clear method on the Window class.

  • Fixed screenshot function.

  • Fixed some drawing operations with unchanging backgrounds.

  • Instances of Console and Noise can be pickled and copied.

  • Added KeyEvent.keychar

  • Fixed event.keyWait, and now converts window closed events into Alt+F4.

1.1.3 - 2012-12-17

  • Some of the setFont parameters were incorrectly labeled and documented.

  • setFont can auto-detect tilesets if the font sizes are in the filenames.

  • Added some X11 unicode tilesets, including unifont.

1.1.2 - 2012-12-13

  • Window title now defaults to the running scripts filename.

  • Fixed incorrect deltaTime for App.update

  • App will no longer call tdl.flush on its own, you’ll need to call this yourself.

  • tdl.noise module added.

  • clear method now defaults to black on black.

1.1.1 - 2012-12-05

  • Map submodule added with AStar class and quickFOV function.

  • New Typewriter class.

  • Most console functions can use Python-style negative indexes now.

  • New App.runOnce method.

  • Rectangle geometry is less strict.

1.1.0 - 2012-10-04

  • KeyEvent.keyname is now KeyEvent.key

  • MouseButtonEvent.button now behaves like KeyEvent.keyname does.

  • event.App class added.

  • Drawing methods no longer have a default for the character parameter.

  • KeyEvent.ctrl is now KeyEvent.control

1.0.8 - 2010-04-07

  • No longer works in Python 2.5 but now works in 3.x and has been partly tested.

  • Many bug fixes.

1.0.5 - 2010-04-06

  • Got rid of setuptools dependency, this will make it much more compatible with Python 3.x

  • Fixed a typo with the MacOS library import.

1.0.4 - 2010-04-06

  • All constant colors (C_*) have been removed, they may be put back in later.

  • Made some type assertion failures show the value they received to help in general debugging. Still working on it.

  • Added MacOS and 64-bit Linux support.

1.0.0 - 2009-01-31

  • First public release.

Project details


Release history Release notifications | RSS feed

This version

8.3.0

Download files

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

Source Distribution

tcod-8.3.0.tar.gz (732.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tcod-8.3.0-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

tcod-8.3.0-cp37-cp37m-win32.whl (916.8 kB view details)

Uploaded CPython 3.7mWindows x86

tcod-8.3.0-cp36-cp36m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.6mWindows x86-64

tcod-8.3.0-cp36-cp36m-win32.whl (916.8 kB view details)

Uploaded CPython 3.6mWindows x86

tcod-8.3.0-cp35-cp35m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.5mWindows x86-64

tcod-8.3.0-cp35-cp35m-win32.whl (916.8 kB view details)

Uploaded CPython 3.5mWindows x86

tcod-8.3.0-cp35-abi3-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.5+macOS 10.9+ x86-64

File details

Details for the file tcod-8.3.0.tar.gz.

File metadata

  • Download URL: tcod-8.3.0.tar.gz
  • Upload date:
  • Size: 732.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.5.4

File hashes

Hashes for tcod-8.3.0.tar.gz
Algorithm Hash digest
SHA256 8ad3b43061eeb2ffbdbbfe9ad4674cebb674505d5dba020342a5a679db676260
MD5 df03dd60b9972b560bfdd41239ec90c7
BLAKE2b-256 9f5ffcc1ae83fa412aad3751338dea70f0eb9b7575e84921b700c5aec5bcf08c

See more details on using hashes here.

File details

Details for the file tcod-8.3.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: tcod-8.3.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.0

File hashes

Hashes for tcod-8.3.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 b1a670a1fbb894533fc2e5c6a014e6ee12d7843e20996a44ac536cebbf57b8d1
MD5 bf5b7a5136c3401c727ae7ae6799208c
BLAKE2b-256 6f9909f0565a9804937f5219c4ab9bade4f4ade3dc3f043a2d53c03ad11bfb22

See more details on using hashes here.

File details

Details for the file tcod-8.3.0-cp37-cp37m-win32.whl.

File metadata

  • Download URL: tcod-8.3.0-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 916.8 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.0

File hashes

Hashes for tcod-8.3.0-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 f10a5bab2469c1116e8a259d0868a29ab5709f3c0065fae40d64abc2cb9f8960
MD5 2578c6aa7fab0b7948c7bc16abb3581e
BLAKE2b-256 799970c41eaa3dbe6ca4d2853e93181b2ba21b966b90527b6f1468fb0b8babaf

See more details on using hashes here.

File details

Details for the file tcod-8.3.0-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: tcod-8.3.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for tcod-8.3.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 fc291fed945b9a31f6e54a9bccdd46feec56cb4866926a3648ed209eaf882f0b
MD5 7272adb71bcbe334a9441baa33e62a78
BLAKE2b-256 4fb2ef21f2f621dbeff6d1ed9fd151d67be816ba5d651f9457bba7796f160703

See more details on using hashes here.

File details

Details for the file tcod-8.3.0-cp36-cp36m-win32.whl.

File metadata

  • Download URL: tcod-8.3.0-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 916.8 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for tcod-8.3.0-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 0d0582d05f7f6dc5d057119ebe5a8d494ace124a60218391fc64cbebb0a403a4
MD5 6ddf1340ec118df08ad1792f35c9d6e7
BLAKE2b-256 28ea5cdabe31465953a5fc2c8b05b51b2fceaca2d0339c30d4a532ce6f8ffecd

See more details on using hashes here.

File details

Details for the file tcod-8.3.0-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: tcod-8.3.0-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.5.4

File hashes

Hashes for tcod-8.3.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 65fbe8adbef0b1567091d147a33bfe93e3ff07d031fb926d33916388710804ae
MD5 3eecce98a72142c6191b7f69f1b2f009
BLAKE2b-256 6e256c20eb332796c43c295579c93e5858093bdc5c37eb2d10ef5c923b812636

See more details on using hashes here.

File details

Details for the file tcod-8.3.0-cp35-cp35m-win32.whl.

File metadata

  • Download URL: tcod-8.3.0-cp35-cp35m-win32.whl
  • Upload date:
  • Size: 916.8 kB
  • Tags: CPython 3.5m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.5.4

File hashes

Hashes for tcod-8.3.0-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 53c0c2038b8febc8e6f6e12c5300897936cef517369ba2ca1cbb84e0992bff99
MD5 17ae9fa4f7f57521579d79fd7cef728a
BLAKE2b-256 10796c2d0440a734656ebe8e0b2976355baa45147b620b7d823304417bcb4794

See more details on using hashes here.

File details

Details for the file tcod-8.3.0-cp35-abi3-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: tcod-8.3.0-cp35-abi3-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.5+, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for tcod-8.3.0-cp35-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 86b0c6f06d16dd1f6f97c6a9e33e54d4f44c1b43ccae8ea308de2f8a25afd204
MD5 4a9507fa5b279d9a4502056c59d59383
BLAKE2b-256 d78200f823597ff23b675e9ce36594adef7827646bfc0713202ccbcf98d70369

See more details on using hashes here.

Supported by

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