Ballcone is a fast and lightweight server-side Web analytics solution.

Overview

Ballcone

Ballcone is a fast and lightweight server-side Web analytics solution. It requires no JavaScript on your website.

GitHub Tests Docker Hub

Screenshots

Ballcone

Ballcone: petrovich

Design Goals

  • Simplicity. Ballcone requires almost zero set-up as it prefers convention over configuration
  • Efficiency. Ballcone performs lightning-fast analytic queries over data thanks to the underlying columnar database
  • Specificity. Ballcone aims at providing visual insights on the HTTP access logs with no bloat

Features

  • No JavaScript snippets required
  • GeoIP mapping with the GeoLite2 database
  • Extraction of platform and browser information from User-Agent

Architecture

Ballcone captures the access_log entries exported in JSON by nginx via the bundled syslog logger (65140/udp). These entries are stored in the embedded MonetDBLite database. Ballcone uses it to perform data manipulation and analytic queries. Also, Ballcone provides a convenient Web interface (8080/tcp) for accessing and observing the gathered data.

          +-----------+            +------------+
   HTTP   |           |   syslog   |            |   HTTP
<-------->+   nginx   +----------->+  Ballcone  +<-------->
          |           |    JSON    |            |
          +-----------+            +------------+
                                   |MonetDB-Lite|
                                   +------------+

For better performance, Ballcone inserts data in batches, committing them to MonetDBLite every few seconds (five seconds by default).

Requirements

Demo

This repository contains an example configuration of nginx and Ballcone. Just run the container from Docker Hub or build it locally. nginx will be available at http://127.0.0.1:8888/ and Ballcone will be available at http://127.0.0.1:8080/.

docker-compose up
# or
docker run --rm -p '127.0.0.1:8888:80' -p '127.0.0.1:8080:8080' dustalov/ballcone:demo

Naming and Meaning

Ballcone has two meanings.

First, it is the romanization of the Russian word балкон that means a balcony. You go to the balcony to breath some fresh air and look down at the things outside.

