strictNullCheck should detect unreachable default values and code after nullish operator

Suggestion
Using strictNullCheck should allow detection of code that isn't supposed to be reached according to type analysis
🔍 Search Terms
strictNullCheck unreachble nullish default value
✅ Viability Checklist
My suggestion meets these guidelines:

[x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
[x] This feature would agree with the rest of TypeScript's Design Goals.

Yes, especially "Statically identify constructs that are likely to be errors."
⭐ Suggestion
This assumes that it is desired to detect errors with unreachable code due to type analysis (see microsoft/TypeScript-Website#1604 ).
With strictNullCheck turned on, some code that is meant to be unreachable and thus an error is not flagged.
📃 Motivating Example
The = 42 below is unreachable (playground) and is the sign that some code is likely to be an error, but nothing is flagged
class Example {
  foo({
    x = 42
  }: {
    x: number
  }) {
    return x
  }
}

Either the declaration should be changed to x?: number, or the default should be removed.
Another example (thanks to @jcalz) using the nullish operator.
function foo(x: number) { x ??= 42 }

Again, it would be helpful if an error or a warning would be raised as that code seems clearly to be a mistake.

Just wanted to say your playground link has x?: number in it instead of the expected x: number

@MrAndersen1 thanks, updated.

I can agree more on this feature. Currently, this is valid TS code:
let foo = "foo";
let bar = foo ?? 42;

bar will never be of type string | number, the compiler should return an error since foo is not of type string | null, string | undefined or string | null | undefined


Is it possible to allow gestures on both axes within a PagerView

Ask your Question

Here is a simplified code example:

const NewsFeed = ({ content }) => {
  return (
    <PagerView orientation='vertical'>
      {content.map((item) => (
        <ContentCard>
          <PagerView orientation='horizontal'>
            // y-axis gesture should be unlocked
          </PagerView>
        </ContentCard>
      ))
    </PagerView>
  )
}

I'm working on a NewsFeed interface that implements nested PagerViews
The top-level parent/view-container is a PagerView with orientation='vertical'
Some children contain a nested horizontal PagerView that acts as a content carousel
I'd like to gesture vertically while touching inside the nested PagerView component
However, I'm finding that the y-axis is locked when gesturing inside the horizontal child pager

Is there a way to unlock both gesture axes inside a pager?

I'd like to gesture vertically while touching inside the nested PagerView component

I have a similar question of how I can still scroll vertically when this is used in a ScrollView

Same here

Please check Nest pager view example in repo


BUG - UX - Incorrect padding in search result tile with no description

Related Feature
Feature request: Home page - https://github.com/SAP/guided-answers-extension/issues/89
Description
When there is no description for a Guided Answer in search results tile, the padding of the title is incorrect
Steps to Reproduce
Steps to reproduce the behavior:

Go to home page
Add the Search term 'AD SSO'
Search results are loaded
Scroll to the tile with title' AD SSO is failing....'
Padding of the Tile (H3 )is incorrect

Expected results
Search result tile is rendered with correct padding and spacing
Actual results
There is space around H3
Screenshots

Version/Components/Environment
Add any other context about the problem here
OS:

[x] Mac OS
[ ] Windows
[ ] Other

Root Cause Analysis
Problem
{describe the problem}
Fix
{describe the fix}
Why was it missed
{Some explanation why this issue might have been missed during normal development/testing cycle}
How can we avoid this
{if we don’t want to see this type of issues anymore what we should do to prevent}

FYI @gpeuc, can you please add the design for the correct padding in such a case

It's in Figma!

@gpeuc this is now fixed, can you please validate if this is ok

Ha! All good 👍


frozen: init at 1.1.1

Description of changes
frozen is "a header-only, constexpr alternative to gperf for C++14 users".
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Hi, I'm working on updating libreoffice to 7.6 and noticed that libreoffice upstream added frozen as a dependency between 7.5 and 7.6.

I believe this is a duplicate of #248326, which has been merged ~ 1 hour ago


Install aiida-gaussian-datatypes when testing the package.

This works for the tests of course, but I would combine it with #111 which gives a user running the examples also required feedback should be package not be installed.

This works for the tests of course, but I would combine it with #111 which gives a user running the examples also required feedback should be package not be installed.

go ahead. I will then test it all together.


Display number of open applications in company card

Will require changes in UI as well as have a new field in company class to track the number of open applications


Hue4.1 doesn't show logs for a running Tez application like in Hue 3

Hello Team,
Hue4.1 UI doesn't show logs on a running hive Tez application from Job browser.
Steps to reproduce the issue:
-Click on the Hive editor
-Run the following commands and click on Job browser
a.
set hive.execution.engine=mr
CREATE EXTERNAL TABLE testpk3(id INT,name STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' LOCATION 's3://mybucket/myfolder' ;
INSERT INTO TABLE testpk3 VALUES(1,'abc') ;
select distinct(id) FROM testpk3 ;

    b.
    set hive.execution.engine=tez
    CREATE EXTERNAL TABLE testpk4(id INT,name STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' LOCATION 's3://mybucket/myfolder' ;
    INSERT INTO TABLE testpk4 VALUES(1,'abc') ;
    select distinct(id) FROM testpk4 ;

any updates?

I was using Hive 2.3.2 for the above tests.
I did test this using the above properties followed by restarting hive-server2, hive-hcatalog-server on Hive 2.3.2 and Hive 2.3.3. But the There is no change in the behavior of hue console.


@AparaV Fixed! Thanks for noticing


New trainings PI and CHO need Formaldehyde training

Updated to add Zaneveld Formaldehyde training

Updated to add Zaneveld MLC training certificate

Tanya's training is now updated in Trainings. Resolved.


[doc] quick poll: who finds util/index.html useful?

I have a PR coming restructuring util/index.md and the READMEs within,
but wondering if we find the landing spot useful:
https://bubble.servers.lowrisc.org/util/
It will improve, but wondering if it really even makes sense to have this
landing spot, or just let the READMEs stand alone. We already have the
reference manuals and user guides for many of the tools.
Either way I will submit the PR to clean up with READMEs within.
Opinions?

Leaving util/index.md, it is there and has its place and job to do.


Update ECL core mapfiles and builtins

Includes minor fixes for existing signatures, notes about signatures that are not currently possible to encode, and full support for PoFV/StB instructions/variables.

Oh fuuuuuck, has it been that long since I pushed?  Core mapfile format has changed a bit

Wait.  wat. It IS up to date.


Paypal/Donations?

This project seems to have a good deal of work put into it, and I haven't had the time to submit code. I don't wan't to take advantage of your ongoing efforts without you getting anything in return.

Don't worry you are not taking advantage at all. I made 4scanner open source so people could use it!     :)  The issues you opened also helped make 4scanner more robust. But donation is very appreciated for sure if you feel like my work is worth it! If you decide to donate my paypal account is<EMAIL_ADDRESS>

Got it.


fix(cache): do not force stop mux if packet eof.

Codecov Report

Merging #172 into develop will increase coverage by 0.34%.
The diff coverage is 59.09%.

@@             Coverage Diff             @@
##           develop     #172      +/-   ##
===========================================
+ Coverage    69.68%   70.02%   +0.34%
===========================================
  Files          203      203
  Lines        10947    10950       +3
===========================================
+ Hits          7628     7668      +40
+ Misses        3319     3282      -37

Impacted Files
Coverage Δ

framework/cacheModule/cache/CacheFileRemuxer.h
100.00% <ø> (ø)

framework/cacheModule/CacheModule.cpp
66.37% <50.00%> (-0.29%)
:arrow_down:

framework/cacheModule/cache/CacheFileRemuxer.cpp
48.00% <60.00%> (-1.59%)
:arrow_down:

mediaPlayer/media_packet_queue.cpp
68.00% <0.00%> (-8.00%)
:arrow_down:

mediaPlayer/system_refer_clock.cpp
91.66% <0.00%> (-4.17%)
:arrow_down:

framework/filter/ffmpegAudioFilter.cpp
81.46% <0.00%> (-0.98%)
:arrow_down:

mediaPlayer/buffer_controller.cpp
55.08% <0.00%> (-0.85%)
:arrow_down:

framework/render/audio/filterAudioRender.cpp
85.80% <0.00%> (-0.65%)
:arrow_down:

framework/demuxer/avFormatDemuxer.cpp
80.00% <0.00%> (-0.32%)
:arrow_down:

mediaPlayer/SuperMediaPlayer.cpp
75.83% <0.00%> (-0.24%)
:arrow_down:

... and 7 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update de8f08c...51817ed. Read the comment docs.


Merge haste configs if they are available

Per Slack discussion:

In rules_jest, is "_jest_config_template" meant to be configurable?
(why? config.haste = { enableSymlinks: true } is conflicting with React-native preset's haste: { defaultPlatform: 'ios', platforms: […], } configuration)

@gregmagolan told me to "go do it yourself!" (not his words)

The fix would be to merge the two together. Would be happy to accept a PR for that.

👍

Changes are visible to end-users: no

Searched for relevant documentation and updated as needed: yes
Breaking change (forces users to change their own code or config): no
Suggested release notes appear below: yes

jest_test will now preserve your jest.config.js settings.
jest_test(
  …
  config = "jest.config.js",  # previously, `haste` configuration in this file would be overridden
)

Test plan

Covered by existing test cases
New test cases added (jest/test/case14*)
Manual testing; please provide instructions so we can reproduce:

Add haste configuration to jest.config.js, watch it get merged into the defaults { enableSymlinks: true } defined in jest_config_template.mjs

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


[BUG] Inference API error in 'timm.models.maxxvit.MaxxVitConvCfg'

Describe the bug
When running models on HuggingFace created by "HuggingFace Team", they no longer work. It has an issue with importing. These are models that are out of my control. I included one that wasn't "HuggingFace Team".
There are multiple models that have this issue, all DETR. So far, it has been encountered with "Object Detection" or "Image Segmentation".
Models:

facebook/detr-resnet-101-panoptic
facebook/detr-resnet-101-dc5
davanstrien/detr_beyond_words

To Reproduce
Steps to reproduce the behavior:

Go to any of the links above
Look at the "Inference API"
Use image there or upload you own.

Expected behavior
Not give an error.
Screenshots
facebook/detr-resnet-101-panoptic

facebook/detr-resnet-101-dc5

davanstrien/detr_beyond_words

Additional context
Using it on Web Browser (Firefox 123.0)
Not sure if this is the place to submit the issue but since it is re-occurring across multiple models, I figured this is where I can start.
Line in this repository that mentions that attribute.

@gateslm that compatibility issue with timm and Python 3.11 was fixed in timm a long time ago, seems that the HF inferencing code was updated to python 3.11 but is using an old timm, I need to figure out who to ping...

Fixed now.

I just tested the 3 I linked in the original post. They appear to be resolved!
Thank you. I will mark it closed!


why can inference without landmark

Thanks for you great work. I found that the training is with random landmark input, but in inference, it can only input audio. can you introduce how to acchieve without degard result.

Thank you for the interest. During training, the pose is randomly dropped, which leads to some audio-only cases. It is the reason why it works with only audio during inference.


Content crashes when panes are manipulated

Several actions in PyCharm cause the hex editor's content to crash. This can be triggered by

Moving the hex editor to the opposite group
Moving an unrelated editor to its opposite group

When the content crashes, the editor is still open, but the file appears empty (zero-length).

Partially fixed in 0.2.1 (but works only when single window is opened and moved)

It seems to be working correctly in post 2019 releases. Probably won't fix for older ones.


Adjust Debug Clock Frequency sensitivity to allow documentation view of subobjects with debug

From @ChipGracey:

We need to change the debug clock frequency sensitivity so that we only care if they are trying to download that file. When I try to make documentation View of my file oh, it gets mad because I don't have a clock frequency set up and I have debug statements, but the parent is always going to supply the clock frequency. So, we need to ignore it, and less the user wants to download.

@ChipGracey - Do you mean this change will be done in the compiler (through a flag so it knows when...)  or do you mean in the Propeller Tool (we should automatically compile without debug) when... we're only compiling for documentation purposes?

Ah, for documentation purposes, you could just compile without DEBUG. Yes,
that would be better.
On Fri, Mar 12, 2021 at 9:53 AM Parallax Git Administrator <
@.***> wrote:

@ChipGracey https://github.com/ChipGracey - Do you mean this change
will be done in the compiler (through a flag so it knows when...) or do you
mean in the Propeller Tool (we should automatically compile without debug)
when... we're only compiling for documentation purposes?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/parallaxinc/Propeller-Tool/issues/138#issuecomment-797655105,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADZ7M2K245W2DEDBIKVWKSLTDJBJ7ANCNFSM4ZCWWMKA
.

Okay, that's what we'll do then.

Fixed in v2.5.3.


Intermittent errors while deleting images

Sometimes I get an error saying that a container is using an image while trying to delete it. But there are no containers running at that point.
cloudscaling@mngmt2:~/dockstack> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
rabbitmq            latest              81ed90453f10        19 hours ago        727.7 MB
galera              latest              286ece7185b4        19 hours ago        441.7 MB
<none>              <none>              8886136b307f        19 hours ago        2.359 GB
<none>              <none>              dce4d6c0ab72        19 hours ago        2.359 GB
ubuntu              14.04               5ba9dab47459        3 weeks ago         188.3 MB
ubuntu              14.04.1             5ba9dab47459        3 weeks ago         188.3 MB
ubuntu              latest              5ba9dab47459        3 weeks ago         188.3 MB
ubuntu              trusty              5ba9dab47459        3 weeks ago         188.3 MB
ubuntu              12.04               69c02692b0c1        3 weeks ago         131.5 MB
opensuse            latest              758c78b4040c        6 weeks ago         622.7 MB
cloudscaling@mngmt2:~/dockstack> docker rmi 81ed90453f10
Error response from daemon: Conflict, cannot delete 81ed90453f10 because the container e0afc84cd0b4 is using it, use -f to force
FATA[0000] Error: failed to remove one or more images
cloudscaling@mngmt2:~/dockstack> docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
cloudscaling@mngmt2:~/dockstack> docker info
Containers: 16
Images: 79
Storage Driver: btrfs
 Build Version: Btrfs v3.16.2+20141003
 Library Version: 101
Execution Driver: native-0.2
Kernel Version: 3.16.7-7-desktop
Operating System: openSUSE 13.2 (Harlequin) (x86_64)
CPUs: 4
Total Memory: 15.68 GiB
Name: mngmt2
ID: DYZG:YKDS:GL56:TZ5Q:PKUW:ENPY:P7AA:ZDFO:57SH:OWNE:IWYF:3OH7
WARNING: No swap limit support
cloudscaling@mngmt2:~/dockstack> docker version
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.3.3
Git commit (client): a8a31ef
OS/Arch (client): linux/amd64
Server version: 1.5.0
Server API version: 1.17
Go version (server): go1.3.3
Git commit (server): a8a31ef
cloudscaling@mngmt2:~/dockstack> uname -a
Linux mngmt2 3.16.7-7-desktop #1 SMP PREEMPT Wed Dec 17 18:00:44 UTC 2014 (762f27a) x86_64 x86_64 x86_64 GNU/Linux
cloudscaling@mngmt2:~/dockstack>

Containers don't need to be actively running to be dependent on layers within the image they were run from.  For example: docker run -ti ubuntu /bin/bash; even after I exit bash, the container on disk has a reference to the layers in the "ubuntu:latest" image.  If you remove the ubuntu image, then calling docker start <containerID> will fail as the layers will be missing.  If you want to get rid of the image layers, you can docker rm <containerID> that depends on it, then you can docker rmi .. the image.  You can also pass -f to force the removal, ignoring that the layers are being depended on.

@achanda if you use docker ps -a, you'll see the containers your error is referring to.

I understand. Closing this now.


Support for S3 Upload from @aws-sdk/lib-storage

@aws-sdk/lib-storage provides an Upload capability for easy and efficient uploading of buffers, blobs, or streams, using a configurable amount of concurrency to perform multipart uploads where possible. This abstraction enables uploading large files or streams of unknown size due to the use of multipart uploads under the hood.
It is unclear if it is possible to mock this using this library, if it is please can you add to the documentation in a similar way to the dynamo document client. If it is not please can you consider adding this feature.
Kind regards

I've added support for LibStorage Upload in v0.5.4, see details in the README


Why names different?

The repo name: cordova-ionic-phonegap-branch-deep-linking
The id plugin: io.branch.sdk
The name plugin: branch-cordova-sdk
This create errors for use services like phonegap build or Ionic package:
For example with ionic the file package.json save all the plugins for then build in cloud:
{
      "id": "io.branch.sdk",
      "locator": "io.branch.sdk",
      "variables": {
        "BRANCH_KEY": "xxxx",
        "URI_SCHEME": "xxx"
      }
    }

but io.branch.sdk not work for the name
Fetching plugin<EMAIL_ADDRESS>via npm
Error: Failed to fetch plugin<EMAIL_ADDRESS>via registry.

Hello @nicobytes,
This was an error on our end whenever we first created the repo. We have plans to make it consistently branch-cordova-sdk, but we have to do regression test on everything to see how this will impact previous users who have older npm versions and want to update.
For the time being, this is a low priority with no timeline for a correction.
When using phonegap build or Ionic package, are you still able to install the Branch Cordova SDK via the CLI? install branch sdk
Best,


Fix barbican/a10/ocata incompatibilities

Corrects signature in cert manager
Fixes plugin to work with ocata plugin scheme

Rage merge.


Improve font stack

This PR adds DejaVu Sans Mono to the Atom font stack. It should fix font issues on Linux. See #4201
The default fonts will be:

Inconsolata on all platforms, but must be manually installed by the user. Otherwise..
Monaco on OS X
Consolas on Windows
DejaVu Sans Mono on most Linux distros. Thx @fvsch.

Unpleasant surprises
This change should only affect users on Linux that have not defined a custom font in the settings. But arguably that will be a pleasant surprise.

:+1: Especially since monospace seems to be mapped to Courier New and Courier anyways. -> http://fontfamily.io/monospace

:+1: Looks good to me. Great solution :grinning:

:+1:


Improve Event Fields to use LocalDateTime

Currently, the Event model has two fields Date and Time which are formatted as Strings.
To improve functionality of events, the Java LocalDateTime class can be implemented so the Date and Time fields are now stored as a DateTime class

Found new error. Leap year dates are not accounted for with the LocalDateTime.parse method.


GNMI-1.11: Adding support for ExplicitPortSpeed & ExplicitInterfaceInDefaultVRF deviation

Modifying script to add deviation block for ExplicitPortSpeed and ExplicitInterfaceInDefaultVRF.
"This code is a Contribution to the OpenConfig Feature Profiles project ("Work") made under the Google Software Grant and Corporate Contributor License Agreement ("CLA") and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia's intellectual property are granted for any other purpose. This code is provided on an "as is" basis without any warranties of any kind."

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 57.219%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1181

Relevant Lines:
2064

💛  - Coveralls

/gcbrun


feat: bind config with cobra flags to override the conf

[x] overriding the config via flags provided by cobra
[x] mapping the flag with - delimiter instead of . delimiter (--project-name instead of --project.name)
[x] change flag names for each command that needs config overriding

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

6 of 10 (60.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.03%) to 74.432%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

config/loader.go
6
10
60.0%

Totals

Change from base Build<PHONE_NUMBER>:
-0.03%

Covered Lines:
5604

Relevant Lines:
7529

💛  - Coveralls

@sravankorumilli by default, salt is flattening the config keys with dot . delimiter, eg in server config (config.sample.yaml), we will have serve.port serve.host etc as their flags naming. eg. ./optimus serve --serve.port=8000
Instead of dot ., it's better to have dash - delimiter, so it will be ./optimus serve --serve-port=8000
I’m proposing the changes for salt config to have ability to replace the flag name delimiter, like we have on EnvKeyReplacer
wdyt?

fix https://github.com/odpf/optimus/pull/257 and https://github.com/odpf/optimus/pull/271

What is the scope of this PR? Is it handled everywhere?

All command that use flags to override the config should be impacted

summarizing our discussions:
1. need to define which configs that are able to override and which are not
2. `--project` means to select the project, not to override the configs. Treat it as `kubectx`
3. action items:
    - bump the plugins with `--project-name`
    - revisit it to provide `--project` for backward compatible or not

@ravisuhag @sravankorumilli


Pad meshing

Add "wafer_padding" argument to meshers to define how much larger than bounding box the LAYER.WAFER layers should be
This allows proper simulation of strip waveguides
Cleaner implementation than #1159

The docs of this PR fail
And now they also fail on master
https://github.com/gdsfactory/gdsfactory/actions/runs/3941880531/jobs/6744867149


When IP addresses are getting blacklisted, it's not showing in the blacklist page

I can see a lot of events that some random/phishing IP addresses are getting blacklIst from rauthy (which is good), but none of them are shown in the blacklist tab. Is this intendeded? :)

Of course you see them. You probably simply looked too late.
The first blacklists are very short, actually the first one after 7 failed logins is 60 seconds to not totally lock out regular users that simply forgot their password. The auto-blacklisting time increases with the amount of failed logins.

Blacklistings are in-memory only and not persisted into the DB, because when you deal with blacklisting, the reason is usually spam / DoS and you want to do as little work and waste as little resources as possible not not get overwhelmed while being as fast as possible with rejecting such requests.

Okay thanks for the clarificaton, the event message:
2024/04/22 01:23:38
IpBlacklisted
xxx.xxx.xxx.xxx
2024/04/22 01:24:38

Was a little bit misleading, I haven't understand that the latest timestamp is the blacklist until timestamp. Maybe some potential for clarifications (in the future). :D
This issue can then be closed from my site, thanks! :heart:

Yes these messages could be improved upon, or maybe documented in general.
Also, the Timestamp in these is always UTC


Add new input 'issue-body'

Similar to the 'issue-title' input, 'issue-body' allows to put custom text to
the body of the approval issue.
make lint and make build are working, but I do not know how to further test
this... So any help in testing this change is much appreciated.
This might fix issues #69 and #49.

Thank you for your contribution! I will review this PR shortly.

Hey @trstringer, any updates on the review? :)

Thank you for your contribution!

@trstringer This has been merged but doesn't look like it is available.
I am getting: Unexpected input(s) 'issue-body'.
Please advise 🙏

I believe we require a new docker image to be published before we can start using issue-body.


PGStac

Adds pgstac backend to stac_fastapi.
Supersedes #119 with automatic detection of async endpoints.
Adds 1:1 tests for all tests in sqlalchemy branch with the exception of the Context and BulkLoad plugin tests which are not supported on PGStac.
Updates the Makefile, Docker, and CI configurations to add support for running/testing pgstac.

Is there an error in the yaml?

FYI docker-compose up seems to hang for me... it's been almost 40 min and still doing the pip install. Is that expected? Maybe there's some circular dependencies here?

FYI it worked for me changing to
pip install -e ./stac_fastapi/api[dev]   && \
pip install -e ./stac_fastapi/types[dev]  && \
pip install -e ./stac_fastapi/extensions[dev,tiles] --use-deprecated=legacy-resolver && \
pip install -e ./stac_fastapi/sqlalchemy[dev,server] && \
pip install -e ./stac_fastapi/pgstac[dev,server]

in the Dockerfile (see --use-deprecated=legacy-resolver). cc @geospatial-jeff in case you want to open a new issue

FYI I also needed python -m stac_fastapi.pgstac.app in my docker-compose instead of stac-fastapi-pgstac

Sorry to annoy with repeated comments... just making notes here as I see things. These may or may not be related to this specific PR.
Just testing with some Sentinel 2 STAC items and it seems like there are quite a few null fields, including within every asset. Maybe an exclude_none when exporting the Pydantic model would be helpful?

Example Item from API:
{
  "type": "Feature",
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          -177.28522363832855,
          -82.04335099442082
        ],
        [
          -178.91029227751974,
          -82.03175115031485
        ],
        [
          -178.95142767378817,
          -81.93317565561071
        ],
        [
          -178.7957232298964,
          -81.26610187696117
        ],
        [
          -178.70346876768437,
          -81.05700088946557
        ],
        [
          -176.43744821155852,
          -81.06046593842984
        ],
        [
          -176.36851341262349,
          -82.04315031676867
        ],
        [
          -177.28522363832855,
          -82.04335099442082
        ]
      ]
    ]
  },
  "properties": {
    "gsd": 10,
    "title": null,
    "created": null,
    "mission": null,
    "updated": null,
    "datetime": "2020-11-25T16:18:31Z",
    "platform": "sentinel-2b",
    "proj:epsg": 32701,
    "providers": null,
    "description": null,
    "instruments": [
      "msi"
    ],
    "end_datetime": null,
    "constellation": "sentinel-2",
    "eo:cloud_cover": 0,
    "start_datetime": null,
    "view:off_nadir": 0,
    "sentinel:sequence": "0",
    "sentinel:utm_zone": 1,
    "sentinel:product_id": "S2B_MSIL2A_20201125T161339_N0214_R111_T01CDK_20201125T194659",
    "sentinel:grid_square": "DK",
    "sentinel:data_coverage": 35.78,
    "sentinel:latitude_band": "C",
    "sentinel:valid_cloud_cover": true
  },
  "id": "S2B_1CDK_20201125_0_L2A",
  "bbox": [
    -178.95142767378817,
    -82.04335099442082,
    -176.36851341262349,
    -81.05700088946557
  ],
  "stac_version": "1.0.0-beta.2",
  "assets": {
    "AOT": {
      "gsd": null,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/AOT.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": null,
      "roles": [
        "data"
      ],
      "title": "Aerosol Optical Thickness (AOT)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        1830,
        1830
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        60,
        0,
        399960,
        0,
        -60,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B01": {
      "gsd": 60,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B01.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B01",
          "common_name": "coastal",
          "description": null,
          "center_wavelength": 0.4439,
          "full_width_half_max": 0.027
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 1 (coastal)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        1830,
        1830
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        60,
        0,
        399960,
        0,
        -60,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B02": {
      "gsd": 10,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B02.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B02",
          "common_name": "blue",
          "description": null,
          "center_wavelength": 0.4966,
          "full_width_half_max": 0.098
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 2 (blue)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        10980,
        10980
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        10,
        0,
        399960,
        0,
        -10,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B03": {
      "gsd": 10,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B03.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B03",
          "common_name": "green",
          "description": null,
          "center_wavelength": 0.56,
          "full_width_half_max": 0.045
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 3 (green)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        10980,
        10980
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        10,
        0,
        399960,
        0,
        -10,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B04": {
      "gsd": 10,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B04.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B04",
          "common_name": "red",
          "description": null,
          "center_wavelength": 0.6645,
          "full_width_half_max": 0.038
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 4 (red)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        10980,
        10980
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        10,
        0,
        399960,
        0,
        -10,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B05": {
      "gsd": 20,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B05.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B05",
          "common_name": null,
          "description": null,
          "center_wavelength": 0.7039,
          "full_width_half_max": 0.019
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 5",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B06": {
      "gsd": 20,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B06.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B06",
          "common_name": null,
          "description": null,
          "center_wavelength": 0.7402,
          "full_width_half_max": 0.018
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 6",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B07": {
      "gsd": 20,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B07.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B07",
          "common_name": null,
          "description": null,
          "center_wavelength": 0.7825,
          "full_width_half_max": 0.028
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 7",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B08": {
      "gsd": 10,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B08.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B08",
          "common_name": "nir",
          "description": null,
          "center_wavelength": 0.8351,
          "full_width_half_max": 0.145
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 8 (nir)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        10980,
        10980
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        10,
        0,
        399960,
        0,
        -10,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B09": {
      "gsd": 60,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B09.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B09",
          "common_name": null,
          "description": null,
          "center_wavelength": 0.945,
          "full_width_half_max": 0.026
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 9",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        1830,
        1830
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        60,
        0,
        399960,
        0,
        -60,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B11": {
      "gsd": 20,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B11.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B11",
          "common_name": "swir16",
          "description": null,
          "center_wavelength": 1.6137,
          "full_width_half_max": 0.143
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 11 (swir16)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B12": {
      "gsd": 20,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B12.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B12",
          "common_name": "swir22",
          "description": null,
          "center_wavelength": 2.22024,
          "full_width_half_max": 0.242
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 12 (swir22)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B8A": {
      "gsd": 20,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B8A.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B8A",
          "common_name": null,
          "description": null,
          "center_wavelength": 0.8648,
          "full_width_half_max": 0.033
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 8A",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "SCL": {
      "gsd": null,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/SCL.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": null,
      "roles": [
        "data"
      ],
      "title": "Scene Classification Map (SCL)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "WVP": {
      "gsd": null,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/WVP.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": null,
      "roles": [
        "data"
      ],
      "title": "Water Vapour (WVP)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        10980,
        10980
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        10,
        0,
        399960,
        0,
        -10,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "info": {
      "gsd": null,
      "href": "https://roda.sentinel-hub.com/sentinel-s2-l2a/tiles/1/C/DK/2020/11/25/0/tileInfo.json",
      "type": "application/json",
      "bands": null,
      "roles": [
        "metadata"
      ],
      "title": "Original JSON metadata",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "start_datetime": null
    },
    "visual": {
      "gsd": 10,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/TCI.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B04",
          "common_name": "red",
          "description": null,
          "center_wavelength": 0.6645,
          "full_width_half_max": 0.038
        },
        {
          "name": "B03",
          "common_name": "green",
          "description": null,
          "center_wavelength": 0.56,
          "full_width_half_max": 0.045
        },
        {
          "name": "B02",
          "common_name": "blue",
          "description": null,
          "center_wavelength": 0.4966,
          "full_width_half_max": 0.098
        }
      ],
      "roles": [
        "overview"
      ],
      "title": "True color image",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        10980,
        10980
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        10,
        0,
        399960,
        0,
        -10,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "metadata": {
      "gsd": null,
      "href": "https://roda.sentinel-hub.com/sentinel-s2-l2a/tiles/1/C/DK/2020/11/25/0/metadata.xml",
      "type": "application/xml",
      "bands": null,
      "roles": [
        "metadata"
      ],
      "title": "Original XML metadata",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "start_datetime": null
    },
    "overview": {
      "gsd": 10,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/L2A_PVI.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B04",
          "common_name": "red",
          "description": null,
          "center_wavelength": 0.6645,
          "full_width_half_max": 0.038
        },
        {
          "name": "B03",
          "common_name": "green",
          "description": null,
          "center_wavelength": 0.56,
          "full_width_half_max": 0.045
        },
        {
          "name": "B02",
          "common_name": "blue",
          "description": null,
          "center_wavelength": 0.4966,
          "full_width_half_max": 0.098
        }
      ],
      "roles": [
        "overview"
      ],
      "title": "True color image",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        343,
        343
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        320,
        0,
        399960,
        0,
        -320,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "thumbnail": {
      "gsd": null,
      "href": "https://roda.sentinel-hub.com/sentinel-s2-l1c/tiles/1/C/DK/2020/11/25/0/preview.jpg",
      "type": "image/png",
      "bands": null,
      "roles": [
        "thumbnail"
      ],
      "title": "Thumbnail",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "start_datetime": null
    }
  },
  "links": [
    {
      "href": "http://<IP_ADDRESS>:8082/collections/sentinel-s2-l2a",
      "rel": "collection",
      "type": "application/json"
    },
    {
      "href": "http://<IP_ADDRESS>:8082/collections/sentinel-s2-l2a",
      "rel": "parent",
      "type": "application/json"
    },
    {
      "href": "http://<IP_ADDRESS>:8082/",
      "rel": "root",
      "type": "application/json"
    },
    {
      "href": "http://<IP_ADDRESS>:8082/collections/sentinel-s2-l2a/items/S2B_1CDK_20201125_0_L2A",
      "rel": "self",
      "type": "application/geo+json"
    },
    {
      "href": "http://<IP_ADDRESS>:8082/collections/sentinel-s2-l2a/items/S2B_1CDK_20201125_0_L2A/tiles",
      "rel": "alternate",
      "type": "application/json",
      "title": "tiles"
    }
  ],
  "stac_extensions": [
    "eo",
    "view",
    "proj"
  ],
  "collection": "sentinel-s2-l2a"
}

@kylebarron

FYI I also needed python -m stac_fastapi.pgstac.app in my docker-compose instead of stac-fastapi-pgstac

I wonder if this (and pip issue) is a Docker on Mac vs Docker on Linux issue???
stac-fastapi/pgstac installs a console script stac-fastapi-pgstac that runs stac_fastapi.pgstac.app:run.
I just did a docker-compose build --no-cache && docker-compose up on my system and confirmed that everything seems to be working as-is.

@kylebarron

Sorry to annoy with repeated comments... just making notes here as I see things. These may or may not be related to this specific PR.
Just testing with some Sentinel 2 STAC items and it seems like there are quite a few null fields, including within every asset. Maybe an exclude_none when exporting the Pydantic model would be helpful?

Example Item from API:
{
  "type": "Feature",
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          -177.28522363832855,
          -82.04335099442082
        ],
        [
          -178.91029227751974,
          -82.03175115031485
        ],
        [
          -178.95142767378817,
          -81.93317565561071
        ],
        [
          -178.7957232298964,
          -81.26610187696117
        ],
        [
          -178.70346876768437,
          -81.05700088946557
        ],
        [
          -176.43744821155852,
          -81.06046593842984
        ],
        [
          -176.36851341262349,
          -82.04315031676867
        ],
        [
          -177.28522363832855,
          -82.04335099442082
        ]
      ]
    ]
  },
  "properties": {
    "gsd": 10,
    "title": null,
    "created": null,
    "mission": null,
    "updated": null,
    "datetime": "2020-11-25T16:18:31Z",
    "platform": "sentinel-2b",
    "proj:epsg": 32701,
    "providers": null,
    "description": null,
    "instruments": [
      "msi"
    ],
    "end_datetime": null,
    "constellation": "sentinel-2",
    "eo:cloud_cover": 0,
    "start_datetime": null,
    "view:off_nadir": 0,
    "sentinel:sequence": "0",
    "sentinel:utm_zone": 1,
    "sentinel:product_id": "S2B_MSIL2A_20201125T161339_N0214_R111_T01CDK_20201125T194659",
    "sentinel:grid_square": "DK",
    "sentinel:data_coverage": 35.78,
    "sentinel:latitude_band": "C",
    "sentinel:valid_cloud_cover": true
  },
  "id": "S2B_1CDK_20201125_0_L2A",
  "bbox": [
    -178.95142767378817,
    -82.04335099442082,
    -176.36851341262349,
    -81.05700088946557
  ],
  "stac_version": "1.0.0-beta.2",
  "assets": {
    "AOT": {
      "gsd": null,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/AOT.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": null,
      "roles": [
        "data"
      ],
      "title": "Aerosol Optical Thickness (AOT)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        1830,
        1830
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        60,
        0,
        399960,
        0,
        -60,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B01": {
      "gsd": 60,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B01.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B01",
          "common_name": "coastal",
          "description": null,
          "center_wavelength": 0.4439,
          "full_width_half_max": 0.027
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 1 (coastal)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        1830,
        1830
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        60,
        0,
        399960,
        0,
        -60,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B02": {
      "gsd": 10,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B02.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B02",
          "common_name": "blue",
          "description": null,
          "center_wavelength": 0.4966,
          "full_width_half_max": 0.098
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 2 (blue)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        10980,
        10980
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        10,
        0,
        399960,
        0,
        -10,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B03": {
      "gsd": 10,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B03.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B03",
          "common_name": "green",
          "description": null,
          "center_wavelength": 0.56,
          "full_width_half_max": 0.045
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 3 (green)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        10980,
        10980
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        10,
        0,
        399960,
        0,
        -10,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B04": {
      "gsd": 10,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B04.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B04",
          "common_name": "red",
          "description": null,
          "center_wavelength": 0.6645,
          "full_width_half_max": 0.038
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 4 (red)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        10980,
        10980
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        10,
        0,
        399960,
        0,
        -10,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B05": {
      "gsd": 20,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B05.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B05",
          "common_name": null,
          "description": null,
          "center_wavelength": 0.7039,
          "full_width_half_max": 0.019
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 5",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B06": {
      "gsd": 20,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B06.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B06",
          "common_name": null,
          "description": null,
          "center_wavelength": 0.7402,
          "full_width_half_max": 0.018
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 6",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B07": {
      "gsd": 20,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B07.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B07",
          "common_name": null,
          "description": null,
          "center_wavelength": 0.7825,
          "full_width_half_max": 0.028
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 7",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B08": {
      "gsd": 10,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B08.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B08",
          "common_name": "nir",
          "description": null,
          "center_wavelength": 0.8351,
          "full_width_half_max": 0.145
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 8 (nir)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        10980,
        10980
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        10,
        0,
        399960,
        0,
        -10,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B09": {
      "gsd": 60,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B09.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B09",
          "common_name": null,
          "description": null,
          "center_wavelength": 0.945,
          "full_width_half_max": 0.026
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 9",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        1830,
        1830
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        60,
        0,
        399960,
        0,
        -60,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B11": {
      "gsd": 20,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B11.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B11",
          "common_name": "swir16",
          "description": null,
          "center_wavelength": 1.6137,
          "full_width_half_max": 0.143
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 11 (swir16)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B12": {
      "gsd": 20,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B12.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B12",
          "common_name": "swir22",
          "description": null,
          "center_wavelength": 2.22024,
          "full_width_half_max": 0.242
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 12 (swir22)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "B8A": {
      "gsd": 20,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B8A.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B8A",
          "common_name": null,
          "description": null,
          "center_wavelength": 0.8648,
          "full_width_half_max": 0.033
        }
      ],
      "roles": [
        "data"
      ],
      "title": "Band 8A",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "SCL": {
      "gsd": null,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/SCL.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": null,
      "roles": [
        "data"
      ],
      "title": "Scene Classification Map (SCL)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        5490,
        5490
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        20,
        0,
        399960,
        0,
        -20,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "WVP": {
      "gsd": null,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/WVP.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": null,
      "roles": [
        "data"
      ],
      "title": "Water Vapour (WVP)",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        10980,
        10980
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        10,
        0,
        399960,
        0,
        -10,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "info": {
      "gsd": null,
      "href": "https://roda.sentinel-hub.com/sentinel-s2-l2a/tiles/1/C/DK/2020/11/25/0/tileInfo.json",
      "type": "application/json",
      "bands": null,
      "roles": [
        "metadata"
      ],
      "title": "Original JSON metadata",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "start_datetime": null
    },
    "visual": {
      "gsd": 10,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/TCI.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B04",
          "common_name": "red",
          "description": null,
          "center_wavelength": 0.6645,
          "full_width_half_max": 0.038
        },
        {
          "name": "B03",
          "common_name": "green",
          "description": null,
          "center_wavelength": 0.56,
          "full_width_half_max": 0.045
        },
        {
          "name": "B02",
          "common_name": "blue",
          "description": null,
          "center_wavelength": 0.4966,
          "full_width_half_max": 0.098
        }
      ],
      "roles": [
        "overview"
      ],
      "title": "True color image",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        10980,
        10980
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        10,
        0,
        399960,
        0,
        -10,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "metadata": {
      "gsd": null,
      "href": "https://roda.sentinel-hub.com/sentinel-s2-l2a/tiles/1/C/DK/2020/11/25/0/metadata.xml",
      "type": "application/xml",
      "bands": null,
      "roles": [
        "metadata"
      ],
      "title": "Original XML metadata",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "start_datetime": null
    },
    "overview": {
      "gsd": 10,
      "href": "s3://sentinel-cogs/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/L2A_PVI.tif",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "bands": [
        {
          "name": "B04",
          "common_name": "red",
          "description": null,
          "center_wavelength": 0.6645,
          "full_width_half_max": 0.038
        },
        {
          "name": "B03",
          "common_name": "green",
          "description": null,
          "center_wavelength": 0.56,
          "full_width_half_max": 0.045
        },
        {
          "name": "B02",
          "common_name": "blue",
          "description": null,
          "center_wavelength": 0.4966,
          "full_width_half_max": 0.098
        }
      ],
      "roles": [
        "overview"
      ],
      "title": "True color image",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "proj:shape": [
        343,
        343
      ],
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "proj:transform": [
        320,
        0,
        399960,
        0,
        -320,
        1000000,
        0,
        0,
        1
      ],
      "start_datetime": null
    },
    "thumbnail": {
      "gsd": null,
      "href": "https://roda.sentinel-hub.com/sentinel-s2-l1c/tiles/1/C/DK/2020/11/25/0/preview.jpg",
      "type": "image/png",
      "bands": null,
      "roles": [
        "thumbnail"
      ],
      "title": "Thumbnail",
      "created": null,
      "mission": null,
      "updated": null,
      "platform": null,
      "multihash": null,
      "providers": null,
      "description": null,
      "instruments": null,
      "end_datetime": null,
      "constellation": null,
      "polarizations": null,
      "start_datetime": null
    }
  },
  "links": [
    {
      "href": "http://<IP_ADDRESS>:8082/collections/sentinel-s2-l2a",
      "rel": "collection",
      "type": "application/json"
    },
    {
      "href": "http://<IP_ADDRESS>:8082/collections/sentinel-s2-l2a",
      "rel": "parent",
      "type": "application/json"
    },
    {
      "href": "http://<IP_ADDRESS>:8082/",
      "rel": "root",
      "type": "application/json"
    },
    {
      "href": "http://<IP_ADDRESS>:8082/collections/sentinel-s2-l2a/items/S2B_1CDK_20201125_0_L2A",
      "rel": "self",
      "type": "application/geo+json"
    },
    {
      "href": "http://<IP_ADDRESS>:8082/collections/sentinel-s2-l2a/items/S2B_1CDK_20201125_0_L2A/tiles",
      "rel": "alternate",
      "type": "application/json",
      "title": "tiles"
    }
  ],
  "stac_extensions": [
    "eo",
    "view",
    "proj"
  ],
  "collection": "sentinel-s2-l2a"
}

Did that data come in with those NULL fields? I think it would be better to validate/strip any data on the way in (in the transactions methods) than on the way out (or to leave data as it was created). Both me and @lossyrob have seen that having Pydantic validation on the way out adds significant overhead to FastAPI, especially for larger ItemCollections and that using ORJSONResponse for output is a lot faster (and more easily allows for the Fields extension and any additional custom extensions that someone might create with additional fields).

Oh.... also, Github Actions is back up again and everything with the new tests is passing :-)

I wonder if this (and pip issue) is a Docker on Mac vs Docker on Linux issue???

I don't really have any idea. I would've thought that since it's being run inside the docker container, it wouldn't matter what host OS you're using. Though for the record, I did run that on Docker for Mac.
Here's the original STAC item that was imported, which doesn't include any null fields:
{
  "type": "Feature",
  "stac_version": "1.0.0-beta.2",
  "stac_extensions": [
    "eo",
    "view",
    "proj"
  ],
  "id": "S2B_1CDK_20201125_0_L2A",
  "bbox": [
    -178.95142767378817,
    -82.04335099442082,
    -176.36851341262349,
    -81.05700088946557
  ],
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          -177.28522363832855,
          -82.04335099442082
        ],
        [
          -178.91029227751974,
          -82.03175115031485
        ],
        [
          -178.95142767378817,
          -81.93317565561071
        ],
        [
          -178.7957232298964,
          -81.26610187696117
        ],
        [
          -178.70346876768437,
          -81.05700088946557
        ],
        [
          -176.43744821155852,
          -81.06046593842984
        ],
        [
          -176.36851341262349,
          -82.04315031676867
        ],
        [
          -177.28522363832855,
          -82.04335099442082
        ]
      ]
    ]
  },
  "properties": {
    "datetime": "2020-11-25T16:18:31Z",
    "platform": "sentinel-2b",
    "constellation": "sentinel-2",
    "instruments": [
      "msi"
    ],
    "gsd": 10,
    "view:off_nadir": 0,
    "proj:epsg": 32701,
    "sentinel:utm_zone": 1,
    "sentinel:latitude_band": "C",
    "sentinel:grid_square": "DK",
    "sentinel:sequence": "0",
    "sentinel:product_id": "S2B_MSIL2A_20201125T161339_N0214_R111_T01CDK_20201125T194659",
    "sentinel:data_coverage": 35.78,
    "eo:cloud_cover": 0.0,
    "sentinel:valid_cloud_cover": true
  },
  "collection": "sentinel-s2-l2a-cogs",
  "assets": {
    "thumbnail": {
      "title": "Thumbnail",
      "type": "image/png",
      "roles": [
        "thumbnail"
      ],
      "href": "https://roda.sentinel-hub.com/sentinel-s2-l1c/tiles/1/C/DK/2020/11/25/0/preview.jpg"
    },
    "overview": {
      "title": "True color image",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "overview"
      ],
      "gsd": 10,
      "eo:bands": [
        {
          "name": "B04",
          "common_name": "red",
          "center_wavelength": 0.6645,
          "full_width_half_max": 0.038
        },
        {
          "name": "B03",
          "common_name": "green",
          "center_wavelength": 0.56,
          "full_width_half_max": 0.045
        },
        {
          "name": "B02",
          "common_name": "blue",
          "center_wavelength": 0.4966,
          "full_width_half_max": 0.098
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/L2A_PVI.tif",
      "proj:shape": [
        343,
        343
      ],
      "proj:transform": [
        320.0,
        0.0,
        399960.0,
        0.0,
        -320.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "info": {
      "title": "Original JSON metadata",
      "type": "application/json",
      "roles": [
        "metadata"
      ],
      "href": "https://roda.sentinel-hub.com/sentinel-s2-l2a/tiles/1/C/DK/2020/11/25/0/tileInfo.json"
    },
    "metadata": {
      "title": "Original XML metadata",
      "type": "application/xml",
      "roles": [
        "metadata"
      ],
      "href": "https://roda.sentinel-hub.com/sentinel-s2-l2a/tiles/1/C/DK/2020/11/25/0/metadata.xml"
    },
    "visual": {
      "title": "True color image",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "overview"
      ],
      "gsd": 10,
      "eo:bands": [
        {
          "name": "B04",
          "common_name": "red",
          "center_wavelength": 0.6645,
          "full_width_half_max": 0.038
        },
        {
          "name": "B03",
          "common_name": "green",
          "center_wavelength": 0.56,
          "full_width_half_max": 0.045
        },
        {
          "name": "B02",
          "common_name": "blue",
          "center_wavelength": 0.4966,
          "full_width_half_max": 0.098
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/TCI.tif",
      "proj:shape": [
        10980,
        10980
      ],
      "proj:transform": [
        10.0,
        0.0,
        399960.0,
        0.0,
        -10.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "B01": {
      "title": "Band 1 (coastal)",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "gsd": 60,
      "eo:bands": [
        {
          "name": "B01",
          "common_name": "coastal",
          "center_wavelength": 0.4439,
          "full_width_half_max": 0.027
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B01.tif",
      "proj:shape": [
        1830,
        1830
      ],
      "proj:transform": [
        60.0,
        0.0,
        399960.0,
        0.0,
        -60.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "B02": {
      "title": "Band 2 (blue)",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "gsd": 10,
      "eo:bands": [
        {
          "name": "B02",
          "common_name": "blue",
          "center_wavelength": 0.4966,
          "full_width_half_max": 0.098
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B02.tif",
      "proj:shape": [
        10980,
        10980
      ],
      "proj:transform": [
        10.0,
        0.0,
        399960.0,
        0.0,
        -10.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "B03": {
      "title": "Band 3 (green)",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "gsd": 10,
      "eo:bands": [
        {
          "name": "B03",
          "common_name": "green",
          "center_wavelength": 0.56,
          "full_width_half_max": 0.045
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B03.tif",
      "proj:shape": [
        10980,
        10980
      ],
      "proj:transform": [
        10.0,
        0.0,
        399960.0,
        0.0,
        -10.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "B04": {
      "title": "Band 4 (red)",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "gsd": 10,
      "eo:bands": [
        {
          "name": "B04",
          "common_name": "red",
          "center_wavelength": 0.6645,
          "full_width_half_max": 0.038
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B04.tif",
      "proj:shape": [
        10980,
        10980
      ],
      "proj:transform": [
        10.0,
        0.0,
        399960.0,
        0.0,
        -10.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "B05": {
      "title": "Band 5",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "gsd": 20,
      "eo:bands": [
        {
          "name": "B05",
          "center_wavelength": 0.7039,
          "full_width_half_max": 0.019
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B05.tif",
      "proj:shape": [
        5490,
        5490
      ],
      "proj:transform": [
        20.0,
        0.0,
        399960.0,
        0.0,
        -20.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "B06": {
      "title": "Band 6",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "gsd": 20,
      "eo:bands": [
        {
          "name": "B06",
          "center_wavelength": 0.7402,
          "full_width_half_max": 0.018
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B06.tif",
      "proj:shape": [
        5490,
        5490
      ],
      "proj:transform": [
        20.0,
        0.0,
        399960.0,
        0.0,
        -20.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "B07": {
      "title": "Band 7",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "gsd": 20,
      "eo:bands": [
        {
          "name": "B07",
          "center_wavelength": 0.7825,
          "full_width_half_max": 0.028
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B07.tif",
      "proj:shape": [
        5490,
        5490
      ],
      "proj:transform": [
        20.0,
        0.0,
        399960.0,
        0.0,
        -20.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "B08": {
      "title": "Band 8 (nir)",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "gsd": 10,
      "eo:bands": [
        {
          "name": "B08",
          "common_name": "nir",
          "center_wavelength": 0.8351,
          "full_width_half_max": 0.145
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B08.tif",
      "proj:shape": [
        10980,
        10980
      ],
      "proj:transform": [
        10.0,
        0.0,
        399960.0,
        0.0,
        -10.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "B8A": {
      "title": "Band 8A",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "gsd": 20,
      "eo:bands": [
        {
          "name": "B8A",
          "center_wavelength": 0.8648,
          "full_width_half_max": 0.033
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B8A.tif",
      "proj:shape": [
        5490,
        5490
      ],
      "proj:transform": [
        20.0,
        0.0,
        399960.0,
        0.0,
        -20.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "B09": {
      "title": "Band 9",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "gsd": 60,
      "eo:bands": [
        {
          "name": "B09",
          "center_wavelength": 0.945,
          "full_width_half_max": 0.026
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B09.tif",
      "proj:shape": [
        1830,
        1830
      ],
      "proj:transform": [
        60.0,
        0.0,
        399960.0,
        0.0,
        -60.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "B11": {
      "title": "Band 11 (swir16)",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "gsd": 20,
      "eo:bands": [
        {
          "name": "B11",
          "common_name": "swir16",
          "center_wavelength": 1.6137,
          "full_width_half_max": 0.143
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B11.tif",
      "proj:shape": [
        5490,
        5490
      ],
      "proj:transform": [
        20.0,
        0.0,
        399960.0,
        0.0,
        -20.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "B12": {
      "title": "Band 12 (swir22)",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "gsd": 20,
      "eo:bands": [
        {
          "name": "B12",
          "common_name": "swir22",
          "center_wavelength": 2.22024,
          "full_width_half_max": 0.242
        }
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/B12.tif",
      "proj:shape": [
        5490,
        5490
      ],
      "proj:transform": [
        20.0,
        0.0,
        399960.0,
        0.0,
        -20.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "AOT": {
      "title": "Aerosol Optical Thickness (AOT)",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/AOT.tif",
      "proj:shape": [
        1830,
        1830
      ],
      "proj:transform": [
        60.0,
        0.0,
        399960.0,
        0.0,
        -60.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "WVP": {
      "title": "Water Vapour (WVP)",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/WVP.tif",
      "proj:shape": [
        10980,
        10980
      ],
      "proj:transform": [
        10.0,
        0.0,
        399960.0,
        0.0,
        -10.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    },
    "SCL": {
      "title": "Scene Classification Map (SCL)",
      "type": "image/tiff; application=geotiff; profile=cloud-optimized",
      "roles": [
        "data"
      ],
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/SCL.tif",
      "proj:shape": [
        5490,
        5490
      ],
      "proj:transform": [
        20.0,
        0.0,
        399960.0,
        0.0,
        -20.0,
        1000000.0,
        0.0,
        0.0,
        1.0
      ]
    }
  },
  "links": [
    {
      "rel": "self",
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/S2B_1CDK_20201125_0_L2A.json",
      "type": "application/json"
    },
    {
      "rel": "canonical",
      "href": "https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/S2B_1CDK_20201125_0_L2A.json",
      "type": "application/json"
    },
    {
      "title": "sentinel-s2-l2a-aws/workflow-publish-sentinel/tiles-1-C-DK-2020-11-25-0",
      "rel": "via-cirrus",
      "href": "https://cirrus-earth-search.aws.element84.com/v0/catid/sentinel-s2-l2a-aws/workflow-publish-sentinel/tiles-1-C-DK-2020-11-25-0"
    },
    {
      "title": "Source STAC Item",
      "rel": "derived_from",
      "href": "https://cirrus-v0-data-1qm7gekzjucbq.s3.us-west-2.amazonaws.com/sentinel-s2-l2a/1/C/DK/2020/11/S2B_1CDK_20201125_0_L2A/S2B_1CDK_20201125_0_L2A.json",
      "type": "application/json"
    },
    {
      "title": "sentinel-s2-l2a/workflow-cog-archive/S2B_1CDK_20201125_0_L2A",
      "rel": "via-cirrus",
      "href": "https://cirrus-earth-search.aws.element84.com/v0/catid/sentinel-s2-l2a/workflow-cog-archive/S2B_1CDK_20201125_0_L2A"
    }
  ]
}

@bitner Heads up, https://github.com/stac-utils/stac-fastapi/pull/138 introduced a small breaking change to the base client interfaces.  Endpoints which accept an itemId and collectionId in the path (GET item, DELETE item, tiles extension) used to just accept (id: str, **kwargs) but now accept (item_id: str, collection_id: str, **kwargs).

hey @geospatial-jeff any chance you can review / merge this soon so we can just start flagging ticketing things from the main branch?

@bitner if you update to latest master and resolve the comments that I made above, happy to do a final review and merge in

@lossyrob Just synced this up with master and addressed the comments you had made

@bitner checked out the branch for this PR and tried docker-compose build; docker-compose up, and am getting a loop of:
stac-fastapi-sqlalchemy | error walking file system: FileNotFoundError [Errno 2] No such file or directory: '/app/venv/bin/python3.8'

in the logs. This doesn't happen on master. Any ideas?

@bitner checked out the branch for this PR and tried docker-compose build; docker-compose up, and am getting a loop of:
stac-fastapi-sqlalchemy | error walking file system: FileNotFoundError [Errno 2] No such file or directory: '/app/venv/bin/python3.8'

in the logs. This doesn't happen on master. Any ideas?
@lossyrob do you have a virtual environment somewhere in the tree under stac-fastapi? I think this could be the watchgod reloader on uvicorn

@bitner I was able to work around the venv issue by not loading the entire source into the container, which I think is better practice anyway.
diff --git a/Dockerfile b/Dockerfile
index ee0412f..21b7c64 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -12,7 +12,7 @@ ARG install_dev_dependencies=true
 WORKDIR /app

 # Install stac_fastapi.types
-COPY . /app
+COPY ./stac_fastapi /app/stac_fastapi

 ENV PATH=$PATH:/install/bin

diff --git a/docker-compose.yml b/docker-compose.yml
index c5124ac..bd6a98e 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -25,7 +25,7 @@ services:
     ports:
       - "8081:8081"
     volumes:
-      - ./:/app
+      - ./stac_fastapi:/app/stac_fastapi
     depends_on:
       - database
     command:
@@ -55,7 +55,7 @@ services:
     ports:
       - "8082:8082"
     volumes:
-      - ./:/app
+      - ./stac_fastapi:/app/stac_fastapi
     depends_on:
       - database
     command:
@@ -81,7 +81,8 @@ services:
       - POSTGRES_HOST=database
       - POSTGRES_PORT=5432
     volumes:
-      - ./:/app
+      - ./stac_fastapi:/app/stac_fastapi
+      - ./scripts:/app/scripts
     command: >
       bash -c "sleep 10 && cd stac_fastapi/sqlalchemy && alembic upgrade head && python scripts/ingest_joplin.py"
     depends_on:

Now I'm getting new errors on docker-compose up 🤔
stac-db                 | 2021-06-16 17:29:37.915 UTC [223] FATAL:  sorry, too many clients already
stac-fastapi-pgstac     | asyncpg.exceptions.TooManyConnectionsError: sorry, too many clients already
sqlalchemy-migration_1  | sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL:  sorry, too many clients already

(there's a bunch of those, all related to too many clients).
Confused on how that's not working for me and working for others - there doesn't seem to be any environment variables that I may be loading in and it's all containerized...any ideas on this one?

Hey @lossyrob ,
That looks like you are running out of PG connections, wondering if things just were finishing quicker on my machine so I wasn't hitting that?.
I just pushed a change for docker-compose that

does not use --reload for uvicorn
makes the changes you pointed out to limit the directories mounted
uses a pool of 1 by default for asyncpg
bumps up the number of total postgres connections in the docker pg instance

Famous words: "works on my system", but maybe if you still are running into issues we hop on a call to try to debug?

Looking good, but ingest_joplin.py is broken. Are you running it as part of testing? Or perhaps because the data is already there it's not running the ingest? You should stop and remove the containers to clear the data and try the startup process again to make sure a clean dev environment runs.
The script points to a non-existent data_dir, should be:
def ingest_joplin_data(data_dir=Path.cwd() / "stac_fastapi" / "sqlalchemy" / "tests" / "data" / "joplin"):

Seems like this broke during the subpackage reorg, but I'd recommend fixing here before merge.


Warning when click on show more button - Invalid prop slotStart of type date supplied to Popup, expected number

Do you want to request a feature or report a bug?
Bug
What's the current behavior?
When I click on the show more button it is showing the following warning in the console -
checkPropTypes.js:19 Warning: Failed prop type: Invalid prop slotStart of type date supplied to Popup, expected number.

Here is the screenshot for the warning -

What's the expected behavior?
It should not have to produce such type of warning.

I'm facing the issue on React 16.4.0 and react-big-calendar 0.20.1 version.
Warning: Failed prop type: Invalid prop `slotStart` of type `date` supplied to `Popup`, expected `number`.

I am also facing the same issue, React 16.4.2, react-big-calendar version 0.20.1.

Bug (
React 16.5.2, react-big-calendar version 0.20.1.


Make ex_doc a dev dependency

Typically ex_doc is depended on only for the current library/application instead of being a production dependency.

Nice, thanks!


Change state type in TVar and handle exceptions

Can you take a look as well, @taphu ?

 Also, I'm a little unclear about the intent of the real change. Can you describe the motivation?

I'm keeping only the changes discussed in #6 , I managed to mess up my branches, will force push asap.


Implement UI to show building activity

Closes #4626. I still need some opinions about the implementation (I am not familiar with the codebase) and the design.
We had three options for this: a favicon change, title change or onscreen animation. The favicon isn't so good because there are browsers that don't show it (Safari), the title isn't so good as well because if there are too many tabs then it will not be visible and both aren't good if you are developing on mobile because neither are visible. So I went with the onscreen approach:

Some caveats that I need opinions:

I implemented this within the Shadow DOM so it doesn't work on IE and Edge (whyyy). So maybe we would have to remove it from shadow dom or load a pollyfill (that I guess no one want to do)
It has been developed with React but there is absolutely no need for React, I am fine removing it but it won't be as maintainable as it is currently

I also implemented a config field on next.config.js that has three options: 'default' | 'minimalist' | 'none', here is an example:

Cool ;-)

I changed the shadow because now looking back I feel it was too heavy. New version:

@rafaelalmeidatk thank you for the incredible work in this PR. 🙏 We seriously appreciate it!

💯😲

🎊

Question: Is there any way to customize the position of the triangle? I have a Intercom window in the same position, which covers the triangle...


The code may not be consistent with the formula

In the paper, the description of the encoder in Chapter 3.1. IPT architecture is:

$y_0 = [ E_{p1} + f_{p1} , E_{p2} + f_{p2} , \dots, E_{pN} + f_{pN} ],$
$q_i = k_i = v_i = LN(y_{i-1}),$
$y_i^{\prime} = MSA(q_i, k_i, v_i) + y_{i-1},$
$\cdots$

however, in the class TransformerEncoderLayer of the python file model/ipt.py, the code writes:
class TransformerEncoderLayer(nn.Module):

    def __init__(self, d_model, nhead, dim_feedforward=2048, dropout=0.1, no_norm = False,
                 activation="relu"):
        ...

    def with_pos_embed(self, tensor, pos):
        return tensor if pos is None else tensor + pos

    def forward(self, src, pos = None):
        src2 = self.norm1(src)                                         # here
        q = k = self.with_pos_embed(src2, pos)             # here
        src2 = self.self_attn(q, k, src2)                            # here
        src = src + self.dropout1(src2[0])
        src2 = self.norm2(src)
        src2 = self.linear2(self.dropout(self.activation(self.linear1(src2))))
        src = src + self.dropout2(src2)
        return src

It's more likely the formula should be:
$v_i=LN([ f_{p1} , f_{p2} , \dots, f_{pN} ]),$
$y_0 = [ E_{p1} + f_{p1} , E_{p2} + f_{p2} , \dots, E_{pN} + f_{pN} ],$
$q_i = k_i = LN(y_{i-1}),$
, OR may they are equivalent ?  I'm confused. Thanks.

Sorry for the misleading. The two formulas are inequivalent and the second formula is right.

Thanks for your reply.


add golint?

add comment for exported function
don't use ALL_CAPS in Go names; use CamelCase

Lint is added to mage


Update README.md

Added the support for MS-HuBERT model . Paper: https://arxiv.org/pdf/2406.05661

Cool!


Add Change Log for 2.2.0

Common.Logging 2.2.0 has been released on nuget.org with a new assembly Common.Logging.Core. But the document has not been updated yet. Just a few sentences on what's been changed/added will help a lot. Thanks.

You should edit the title from "documents" to "change log" to make the request more clear.

ChangeLog.txt now updated through v3.1.0 in https://github.com/net-commons/common-logging/commit/99b77004982dbe3aaa656080550e1191995c12a4; thanks for the reminder!


Add qiime map func

Built on top of #1107
Adds the qiime_map_fp property to the prep template.

Changes Unknown when pulling 157b60a3d56c6033bf15433dcb529fae4fb5b0c8 on josenavas:add-qiime-map-func into ** on biocore:relax-md-req**.

Closing in favor of #1107 (it already includes the commits in here)