TableBody does NOT vertically scroll

[x] This is a v1.x issue (v0.x is no longer maintained).
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior

TableBody should scroll vertically while TableHead is frozen in place.:
https://stackoverflow.com/questions/51068118/material-ui-give-tablebody-a-max-height-and-make-it-vertically-scrollable/51107369#51107369
Current Behavior

TableBody and TableHead scroll  together (TableHead should be frozen):
https://stackoverflow.com/questions/51068118/material-ui-give-tablebody-a-max-height-and-make-it-vertically-scrollable/51107369#51107369
Steps to Reproduce (for bugs)
https://codesandbox.io/s/y03vmkkkqj
Context
This is such a basic feature for any table, how does Material UI NOT support this? That's ridiculous
Paging is supported, but who wants to page? It's such an annoying/slow user experience.
Infinite scrolling rocks!
Your Environment

Tech
Version

Material-UI
v1.0.0

This is such a basic feature for any table, how does Material UI NOT support this? That's ridiculous

@etayluz If Material-UI is so far from your needs that it provokes this sort of reaction, you might want to explore alternatives.  Being the world's favourite React UI library doesn't make it right for everyone, and you're under no obligation to use it.
OTOH, if you feel you can contribute a meaningful improvement, we're all ears.

@etayluz I'm closing as a duplicate of #6625.

This is such a basic feature for any table

And yet, does the native HTML table support it?

Respectfully, this doesn't seem to be a duplicate of that issue.
I would also love to see how to get a vertically scrolling body with a sticky head and foot.
I have been playing around with the css and structure for a bit and haven't come up with a good way to do this.  The closest I have come was from following the suggestion to make new Table components around the head, body and footer components and then use display flex to manage the vertical space.  This approach works great and the table looks almost exactly how I want it but the table headers no longer line up with the table body columns.

        <TableHead>
          <TableRow>
            {headCells[nodeType]
              .map(
                mapHeadCells(filter, setFilter, filtering, handleSort, order, setOrder, orderBy, setOrderBy, setPage)
              )
            }
          </TableRow>
        </TableHead>

          <TableBody>
            {tableSort(nodes[nodeType], order, orderBy)
              .filter(applyFilter(filter))
              .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
              .map(mapNodesToTable[nodeType])
            }
          </TableBody>

        <TableFooter>
            <TableRow>
              <TablePagination
                rowsPerPageOptions={[10, 15, 25, 50, 100]}
                colSpan={4}
                count={nodes[nodeType].filter(applyFilter(filter)).length}
                rowsPerPage={rowsPerPage}
                page={page}
                onChangePage={(e, newPage) => setPage(newPage)}
                onChangeRowsPerPage={handleChangeRowsPerPage(setRowsPerPage, setPage)}
                ActionsComponent={TablePaginationActions}
              />
            </TableRow>
          </TableFooter>

In case anyone else is looking for this later, I achieved an effect close to what I was looking for with stickyHeader on the Table component with overflow: auto; on the parent container.  I was also looking for a sticky footer which I was able to achieve using the same approach as the sticky header:
    .MuiTablePagination-root {
      position: sticky;
      bottom: 0;
      background-color: #FAFAFA;
    }

Hi, @oliviertassinari how this solution (https://github.com/mui/material-ui/issues/6625#issuecomment-381729555) solves this issue ?
Just having a sticky position header does not solves the scrollbar issue on TableBody
Could you please help here ?

Hi, @oliviertassinari how this solution (#6625 (comment)) solves this issue ? Just having a sticky position header does not solves the scrollbar issue on TableBody Could you please help here ?

Do you got any solution for this?


[ENH] isolate numpy imports

This PR isolates some numpy imports in order to solve the readthedocs build issue.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (e2271b5) 84.18% compared to head (d2f95e6) 84.15%.
Report is 1 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #242      +/-   ##
==========================================
- Coverage   84.18%   84.15%   -0.03%
==========================================
  Files          43       43
  Lines        2889     2891       +2
==========================================
+ Hits         2432     2433       +1
- Misses        457      458       +1

Files
Coverage Δ

skbase/utils/tests/test_check.py
100.00% <100.00%> (ø)

skbase/utils/tests/test_deep_equals.py
100.00% <100.00%> (ø)

... and 1 file with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Remove Documenter

This is not a big deal of course because the package itself has pretty common dependencies, but Documenter functionality is not used by CmdStan.jl and thus the package isn't really a dependency.
I on Julia Slack's #helpdesk and got a green checkmark (which I take to be agreement) when I proposed that the most Julian way to record dependencies for your docs/make.jl script is to create a Project.toml in the docs/ folder that lists Documenter as a dependency (as well as the main package and any other dependencies) with a [compat] tag for the right versions. This way when you want to generate documentation you cd() to the directory and ]activate . the environment before running make.jl.
I could see this moving to a different [extras] target in the future, but at present it might be good to remove it as a dependency.

Hi @Byrth,
Thank you, removed it and is in the queue to be merged as CmdStan.jl v6.0.1.
Best,
Rob

Nice! Amazingly quick again. Thanks, Rob.

You're welcome. Please, let me know if you come across any other issues!

Will do! Going to close this one because my version just updated


Implement support for some basic attributes for the windows terminal.

Closes #60.

You'll probably notice that it doesn't have the full list of values that windows supports as methods, and that's because of how crossterm constructs styles and what the other windows' values are used for.
The values I've omitted, but added explicit members in the enum for are "reset" values, and due to how the styles are constructed, it you can't really construct a line that contains multiple "on"s and "off"s.
Eg, you can't say style("Introducing ").bold().text("Me").reset().text(" and I.") which would output something like "Introducing Me and I."
The ObjectStyles in crossterm don't seem to be built that way, so it makes no sense to add explicit support for the values as methods.
The values themselves are there in the enum, so you could conceivably, chain together multiple object styles, printing them out one by one, and then in that case, the reset would come in handy, but at that point, it might be easier just to wrap that with your own thing....

Look back, I think a better solution to this might be doing what Std does.
Have system specific modules, and then just export those based on the system.
That way the user can still access attributes for other systems, as it is possible that someone can use this library for sending terminal seqs over the wire.

Yeah, but do it in a controlled fashion.
format!("{}Inverted{}Normal", Attribute::Inverted, Attribute::Reset)
It doesn't stop people from being stupid, but it didn't do that before.
It just makes composing things easier.

Jup that totally does it, however, for now, I am fine whit those changes. This should become another PR.


Fix/heisenbug with rationals

Codecov Report

Merging #10 (d1095bc) into main (8e88161) will decrease coverage by 1.78%.
The diff coverage is 94.11%.

@@            Coverage Diff             @@
##             main      #10      +/-   ##
==========================================
- Coverage   94.36%   92.57%   -1.79%
==========================================
  Files           8        8
  Lines         266      229      -37
==========================================
- Hits          251      212      -39
- Misses         15       17       +2

Impacted Files
Coverage Δ

src/arithmetic.jl
94.73% <91.66%> (-1.27%)
:arrow_down:

src/algebra_elts.jl
100.00% <100.00%> (ø)

src/types.jl
83.33% <100.00%> (-0.31%)
:arrow_down:

src/bases.jl
70.00% <0.00%> (-30.00%)
:arrow_down:

src/show.jl
86.95% <0.00%> (-1.51%)
:arrow_down:

src/mtables.jl
98.43% <0.00%> (-0.18%)
:arrow_down:

src/mstructures.jl
100.00% <0.00%> (ø)

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 5c3af60...d1095bc. Read the comment docs.


Change go.mod module path to lowercase

Hi, good on you for updating your lib to use go modules! However, you are using CamelCase in your module path declaration which is throwing off all my import statements. Can we have this changed to lowercase since go.mod is case-sensitive?
i.e. module github.com/puerkitobio/goquery instead of module github.com/PuerkitoBio/goquery
I can make a pull-request if you'd like -- in the meantime I've forked your repo, changed the go.mod module path and bumped the version tag and using a replace declaration in my app's go.mod file to get around this.
Great library btw 👍

Thanks for the quick reply and I totally understand the issue of not wanting to break ppl's code. TBH I'm surprised/annoyed they implemented Go modules w/ case sensitive paths -- maybe this will be revised...
Anyways, thanks for the 1.4.x tag version tip!


Fire Emblem Engage!!

Any chance Fire Emblem Engage could be added by the release on the 20th?
Thank you!!! 😁

I have added the game(s) you requested in the most recent release: https://github.com/hobby-grade/Nintendo-Switch-Discord-Status/releases/tag/v1.1.5
Thank you for checking out the project, reach out if you have any more suggestions!


fix typo: acredited -> accredited, capitalize acronyms

I'm not sure if this is the correct place to bring this to UL-FSRI's attention but I noticed a typo. Accredited was spelled 'acredited' in models.py. I corrected the issue and am sending a pull request but it seems likely that the upstream source for these codegen-based models would need updating as well if this is a good change.

@jwaltz Thanks for the PR. This was addressed in #11 (as well as other typos and alignment of the client to the release of v1 of the API).


Players not getting paid

Just recently switched to EcoLite and did the migrate command from my previous eco plug total economy and now players aren't getting paid from other plugin commands on my Pixelmon Server

What versions of EconomyLite and Sponge are you using? Also, what plugins are you using to pay?

EconomyLite-7.1.0-2.14.3.jar
spongeforge-1.12.2-2705-7.1.0-BETA-3206.jar
One plugin was an error on my part but with this one people aren't getting paid
GTS-3.10.1-S7.1.jar

To put more into perspective on this issue, GTS makes default currency calls for all it's payment operations. Mono claims to be using the default currency, so I'm currently lost on where the issue currently lies.
For your reference:
https://github.com/NickImpact/GTS/blob/master/src/main/java/com/nickimpact/gts/entries/prices/MoneyPrice.java

Can you send the server debug logs?

debug.zip

I see in your log that GTS is modifying the balance of players and the balance is being successfully returned on use of the /balance command. Could you please describe your issue in more detail?


Goto Implementation should suggest all subtypes

Steps to reproduce:
interface Person {
}

class Teacher implements Person {
}

class SeniorTeacher extends Teacher {
}

Goto implementation on Person only lists Teacher. It should list SeniorTeacher as well.

In the situation below (it is a fourslash test in TypeScript), trigger goto implementation at x.hello()

jetbrains team member considers hello is a method of SuperBar, so, NotBar.hello should be returned, while TypeScript said NotBar and Bar are not structurally equal, so NotBar.hello should not be returned. Do you accept jetbrains' approach? If so, I can submit a pr for this.


DPL-989 - Modify pool creation to use aliquots rather than libraries to support revio multiplexing

Closes #
Changes proposed in this pull request

Instructions for Reviewers
[All PRs] - Confirm PR template filled
[Feature Branches] - Review code
[Production Merges to main]
    - Check story numbers included
    - Check for debug code
    - Check version

This is on hold while we finish the library work.

Closing in favour of https://github.com/sanger/traction-service/pull/1236


[1.19.2 Bug] CC:Bridge causing huge recipes packet breaking rei

Description
Adding CC:Bridge into AQM2 for 1.19.2 causes a huge packet for recipe sync, breaking rei. Basically, REI no longer works.
This is whats shown in console
java.lang.IllegalArgumentException: Packet too big (is 8434739, should be less than 8388608): net.minecraft.network.packet.s2c.play.SynchronizeRecipesS2CPacket@782dd841
	at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:48) [server-intermediary.jar:?]
	at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:14) [server-intermediary.jar:?]
	at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) [netty-codec-4.1.77.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) [netty-transport-4.1.77.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:764) [netty-transport-4.1.77.Final.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext$WriteTask.run(AbstractChannelHandlerContext.java:1071) [netty-transport-4.1.77.Final.jar:?]
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) [netty-common-4.1.77.Final.jar:?]
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) [netty-common-4.1.77.Final.jar:?]
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) [netty-common-4.1.77.Final.jar:?]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:503) [netty-transport-4.1.77.Final.jar:?]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995) [netty-common-4.1.77.Final.jar:?]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.77.Final.jar:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]

