Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix pre-auth behavior #2

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Commits on Oct 14, 2024

  1. CI: Install python3-build & add --break-system-packages for Localstripe

    GitHub is rolling out `ubuntu-24.04` as the new `ubuntu-latest` on GitHub
    Actions[^1]. Previously it was `ubuntu-22.04`.
    
    There are many small breaking changes that people are complaining about in
    this update[^2].
    
    Localstripe is impacted by the fact that `pip` now fails on installing a paquet
    system-wide with the following error:
    
    ```
    error: externally-managed-environment
    
    × This environment is externally managed
    ╰─> To install Python packages system-wide, try apt install
        python3-xyz, where xyz is the package you are trying to
        install.
    
        If you wish to install a non-Debian-packaged Python package,
        create a virtual environment using python3 -m venv path/to/venv.
        Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
        sure you have python3-full installed.
    
        If you wish to install a non-Debian packaged Python application,
        it may be easiest to use pipx install xyz, which will manage a
        virtual environment for you. Make sure you have pipx installed.
    
        See /usr/share/doc/python3.12/README.venv for more information.
    ```
    
    There are multiple solutions to this as proposed in the error message:
    
    - Use `sudo apt install python3-...`
    - Use a venv with `python -m venv venv`
    - Use a venv with `pipx`
    - Use the `pip` option `--break-system-packages`
    - Use `ubuntu-22.04` instead of `ubuntu-latest`
    
    For the package `build`, `python3-build` exists, so let's use it. For
    `localstripe-*.tar.gz`, as we already are in an isolated container where
    breaking Python is meaningless, and as there is nothing in that container that
    might actually break when we install Localstripe, let's just use the option
    `--break-system-packages`.
    
    After this commit, the CI works again with `ubuntu-latest`.
    
    [^1]: https://github.blog/changelog/2024-09-25-actions-new-images-and-ubuntu-latest-changes/
    [^2]: actions/runner-images#10636
    H--o-l committed Oct 14, 2024
    Configuration menu
    Copy the full SHA
    1ad01ad View commit details
    Browse the repository at this point in the history
  2. Fix pre-auth behavior

    Before this change we were erroneously marking pre-auth'd charges as
    status=pending, when they're actually status=succeeded. We were (accidentally)
    working around this incorrect behavior in pre-auth'd PaymentIntents.
    
    To get this right we have to actually split the _trigger_payment method into
    two: a check for payment authorization (which we do on construction even for
    Charges created with capture=false), and a separate routine to actually capture
    the charge (which we do on construction for non-pre-auth'd charges, and on
    _api_capture for pre-auth'd charges). We also split the
    PaymentIntent._api_confirm method into two for more control of error handling.
    We then adjust the PaymentIntent wrapper to fit.
    
    This also fixes a tiny mistake in the Charge refund test; it was asserting the
    wrong variable.
    Ben Creech committed Oct 14, 2024
    Configuration menu
    Copy the full SHA
    17269d9 View commit details
    Browse the repository at this point in the history