Second, if a ball is inscribed in a cone, it resembles the all-seeing eye (help wanted: dustalov/ballcone#8).

Regardless of the meaning you prefer, Ballcone helps you to watch your websites.

Installation

The simplest way to get started is to run make pipenv after cloning the repository. Just make sure Pipenv is installed.

Getting Ballcone

Running the Docker image is the simplest way to get started. Docker Hub performs automated builds of the Ballcone source code from GitHub: https://hub.docker.com/r/dustalov/ballcone. The following command runs Ballcone on 127.0.0.1: the syslog protocol will be available via 65140/udp, the Web interface will be available via 8080/tcp, and the data will be stored in the /var/lib/ballcone directory on the host machine.

docker run -p '127.0.0.1:8080:8080' -p '127.0.0.1:65140:65140/udp' -v '/var/lib/ballcone/monetdb:/usr/src/app/monetdb' --restart=unless-stopped dustalov/ballcone ballcone -sh '0.0.0.0' -wh '0.0.0.0'

However, Docker is not the only option. Alternatively, Ballcone can be packaged into a standalone executable using PyInstaller and runned as a systemd service (see ballcone.service as an example):

make pyinstaller
sudo make install-systemd
sudo systemctl start ballcone

Finally, Ballcone can be installed directly on the host machine for manual runs:

pip3 install -e git+https://github.com/dustalov/ballcone@master#egg=ballcone

Note that ballcone without arguments creates the monetdb directory inside the current directory.

Configuring nginx

You need to define the JSON-compatible log format for your service in the nginx configuration file. Let us call it ballcone_json_example. This format is similar to the one used in Matomo (see matomo-log-analytics). It should be put before the server context.

log_format ballcone_json_example escape=json
    '{'
    '"service": "example", '
    '"ip": "$remote_addr", '
    '"host": "$host", '
    '"path": "$request_uri", '
    '"status": "$status", '
    '"referrer": "$http_referer", '
    '"user_agent": "$http_user_agent", '
    '"length": $bytes_sent, '
    '"generation_time_milli": $request_time, '
    '"date": "$time_iso8601"'
    '}';

Then, you should put this access_log directive inside the server context to transfer logs via the syslog protocol.

access_log syslog:server=127.0.0.1:65140 ballcone_json_example;

Please look at the complete example of nginx configuration in demo/nginx.conf.

Roadmap

Roadmap is available at https://github.com/dustalov/ballcone/issues.

Alternatives

Copyright

Copyright © 2020 Dmitry Ustalov. See LICENSE for details.

Comments
  • Wish: Support more than a months of data

    Wish: Support more than a months of data

    Ballcone is neat and clean, but I find limiting that only the last month (in the graph) or the last 7 days (in the text) seems to be able to be seen. This prevents the visualization of longer-duration trends. Is this purely a UI limitation, or is it to keep the database small?

    enhancement 
    opened by stephanemagnenat 4
  • Bump pyinstaller from 5.3 to 5.4.1

    Bump pyinstaller from 5.3 to 5.4.1

    Bumps pyinstaller from 5.3 to 5.4.1.

    Release notes

    Sourced from pyinstaller's releases.

    v5.4.1

    Please see the v5.4.1 section of the changelog for a list of the changes since v5.4.

    v5.4

    Please see the v5.4 section of the changelog for a list of the changes since v5.3.

    Changelog

    Sourced from pyinstaller's changelog.

    5.4.1 (2022-09-11)

    Bugfix

    
    * (Windows) Fix run-time error raised by ``pyi_rth_win32comgenpy``, the
      run-time
      hook for ``win32com``. (:issue:`7079`)
    

    5.4 (2022-09-10)

    Features

    • (Windows) When collecting a DLL that was discovered via link-time dependency analysis of a collected binary/extension, attempt to preserve its parent directory structure instead of collecting it into application's top-level directory. This aims to preserve the parent directory structure of DLLs bundled with python packages in PyPI wheels, while the DLLs collected from system directories (as well as from Library\bin directory of the Anaconda's environment) are still collected into top-level application directory. (:issue:7028)
    • Add support for setuptools-provided distutils, available since setuptools >= 60.0. (:issue:7075)
    • Implement a generic file filtering decision function for use in hooks, based on the source filename and optional inclusion and exclusion pattern list (:func:PyInstaller.utils.hooks.include_or_exclude_file). (:issue:7040)
    • Rework the module exclusion mechanism. The excluded module entries, specified via excludedimports list in the hooks, are now used to suppress module imports from corresponding nodes during modulegraph construction, rather than to remove the nodes from the graph as a post-processing step. This should make the module exclusion more robust, but the main benefit is that we avoid running (potentially many and potentially costly) hooks for modules that would end up excluded anyway. (:issue:7066)

    Bugfix

    
    * (Windows) Attempt to extend DLL search paths with directories found in
      the `PATH` environment variable and by tracking calls to the
      `os.add_dll_directory` function during import of the packages in
      the isolated sub-process that performs the binary dependency scanning.
      (:issue:`6924`)
    * (Windows) Ensure that ANGLE DLLs (``libEGL.dll`` and ``libGLESv2.dll``)
    </tr></table> 
    

    ... (truncated)

    Commits
    • 36aa18a Release v5.4.1. [skip ci]
    • 40f40a7 hooks: fix error raised by pyi_rth_win32comgenpy
    • c44a0d4 Release v5.4. [skip ci]
    • bf2a4ad Added missing inline types for public api (#7068)
    • b80740e hooks: setuptools: avoid recursing into vendored pyparsing.diagram
    • f93dd3f hooks: fix the message in distutils pre-module-find hook
    • 3be4a49 ci: lift the ban on setuptools-provided distutils
    • 1aa357a tests: add basic setuptools import test
    • c8e18bf hooks: add support for setuptools >= 60.0
    • 3bba7d3 loader: FrozenImporter: give precedence to modified module paths
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 2
  • Bump certifi from 2022.9.24 to 2022.12.7

    Bump certifi from 2022.9.24 to 2022.12.7

    Bumps certifi from 2022.9.24 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies python 
    opened by dependabot[bot] 1
  • Bump flake8 from 5.0.4 to 6.0.0

    Bump flake8 from 5.0.4 to 6.0.0

    Bumps flake8 from 5.0.4 to 6.0.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 1
  • Bump types-python-dateutil from 2.8.19.2 to 2.8.19.4

    Bump types-python-dateutil from 2.8.19.2 to 2.8.19.4

    Bumps types-python-dateutil from 2.8.19.2 to 2.8.19.4.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 1
  • Bump mypy from 0.982 to 0.991

    Bump mypy from 0.982 to 0.991

    Bumps mypy from 0.982 to 0.991.

    Commits
    • b7788fc Update version to remove "+dev" for releasing 0.991
    • 6077d19 manually CP typeshed #9130
    • ab0ea1e Fix crash with function redefinition (#14064)
    • 592a9ce Fix another crash with report generation on namespace packages (#14063)
    • 1650ae0 Update --no-warn-no-return docs for empty body changes (#14065)
    • b9daa31 Don't ignore errors in files passed on the command line (#14060)
    • 02fd8a5 Filter out wasm32 wheel in upload-pypi.py (#14035)
    • 131c8d7 Fix crash on inference with recursive alias to recursive instance (#14038)
    • 1368338 Change version to 0.991+dev in preparation for the point release
    • b71dc3d Remove +dev from version
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 1
  • Bump types-simplejson from 3.17.7.1 to 3.18.0.0

    Bump types-simplejson from 3.17.7.1 to 3.18.0.0

    Bumps types-simplejson from 3.17.7.1 to 3.18.0.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 1
  • Bump twine from 4.0.1 to 4.0.2

    Bump twine from 4.0.1 to 4.0.2

    Bumps twine from 4.0.1 to 4.0.2.

    Release notes

    Sourced from twine's releases.

    4.0.2

    https://pypi.org/project/twine/4.0.2/

    Changelog

    Changelog

    Sourced from twine's changelog.

    Twine 4.0.2 (2022-11-30)

    Bugfixes ^^^^^^^^

    • Remove deprecated function to fix twine check with pkginfo 1.9.0. ([#941](https://github.com/pypa/twine/issues/941) <https://github.com/pypa/twine/issues/941>_)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 1
  • Bump pyinstaller from 5.6.1 to 5.6.2

    Bump pyinstaller from 5.6.1 to 5.6.2

    Bumps pyinstaller from 5.6.1 to 5.6.2.

    Release notes

    Sourced from pyinstaller's releases.

    v5.6.2

    Please see the v5.6.2 section of the changelog for a list of the changes since v5.6.1.

    Changelog

    Sourced from pyinstaller's changelog.

    5.6.2 (2022-10-31)

    Bugfix

    
    * (Linux, macOS) Fix the regression in shared library collection, where
      the shared library would end up collected under its fully-versioned
      .so name (e.g., ``libsomething.so.1.2.3``) instead of its originally
      referenced name (e.g., ``libsomething.so.1``) due to accidental
      symbolic link resolution. (:issue:`7189`)
    
    Commits
    • 09b8a1e Release v5.6.2. [skip ci]
    • 93446ff Add --log-level to spec-file command-line options.
    • 17c9d6b depend: do not resolve symlinks during dylib parent dir preservation
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 1
  • Bump build from 0.8.0 to 0.9.0

    Bump build from 0.8.0 to 0.9.0

    Bumps build from 0.8.0 to 0.9.0.

    Changelog

    Sourced from build's changelog.

    0.9.0 (2022-10-27)

    • Hide a Python 3.11.0 unavoidable warning with venv (PR [#527](https://github.com/pypa/build/issues/527)_)
    • Fix infinite recursion error in check_dependency with circular dependencies (PR [#512](https://github.com/pypa/build/issues/512), Fixes [#511](https://github.com/pypa/build/issues/511))
    • Only import colorama on Windows (PR [#494](https://github.com/pypa/build/issues/494), Fixes [#493](https://github.com/pypa/build/issues/493))
    • Flush output more often to reduce interleaved output (PR [#494](https://github.com/pypa/build/issues/494)_)
    • Small API cleanup, like better __all__ and srcdir being read only. (PR [#477](https://github.com/pypa/build/issues/477)_)
    • Only use importlib_metadata when needed (PR [#401](https://github.com/pypa/build/issues/401)_)
    • Clarify in printout when build dependencies are being installed (PR [#514](https://github.com/pypa/build/issues/514)_)

    .. _PR #401: pypa/build#401 .. _PR #477: pypa/build#477 .. _PR #494: pypa/build#494 .. _PR #512: pypa/build#512 .. _PR #514: pypa/build#514 .. _PR #527: pypa/build#527 .. _#493: pypa/build#493 .. _#511: pypa/build#511

    Commits
    • 7b002bb release 0.9.0
    • 9c60690 docs: update changelog
    • a3700d3 env: avoid warning on Windows 3.11.0
    • 3b36b6e tests: skip toml vs. tomli test on 3.11+
    • dd5ec7e tests: ignore warning from pytest-dist + pytest-cov
    • 4e7e64c ci: move to final release of 3.11
    • b1acadc main: disable colorama on Linux and flush output (#494)
    • a1de450 pre-commit: bump repositories (#524)
    • aaaf4f8 tests: better isolate test_venv_fail
    • 03f93d5 pre-commit: bump repositories
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 1
  • Bump pyinstaller from 5.5 to 5.6.1

    Bump pyinstaller from 5.5 to 5.6.1

    Bumps pyinstaller from 5.5 to 5.6.1.

    Release notes

    Sourced from pyinstaller's releases.

    v5.6.1

    Please see the v5.6.1 section of the changelog for a list of the changes since v5.6.

    v5.6

    Please see the v5.6 section of the changelog for a list of the changes since v5.5.

    Changelog

    Sourced from pyinstaller's changelog.

    5.6.1 (2022-10-25)

    Bugfix

    
    * (macOS) Fix regression in macOS app bundle signing caused by a typo made
      in :issue:`7180`. (:issue:`7184`)
    

    5.6 (2022-10-23)

    Features

    • Add official support for Python 3.11. (Note that PyInstaller v5.5 is also expected to work but has only been tested with a pre-release of Python 3.11.) (:issue:6783)
    • Implement a new hook utility function, :func:~PyInstaller.utils.hooks.collect_delvewheel_libs_directory, intended for dealing with external shared library in delvewheel-enabled PyPI wheels for Windows. (:issue:7170)

    Bugfix

    
    * (macOS) Fix OpenCV (``cv2``) loader error in generated macOS .app
      bundles, caused by the relocation of package's source .py files.
      (:issue:`7180`)
    * (Windows) Improve compatibility with ``scipy`` 1.9.2, whose Windows wheels
      switched to ``delvewheel``, and therefore have shared libraries located in
      external .libs directory. (:issue:`7168`)
    
    • (Windows) Limit the DLL parent path preservation behavior from :issue:7028 to files collected from site-packages directories (as returned by :func:site.getsitepackages and :func:site.getusersitepackages) instead of all paths in :data:sys.path, to avoid unintended behavior in corner cases, such as :data:sys.path containing the drive root or user's home directory. (:issue:7155)

    • Fix compatibility with PySide6 6.4.0, where the deprecated Qml2ImportsPath location key is not available anymore; use the new QmlImportsPath key when it is available. (:issue:7164)

    • Prevent PyInstaller runtime hook for setuptools from attempting to override distutils with setuptools-provided version when setuptools is collected and its version is lower than 60.0. This both mimics the unfrozen behavior and prevents errors on versions </tr></table>

... (truncated)

Commits
  • 780c08d Release v5.6.1. [skip ci]
  • 3b07670 tests: add basic macOS bundle signing tests
  • 39467f3 building: BUNDLE: add an option for codesign error to be fatal
  • 9a6820c Fix symlinking of data files from Resources to MacOS
  • 87578de Release v5.6. [skip ci]
  • 7b39785 Tests: Requirements: Scheduled weekly dependency update for week 43 (#7182)
  • af2cd69 depend: DLL parent path preservation: work around for pywin32
  • 69b94c0 depend: limit DLL parent path preservation to site-packages
  • 46a5950 building: BUNDLE: exempt collected .py/.pyc files from relocation
  • 64f6f8b README; Add ".. code:: bash" to code-blocks to enable GItHub's copy to clipbo...
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
dependencies python 
opened by dependabot[bot] 1
  • Idea: most popular browser as plot

    Idea: most popular browser as plot

    The most-popular browser data are hard to read, because each days are not super-well delimited. Maybe a plot would help? Associated with longer-duration data (see #103), it would be helpful in giving an idea of the browser-usage trend.

    enhancement help wanted good first issue 
    opened by stephanemagnenat 1
  • Support other Web servers

    Support other Web servers

    Although nginx is my default choice, the world is not limited just to it. Other servers, such as haproxy, also support exporting access logs via the syslog protocol, so they might be already supported, too.

    help wanted good first issue 
    opened by dustalov 0
  • Query string parsing

    Query string parsing

    nginx provides the request query string in the variable $args. Query strings can contain useful information like UTM parameters. This could be useful in analyzing the traffic sources but requires changes in the database schema and nginx log format.

    question 
    opened by dustalov 0
  • Owner
    Dmitry Ustalov
    Head of Research at @Toloka, https://toloka.ai/research
    Dmitry Ustalov
    A python package to manage the stored receiver-side Strain Green's Tensor (SGT) database of 3D background models and able to generate Green's function and synthetic waveform

    A python package to manage the stored receiver-side Strain Green's Tensor (SGT) database of 3D background models and able to generate Green's function and synthetic waveform

    Liang Ding 7 Dec 14, 2022
    Fastest Semantle solver this side of the Mississippi

    semantle Fastest Semantle solver this side of the Mississippi. Roughly 3 average turns to win Measured against (part of) the word2vec-google-news-300

    Frank Odom 8 Dec 26, 2022
    Active Transport Analytics Model: A new strategic transport modelling and data visualization framework

    {ATAM} Active Transport Analytics Model Active Transport Analytics Model (“ATAM”

    ATAM Analytics 2 Dec 21, 2022
    Audio-analytics for music-producers! Automate tedious tasks such as musical scale detection, BPM rate classification and audio file conversion.

    Click here to be re-directed to the Beat Inspect Streamlit Web-App You are a music producer? Let's get in touch via LinkedIn Fundamental Analytics for

    Stefan Rummer 11 Dec 27, 2022
    This code makes the logs provided by Fiddler proxy of the Google Analytics events coming from iOS more readable.

    GA-beautifier-iOS This code makes the logs provided by Fiddler proxy of the Google Analytics events coming from iOS more readable. To run it, create a

    Rafael Machado 3 Feb 2, 2022
    Transform a Google Drive server into a VFX pipeline ready server

    Google Drive VFX Server VFX Pipeline About The Project Quick tutorial to setup a Google Drive Server for multiple machines access, and VFX Pipeline on

    Valentin Beaumont 17 Jun 27, 2022
    Bionic is Python Framework for crafting beautiful, fast user experiences for web and is free and open source.

    Bionic is Python Framework for crafting beautiful, fast user experiences for web and is free and open source. Getting Started This is an example of ho

    null 14 Apr 10, 2022
    Sabe is a python framework written for easy web server setup.

    Sabe is a python framework written for easy web server setup. Sabe, kolay web sunucusu kurulumu için yazılmış bir python çerçevesidir. Öğrenmesi kola

    null 2 Jan 1, 2022
    A web interface for a soft serve Git server.

    Soft Serve monitor Soft Sevre is a very nice git server. It offers a really nice TUI to browse the repositories on the server. Unfortunately, it does

    Maxime Bouillot 5 Apr 26, 2022
    Tools for dos (denial-of-service) website / web server

    DoS Attack Tools Tools for dos (denial-of-service) website / web server di buat olah NurvySec How to install on debian / ubuntu $ apt update $ apt ins

    nurvy 1 Feb 10, 2022
    My solution for a MARL problem on a Grid Environment with Q-tables.

    To run the project, run: conda create --name env python=3.7 pip install -r requirements.txt python run.py To-do: Add direction to the state space Take

    Merve Noyan 12 Dec 25, 2021
    Some usefull scripts for the Nastran's 145 solution (Flutter Analysis) using the pyNastran package.

    nastran-aero-flutter This project is intended to analyse the Supersonic Panel Flutter using the NASTRAN software. The project uses the pyNastran and t

    zuckberj 11 Nov 16, 2022
    LPCV Winner Solution of Spring Team

    LPCV Winner Solution of Spring Team

    null 22 Jul 20, 2022
    Placeholders is a single-unit storage solution for your Frontend.

    Placeholder Placeholders is a single-unit file storage solution for your Frontend. Why Placeholder? Generally, when a website/service requests for fil

    Tanmoy Sen Gupta 1 Nov 9, 2021
    A simple solution for water overflow problem in Python

    Water Overflow problem There is a stack of water glasses in a form of triangle as illustrated. Each glass has a 250ml capacity. When a liquid is poure

    Kris 2 Oct 22, 2021
    WildHack 2021 solution by Nuclear Foxes team (public version).

    WildHack 2021 Nuclear Foxes Team This repo contains our project for the Wildberries Hackathon 2021. Task 2: Searching tags Implement an algorithm of r

    Sergey Zakharov 1 Apr 18, 2022
    Python solution of advent-of-code 2021

    Advent of code 2021 Python solutions of Advent of Code 2021 written by Eric Bouteillon Requirements The solutions were developed and tested using Pyth

    Eric Bouteillon 3 Oct 25, 2022
    A hackerank problems, solution repository

    This is a repository for all hackerank challenges kindly note this is for learning purposes and if you wish to contribute, dont hesitate all submision

    Tyler Mwalo Kenneth's 1 Dec 20, 2021
    AIO solution for SSIS students

    ssis.bit AIO solution for SSIS students Hardware CircuitPython supports more than 200 different boards. Locally available is the TTGO T8 ESP32-S2 ST77

    null 3 Jun 5, 2022