Oddly, when i left CC:Bridge on client side, and not in server, REI showed, and i was able to join the server.
To Reproduce
Steps to reproduce the behavior:

Add cccbridge-mc1.19.2-fabric-v1.5.1.jar to Server and Client in AQM2 Modpack
Join a locally hosted server, or dedicated server.
REI Breaks.

Expected behavior
REI to work
Software (please complete the following information):

Minecraft Version [e.g. 1.18.2]: 1.19.2
Mod Version [e.g. 1.2.1]. cccbridge-mc1.19.2-fabric-v1.5.1.jar
ModLoader [Forge / Fabric] fabric

Well now im getting the issue again even with CC:Bridged removed. I think there is another source of mod confliction here interacting with CC:Bridge added and something else. stay tuned will update.

Cccbridge does nothing within the REI API nor custom recipes.
I also can't see where cccbridge is involved in the given logs.
I will close this issue as I don't think that this mod does break this. Feel free to reopenbthis however if you figured the opposite.

I'm going to close because it happened magically again after I released the update of my pack, even though I verified 6 different times it was working again before doing so.
The pack update does not include cc bridge so you're right there's no way it's Cc bridge


Add eq for VCSDependency

VCSDependency already defines __hash__, listing only relevant fields for
hashing. However, when doing dictionary lookup, Python will compare not
only hashes, but also equality by __eq__. Since __eq__ was not defined
for VCSDependency, cache for deferred VCS dependencies in Poetry itself
did not work.
See this line in poetry.puzzle.provider:
https://github.com/python-poetry/poetry/blob/5900f3761cd0811c3e717b356b1b877b971c4ff0/src/poetry/puzzle/provider.py#L174
When project has several VCS dependencies AND poetry tries different
solution, the repo will be cloned and parsed for each solution
independently, while this is obviously not what the user wanted.
For our project this fix reduces 'poetry lock --no-update' time from 4
minutes to 1m20s.
This may be related to problems reported in Poetry issues python-poetry#2094, python-poetry#5194
and python-poetry#4924.
Resolves:

[ ] Added tests for changed code.
[ ] Updated documentation for changed code.

Your markdown obscures that you're defining __eq__ for VCSDependency in this PR. Clear thinking!

Oops, sorry! This comes from a commit message and I did not think about how Github would render it.

This change overrides the existing __eq__ implementation inherited from Dependency.
That feels a bit scary to me, but hopefully someone who actually understands this code will be able to give a more helpful review - I just wanted to be sure this was spotted.

I have the impression that there is more to it and the fix falls short. Probably, the __hash__ method has to be changed, too.
I cannot fully assess the consequences but I'd suggest the following changes:
__hash__ should call super().__hash__() and xor the hashes of all (unchangeable) relevant attributes not defined in the parent class.
__eq__ should call super().__eq__() and compare at least the attributes included in __hash__. I have to admit that I have no idea which attributes have to be included. In general I'd say "all", but that's probably too naive.

Yeah, I was actually able to find an issue with my solution during local testing. I will update the PR once I get to it. Thanks!

Superseded by #370

Thanks for the fix!
Do I understand correctly that now poetry will reuse fetched git data during solving?

I assume it should. However, a lot has changed downstream condiserding git due to python-poetry/poetry#5428. If you want to test:
pipx install --force --suffix=@git git+https://github.com/python-poetry/poetry.git
pipx inject --force poetry@git git+https://github.com/python-poetry/poetry-core.git

Then, you can use poetry@git (instead of poetry).

Wow, thanks @radoering!
Does this also mean that when pyproject.toml mentions exact commit hash, poetry will not refetch repository every time dependencies are recalculated? For me, this is a major source of slowness when doing poetry lock --no-update routinely.
Also, it would be great if poetry could cache wheels built from git dependencies and reuse them when git commit hash does not change. Is this possible?


Enable application queue and node labeling

During a stream and task deployments it's now possible to define
yarn application queue and labelExpression which are then used by
a scheduler during a resource allocation.
Queue and label expression is passed via deployment properties and
defaults to 'default' and empty respectively.
Queue is always application level setting as it is used by a client
submitting app into a yarn.
Label expressions works on a two level. On appmaster level, if set will
allocate resources from yarn based on expression for both appmaster and containers.
If expression is also set on a container level, that will override application
level setting effectively allowing to place appmaster on different location than
containers.
For streams, all modules need to share same setting. This maybe lifted in a future
so that we can place individual modules on different nodes based on labeling.
Usage from shell goes along these lines:

  task create --name footask --definition "timestamp"
  task launch --name footask --properties "module.timestamp.dataflow.yarn.app.taskappmaster.queue=unfunded"
  task launch --name footask --properties "module.timestamp.dataflow.yarn.app.taskappmaster.labelExpression=green"
  task launch --name footask --properties "module.timestamp.dataflow.yarn.app.taskappmaster.labelExpression=green,module.timestamp.dataflow.yarn.app.taskcontainer.labelExpression=red"
  stream create --name foostream --definition "time|log"
  stream deploy --name foostream --properties "module.*.dataflow.yarn.app.streamappmaster.queue=unfunded"
  stream deploy --name foostream --properties "module.*.dataflow.yarn.app.streamappmaster.labelExpression=green"
  stream deploy --name foostream --properties "module.*.dataflow.yarn.app.streamappmaster.labelExpression=green,module.*.dataflow.yarn.app.streamcontainer.labelExpression=red"

Fixes spring-cloud/spring-cloud-dataflow-admin-yarn#14
Fixes spring-cloud/spring-cloud-dataflow-admin-yarn#20
Fixes spring-cloud/spring-cloud-dataflow-admin-yarn#48

'..' in above commands are wrongly formatted by github. it's correct in a commit message.

Looks OK, although we need to work out a more generic approach for labeling/placing module deployments that work across SPIs

Merging this as-is for now, we can rework it once we have a more generic approach worked out.


When branching the release-xx branch jobs will fail on the repositories.

Then because of this, subsequent jobs to continue releasing from the stable branch will fail:
for example: https://github.com/submariner-io/releases/runs/2475115623
[releases]$ docker pull quay.io/submariner/lighthouse-agent:release-0.9-c7e4ecd
Error response from daemon: manifest for quay.io/submariner/lighthouse-agent:release-0.9-c7e4ecd not found: manifest unknown: manifest unknown (edited)

