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

Merge master into 3.x #2881

Merged
merged 73 commits into from
Nov 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
abf63b9
Merge pull request #2813 from briannesbitt/feature/clock
kylekatarnls Jun 23, 2023
c3f2eb7
Clone DateTime not to mutate them on construction
kylekatarnls Jul 7, 2023
075ee12
Merge pull request #2819 from briannesbitt/fix/issue-2818-timezone-mu…
kylekatarnls Jul 11, 2023
936a216
Exclude locale from getSetting() if set by default
kylekatarnls Jul 11, 2023
6a69c97
Fix test time-sensitivity
kylekatarnls Jul 11, 2023
7ce9ddc
Merge pull request #2822 from briannesbitt/fix/issue-2820-locale-in-s…
kylekatarnls Jul 11, 2023
7bba4ba
Make createFromFormat work the same with mocked time
kylekatarnls Jul 11, 2023
e198336
Check Laravel compatibility using v10
kylekatarnls Jul 12, 2023
eeb761b
Merge pull request #2823 from briannesbitt/fix/issue-2821-create-from…
kylekatarnls Jul 12, 2023
d475a41
Change before Malay translation to "sebelum"
kylekatarnls Jul 20, 2023
f4df5c0
Fix PHP 8.3 compatibility
kylekatarnls Jul 23, 2023
0dfb27d
Merge pull request #2825 from briannesbitt/fix/issue-2824-ms-before
kylekatarnls Jul 23, 2023
db00256
Fix dual for month in Slovenian language
alesf Aug 2, 2023
dcc7564
Use mesecema in tests
kylekatarnls Aug 3, 2023
2e80358
Use mesecema in tests
kylekatarnls Aug 3, 2023
4308217
Merge pull request #2829 from alesf/patch-1
kylekatarnls Aug 3, 2023
028ef2a
Update sponsor link
kylekatarnls Aug 9, 2023
898df68
Fix linting job names
kylekatarnls Aug 19, 2023
61efaa8
Allow to create/change period interval using milliseconds() or micros…
kylekatarnls Aug 23, 2023
91bb419
Use env var to pass composer cache config in GitHub Actions (#2837)
Chris53897 Aug 25, 2023
edff2f2
Allow float in interval units
kylekatarnls Aug 26, 2023
0244137
Merge pull request #2838 from briannesbitt/feature/microseconds-perio…
kylekatarnls Aug 26, 2023
a82c83e
Update Date.php
nicko170 Aug 30, 2023
c03d433
Merge pull request #2840 from nicko170/master
kylekatarnls Aug 30, 2023
f050836
chore: fix ci deprecation for codecov, fix coverage filename for Code…
Chris8934 Aug 30, 2023
671f385
Update .github/workflows/tests.yml
Chris53897 Sep 1, 2023
d5155e3
chore: fix ci deprecation for codecov, fix coverage filename for Code…
Chris8934 Sep 1, 2023
0099ea8
Merge pull request #2842 from Chris53897/fix/ci-deprecation-for-codecov
kylekatarnls Sep 1, 2023
cb107f8
Handle decimal part from interval unit setters
kylekatarnls Aug 26, 2023
6dbaba3
Add tests and PHPDoc
kylekatarnls Sep 7, 2023
d3298b3
Merge pull request #2839 from briannesbitt/feature/microseconds-perio…
kylekatarnls Sep 7, 2023
fd589a3
Create dependabot.yml
juherr Sep 11, 2023
35030f1
FIX: UnknownGetterException error on $this->timezone and $this->date …
Sep 19, 2023
b57d4cb
Allow to set options at least one per construction
kylekatarnls Sep 20, 2023
0a802d6
FIX: UnknownGetterException error on $this->timezone and $this->date …
Sep 20, 2023
c76853a
Shorten isset() condition
kylekatarnls Sep 20, 2023
522f812
Merge pull request #2854 from briannesbitt/feature/issue-2853-period-…
kylekatarnls Sep 20, 2023
7a68c46
Merge pull request #2852 from gjespo85/master
kylekatarnls Sep 21, 2023
d5007ed
Add var_export support for CarbonInterval
hettiger Sep 23, 2023
bedc8b9
Fix PHP 7 compatibility
kylekatarnls Sep 23, 2023
d23bb33
Fix PHP >= 8.1 deprecation
kylekatarnls Sep 23, 2023
8f4a735
Update backers
kylekatarnls Sep 25, 2023
9827623
Merge pull request #2857 from hettiger/feature/var-export-support-on-…
kylekatarnls Sep 25, 2023
4d06802
Externalize doctrine types
kylekatarnls Oct 1, 2023
0398c6b
Condition test by dbal version
kylekatarnls Oct 1, 2023
2a52c0d
Support doctrine/orm 3
kylekatarnls Oct 1, 2023
38d2ac5
Merge pull request #2859 from kylekatarnls/feature/dbal-compatibility
kylekatarnls Oct 1, 2023
e176258
Update sponsors
kylekatarnls Oct 3, 2023
dc9e613
Merge pull request #2848 from juherr/patch-1
kylekatarnls Oct 3, 2023
9255ba8
Merge branch 'master' of github.com:briannesbitt/Carbon
kylekatarnls Oct 3, 2023
b867b00
Bump actions/checkout from 3 to 4
dependabot[bot] Oct 3, 2023
55351ce
Use YAML quote-less string syntax
kylekatarnls Oct 3, 2023
ff4985e
Merge pull request #2862 from briannesbitt/dependabot/github_actions/…
kylekatarnls Oct 3, 2023
1309c42
Cleanup PHPDoc
kylekatarnls Oct 3, 2023
e60a4a7
Merge pull request #2864 from briannesbitt/doc/phpdoc-style
kylekatarnls Oct 3, 2023
c3dad06
Update GitHub sponsors
kylekatarnls Oct 11, 2023
ab853f0
Update OpenCollective sponsors
kylekatarnls Oct 11, 2023
04869fb
fix slovak translations
s4muel Oct 19, 2023
60047a5
apply suggestions to optimize and fix the regex
s4muel Oct 20, 2023
177cbcd
Update src/Carbon/Lang/sk.php
s4muel Oct 20, 2023
b02302e
Merge pull request #2872 from s4muel/fix-slovak-translations
kylekatarnls Oct 20, 2023
b434ded
Update sponsors
kylekatarnls Nov 2, 2023
f7305a1
Fix readme icon sizing
kylekatarnls Nov 2, 2023
77eb7b3
Fine-tuning on logo display rules on the README
kylekatarnls Nov 2, 2023
f0dcc1c
Narrow phpstan types in assertInstanceOf* AbstractTestCase methods
staabm Nov 4, 2023
93f36e7
Merge pull request #2879 from staabm/phpstan
kylekatarnls Nov 4, 2023
c6c308a
Merge branch 'master' of github.com:briannesbitt/Carbon into 3.x-merge
kylekatarnls Nov 12, 2023
8cdc677
Update PHPStan exceptions
kylekatarnls Nov 12, 2023
90420ea
Fix tests
kylekatarnls Nov 12, 2023
f37d3c2
Use relevant class to synchronize CarbonPeriod mock with Carbon and C…
kylekatarnls Nov 18, 2023
9051283
Merge pull request #2884 from briannesbitt/feature/carbon-period-date…
kylekatarnls Nov 18, 2023
96d7882
Merge branch 'master' of github.com:briannesbitt/Carbon into 3.x-merge
kylekatarnls Nov 18, 2023
1175d7d
Allow Symfony 7
kylekatarnls Nov 18, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 2
updates:
- package-ecosystem: composer
directory: /
schedule:
interval: weekly

- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
4 changes: 2 additions & 2 deletions .github/workflows/phpcs.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Linting
name: PHP-CS-Fixer

on: [ pull_request, push ]

Expand All @@ -10,7 +10,7 @@ jobs:

steps:
- name: Checkout the code
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Check for code style violation with PHP-CS-Fixer
uses: OskarStark/[email protected]
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/phpmd.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Linting
name: PHPMD

on: [ pull_request, push ]

Expand All @@ -16,7 +16,7 @@ jobs:

steps:
- name: Checkout the code
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/phpstan.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Linting
name: PHPStan

on: [ pull_request, push ]

Expand All @@ -16,7 +16,7 @@ jobs:

steps:
- name: Checkout the code
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
Expand Down
47 changes: 23 additions & 24 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,6 @@ jobs:
- php: 8.1
setup: lowest

- php: 8.1
laravel: true
reference: 9.x

- php: 8.2
- php: 8.2
setup: lowest
Expand All @@ -54,20 +50,20 @@ jobs:

- php: 8.1
laravel: true
reference: 9.x
reference: 10.x

- php: 8.1
laravel: true
reference: 9.x
reference: 10.x
classmap-authoritative: true

- php: 8.2
laravel: true
reference: 9.x
reference: master

- php: 8.2
laravel: true
reference: 9.x
reference: master
classmap-authoritative: true

- php: 8.2
Expand All @@ -77,7 +73,7 @@ jobs:

steps:
- name: Checkout the code
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
Expand All @@ -86,7 +82,7 @@ jobs:
extensions: json, msgpack${{ matrix.laravel && ', dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, gd, redis-phpredis/[email protected], igbinary, msgpack, lzf, zstd, lz4, memcached, gmp' || '' }}
ini-values: error_reporting=${{ (matrix.setup != 'lowest') && '32767' || '8191' }}
tools: composer:v2
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
coverage: ${{ matrix.coverage && 'pcov' || 'none' }}
env:
REDIS_CONFIGURE_OPTS: --enable-redis --enable-redis-igbinary --enable-redis-msgpack --enable-redis-lzf --with-liblzf --enable-redis-zstd --with-libzstd --enable-redis-lz4 --with-liblz4
REDIS_LIBS: liblz4-dev, liblzf-dev, libzstd-dev
Expand All @@ -97,26 +93,27 @@ jobs:
sudo apt-get install tzdata locales -y && sudo locale-gen fr_FR.UTF-8 sr_ME.UTF-8 ar_AE.UTF-8 zh_TW.UTF-8 zh_CN.UTF-8 yo_NG.UTF-8 en_US.UTF-8 || echo 'Apt failure ignored'

- name: Set Minimum PHP 8.1 Versions
uses: nick-invision/retry@v1
uses: nick-invision/retry@v2
with:
timeout_minutes: 5
max_attempts: 5
command: composer require ramsey/collection:^1.2 brick/math:^0.9.3 --no-interaction --no-update
if: matrix.laravel

- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
id: composer-cache-ubuntu
run: echo "dir=$(composer config cache-files-dir)" > $GITHUB_OUTPUT

- name: Cache composer dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: "php-${{ matrix.php }}-{{ matrix.setup }}-ubuntu-${{ hashFiles('**/composer.json') }}"
restore-keys: "php-${{ matrix.php }}-{{ matrix.setup }}-ubuntu-${{ hashFiles('**/composer.json') }}"
path: ${{ steps.composer-cache-ubuntu.outputs.dir }}
key: "php-${{ matrix.php }}-${{ matrix.setup }}-ubuntu-${{ hashFiles('**/composer.json') }}"
restore-keys: "php-${{ matrix.php }}-${{ matrix.setup }}-ubuntu-${{ hashFiles('**/composer.json') }}"

- name: Install dependencies
uses: nick-fields/retry@v2
if: steps.composer-cache.outputs.cache-hit != 'true'
with:
timeout_minutes: 10
max_attempts: 3
Expand All @@ -128,9 +125,10 @@ jobs:
composer update --prefer-dist --no-progress --prefer-${{ matrix.setup || 'stable' }} ${{ matrix.classmap-authoritative && '--classmap-authoritative' || '' }}${{ matrix.php >= 8.2 && ' --ignore-platform-reqs' || '' }};

- name: Run test suite
continue-on-error: ${{ matrix.laravel || 'false' }}
run: |
if [[ "${{ matrix.laravel }}" != 'true' && "${{ matrix.coverage }}" = 'true' ]]; then
php -d memory_limit=-1 -d zend.enable_gc=0 -d error_reporting=-1 vendor/phpunit/phpunit/phpunit --coverage-clover=coverage.xml --coverage-text;
php -d memory_limit=-1 -d zend.enable_gc=0 -d error_reporting=-1 vendor/phpunit/phpunit/phpunit --coverage-clover=clover.xml --coverage-text;
fi;
if [[ "${{ matrix.laravel }}" != 'true' && "${{ matrix.coverage }}" != 'true' ]]; then
php -d memory_limit=-1 -d zend.enable_gc=0 -d error_reporting=-1 vendor/phpunit/phpunit/phpunit;
Expand All @@ -156,7 +154,7 @@ jobs:
continue-on-error: true

- name: Coverage
uses: codecov/codecov-action@v1
uses: codecov/codecov-action@v3
if: matrix.coverage

windows:
Expand All @@ -182,7 +180,7 @@ jobs:

steps:
- name: Checkout the code
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
Expand All @@ -193,15 +191,16 @@ jobs:
coverage: none

- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
id: composer-cache-windows
shell: bash
run: echo "dir=$(composer config cache-files-dir)" > $GITHUB_OUTPUT

- name: Cache composer dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: "php-${{ matrix.php }}-{{ matrix.setup }}-windows-${{ hashFiles('**/composer.json') }}"
restore-keys: "php-${{ matrix.php }}-{{ matrix.setup }}-windows-${{ hashFiles('**/composer.json') }}"
path: ${{ steps.composer-cache-windows.outputs.dir }}
key: "php-${{ matrix.php }}-${{ matrix.setup }}-windows-${{ hashFiles('**/composer.json') }}"
restore-keys: "php-${{ matrix.php }}-${{ matrix.setup }}-windows-${{ hashFiles('**/composer.json') }}"

- name: Install dependencies
uses: nick-fields/retry@v2
Expand Down
7 changes: 4 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,15 @@
"require": {
"php": "^8.1",
"ext-json": "*",
"carbonphp/carbon-doctrine-types": "*",
"psr/clock": "^1.0",
"symfony/clock": "^6.3",
"symfony/polyfill-mbstring": "^1.0",
"symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0"
"symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0"
},
"require-dev": {
"doctrine/dbal": "^3.6.3",
"doctrine/orm": "^2.15.2",
"doctrine/dbal": "^3.6.3 || ^4.0",
"doctrine/orm": "^2.15.2 || ^3.0",
"friendsofphp/php-cs-fixer": "^3.18.0",
"kylekatarnls/multi-tester": "^2.2.0",
"ondrejmirtes/better-reflection": "^6.11.0.0",
Expand Down
10 changes: 3 additions & 7 deletions phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,16 @@ parameters:
- '#^Call to an undefined method Carbon\\Carbon(Interface|Immutable)?::(super|noThis|toAppTz|copyWithAppTz)\(\)\.$#'
- '#^Call to an undefined method Carbon\\CarbonInterval::(multiply|andAgain|copyAndAgain)\(\)\.$#'
- '#^Call to an undefined method Carbon\\CarbonPeriod::(oneMoreDay|copyOneMoreDay|endNextDay)\(\)\.$#'
- '#^Call to an undefined method DateTimeInterface::setTimezone\(\)\.$#'
- '#should return (\S*)(static|\$this)\(Carbon\\Carbon\)(\|null)? but returns Carbon\\Carbon(Interface)?(\|null)?\.$#'
- '#should return (\S*)(static|\$this)\(Carbon\\CarbonImmutable\)(\|null)? but returns Carbon\\Carbon(Immutable|Interface)(\|null)?\.$#'
- '#should return (\S*)(static|\$this)\(Carbon\\CarbonInterval\)(\|null)? but returns Carbon\\CarbonInterval(\|null)?\.$#'
- '#should return (\S*)\$this\(Carbon\\CarbonInterval\) but returns static\(Carbon\\CarbonInterval\)\.$#'
- '#should return (\S*)\$this\(Carbon\\CarbonInterval\)(\|null)? but returns static\(Carbon\\CarbonInterval\)(\|null)?\.$#'
- '#should return (\S*)static\(Carbon\\CarbonInterval\)(\|null)? but returns Carbon\\CarbonInterval(\|null)?\.$#'
- '#^PHPDoc tag @return with type Carbon\\CarbonTimeZone is not subtype of native type static\(Carbon\\CarbonTimeZone\)\.$#'
- '#^PHPDoc tag @mixin contains invalid type Carbon\\Traits\\DeprecatedProperties\.$#'
- '#^Access to an undefined property DatePeriod::\$include_end_date\.$#'
- '#^Call to an undefined method DatePeriod::[a-zA-Z]+\(\)\.$#'
- '#^Call to an undefined method DateInterval::(spec|optimize)\(\)\.$#'
- '#^Method class@anonymous/tests/Carbon/TestingAidsTest\.php:\d+::modify\(\) should return class@anonymous/tests/Carbon/TestingAidsTest\.php:\d+ but returns \(DateTimeImmutable\|false\)\.$#'
-
message: '#^Result of method Symfony\\Contracts\\Translation\\LocaleAwareInterface::setLocale\(\) \(void\) is used\.$#'
paths:
- src/Carbon/Traits/Localization.php
-
message: '#^Undefined variable: \$this$#'
paths:
Expand Down Expand Up @@ -77,3 +72,4 @@ parameters:
- '*/tests/CarbonPeriod/Fixtures/filters.php'
- '*/tests/Fixtures/dynamicInterval.php'
- '*/tests/PHPStan/*.php'
- '*/tests/PHPUnit/AssertObjectHasPropertyPolyfillTrait.php'
9 changes: 6 additions & 3 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,19 +124,22 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
<a title="Casino-portugal.pt" href="https://casino-portugal.pt/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="Casino-portugal.pt" src="https://logo.clearbit.com/casino-portugal.pt" width="64" height="64"></a>
<a title="Slots City® ➢ Лучшее лицензионно казино онлайн и оффлайн на гривны в Украине. 【 Более1500 игровых автоматов и слотов】✅ Официально и Безопасно" href="https://slotscity.ua/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="Slots City" src="https://opencollective-production.s3.us-west-1.amazonaws.com/d7e298c0-7abe-11ed-8553-230872f5e54d.png" width="90" height="64"></a>
<a title="Znajdź najlepsze zakłady bukmacherskie w Polsce w 2023 roku. Probukmacher.pl to Twoje kompendium wiedzy na temat bukmacherów!" href="https://www.probukmacher.pl?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="Probukmacher" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/caf50271-4560-4ffe-a434-ea15239168db/Screenshot_1.png" width="89" height="64"></a>
<a title="Gives a fun for our users" href="https://slotoking.ua?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="Игровые автоматы" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/94601d07-3205-4c60-9c2d-9b8194dbefb7/skg-blue.png" width="64" height="64"></a>
<a title="Gives a fun for our users" href="https://slotoking.ua/games/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="Игровые автоматы" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/94601d07-3205-4c60-9c2d-9b8194dbefb7/skg-blue.png" width="64" height="64"></a>
<a title="Онлайн казино 777 Україна" href="https://777.ua/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="Онлайн казино" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/7e572d50-1ce8-4d69-ae12-86cc80371373/ok-ua-777.png" width="64" height="64"></a>
<a title="inkedin" href="https://inkedin.com?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="inkedin" src="https://logo.clearbit.com/inkedin.com" width="64" height="64"></a>
<a title="Актуальний та повносправний рейтинг онлайн казино України, ґрунтований на відгуках реальних гравців." href="https://uk.onlinecasino.kyiv.ua/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="Онлайн казино України" src="https://opencollective-production.s3.us-west-1.amazonaws.com/c0b4b090-eef8-11ec-9cb7-0527a205b226.png" width="64" height="64"></a>
<a title="Актуальний та повносправний рейтинг онлайн казино України, ґрунтований на відгуках реальних гравців." href="https://uk.onlinecasino.in.ua/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="Онлайн казино України" src="https://opencollective-production.s3.us-west-1.amazonaws.com/c0b4b090-eef8-11ec-9cb7-0527a205b226.png" width="64" height="64"></a>
<a title="A self-hosted web radio management suite, including turnkey installer tools and an easy-to-use web app to manage your stations. " href="https://azuracast.com?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="AzuraCast" src="https://opencollective-production.s3.us-west-1.amazonaws.com/3c12ea10-cdfb-11eb-9cf4-3760b386b76d.png" width="64" height="64"></a>
<a title="Triplebyte is the first software engineering job platform that is on the developer&#039;s side. Take our coding quiz!" href="https://triplebyte.com/os/opencollective?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="Triplebyte" src="https://opencollective-production.s3.us-west-1.amazonaws.com/43e4f9d0-30cd-11ea-9c6b-e1142996e8b2.png" width="64" height="64"></a>
<a title="Chudovo - international software development company with representative offices in Kyiv, Cologne, New York, Tallinn and London. It has been working on the market since 2006. Company has domain expertise in video security, logistics, medicine, finance and" href="https://chudovo.com/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="Chudovo" src="https://opencollective-production.s3.us-west-1.amazonaws.com/326c19a0-2e87-11eb-a13a-c99a2a201d11.png" width="128" height="64"></a>
<a title="Connect your Collective to GitHub Sponsors: https://docs.opencollective.com/help/collectives/github-sponsors" href="https://github.com/sponsors/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="GitHub Sponsors" src="https://opencollective-production.s3.us-west-1.amazonaws.com/87b1d240-f617-11ea-9960-fd7e8ab20fe4.png" width="73" height="64"></a>
<a title="Salesforce" href="https://engineering.salesforce.com?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank" rel="sponsored"><img alt="Salesforce" src="https://opencollective-production.s3.us-west-1.amazonaws.com/24d34880-df8d-11e9-949c-6bc2037b6bd5.png" width="64" height="64"></a>
<!-- </open-collective-sponsors> -->

[[Become a sponsor via OpenCollective](https://opencollective.com/Carbon#sponsor)]

<a href="https://github.com/taylorotwell" target="_blank"><img src="https://avatars.githubusercontent.com/u/463230?s=128&v=4" width="64" height="64"></a>
<a href="https://github.com/usefathom" target="_blank"><img src="https://avatars.githubusercontent.com/u/38684088?s=128&v=4" width="64" height="64"></a>
<a href="https://github.com/codecov" target="_blank"><img src="https://avatars.githubusercontent.com/u/8226205?s=128&v=4" width="64" height="64"></a>
<a href="https://github.com/getsentry" target="_blank"><img src="https://avatars.githubusercontent.com/u/1396951?s=128&v=4" width="64" height="64"></a>

[[Become a sponsor via GitHub](https://github.com/sponsors/kylekatarnls)]

Expand Down
Loading
Loading