On the operator repo we can see (trying to generate a release-0.9-xxxxx image:
[submariner-operator]$ docker pull quay.io/submariner/submariner-gateway:release-0.9
Error response from daemon: manifest for quay.io/submariner/submariner-gateway:release-0.9 not found: manifest unknown: manifest unknown (edited)

or in submariner submariner release job https://github.com/submariner-io/submariner/runs/2474614384 failed with:
[submariner]$ docker pull quay.io/submariner/submariner-operator:release-0.9
Error response from daemon: manifest for quay.io/submariner/submariner-operator:release-0.9 not found: manifest unknown: manifest unknown

Also, all repos fail (https://github.com/submariner-io/submariner-operator/runs/2475360976 )with:

[submariner-operator]$ [cluster2] bash -c curl -Ls https://get.submariner.io | VERSION=release-0.9 DESTDIR=/go/bin bash
Installing subctl version release-0.9
  OS detected:           linux
  Architecture detected: amd64
  Download URL:          https://github.com/submariner-io/submariner-operator/releases/download/subctl-release-0.9/subctl-release-0.9-linux-amd64.tar.xz

Downloading...
curl: (22) The requested URL returned error: 404

I suggest that, on the moment of branching,:

we re-tag all the existing devel images as release-0.9 so we unblock the inter-dependencies, then each repo will regenerate that tag with a new one once rebuilt.
we upload subctl release-0.9 (64bit intel linux binary) to the release.

This is indeed problematic, however may I suggest a simpler solution of dropping the "post merge E2E" jobs altogether?
It seems they don't give much value, and they usually fail due to issues like this.
I, for one, never seen such a job catch a real bug, just failures dues to some missing images and such.

Partially addressed by https://github.com/submariner-io/shipyard/pull/623

E2E on merge jobs were dropped a while ago, this shouldn't be a problem any more


Applied fixes from StyleCI

This pull request applies code style fixes from an analysis carried out by StyleCI.

For more information, click here.

[Current coverage][cc-pull] is 70.68%

Merging [#30][cc-pull] into [develop][cc-base-branch] will not change coverage

@@            develop        #30   diff @@
==========================================
  Files            10         10
  Lines           348        348
  Methods          85         85
  Messages          0          0
  Branches          0          0
==========================================
  Hits            246        246
  Misses          102        102
  Partials          0          0

Powered by Codecov. Last updated by [f12bf9c...620eb02][cc-compare]
[cc-base-branch]: https://codecov.io/gh/tidal/WampWatch/branch/develop?src=pr
[cc-compare]: https://codecov.io/gh/tidal/WampWatch/compare/f12bf9c74e5b65688f3ca9e307b6f19081b72116...620eb026d5cd6ee9a20ba7264eca7ecb0bdc869b?src=pr
[cc-pull]: https://codecov.io/gh/tidal/WampWatch/pull/30?src=pr


Trouble on Data being sent to strip?

Hey all,
I'm super new to trying to get things connected over the internet, but this project seemed within my scope. I love any project with light strips and wanted to update my current set up to connect to Wi-Fi like Ben's, but I'm having a little trouble.
My set up was:
Arduino Uno (running Neopixel codes)
5V 10A power supply
WS2812B RGB LED strip
I know that Ben is using a 12V strip, but I thought that my strip being 5V would be less of a hassle. To get this project updated, I got a raspberry pi running hassbian with home assistant on it and that seems to be fine. I got a nodeMCU to replace the Arduino Uno and a logic converter for the data signal. The light strip powers up fine but I'm not sure what's going on with the data... I can't get it to respond from the commands from Home Assistant. My strip just lights up a solid blue-ish color and doesn't respond to anything. When I check the serial monitor on the Arduino IDE, it is completely blank. I feel that the issue has something to do with the nodeMCU but I can't place my finger on it. What could I be doing wrong? Data pin and ground on the light strip seems to get just under 5V (~4.9) and the power and ground on the strip are getting ~5.2V... I wonder if this could be the issue as well? Thanks in advance for your help guys.

Sorry peeps! I kept messing with it and tried some things and got it working... Not sure what made the difference but I think it was changing the programmer in the Arduino IDE to "Arduino as ISP" instead of the default that it was (something like AKP MSRVII?). Closing the issue as my set up lights up and responds promptly!


Add strict client-side routes - always respect presence or absence of a trailing slash

Have you read the Contributing Guidelines on issues?

[X] I have read the Contributing Guidelines on issues.

Prerequisites

[X] I'm using the latest version of Docusaurus.
[X] I have tried the npm run clear or yarn clear command.
[X] I have tried rm -rf node_modules yarn.lock package-lock.json and re-installing packages.
[X] I have tried creating a repro with https://new.docusaurus.io.
[X] I have read the console error message carefully (if applicable).

Description
When running a site with trailingSlash: false, the build creates an html file per page, then when going to that page URL with an added slash (e.g. site.com/page/) the server returns a page not found with a 404 code as expected, but the client router is re-rendering the page as if the slash wasn't part of the URL, which in turn causes links to break.
Reproducible demo
https://stylable.io/docs/guides/migration-v3/
Steps to reproduce

open network to see 404 response (you can sometimes see the 404 flickers)
see page is re-rendered with the content as if the slash was not there
go to the Runtime reference link and click it to see a broken link
change the initial url to be without the slash and everything works fine

Expected behavior
Client should respect 404 page and either keep the 404 as is or redirect the URL to remove the slash
Actual behavior
Client is "fixing" routing without actually redirecting the URL resulting in broken links and 404 flicker
Your environment

Public source code: https://github.com/wixplosives/stylable.io
Public site URL: https://stylable.io/
Docusaurus version used: 2.3.1

Self-service

[ ] I'd be willing to fix this bug myself.

Thank you for the quick response!

Actually this is not "expected", it depends on the host and the behavior you want.

Fair enough. But the default non-configurable tolerant routing together with the broken links is the main issue (the flickering 404 is a less significant).
So my options are:

fixing all the links to be relative file paths with extensions
somehow change github-pages behavior to serve the page.html/
wait for a configuration option to make the routing strict

Is there a way to override react router configuration?

fixing all the links to be relative file paths with extensions

In any case that seems like a good to do

somehow change github-pages behavior to serve the page.html/

GitHub pages unfortunately does not provide any server-side option and not really an host I'd recommend if you want any kind of server-side control

wait for a configuration option to make the routing strict as the host

yes
In case you want to contribute (or simply make a PR POC with an hardcoded value), this is where you could add the strict option (similar to exact):
https://github.com/facebook/docusaurus/blob/main/packages/docusaurus/src/server/routes.ts#L101

Is there a way to override react router configuration?

I don't think there's a way to do that in userland without core modifications.
Maybe this could work but not sure: creating a Webpack plugin that modifies the .docusaurus/router.js file just before Webpack compilation starts.


BigQuery NextPageToken incorrectly returns null

At some point the NextPageToken field on BigQueryPage stopped working - it was working previously, but now it is always set to null.
I had not changed anything in my code, so I suspect the Google BigQuery API might have changed and broken something...?
Sample code:
BigQueryJob job = bqclient.CreateQueryJob("SELECT * FROM mytable", query_params, query_options);

BigQueryJob result;
do
{
    Thread.Sleep(500);
    result = bqclient.GetJob(job.Reference);
} while (result.Status.State.ToUpper() == "PENDING" || result.Status.State.ToUpper() == "RUNNING");

BigQueryResults res = result.GetQueryResults();
BigQueryPage page = res.ReadPage(100);

At the end of this code, res.TotalRows was 233, page.Rows.Count was 100, but page.NextPageToken was null
(I have since rewritten my code to use bqclient.ExecuteQuery() instead, but thought you might want to look into it.)

Moved to google-cloud-dotnet as that's where the Google.Cloud.BigQuery.V2 code is.
When you say you've rewritten your code to use ExecuteQuery instead - does it then work? Or is it still failing in the same way? Could you tells us what query_params and query_options you're using? If I could reproduce this, that would really help.
Please also say what version of the library you're using - you say you haven't changed anything in the code, but have you changed library version, perhaps?

Hi @jskeet , I posted in google-api-dotnet-client because that was the URL of the library in the NuGet package screen. My project is running .NET Framework 4.6.1 if that helps.
Yes, it works with ExecuteQuery (ExecuteQuery doesn't use pages, it just has all the results available).
The query_params only has parameters set for my query (ie. startDate and endDate).
The query_options is just a new QueryOptions(), no fields set/changed.
Were you unable to reproduce it then?
Good thought about updating library version: the library was Google.Apis.Bigquery.v2 version <IP_ADDRESS>5, which I'd last updated in January 2020.
I had tried updating to the latest, version <IP_ADDRESS>8, but the problem was still there.
I was running <IP_ADDRESS>5 from August 2019 - January 2020. I'm not sure exactly when it broke (the function is not used everyday).
I'll revert back to <IP_ADDRESS>5 tomorrow to test if that fixes it.

I posted in google-api-dotnet-client because that was the URL of the library in the NuGet package screen

It shouldn't be for Google.Cloud.BigQuery.V2. Were you perhaps looking at Google.Apis.Bigquery.v2, which is the underlying library that Google.Cloud.BigQuery.V2 wraps? (That's the library you're referring to below, but it's not the library that contains the types you've been referring to.)

Good thought about updating library version: the library was Google.Apis.Bigquery.v2 version <IP_ADDRESS>5, which I'd last updated in January 2020.
I had tried updating to the latest, version <IP_ADDRESS>8, but the problem was still there.

The library containing BigQueryClient etc is Google.Cloud.BigQuery.V2. Which version of that are you using, and has it changed recently?

Were you unable to reproduce it then?

I haven't tried yet - I wanted more information before I tried to do anything. I'd still like to know the versions of Google.Cloud.BigQuery.V2 before I delve into this further.

Ok, sorry, I'm following now - the version of the Google.Cloud.BigQuery.V2 is 1.4.0. No new version available.
Was previously 1.3.0 from May 2019 to January 2020.
I will revert it back tomorrow and see if that fixes it.

Okay, that's helpful, thanks. (There is a 2.x beta release, but no 2.x GA release yet.)
Of particular note, we reimplemented query handling in 1.4.0 to use GetQueryResults instead of ListRows, so that might explain things.
With that information, I'll try to reproduce the issue.

Okay, I've now reproduced the issue. See the code below - you need to comment out the CreateDataset call after running it once.
Results:

1.3.0: valid token
1.4.0: null token
2.0.0-beta01: null token

Will look into what's causing that now.
using Google.Cloud.BigQuery.V2;
using System;
using System.Linq;

class Program
{
    const string DatasetId = "Issue4678";
    const string TableId = "SampleData";

    static void Main(string[] args)
    {
        if (args.Length != 1)
        {
            Console.WriteLine("Please specify a project ID as the only command line argument");
            return;
        }
        var client = BigQueryClient.Create(args[0]);
        CreateDataset(client);

        var table = client.GetTable(DatasetId, TableId);
        BigQueryJob queryJob = client.CreateQueryJob($"SELECT * FROM {table}", null);
        queryJob = queryJob.PollUntilCompleted();
        BigQueryResults res = queryJob.GetQueryResults();
        BigQueryPage page = res.ReadPage(100);
        Console.WriteLine($"Fetched {page.Rows.Count} rows");
        Console.WriteLine($"Next page token: '{page.NextPageToken}'");
    }

    static void CreateDataset(BigQueryClient client)
    {
        client.CreateDataset(DatasetId);
        var schema = new TableSchemaBuilder
        {
            { "TextField", BigQueryDbType.String }
        }.Build();
        var table = client.CreateTable(DatasetId, TableId, schema);
        var rows = Enumerable.Range(0, 300)
            .Select(index => new BigQueryInsertRow { ["TextField"] = $"Row {index}" });
        table.InsertRows(rows);
    }
}

Great, thanks for looking into it :)
(also, I'm noting down .PollUntilCompleted() for future ref - much nicer than my example!)

Okay, I've found and fixed the issue - it was a typo, basically, referring to an instance field instead of a local variable.
It fails the same way for me with ExecuteQuery.
Given the severity of this, I'm going to suggest creating a 1.4.1 patch version as well as fixing it for the next 2.x beta release.
Slightly alarmed that this wasn't caught by tests... that's the next thing to fix.

As a workaround for the moment that would make the code more efficient anyway, if you specify a PageSize in the GetQueryResultsOptions, that will fix it.

Patch release 1.4.1 has now been published. I'm 99% sure this will fix the issue for you, but please let me know if you have any further problems.


Write blog post about QA process

I added a paragraph

@Maroyafaied This is ready for your review: https://doimspp-my.sharepoint.com/:w:/g/personal/malcolmj_mms_gov/ERxjBuQmNnpNmQYxYWULdakB7nKCx0_m0LNQcinq8XSj3Q?email=Maroya.Faied%40onrr.gov&e=NhjaGA

@lpgoldstein looks good, I only had minor changes.

@Maroyafaied Thanks! I'll create an issue to publish the blog next sprint.


Seperate out postgres dependencies into an extra

In a separate PR, I'd like to also have
[tool.poetry.group.dev.dependencies]
black = "^23.10.1"
pytest = "^7.4.3"

but we need to make sure all the scripts/github actions/readme run poetry install --with dev [--all-extras]

Moving to #337


The test test_thread_safety throws exceptions

The test test_thread_safety throws the following exceptions:
Traceback (most recent call last):
 File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/threading.py", line 932, in _bootstrap_inner
 self.run()
 File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/threading.py", line 870, in run
 self._target(*self._args, **self._kwargs)
 File "/home/runner/work/unitxt/unitxt/tests/test_random_utils.py", line 64, in thread_function
 with nested_seed():
 File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/contextlib.py", line 113, in __enter__
 return next(self.gen)
 File "/home/runner/work/unitxt/unitxt/src/unitxt/random_utils.py", line 30, in nested_seed
 state = _thread_local.random.getstate()
AttributeError: '_thread._local' object has no attribute 'random'

See for example here.
These are thrown by the threads created in the test, causing the threads to exit. However, the test does not fail, since it is not checked whether an exception was thrown by the threads.
The exception is thrown because the random attribute is not initialized for the created threads. So, when they try to get a nested seed (here) an exception is thrown.


Review nature of adverts on search results page

Site adverts look like 'spam' adverts rather than appropriately targeted for user demographics.

Seems to be ok now. On-going task to block such ads.


[T3A5][T16-A2]Xie Jihui

Ready for review

@xjh666 Remember to actually make changes to the TextUi class such that it uses the formatter class. Please close the PR after reading comments.


disableSuccessNotifications() method is not working on standaloneSass changes

Laravel Mix Version: 1.2.2
Node Version (node -v): 8.1.4
NPM Version (npm -v): 5.3.0
OS: macOS 10.12.5

Description:
Using the standaloneSass() method in combination with the disableSuccessNotifications() method is not suppressing success notifications
Steps To Reproduce:
Compile some Sass using the standaloneSass() method in combination with the disableSuccessNotifications() which will result in you still receiving notifications.

Can confirm. I'll fix this soon.

Fixed. Will be in next tagged release.

Thanks for fixing this. I can confirm that disableSuccessNotifications() works on Laravel 5.7.


Enable and fix load tests

Enable the load tests by default and fix the telemetry load test, which
was missing an import.
Fixes #5

LGTM


Explore connectivity options

What this PR does / why we need it
Towards https://github.com/giantswarm/giantswarm/issues/30831

Things to check/remember before submitting

If you made content changes

Run make lint dev to render and proofread content changes locally.
Bump last_review_date in the front matter header if you reviewed the entire page.

@pipo02mix are you ready for review (asking because draft status)?

NOw it is @stone-z

@stone-z thanks for the extensive review!


Sidenav design

Here a proposition for the sidenav design

@feloy this is really helpful thank you so much for doing that! 👍 merged.

@btroncone I don't see why not! @feloy?


[Ios] [Adaptive Cards Input Toggle(CheckBox) display issue in Iphone]

Platform
What platform is your issue or question related to? (Delete other platforms).

iOS

Author or host
Ms Teams
Details
We have created bot using Microsoft bot-framework which is integrated to Microsoft teams. We have created few adaptive cards for interactive conversation with bot. One of the Adaptive card is causing design issue in IPhone X Microsoft Teams Application.
We used Adaptive card template for building this card which displays the list of Tasks along with status of the task. Each task has Input.Toggle (Checkbox) and at the end a button will be displayed. When Checkbox's are selected and button is clicked. Sample design as shown Adaptive Card Design Preview
We are sending new card with task details where they can edit the status and so on. Please find the JSON data below.
Card Payload Editor Json Data:
Card Payload.txt
Sample Data Editor:
Sample Data.txt
The InputToggle is inside the column set with width as auto and it is perfectly rendering in Microsoft Teams Desktop and   Android App  but whereas in IOS app it is not showing.
When we set the width property to stretch, InputToggle is getting displayed in IOS App in big size but in Desktop App and Android App the column is pushing and occupying much space.
Please help me so that we can display the Input.Toggle in IOS Microsoft Teams without breaking the design in Desktop and Android Teams App.
Adding final JSON sent to the bot. The columns in the column set will be changed dynamically based on the ask list in database.
Final Json.txt
Thank you.

@MonoGO Thanks for reporting this! We could repro the issue and we have raised a bug for it.

@MonoGO what templating library are you using here and how are you rendering on iOS? FYI that we are in the middle of reworking our templating packages for JS + .NET and releasing an update within the next few weeks so do watch the releases page for that. Meanwhile @jwoo-msft yet another test card for us to test out with the templating packages albeit .NET.

@shalinijoshi19 thanks for the reply. We are building JSON using Adaptive templating service and sending/receiving messages via REST api .
The adaptive card is getting rendered in the IOS Teams mobile app.

@VikrantSingh01 are you aware of this issue with Input.Toggle on iOS? @jwoo-msft thoughts here?


Position Relative elements show on top of dropdown sub-menus

How to reproduce this bug:

Download a fresh copy of Foundation 6.3.1, including all components and flex grid.

In the example index.html file, add the following just below the  tag:

        <button class="menu-icon dark" type="button" data-toggle></button>

      Site Title

          One

One

Two

Three

Welcome to Foundation

Here's a bunch of content in a callout panel.

            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
            incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
            exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
            irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
            pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
            deserunt mollit anim id est laborum.

Load the page; resize to a medium screen; and point to the "One" dropdown menu in the top-bar.

What should happen:
The items in the dropdown menu should be visible on-screen, on top of other content of the page.
What happened instead:
Dropdown items are displayed underneath the div.callout panel provided in the example.
Test case:
https://codepen.io/anon/pen/MpVoYb
Observation
This is an issue that relates generally to elements with position: relative showing on top of the sub-menu, which is position: absolute. This also occurs when there are breadcrumbs on the page: the / character used in breadcrumb lists is pos relative, and shows up on top of the sub-menu.
(Produced in Chrome 57 64-bit)

Well, the root cause is a z-index issue. It seems that the z-index for .sticky is explicitly set to 0 (not sure why) when the element is fixed which, I guess, applies to the entire nav. There's no z-index set for callout but, as you pointed out, that relative positioning kicks in and ends up getting priority somehow.
Two ways I was able to prevent this without apparent side effects were:

turning off relative positioning for callouts
explicitly set sticky z-index to 1
Not sure if either of those would be the appropriate fix, though.

z-index is causing issue here ".top-bar ul " doesn't have z-index just add this it'll solve this issue
.top-bar {
z-index: 1;
}

Yes, putting z-index: 1 on .top-bar fixed the issue on my side, as well.

I wonder, though, if modifying the sticky component would be more appropriate as that seems to be what's causing the issue. Top-bar probably doesn't need a z-index to be set explicitly. The fact that top bar happens to be the component that sticky was used on here is coincidental; the same issue could likely occur in other components that are set to sticky as long as that z-index is explicitly set to 0 when it's in its fixed position.

Definitely odd. @colin-marshall, you've looked at sticky a fair amount... what do you think?

I'm seeing a dropdown show up underneath an off-canvas element.


Question: How do I achieve scene scoped dependencies

My app supports scenes and I would like to resolve dependencies based on scope.
Can anyone recommend how to do this?
I think I could achieve this using a custom container. Or maybe a parameter.

I'd have to think about this, but the key to the issue would probably focus around some mechanism that allows Container.shared to return a different container for each scene.

I'd have to think about this, but the key to the issue would probably focus around some mechanism that allows Container.shared to return a different container for each scene.

That would be the ideal scenario yes. Would be awesome if this could happen. Maybe you could start a discussion to start thinking about this scenario?
Would you need more use cases? Anyway how can we help with this?

One comment on this is that, by and large, one should be injecting services and not data.

@hmlongco the question is valid. How to deal with tree based architectures. You seam to also have the answer build into your library. You can create a ManagedContainer that does not rely on the singleton approach. This container in SwiftUI you can inject per scene.
You remark however about the data and services is shortsighted and unrelated. It relates to my earlier questions. It is unrespectfull and does not help your library any further. Your constant neglect to respond properly to the issue is simply uncreative.
So without modification you can create a library with Factory that does this. Just keep in mind that I recommend not to use Factory just stick to SwiftUI own injection system with environment. But if you like Factory here is how you can acheive scene based dependency injection with Services. @notapplicableio
import SwiftUI

@main
struct DemoSingleThemeApp: App {
  let c1 = CustomContainer()
  let c2 = CustomContainer()

  init() {
    c1.registrations.service.register { Service(response: "c1 response") }
    c2.registrations.service.register { Service(response: "c2 response") }
  }

  var body: some Scene {
    WindowGroup {
      VStack {
        ContentView()
          .environment(\.container, c1)
        ContentView()
          .environment(\.container, c2)
      }
      .environment(\.theme, TC.shared.theme())
      .environment(\.subTheme, TC.shared.subTheme())
    }
  }
}

The container setup contains a little trick to avoid the callAsFunction requirement via dynamic member lookup but for the rest it is a normal Factory container that you inject into the tree top down, making it possible to have different container instances per scene.
To make this work you need to

Create EnvironmentValues key and default values
inject them into the swiftUI tree from the application
overwrite the environment down the tree or scene

First the EnvironmentValues setup
struct CustomContainerKey: EnvironmentKey {
  static let defaultValue: CustomContainer = CustomContainer()
}

extension EnvironmentValues {
  var container: CustomContainer {
    get { self[CustomContainerKey.self] }
    set { self[CustomContainerKey.self] = newValue }
  }
}

The custom container with syntactic sugar for @dynamicMemberLookup to avoid the unwrapped type to be Factory<CustomContainer> but just CustomContainer
@dynamicMemberLookup
struct CustomContainer {
  final class Registrations: ManagedContainer {
    let manager = ContainerManager()
    var service: Factory<Service> { self { Service(response: "default response") } }
  }

  let registrations = Registrations()

  subscript(dynamicMember member: KeyPath<Registrations, Factory<Service>>) -> Service {
    self.registrations[keyPath: member]()
  }
}

Tip: If you are using UIKit consider looking into UIEnvironment to inject into a viewController tree https://github.com/nonameplum/UIEnvironment

To conclude I found it very frustrating and at moments rude to negotiate with you @hmlongco and we cannot construct a business relation if you cannot respond to me or to other people more creative and respectful. Considering their perspective and knowledge. I will stop my sponsorship and wish you all the best!

@doozMen Sorry you feel that way. The comment was largely an aside I made while working on the project this last weekend and wasn't meant to be disrespectful in any way.
That said, Factory is an open source project that's provided to the Swift community gratis, and one created after I already had Resolver available. It's a project on which I've already spend a great deal of time coding, debugging, testing, and documenting. And then improving again. And again.
But it isn't my day job, and any work I do on the project is on my own personal time.
Feature requests, bugs, and other issues are problematic as those typically require a even greater amount of time and effort, and what time I've had to work on Factory recently has been spent more on the issues around frameworks and Sendable conformance.
So while I try to answer questions as best I can, those answers have to be fitted into my schedule and, quite frankly, into my life. Fortunately other people have jumped in from time to time to answer questions and that's been appreciated as well.
That includes proposing solutions like the one above.
Speaking of which, I've considered using the environment before, but that solution only works as long as you're using Factory (or ANY container, for that matter) in a MV pattern.
It tends to break down in an MVVM scenario as environment variables are only available during body evaluation and as such there isn't really a good way to pass the container up into the VM when needed. Especially if you're creating StateObjects or view models during view initialization.
Sorry to see you go. Your support was appreciated, regardless of what you might think.

I do not think anything. I just have a proposal to work with you on this subject. Suggested a discussion on the subject. I think you did a grate job. I just do not like you simply downgrading my and other input in this way. I make simple suggestions and you seam to question my knowledge. Downgrade what I say, again now when you imply MVVM, which I did not implement in the example above.
It is not fun that you again seam to suggest that environment does not work. I do not know why you say this as the code above works with observable state included.
So instead of putting difficult words around other solutions maybe ask for a demo project. Maybe we have a different style and that is not a match but this is not the way I hoped this would go. I would have hoped that we could discuss approaches with more people in the swift community and I thought you had a nice position with factory to adres that need.
Please also remove me from the readme now, do not wait until august. Thanks for your enormous effort. I know it is not your day job. I did not ask for your input or implementation. I asked for a discussion on how to handle tree based structures like jetpack compose and swiftui with Factory. Which I still find a valid question.
Downgrading my code examples to mvvm or other unrelated things just does not add value to the debate.
Good luck regardless and thanks for all your open source work and super nice blog posts that I have enjoyed and still will enjoy.

@doozMen You may not realise this but the tone and wording of your responses above come across as angry and reactive. I don't think this was necessary or appropriate for this forum or is thread. Your responses have made me feel quite uncomfortable.

@notapplicableio @hmlongco now it feels all against me. I just tried to make a point and clearly failed. We can just agree to disagree then. I do agree this forum is not the right place to resolve or for this kind of discussions. So my apologies for that.


'numpy.datetime64' object has no attribute 'year' writing from grib2 source

I have a consolidated JSON with a "best time series" dataset that reads from a collection of HRRR grib2 files on S3.
The data access and visualization of data in the notebook looks fine, but when I attempt to save a subset (to either zarr or netcdf) I get an error from xarray:
AttributeError: 'numpy.datetime64' object has no attribute 'year'

I'm raising this issue here because I run a nearly identical workflow with NetCDF files, where we also have datetime64 objects for time in xarray, and don't get this problem.  Hence I'm thinking it must have something to do with the reading from grib2 files?
This notebook should be reproducible (and doesn't require AWS credentials):
https://nbviewer.org/gist/rsignell-usgs/7d0a76a5f9fbf5781e9e97b66bd72882

The time column should definitely have been inlined in the references
Bytes | 1.38 kiB | 8 B

Maybe this is the problematic one, not valid_time, the coordinate, so you can remove it?

Can you also try multiplying by 1.0?

(or subtracting timedelta(0) )

@martindurant , I'm not sure I understand.  Multiply what by 1.0?
The datetime64 values are understood perfectly well in xarray, just not when saved to disk.
I don't understand why.  Do you?

I don't know why exactly, but I suspect that if you perform an arithmetic operation (like adding a timedelta zero), then any leftover encoding attributes might be usefully forgotten.

@martindurant I'm still not sure what I'm supposed to multiply by 1.0 and at what point I'm supposed to do it.
Did you try running the notebook?   https://nbviewer.org/gist/5d10137059a1793f2606e39a5baf1ba2

"forbidden" reading the JSON file. Do I need to run this in qhub?

ds2 = ds.assign(time=ds.time + pd.Timedelta(0))
ds2.isel(time=slice(-3,-1)).to_zarr('foo.zarr', 'w')

Allows you to write it, but xarray still wants to use some weird cftime encoding (even though the original data did not have that), causing overflow when you try to reload. Do you know how to not use cftime on write, just use actual datetime values? i.e., this is not a kerchunk problem, its an xarray/zarr encoding thing.

@martindurant so you don't think this has anything to do with the grib2 codec or reading grib2 files?

this completes successfully:
subset = ds.assign_coords(time=ds.time.astype("datetime64[ns]")).isel(time=slice(-3,-1))
for var in subset.variables.values():
    var.encoding.pop("filters", None)
subset.to_zarr('foo.zarr', mode='w')

ds = xr.open_dataset("foo.zarr", engine="zarr").load()

cftime is only involved with dtypes that are not exactly datetime64[ns], so casting time avoids that. filters raised errors when I tried to load the resulting zarr.

@keewis , whoa, thank you!  I never would have figured this out!  Is this something that users should handle using this approach or should we handle it in xarray?

Oh right, our filter to read GRIB. You would definitely need that to get any useful data out of the variables when reading from the original data, but indeed they make no sense at all for the newly created local zarr dataset. The GRIB_* attributes probably do carry useful information, though. I can't really tell whether popping them out as in the example affects the load or the save.

sorry, my bad, the attrs have nothing to do with this, and they are not affected by the pop, either.

No, the filter is essential to read the GRIB files, but it makes no sense when writing out to zarr. xarray should have a way to write out without using the original filters; it's like saying "just because these data came from some special encoding, when I write them again, I want to use the same encoding". We do not, however, have a way to re-encode into GRIB-in-zarr, so xarray should allow us not to do this. Maybe there is such an option, the equivalent of pop for the filters, above?

I brought this up in the meeting yesterday. In short, removing or overriding the filters explicitly, or clearing encoding entirely are the only options we have at the moment. See also pydata/xarray#6323.

@martindurant , in light of https://github.com/pydata/xarray/issues/6318#issuecomment-1059832700, do you think it would be best practice to not use datetime64 in our kerchunked zarr representation, even though it's allowed?

Should we merge combine2?

It needs a lot of docs to explain how to use it - beyond the long docstring; and updating the existing examples to use it.

okay, maybe I can get someone to work on that.


OpenCL Interoperability

I can not get OpenCL interoperability working.
Here is a basic project I set up so if someone feels inclined s/he can just clone the project and run cmake.
This is the source code:
void keyCB(GLFWwindow *window, int key, int scancode, int action, int mods) {
  if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
    glfwSetWindowShouldClose(window, GLFW_TRUE);
}

void initGlfw() {
  if (!glfwInit()) {
    handleError("Couldn't initialize GLFW.\n");
  }
}

GLFWwindow *createGlfwWindow() {
  GLFWwindow *window = glfwCreateWindow(640, 480, "OpenGL-OpenCL Interop", NULL, NULL);
  if (!window) {
    glfwTerminate();
    handleError("Couldn't create window.\n");
  }
  return window;
}

// OpenCL initialization
void initCl(GLFWwindow *window) {

  cl_platform_id platform;
  err = clGetPlatformIDs(1, &platform, NULL);
  handleError("Couldn't identify a platform.");

  cl_device_id device;
  err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &device, NULL);
  handleError("Couldn't access any devices.");

  GLXContext glxContext = glfwGetGLXContext(window);
  Display *glxDisplay = glfwGetX11Display();
  cl_context_properties properties[] = {CL_GL_CONTEXT_KHR,
                                        (cl_context_properties)glxContext,
                                        CL_GLX_DISPLAY_KHR,
                                        (cl_context_properties)glxDisplay,
                                        CL_CONTEXT_PLATFORM,
                                        (cl_context_properties)platform,
                                        0};

  cl_context ctx = clCreateContext(properties, 1, &device, clContextCreationCB, NULL, &err);
  handleError("Couldn't create a context.");
}

int main(void) {
  initGlfw();
  GLFWwindow *window = createGlfwWindow();
  glfwMakeContextCurrent(window);
  glfwSetKeyCallback(window, keyCB);
  glfwSwapInterval(1);

  initCl(window);

  while (!glfwWindowShouldClose(window)) {
    glfwSwapBuffers(window);
    glfwPollEvents();
  }

  glfwDestroyWindow(window);
  glfwTerminate();
}

I am getting an error message saying that a context could not be created.
The error code is -1000 which means CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR.
glxContext and glxDisplay are not NULL - so seem to be OK.

Was a configuration issue. Linux box was using llvmpipe as its renderer for OpenGL instead of Nvidia.


Changed variable names to make code more readable

Changed various variable names so that they are more intuitive and so that the code is more readable overall. This PR only changes variable names internally and doesn't contain any breaking changes.

Should I add an additional commit containing the dotnet config with Fantomas-fmt so that everyone has the same formatting tool?

Thank for the contribution.
This PR is no longer relevant for Canvas 2.0 because the internals have been completely reworked.


Creating Atoms

We're using the rust clingo bindings to generate grounded programs that we would then like to solve with a few facts added as assumptions. the assumptions argument of Control::solve seems like the way to go, but I can't find any way to generate a Literal or Atom, from a Symbol or otherwise. I would greatly appreciate any advice :)

I think the best way would be to use the ProgramBuilder  for that.
...
    let mut ctl = Control::new(options).expect("Failed creating Control.");
    let mut builder = ast::ProgramBuilder::from(self.control).unwrap();

    let sym = Symbol::create_id("test", true).unwrap();
    let term = Term::from(sym);
    let lit = ast::Literal::from_term(Sign::None, &term);
    let hlit = HeadLiteral::from(&lit);
    let rule = Rule::new(hlit, &[]);
    let stmt = rule.ast_statement();

    // add the rewritten statement to the program
    builder
        .add(&stmt)
        .expect("Failed to add statement to ProgramBuilder.");

Also see the ast example.

I'm guessing i'd need to ground the program again afterwards? Sorry for these naive questions, I'm not really familiar with clingo yet^^'

Yes ProgramBuilder is used before grounding. After grounding you could get the SymbolicAtoms and then use the method literal().
Also see the symbolic atoms example.

Thanks for clearing up my confusion :) I’m going to close this, since it’s not an issue with the library :)


Fix brew help cleanup text

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew typecheck with your changes locally?
[ ] Have you successfully run brew tests with your changes locally?

Fixes https://github.com/Homebrew/brew/issues/12671
This fixes the issue with brew help cleanup by using a non-breaking space between brew --cache to ensure that a line never starts with --cache. I think this is a unique enough situation that fixing the problem here instead of in our parser logic is acceptable.

Review period skipped due to critical label.

I think we should fix, maybe even remove, the line breaking logic that's breaking this, though.

I think that's a good idea, yeah. We have a separate call to Formatter.wrap in Parser#generate_help_text, after the help text is generated from OptionParser, so if we improve that we might be good to go.

It's confusing to me that Formatter::wrap not only wraps but also formats code in a description-specific way. I'd like to spend a little more time separating the regular expressions in that method so it's clearer what's going on and where this fix should really go.

Okay, I thought about this more and decided that it was fine that the method does all the formatting things it does, but it should be renamed because it can't really be used just for wrapping and we only use it to format help text. So, I renamed it Formatter.format_help_text. I also made the following changes:

Formatter.format_help_text won't allow options to start new lines when it wraps
The maximum option description length is now 45 characters instead of 43. I noticed that we indented things 37 characters and wrapped at 80, but were limiting option descriptions to 43 meaning there would always be two unused columns.
The options list in brew update was indented more than all other commands and that was messing with the formatting a bit. I un-indented so it would be consistent and look correct.


Add ability to track containers

Requires container management screens and repository for the back office staff. For users with roles like Driver, these should show up a simple tasks assignments which they can respond to.

This is done. closing this now.


Segfaults on Raspberry Pi 1.

Problem/Motivation
Your container doesnt run on a Raspberry Pi 1 - it segfaults.
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 00-banner.sh: executing...
[cont-init.d] 00-banner.sh: exited 267.
[cont-finish.d] executing container finish scripts...
[cont-finish.d] 99-message.sh: executing...
s6-maximumtime: warning: child process crashed
[cont-finish.d] 99-message.sh: exited 111.
[cont-finish.d] done.
[s6-finish] syncing disks.
[s6-finish] sending all processes the TERM signal.

When running the container manually docker run -it --rm --entrypoint=/bin/sh hassioaddons/airsonos-armhf, it exits 139 (segault inside container)
I've even tried to add to your image, but the build fails
FROM hassioaddons/airsonos-armhf:0.3.1

RUN apt-get update && apt-get install bash

root@hassio:/tmp# docker build -t test .
Sending build context to Docker daemon  6.656kB
Step 1/2 : FROM hassioaddons/airsonos-armhf:0.3.1
 ---> 0737d267e0c1
Step 2/2 : RUN apt-get update && apt-get install bash
 ---> Running in 6fee22d9787e
The command '/bin/sh -c apt-get update && apt-get install bash' returned a non-zero code: 139

Happy to help try and debug this, but I'd need your help - I'm new to hass.io and resin.io :(

No, still the same thing - it exits with 139 (SEGFAULT).
I think the problem is due to the base image - I dont think it is suitable for a Raspberry Pi 1?
I tested hassioaddons/debian-base-armhf and it segfaults. However, if I use hassioaddons/base-armhf it doesnt. So if this app is based on the debian-base-armhf image as base - then that is probably the reason?

True, you are absolutely right.
The base image changed to Ubuntu this release, nevertheless, is is ARMv7.
The Pi 1 and Zero are ARMv6 based.
This is not a thing I can workaround at this moment.
Alpine is missing GLibc, which is required for this add-on :(

This needs to be documented.

Does this help? https://github.com/leannenorthrop/rpi-alpine-glibc

Well @leenooks, that things is unmaintained.
There are some "third-party" libs I could use, nevertheless, I'm kinda holding back on that kind of things... They have the bad habit to fire back eventually...

@leenooks I've looked into this again.
There are glibc's that are up to date, but then again, they are not cross-platform (so that is a problem).
Secondly, AirConnect required OpenSSL 1.0.0 branch, which is not available for Alpine as well.
So, that makes 2 blocking issue for moving this add-on to the Alpine base.
I feel like there is no option left me, but adding a known issue note to the documentation.

I've added a Known issues and limitations section to the documentation, covering this.
Thank you for reporting. I'm sorry I can't offer a proper solution for this.


Auth documentation could be improved

Having spend too much time figuring out why our build agent could not download pipeline artifacts via the Azure CLI azure-devops extension, I think the auth documentation could be improved.
I would suggest:

Make https://aka.ms/azure-devops-cli-auth point to https://github.com/Azure/azure-devops-cli-extension/blob/master/doc/samples.md#log-in-via-azure-devops-personal-access-token-pat
Make it clear that PATs can be set as environment variables based on $(System.AccessToken) in a pipeline (the information is currently spread out), like so: https://github.com/Azure/azure-devops-cli-extension/blob/master/doc/samples.md#use-the-azure-devops-extension-with-yaml
Improve the az login --help to mention the environment variable and that the token will be read from stdin.
Either mention required rights for --detect logic or fail with a meaningful error. It seems the detected information is cached, which in our case meant that the PAT had enough rights for one build agent, but not the other where the information was not cached. This caused some confusion. See also https://developercommunity.visualstudio.com/content/problem/412424/pat-gets-error-when-using-vsts-download-for-a-univ.html and https://developercommunity.visualstudio.com/content/problem/529020/universal-artifact-fails-to-download-without-excep.html which may be related.
Additionally, it would be great if the extension could work with the standard auth mechanisms from the az cli to avoid the PAT token altogether.
Make the extension part of the default hosted images - with authentication already set up.

If you run az devops logout and az logout and then, e.g., az repos pr list, you get Before you can run Azure DevOps commands, you need to run the login command(az login if using AAD/MSA identity else az devops login if using PAT token) to setup credentials.  Please see https://aka.ms/azure-devops-cli-auth for more information.. The link is in the source at: https://github.com/Azure/azure-devops-cli-extension/blob/95fbabf5fb3525088f4d894ee910793895402009/azure-devops/azext_devops/dev/common/services.py#L407 . Great with all the other changes you mention!
Definitely! I was not aware of these pages at the time. It is much cleaner than the lengthy samples.md I found.
I wrongly mentioned az login when i meant az devops login. My bad. You thankfully deciphered the meaning and yes, a link from az devops login to that page would suffice.
The PAT had insufficient permissions. I believe it needs Code->Read permissions to populate C:\Users\{my user}\.azure\azuredevops\cache\remotes.json when using --detect. Here is a repro:

Create a new organization
Clone the empty default repository.
Run the rest of the commands from inside the clone to enable --detect.
Run az logout and az devops logout to ensure no credentials were left behind.
Run  az pipelines runs artifact download --run-id 1 --artifact-name a --path . and got an error Before you can run Azure DevOps commands, you need to run the login command(az login if using AAD/MSA identity else az devops login if using PAT token) to setup credentials.  Please see https://aka.ms/azure-devops-cli-auth for more information.
Create a new PAT for my user with Build->Read rights.
Run echo <PAT> | az devops login
Run az pipelines runs artifact download --run-id 1 --artifact-name a --path . and get the error

The command failed with an unexpected error. Here is the traceback:

The requested resource requires user authentication<EMAIL_ADDRESS>Traceback (most recent call last):
  File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-dsvrkf2x\knack\knack\cli.py", line 206, in invoke
  File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-dsvrkf2x\azure-cli-core\azure\cli\core\commands\__init__.py", line 560, in execute
  File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-dsvrkf2x\azure-cli-core\azure\cli\core\commands\__init__.py", line 618, in _run_jobs_serially
  File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-dsvrkf2x\azure-cli-core\azure\cli\core\commands\__init__.py", line 609, in _run_job
  File "C:\Users\{my user}\.azure\cliextensions\azure-devops\azext_devops\dev\common\exception_handler.py", line 26, in azure_devops_exception_handler
    reraise(*sys.exc_info())
  File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-dsvrkf2x\six\six.py", line 693, in reraise
  File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-dsvrkf2x\azure-cli-core\azure\cli\core\commands\__init__.py", line 588, in _run_job
  File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-dsvrkf2x\azure-cli-core\azure\cli\core\commands\__init__.py", line 297, in __call__
  File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-dsvrkf2x\azure-cli-core\azure\cli\core\__init__.py", line 461, in default_command_handler
  File "C:\Users\{my user}\.azure\cliextensions\azure-devops\azext_devops\dev\pipelines\runs_artifacts.py", line 25, in run_artifact_download
    organization, project = resolve_instance_and_project(detect=detect, organization=organization, project=project)
  File "C:\Users\{my user}\.azure\cliextensions\azure-devops\azext_devops\dev\common\services.py", line 351, in resolve_instance_and_project
    detect=detect, organization=organization, project=project, project_required=project_required)
  File "C:\Users\{my user}\.azure\cliextensions\azure-devops\azext_devops\dev\common\services.py", line 321, in resolve_instance_project_and_repo
    git_info = get_vsts_info_from_current_remote_url()
  File "C:\Users\{my user}\.azure\cliextensions\azure-devops\azext_devops\dev\common\services.py", line 383, in get_vsts_info_from_current_remote_url
    info = VstsGitUrlInfo(get_remote_url(VstsGitUrlInfo.is_vsts_url_candidate))
  File "C:\Users\{my user}\.azure\cliextensions\azure-devops\azext_devops\dev\common\vsts_git_url_info.py", line 42, in __init__
    vsts_info = self.get_vsts_info(remote_url)
  File "C:\Users\{my user}\.azure\cliextensions\azure-devops\azext_devops\dev\common\vsts_git_url_info.py", line 94, in get_vsts_info
    return GitClient.get_vsts_info_by_remote_url(uri, credentials=credentials)
  File "C:\Users\{my user}\.azure\cliextensions\azure-devops\azext_devops\devops_sdk\v5_0\git\git_client.py", line 33, in get_vsts_info_by_remote_url
    response = git_client._send_request(request, headers)
  File "C:\Users\{my user}\.azure\cliextensions\azure-devops\azext_devops\devops_sdk\client.py", line 54, in _send_request
    self._handle_error(request, response)
  File "C:\Users\{my user}\.azure\cliextensions\azure-devops\azext_devops\devops_sdk\client.py", line 254, in _handle_error
    url=request.url))
azext_devops.devops_sdk.exceptions.AzureDevOpsAuthenticationError: The requested resource requires user authentication<EMAIL_ADDRESS>

Repro continued...

Edit the PAT to grant Code->Read rights.
Run az pipelines runs artifact download --run-id 1 --artifact-name a --path . and get the error The specified pipeline was not found., i.e. it got further and my empty organization does not actually have the artifact I requested.
Edit the PAT to revoke Code->Read rights.
Run az pipelines runs artifact download --run-id 1 --artifact-name a --path . and still get the error The specified pipeline was not found., so somehow it does not need the Code->Read rights anymore.
Delete C:\Users\{my user}\.azure\azuredevops\cache\.
Run az pipelines runs artifact download --run-id 1 --artifact-name a --path . and now get the long stack trace again.

Acknowledged.
I mean the association to System.AccessToken already in place. Basically something like the first 9 lines of the first script at https://docs.microsoft.com/en-us/azure/devops/cli/azure-devops-cli-in-yaml?view=azure-devops being encapsulated in a pipeline task or being built into the the Azure CLI pipeline task.

1 - Created issue to include the help text with the link to the document in az devops login - https://github.com/Azure/azure-devops-cli-extension/issues/686
4 - Raised a bug for this https://github.com/Azure/azure-devops-cli-extension/issues/687 so that we can continue our discussion on the issue thread. Ideally, --detect just infers the configuration parameters and as I mentioned does not have anything to do with PAT. However, we can continue our investigation and discussion there.
6 - The more predominant use case which we see on pipelines is the automation use case where users are not usually using their own credentials but a service account credential to execute actions. Further, the tasks are at a generic CLI task level. For these reasons, there wouldn't be an out of box pipeline CLI task with the authorization recommendation that has been provided. Recommendation would to build/use a pipeline task extension that does this.
I am closing this issue. Feel free to re-open in case you need any additional clarification.


Use a local registry for metrics

use a new dedicated registry per config instead of using the default global registry provided by go-metrics
update documentation and unit tests

@justinas does this work for you?

@eapache Absolutely. Package-global registry would be another alternative, but that's up to you :)

Trying to stay away from package globals going forward.


[wip]oo-testing: doc an operator-sdk example

Many thanks to @qbarrand
He has made a test with operator-sdk using the bundle image built in CI.
This PR steals the test for an example in our doc.

/hold

/label tide/merge-method-squash

/lgtm

/hold cancel


Fix some tasks not running on default rake task

This PR fixes the underlying problem described in #6423, and thus supersedes that PR. The problem was that the spec runner was exiting after itself, so it wouldn't allow further tasks to be run.

Before submitting the PR make sure the following are checked:

[x] Wrote good commit messages.
[x] Commit message starts with [Fix #issue-number] (if the related issue exists).
[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[ ] Added tests.
[ ] Added an entry to the Changelog if the new code introduces user-observable changes. See changelog entry format.
[x] The PR relates to only one subject with a clear title
and description in grammatically correct, complete sentences.
[x] Run rake default. It executes all tests and RuboCop for itself, and generates the documentation.

👍


fix flakes in log following related unit tests

Changes
Fixes #103
/kind cleanup
Hello @otaviof @HeavyWombat @SaschaSchwarze0
I finally got some shipwright cycles this week, and one of my long standing to-do's was to spend quality time on the log following unit test flakes @otaviof reported.
Allow me to explain my process to getting to this point of an alternative PR.
While, as it is clear to see, I initially took a brief pass at reviewing @otaviof 's #104 a month ago, I decided to re-engage here by first making sure I understood first hand what was the crux of the original situation as I remember @otaviof describing in our team meetings, where if I were to attempt to summarize, it was the inherent fragility of k8s fake clients, especially around watches (of course @otaviof please do chime in if my brief summary misses key points).
So running @otaviof 's reproducers in #103 as well as running the unit tests in the debugger, the k8s fake client watch fragility is what was most noticeable to me.  If I were to attempt to summarize, it did not seem thread safe.  To the point where it was unclear if the events reported by the unit test as missing were the actual events that were missing.
But even of more importance, the "has synced" concept we have with the k8s watch based informers used in controllers occurred to me as being something that would be useful here (I describe this in more detail in https://github.com/shipwright-io/cli/issues/103#issuecomment-1103224373).  So, building on that to see if that proved valid (which it did), after about a full day of coding, I've got a different take on addressing this flake with this PR.
I see #104 needs a rebase as it its.  My initial thought is we iterate on this to merge it, so we address the flake. Then reset and see if we want some of the refactoring from #104 that may not be immediately related to the k8s fake client flakiness, but that we like,  either by reworking 1#04, and get that ready again, or if it makes sense to just redo #104 in a new PR.  But that said, if folks think of elements of #104 that can be easily applied here, sure, let's discuss.
A more detailed breakdown

no changes to the existing flags ... the "user experience" is the same
follwer/pod_watcher Start methonds have been split into Connect and WaitForCompletion ... this somewhat speaks to the "has synched" concept with k8s informers
the run command has a FollowerReady method to help with multi-threaded use of consumers of the follower (in theory other commands that use follower could follow this pattern if need be) ... this more directly is the "has synched" equivalent from k8s informers
we have better consistency across the different commands, in that they create or initialize their Follwers in their Complete methods, and they startup and wait for them in their Run methods
removed the 3 second sleep in the follower event processing
removed that initialization of the follower in the run unit test
added lower level tuning (not exposed as flags at this time) around some of the timing intervals to help speed up unit tests
removed some of the multi threaded elements in the pod_watcher unit tests; they intermittently stressed the more flaky elements of the k8s fake clients, especially the watch elements; I think in the end, running with race detection, we have sufficient coverage there anyway

Some output from some of @otaviof 's flake reproducers:
# Attempt 97...
go test  -race -failfast -timeout=45s  ./pkg/shp/cmd/build -run="^TestStartBuildRunFollowLog"
ok  	github.com/shipwright-io/cli/pkg/shp/cmd/build	0.103s
# Attempt 98...
go test  -race -failfast -timeout=45s  ./pkg/shp/cmd/build -run="^TestStartBuildRunFollowLog"
ok  	github.com/shipwright-io/cli/pkg/shp/cmd/build	0.110s
# Attempt 99...
go test  -race -failfast -timeout=45s  ./pkg/shp/cmd/build -run="^TestStartBuildRunFollowLog"
ok  	github.com/shipwright-io/cli/pkg/shp/cmd/build	0.103s
# Attempt 100...
go test  -race -failfast -timeout=45s  ./pkg/shp/cmd/build -run="^TestStartBuildRunFollowLog"
ok  	github.com/shipwright-io/cli/pkg/shp/cmd/build	0.104s
gmontero ~/go/src/github.com/shipwright-io/cli-1  (k8s-unit-test-flake-impacts-podwatcher)$

Submitter Checklist

[/ ] Includes tests if functionality changed/was added
[ n/a] Includes docs if changes are user-facing
[ /] Set a kind label on this PR
[ /] Release notes block has been filled in, or marked NONE

See the contributor guide
for details on coding conventions, github and prow interactions, and the code review process.
Release Notes
NONE

clean tests
saw one minor correction in the code  ... forgot to use the new fail poll interval in follow.go

fyi @otaviof @HeavyWombat @SaschaSchwarze0 - another simplification occurred to me last night
I'm making an update this morning and will post again if it is in fact successful and I've updated this PR
thanks

fyi @otaviof @HeavyWombat @SaschaSchwarze0 - another simplification occurred to me last night
I'm making an update this morning and will post again if it is in fact successful and I've updated this PR
thanks

ok @otaviof @HeavyWombat @SaschaSchwarze0 my simplifications are in (along with some additional comments in the code explaining some details wrt mulit-threaded testing, or lack there of)
PTAL when you all get the chance
thanks

ok we all discussed this one in the community meeting
@otaviof is good with moving forward with this reduced scope version of addressing the test flakes.   He'll review, and when he and I iterate and land with consensus on these changes, we'll merge this.  @HeavyWombat and @SaschaSchwarze0 signed off on this plan as well.
going ahead and
/approve

On the very first run, it failed with test timeout, as per:
$ for i in `seq 1 100` ; do
        echo "# Attempt ${i}..."
        make test-unit \
                GO_FLAGS='' \
                GO_TEST_FLAGS='-race -failfast -timeout=45s' \
                CMD='' \
                PKG=./pkg/shp/cmd/build \
                ARGS='-run="^TestStartBuildRunFollowLog"' || break
done
# Attempt 1...
go test  -race -failfast -timeout=45s  ./pkg/shp/cmd/build -run="^TestStartBuildRunFollowLog"
[container] fake logs
panic: test timed out after 45s

goroutine 84 [running]:
testing.(*M).startAlarm.func1()
	/opt/homebrew/Cellar/go/1.18.1/libexec/src/testing/testing.go:2029 +0xb8
created by time.goFunc
	/opt/homebrew/Cellar/go/1.18.1/libexec/src/time/sleep.go:176 +0x4c

goroutine 1 [chan receive]:
testing.(*T).Run(0xc000582340, {0x106c1e0de, 0x1a}, 0x1074a15e0)
	/opt/homebrew/Cellar/go/1.18.1/libexec/src/testing/testing.go:1487 +0x580
testing.runTests.func1(0x0?)
	/opt/homebrew/Cellar/go/1.18.1/libexec/src/testing/testing.go:1839 +0x98
testing.tRunner(0xc000582340, 0xc0007bfb98)
	/opt/homebrew/Cellar/go/1.18.1/libexec/src/testing/testing.go:1439 +0x190
testing.runTests(0xc0004595e0?, {0x108421bd0, 0x1, 0x1}, {0xc0004f7ce0?, 0x104f80a80?, 0x108451c80?})
	/opt/homebrew/Cellar/go/1.18.1/libexec/src/testing/testing.go:1837 +0x6cc
testing.(*M).Run(0xc0004595e0)
	/opt/homebrew/Cellar/go/1.18.1/libexec/src/testing/testing.go:1719 +0x87c
main.main()
	_testmain.go:47 +0x300

goroutine 21 [chan receive]:
k8s.io/klog/v2.(*loggingT).flushDaemon(0x0?)
	/Users/otaviof/go/src/github.com/shipwright-io/cli/vendor/k8s.io/klog/v2/klog.go:1283 +0x78
created by k8s.io/klog/v2.init.0
	/Users/otaviof/go/src/github.com/shipwright-io/cli/vendor/k8s.io/klog/v2/klog.go:420 +0x20c

goroutine 5 [chan receive]:
knative.dev/pkg/metrics.(*metricsWorker).start(0xc000010258)
	/Users/otaviof/go/src/github.com/shipwright-io/cli/vendor/knative.dev/pkg/metrics/metrics_worker.go:99 +0x48
created by knative.dev/pkg/metrics.init.0
	/Users/otaviof/go/src/github.com/shipwright-io/cli/vendor/knative.dev/pkg/metrics/exporter.go:39 +0x138

goroutine 39 [select]:
go.opencensus.io/stats/view.(*worker).start(0xc0001fe000)
	/Users/otaviof/go/src/github.com/shipwright-io/cli/vendor/go.opencensus.io/stats/view/worker.go:276 +0x104
created by go.opencensus.io/stats/view.init.0
	/Users/otaviof/go/src/github.com/shipwright-io/cli/vendor/go.opencensus.io/stats/view/worker.go:34 +0xfc

goroutine 6 [select]:
github.com/shipwright-io/cli/pkg/shp/reactor.(*PodWatcher).Start(0xc000550300, {{{0x0, 0x0}, {0x0, 0x0}}, {0xc000138460, 0x44}, {0x0, 0x0}, 0x0, ...})
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/reactor/pod_watcher.go:133 +0x318
github.com/shipwright-io/cli/pkg/shp/cmd/follower.(*Follower).Start(...)
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/follower/follow.go:239
github.com/shipwright-io/cli/pkg/shp/cmd/build.(*RunCommand).Run(0xc000066d40, 0x1074c5f10?, 0xc000532810)
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/build/run.go:111 +0x48c
github.com/shipwright-io/cli/pkg/shp/cmd/build.TestStartBuildRunFollowLog(0xc0005824e0)
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/build/run_test.go:191 +0x1498
testing.tRunner(0xc0005824e0, 0x1074a15e0)
	/opt/homebrew/Cellar/go/1.18.1/libexec/src/testing/testing.go:1439 +0x190
created by testing.(*T).Run
	/opt/homebrew/Cellar/go/1.18.1/libexec/src/testing/testing.go:1486 +0x564

goroutine 25 [select]:
github.com/shipwright-io/cli/pkg/shp/reactor.(*PodWatcher).Start(0xc000550000, {{{0x0, 0x0}, {0x0, 0x0}}, {0xc00047e050, 0x44}, {0x0, 0x0}, 0x0, ...})
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/reactor/pod_watcher.go:133 +0x318
github.com/shipwright-io/cli/pkg/shp/cmd/follower.(*Follower).Start(...)
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/follower/follow.go:239
github.com/shipwright-io/cli/pkg/shp/cmd/build.(*RunCommand).Run(0xc0000666c0, 0x106c82150?, 0xc00053c360)
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/build/run.go:111 +0x48c
github.com/shipwright-io/cli/pkg/shp/cmd/build.TestStartBuildRunFollowLog.func3()
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/build/run_test.go:197 +0x54
created by github.com/shipwright-io/cli/pkg/shp/cmd/build.TestStartBuildRunFollowLog
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/build/run_test.go:196 +0x1600

goroutine 10 [select]:
github.com/shipwright-io/cli/pkg/shp/reactor.(*PodWatcher).Start(0xc00052a900, {{{0x0, 0x0}, {0x0, 0x0}}, {0xc000138230, 0x44}, {0x0, 0x0}, 0x0, ...})
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/reactor/pod_watcher.go:133 +0x318
github.com/shipwright-io/cli/pkg/shp/cmd/follower.(*Follower).Start(...)
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/follower/follow.go:239
github.com/shipwright-io/cli/pkg/shp/cmd/build.(*RunCommand).Run(0xc000112640, 0x106c82150?, 0xc000533230)
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/build/run.go:111 +0x48c
github.com/shipwright-io/cli/pkg/shp/cmd/build.TestStartBuildRunFollowLog.func3()
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/build/run_test.go:197 +0x54
created by github.com/shipwright-io/cli/pkg/shp/cmd/build.TestStartBuildRunFollowLog
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/build/run_test.go:196 +0x1600

goroutine 12 [chan receive]:
github.com/shipwright-io/cli/pkg/shp/tail.(*Tail).Start.func1.1()
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/tail/tail.go:54 +0x5c
created by github.com/shipwright-io/cli/pkg/shp/tail.(*Tail).Start.func1
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/tail/tail.go:53 +0x27c

goroutine 32 [select]:
github.com/shipwright-io/cli/pkg/shp/reactor.(*PodWatcher).Start(0xc000550180, {{{0x0, 0x0}, {0x0, 0x0}}, {0xc000a481e0, 0x44}, {0x0, 0x0}, 0x0, ...})
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/reactor/pod_watcher.go:133 +0x318
github.com/shipwright-io/cli/pkg/shp/cmd/follower.(*Follower).Start(...)
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/follower/follow.go:239
github.com/shipwright-io/cli/pkg/shp/cmd/build.(*RunCommand).Run(0xc0004bf4c0, 0x106c82150?, 0xc00069d590)
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/build/run.go:111 +0x48c
github.com/shipwright-io/cli/pkg/shp/cmd/build.TestStartBuildRunFollowLog.func3()
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/build/run_test.go:197 +0x54
created by github.com/shipwright-io/cli/pkg/shp/cmd/build.TestStartBuildRunFollowLog
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/build/run_test.go:196 +0x1600

goroutine 82 [chan receive (nil chan)]:
github.com/shipwright-io/cli/pkg/shp/tail.(*Tail).Start.func2()
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/tail/tail.go:65 +0x54
created by github.com/shipwright-io/cli/pkg/shp/tail.(*Tail).Start
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/tail/tail.go:64 +0x1d8
FAIL	github.com/shipwright-io/cli/pkg/shp/cmd/build	45.740s
FAIL
make: *** [test-unit] Error 1

very weird ... I ran that for loop a bunch of times
either I made a minor change that messed things up and forgot to run the for loop, or this flake is really intermittent
ok I'll take another pass today and report back
thanks

@otaviof - are you sure you recompiled with my branch?  The line numbers from your https://github.com/shipwright-io/cli/pull/112#issuecomment-1111762739 do not line up with what I see in the code.
As an example:
goroutine 6 [select]:
github.com/shipwright-io/cli/pkg/shp/reactor.(*PodWatcher).Start(0xc000550300, {{{0x0, 0x0}, {0x0, 0x0}}, {0xc000138460, 0x44}, {0x0, 0x0}, 0x0, ...})
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/reactor/pod_watcher.go:133 +0x318
github.com/shipwright-io/cli/pkg/shp/cmd/follower.(*Follower).Start(...)
	/Users/otaviof/go/src/github.com/shipwright-io/cli/pkg/shp/cmd/follower/follow.go:239

When I look at the code, the Start in follow.go starts on line 274.
And line 133 of pod_watcher.go is a comment.  The select actually starts on line 137 for me.
The line numbers in your stack traces do line up with what I see in main branch.

Just ran
for i in `seq 1 100` ; do
        echo "# Attempt ${i}..."
        make test-unit \
                GO_FLAGS='' \
                GO_TEST_FLAGS='-race -failfast -timeout=45s' \
                CMD='' \
                PKG=./pkg/shp/cmd/build \
                ARGS='-run="^TestStartBuildRunFollowLog"' || break
done

and it completes OK for me:
# Attempt 98...
go test  -race -failfast -timeout=45s  ./pkg/shp/cmd/build -run="^TestStartBuildRunFollowLog"
ok  	github.com/shipwright-io/cli/pkg/shp/cmd/build	0.104s
# Attempt 99...
go test  -race -failfast -timeout=45s  ./pkg/shp/cmd/build -run="^TestStartBuildRunFollowLog"
ok  	github.com/shipwright-io/cli/pkg/shp/cmd/build	0.105s
# Attempt 100...
go test  -race -failfast -timeout=45s  ./pkg/shp/cmd/build -run="^TestStartBuildRunFollowLog"
ok  	github.com/shipwright-io/cli/pkg/shp/cmd/build	0.104s

@otaviof - are you sure you recompiled with my branch? The line numbers from your #112 (comment) do not line up with what I see in the code.
[...]

Sorry 🤦♀ I end up running the tests on the wrong terminal window. Indeed, the tests are passing consistently, so I'll continue the review where I left this morning 👍

@otaviof - are you sure you recompiled with my branch? The line numbers from your #112 (comment) do not line up with what I see in the code.
[...]

Sorry woman_facepalming I end up running the tests on the wrong terminal window. Indeed, the tests are passing consistently, so I'll continue the review where I left this morning +1

whew :-) ... great thanks for confirming @otaviof

/lgtm
Thanks @gabemontero!


Replace hacky-setup.cmd with good browserify usage

Continuation of #130.

Never mind: not going with this approach.


IGAPP-166: flowFixMe in EventsContainer

This pull request belongs to an issue on our bugtracker.
You can find it there by looking for an issue with the key which is mentioned in the title of this pull request.
It starts with the keyword IGAPP.

This does not have a separate issue, does it?

The naming of the issue was quite misleading which is also why I accidentally swapped the names of the branch in IGAPP-197 with IGAPP-166. Naming should now be fixed: see this issue for more info on this PR


[BUG] Daily Set Quiz Skipped with Answers ABC and 7 Total Questions

Yesterday The script was skipping over the "Daily Set Quiz" (the second or middle card). I am not sure why. The answers were A B C with 7 total questions. I disabled Headless mode and watched the script answer the first question in the quiz then reload back to the dashboard. I am guessing that was the script skipping the quiz and continuing on with the script?
Anyone know a proper fix to the completeDailySetQuiz function?
I tried to copy and paste what was already in the completeDailySetQuiz funtion to make this work by changing a few numbers as so but it did not work. My addition to the code is below.
Line 396
elif numberOfOptions == 3:
correctOption = browser.execute_script("return _w.rewardsQuizRenderInfo.correctAnswer")
for i in range(3):
if browser.find_element(By.ID, "rqAnswerOption" + str(i)).get_attribute("data-option") == correctOption:
browser.find_element(By.ID, "rqAnswerOption" + str(i)).click()
time.sleep(5)
if not waitUntilQuestionRefresh(browser):
return
break
time.sleep(5)

https://github.com/thearyadev/MSRF theres a new one that is a rewrite of this and the bugs are getting fixed im currently using it

https://github.com/thearyadev/MSRF theres a new one that is a rewrite of this and the bugs are getting fixed im currently using it

Thank you for spam posting your project AGAIN. This does not help me with my current issue using this project.

https://github.com/thearyadev/MSRF theres a new one that is a rewrite of this and the bugs are getting fixed im currently using it

stop spam posting that project. it does not help the issue posted here.

https://github.com/thearyadev/MSRF theres a new one that is a rewrite of this and the bugs are getting fixed im currently using it

stop spam posting that project. it does not help the issue posted here.

https://github.com/thearyadev/MSRF theres a new one that is a rewrite of this and the bugs are getting fixed im currently using it

stop spam posting that project. it does not help the issue posted here.


Error building benchmark - ospray 2.7.0 source tarball

I am building via standard build (not superbuild)
I came across this build failure, anyone else encountered this ?
cmake \
        -D OSPRAY_MODULE_BILINEAR_PATCH=ON \
        -D OSPRAY_APPS_BENCHMARK=ON \
        -D OSPRAY_APPS_EXAMPLES=OFF \
        -D OSPRAY_APPS_TESTING=OFF \

[  4%] Built target ospray
[ 90%] Built target ospray_module_ispc
[ 90%] Building CXX object apps/ospBenchmark/CMakeFiles/ospBenchmark.dir/ospBenchmark.cpp.o
In file included from /home/nyue/projects/ospray/ospray-2.7.0/apps/ospBenchmark/ospBenchmark.cpp:4:
/home/nyue/projects/ospray/ospray-2.7.0/apps/ospBenchmark/BaseFixture.h:6:10: fatal error: ArcballCamera.h: No such file or directory
    6 | #include "ArcballCamera.h"
      |          ^~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [apps/ospBenchmark/CMakeFiles/ospBenchmark.dir/ospBenchmark.cpp.o] Error 1
make[1]: *** [apps/ospBenchmark/CMakeFiles/ospBenchmark.dir/all] Error 2
make: *** [all] Error 2

OSPRAY_APPS_BENCHMARK needs OSPRAY_ENABLE_APPS enabled as well.

 As a workaround, enable OSPRAY_APPS_TESTING as well, or just set OSPRAY_APPS_BENCHARK=ON (without M)...


Make sure all fields in sys.segments are JSON-serialized

Make sure all fields in sys.segments are JSON-serialized
Description
This PR:

Make sure all fields in sys.segments are JSON-serialized. This is to be consistent with other sys tables such as spec in sys.supervisors. This is also more standardized and prevent things like changing Java class name from having end user impact (as our contract is to maintain compatibility of the JSON-serialized String).
Make all columns use the same casing

This PR has:

[x] been self-reviewed.

[ ] using the concurrency checklist (Remove this item if the PR doesn't have any relation to concurrency.)

[ ] added documentation for new or modified features or behaviors.
[ ] added Javadocs for most classes and all non-trivial methods. Linked related entities via Javadoc links.
[ ] added or updated version, license, or notice information in licenses.yaml
[ ] added comments explaining the "why" and the intent of the code wherever would not be obvious for an unfamiliar reader.
[ ] added unit tests or modified existing tests to cover new code paths, ensuring the threshold for code coverage is met.
[ ] added integration tests.
[x] been tested in a test Druid cluster.

Added Release Notes because this changes the behavior of an API - hopefully no one depends on this