Opt out of null safety

Description
These packages have null safety enabled by default.
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
[x] All existing and new tests are passing.
[x] I updated/added relevant documentation (doc comments with ///).
[x] The analyzer (flutter analyze) does not report any problems on my PR.
[x] I read and followed the Flutter Style Guide.
[x] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
[x] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
[x] I updated CHANGELOG.md to add a description of the change.
[x] I signed the CLA.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
[x] No, this is not a breaking change.

Looks like the analyzer is complaining about the example dir of most of the failing packages. In another run, google_maps_flutter's example was also affected.


Add a check for non-ASCII characters/bytes in C++ source code

This has caused issues when compiling ChakraCore on certain non-English locales in the past.
See https://github.com/Microsoft/ChakraCore/pull/4668#discussion_r167734493

duplicate ? https://github.com/Microsoft/ChakraCore/issues/4268

Yes, thanks.


Possibility add another event by default (click) ?

Hi.
Thank you for great work, awesome component.
I faced with a problem where it was necessary to call dropdowns by click event by default.
I found not the most best solution, but it works...
onMounted(() => {
      refs.VsmMenu.unregisterGlobalEvents();

      refs.VsmMenu.hasDropdownEls.forEach((el) => {
        const currentElement = el;
        const cloneElement = currentElement.cloneNode(true);

        currentElement.parentNode.replaceChild(cloneElement, currentElement);

        cloneElement.addEventListener('click', (event) => {
          event.preventDefault();

          refs.VsmMenu.toggleDropdown(cloneElement);
      });
    });
});

Are there any plans to make a choice of the event call by default?

Thank you for the issue, I did not plan to add the event "by click" initially, but later I will see the code how easy it can be added

@anthon97 Hi, i added new handler props. Can you check?
<vsm-menu handler="click" />

https://github.com/Alexeykhr/vue-stripe-menu#menu-props
On the site, you can switch (top-right link) and check.

@Alexeykhr, thank you for paying attention to my problem.
I`ll try soon


Join Worbli and Forgot Password links don't work after logging out

After logging out, the Join Worbli and Forgot password  links just refresh the page. Browser refresh or simply reloading the page fixes the problem.

I can't reproduce this can you give me a step by step guide

Reproduced: After resetting password, returning to the sign in page results in being unable to click the JOIN or FORGOT PASS buttons.


Add msg and bytes counter stats to broker-stats/topics

Motivation
Add msg and bytes counter stats to broker-stats/topics
Does this pull request potentially affect one of the following parts:
If yes was chosen, please highlight the changes

Dependencies (does it add or upgrade a dependency): (no)
The public API: (no)
The schema: (no)
The default values of configurations: (no)
The wire protocol: (no)
The rest endpoints: (no)
The admin cli options: (no)
Anything that affects deployment: (no)

Documentation

Does this pull request introduce a new feature? (no)

/pulsarbot run-failure-checks


Undefined array key "streams" when generating thumbnail

Q
A

Bug?
yes

New Feature?
no

Version Used
v1.0.1

FFmpeg Version
ffmpeg version 2022-07-04-git-dba7376d59-essentials_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg developers built with gcc 12.1.0 (Rev2, Built by MSYS2 project)

OS
Windows 11

Actual Behavior
I get an error which says Undefined array key "streams"
Expected Behavior
I expected that thumbnail should have been generated.
Steps to Reproduce
I am using PHP 8.1  and Laravel 9. Below is a code snippet
$ffmpeg = \FFMpeg\FFMpeg::create([
    'ffmpeg.binaries'  => config('media.ffmpeg_path'),
    'ffprobe.binaries' => config('media.ffprobe_path'),
    'temporary_directory' => $temporaryDirectory->path()
]);

$video = $ffmpeg->open($baseFile);
$video
    ->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(10))
    ->save($thumbnailPath);

$temporaryDirectory->path() returns an absolute path for the temporary directory
$baseFile is the absolute file path for the video file to generate the thumbnail from
$thumbnailPath is also an absolute file path for the thumbnail image.
Possible Solutions
Change the below code snippet in the mapStreams method of FFMpeg\FFProbe\Mapper::42 from
foreach ($data['streams'] as $properties) {
    $streams->add(new Stream($properties));
}

To
foreach ($data['streams'] ?? [] as $properties) {
    $streams->add(new Stream($properties));
}

To take care of instances where no streams are available.

i got this error message and it turned out that the path i passed to $ffpeg->open() was incorrect


Warnings after executing just the opentest command

OpenTest version number: 1.2.1
Steps to reproduce:

(describe step 1 here)
Output from command

Relevant log information:
➜  myApp git:(master) ✗ opentest
opentest <command>

Commands:
  opentest server          Sync server commands
  opentest actor           Test actor commands
  opentest session         Test session commands
  opentest quick-start     Create server, actor and test repo dir
  opentest encrypt [text]  Encrypt some text using the provided password
  opentest decrypt [text]  Decrypt some text using the provided password

Options:
  -h, --help     Show help                                             [boolean]
  -v, --version  Show version number                                   [boolean]

Examples:
  Initialize server's working directory to C:\opentest\server:
  opentest server init C:\opentest\server

  Start server in working directory to C:\opentest\server:
  opentest server C:\opentest\server

  Initialize actor's working directory to C:\opentest\actor1:
  opentest actor init C:\opentest\actor1

  Start actor in working directory to C:\opentest\actor1:
  opentest actor C:\opentest\actor1

Not enough non-option arguments: got 0, need at least 1
(node:42933) Warning: Accessing non-existent property 'cat' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
(node:42933) Warning: Accessing non-existent property 'cd' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'chmod' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'cp' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'dirs' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'pushd' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'popd' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'echo' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'tempdir' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'pwd' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'exec' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'ls' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'find' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'grep' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'head' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'ln' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'mkdir' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'rm' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'mv' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'sed' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'set' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'sort' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'tail' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'test' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'to' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'toEnd' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'touch' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'uniq' of module exports inside circular dependency
(node:42933) Warning: Accessing non-existent property 'which' of module exports inside circular dependency

I believe you might be using Node.js 14.X. If that's the case, please downgrade to the LTS version 12.X, since several OpenTest npm dependencies don't support Node 14 yet.


fix for test

What do these changes do?

Related issue number

Fixes

Could you please take a try to add test suite for those IO adaptors?

Codecov Report

Merging #43 (4654901) into main (ff324fa) will increase coverage by 0.22%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main      #43      +/-   ##
==========================================
+ Coverage   76.26%   76.48%   +0.22%
==========================================
  Files          52       52
  Lines        3699     3704       +5
==========================================
+ Hits         2821     2833      +12
+ Misses        878      871       -7

Impacted Files
Coverage Δ

src/server/services/meta_service.h
75.51% <0.00%> (-0.16%)
:arrow_down:

src/server/server/vineyard_server.cc
74.12% <0.00%> (+0.09%)
:arrow_up:

src/server/services/meta_service.cc
77.77% <0.00%> (+0.31%)
:arrow_up:

src/common/util/status.h
46.66% <0.00%> (+2.84%)
:arrow_up:

src/client/io.cc
69.90% <0.00%> (+5.82%)
:arrow_up:


invalid byte sequence in UTF-8 on non-english windows platform

landrush raises an exception on my german windows 10 with following message
.../.vagrant.d/gems/2.2.5/gems/landrush-1.2.0/lib/landrush/cap/host/windows/configure_visibility_on_host.rb:150:in `wired_autoconfig_service_running?': invalid byte sequence in UTF-8 (ArgumentError)

I think this is a duplicate of #310.


[wallet] Add the magmo/apps packages to the monorepo

Import all the packages from magmo/apps into the monorepo, preserving the git commit history.

As the monorepo tests are not currently passing (and we need to re-import the nitro-protocol repo anyway), a different approach here would be to:

Move magmo/apps to state-channels/monorepo2.
Import state-channels/nitro-protocol into state-channels/monorepo2 (preserving history)
Liam can import the other packages into monorepo2 and then force-push monorepo2 over monorepo.


V1.17.2 cherry-pick

Skipped #1118 and #1119

/label tide/merge-method-rebase
/hold

/retest-required

/unhold


mclp jupyter notebook using osrm routing

Greetings @martinfleis @jGaboardi - I refactored the notebook a little and added some comments. Please let me know what you think. Happy to work in feedback if you have ideas or comments. I'd go for LSCP up next (please choose your city :) ) !

Thanks so much for this @TimMcCauley! Here are some comments:

Since folium and routingpy are needed here, but not for spopt in general, we may want to have a statement about that in the notebook description.
It looks like the notebook starts from cell 209. Can you rerun so it starts from cell 1?
There are some long lines of code in there. We should be trying to stick to PEP8 guidelines as much as possible, but we go to a line length of 90 frequently. You can reformat manually or use black within the notebook with drillan/jupyter-black.

Thank you @jGaboardi - I took care of your points and pushed an update.

@gegen07 thank you - I updated it & it looks better now. I'd keep the nominatim request out for this NB if it's ok but I am currently writing one for Toronto and LSCP and I will make sure to include it there.

I added the LSCP notebook in this PR, too. You can find it in notebooks/lscp_gis.ipynb or check it out here - let me know what you think. I made use of the Overpass API this time @gegen07 - let me know what you think (the use case is a little exotic but why not! ;-) )

Very nice with the LSCP notebook. One small typo I saw between cells 2 and 3 where Solving the MCLP should be Solving the LSCP.

Very nice with the LSCP notebook. One small typo I saw between cells 2 and 3 where Solving the MCLP should be Solving the LSCP.

Oh, right. Fixed that now!

Think this is good for merging. Thanks for the contribution @TimMcCauley 🎉 !


[C_CPP]: Switch Statement

Description
Switch Statement

Discription
Examples

Domain
C/CPP
Type of Contribution
Documentation
Code of Conduct

[X] I follow Contributing Guidelines & Code of conduct of this project.

/assign


Dark theme - XML preview not visible

In the dark mode (default) XML preview is completely not readable
(Screenshot looks in fact better then in real :)
In general dark black / blue on dark grey background are hard to read.
Would be good to have this corrected

Hello @maciey
Yes, I can reproduce it. Value panel is fine for JSON format, for String, but not for XML.

I think a similar error makes the filter panel font/background color combination quite hard to read in dark mode. The font is always black, no matter what.


Set From Name

In the past, a string in the format of "Display Name<EMAIL_ADDRESS>was acceted as the setFrom, but it is not anymore. Will this be making a reappearance, or is there another way to get this same effect?

There are two ways you can achieve this.
var sendgrid  = require('sendgrid')(api_user, api_key);
sendgrid.send({
  to<EMAIL_ADDRESS>  from<EMAIL_ADDRESS>  fromname: 'Foo Barista', // <=======
  subject:  'Hello World',
  text:     'My first email through SendGrid.'
}, function(err, json) {
  if (err) { return console.error(err); }
  console.log(json);
});

var email = new sendgrid.Email();
email.from =<EMAIL_ADDRESS>email.fromname = 'Foo Barista';
...

sendgrid.send(email, function());


tensorpack version

Thanks for the good project. Could you please mention the version of the tensorpack with which the project is compatible. As the last versions of the tensorpack don't have 'LMDBDataPoint'.

I've removed tensorpack as a dependency to use tensorpack/dataflow instead and I put the specific version of the git repo I installed for tensorpack/dataflow so it should be replicable. Also, all the versions of all the packages used are in the wandb logs for the benchmark experiment: https://wandb.ai/gngdb/trial-imagenet/runs/3gcmoq0j/files/conda-environment.yaml


Use git tags to tag published cargo versions

It's helpful to be able to see which version of the source code corresponds to which version published on crates.io, so it would be great if the git repo were tagged accordingly. It may also make sense to use the same version number for all crates given that this is a monorepo of sorts.

It's a monorepo, but the crates get updated individually. If I force them all to use the same version there will be version gaps.

you could do crate-version tagging. example: bevy-tnua-v0.20.0
I agree that it would be super helpful to be able to see the code that corresponds to versions of published crates.

Good idea, @rltvty - though I'm thinking of dropping the bevy-tnua prefix - so the main crate will just be v0.20.0, but the other crates will be e.g. physics-integration-layer-v0.4.0 instead of bevy-tnua-physics-integration-layer-v0.4.0 (which is way too long...). Other than length considerations, I don't want to create the impression that the crate name is contained as is in the tag because the actual physics backend integration crates will be sharing their tags - e.g. both bevy-tnua-rapier2d and bevy-tnua-rapier3d will use the avian-v0.7.0 tag.
I can spend a few hours to do it manually, or a few days to do automate it. Of course I'll choose the latter. In fact, I've already started to work on it: https://github.com/idanarye/retrospective-crate-version-tagging.

Can't run my tool before this is solved: https://github.com/cli/cli/issues/9773 (I tried, and some of the releases don't work)


Create one Shadow class which can be either a Drop Shadow or an Inner Shadow based on a constructor paramerer

expose the "inner" boolean flag which determines whether or not the shadow is an inner shadow as is seen in the last argument of the CachedShadows class constructor, as seen in file CachedShadows.h

What's the use case for this? It's currently designed so that DropShadow and InnerShadow are separate classes. I was thinking about an object called PathWithShadows which owns a path and a collection of drop/inner shadows, mainly so that painting becomes pathWithShadows.render() or something very succinct...


Expose some basic interface for escaping parameters into a query.

While there is a consistent interface for escaping literals at the connection level, this is non-trivial for users to access.
There is no nice way to escape fields efficiently, and string substitution seems like a poor approach.
result = session.call("SELECT * FROM users WHERE name = ?", user_name)

This is the most basic interface I can think of. However it has some issues - we need to do string substitutions which is not cheap.
result = session.call("SELECT * FROM users WHERE name = #{session[user_name]}")

This uses string interpolation which is better, but still not perfect given that it generates temporary strings.
Here is a quick hack to generate an object and use ruby concatenation to generate queries.
class Query
	def self.>>(text)
		self.new(text)
	end

	def initialize(buffer = String.new)
		@buffer = +buffer
	end

	def << literal
		@buffer << literal.dump

		return self
	end

	def >> text
		@buffer << text

		return self
	end

	def to_str
		@buffer
	end
end

name = "ioquatix"

query = Query >> "SELECT * FROM users WHERE name = " <<name>> " AND active = TRUE"

puts query.to_str
# => SELECT * FROM users WHERE name = "ioquatix" AND active = TRUE

Maybe something like this would be both efficient and relatively easy to read, without imposing the semantic burden of a DSL.

This is now implemented, at least something like it.
https://socketry.github.io/db/guides/executing-queries/index.html#query-builder


[not for land yet] test perf with TE's amax-cast-transpose-cont kernel

Summary:
This uses TransformerEngine's amax-cast-transpose-contiguous kernel from inside of our no-tensor-subclass branch, instead of using individual PyTorch kernels for the equivalent operation.
Performance in eager mode for our single linear fw-bw benchmark is on par/slightly better than TE after this PR. More study is necessary to validate on e2e models.
torch.compile doesn't work with this PR as is, there might be a way to hack it. Leaving that for the future.
Note that numerics are close to before this PR but the history calculation is not correct as is, because the TE kernel updates the history and our code assumes the history update happens in the history update function. We could refactor our code to defer the history update to the kernel if needed to get correct numerics back, but leaving that out for now since we just want to get a perf baseline.
TBD if we land this, but putting it up for discussion.
Test Plan:
// numerics are good, with the exception of the history issue described above
pytest tests/test.py -s

// before this PR
> python ./benchmarks/bench_linear_float8_nots.py -o ../tmp/float8_perf_20230918.csv
        name                shape       ref_dtype  compiled  ref_time_sec  pt_fp8_time_sec  te_fp8_time_sec  pt_fp8_speedup  te_fp8_speedup
0  attn.wqkv  (16384, 8192, 1280)  torch.bfloat16     False      0.002061         0.004275         0.001913        0.482127        1.077659
1    attn.w0  (16384, 1024, 8192)  torch.bfloat16     False      0.001798         0.003764         0.001686        0.477703        1.066519
2    ffn.w13  (16384, 8192, 7168)  torch.bfloat16     False      0.010012         0.010947         0.006339        0.914650        1.579396
3     ffn.w2  (16384, 3584, 8192)  torch.bfloat16     False      0.005453         0.006714         0.003647        0.812249        1.495317
4  attn.wqkv  (16384, 8192, 1280)   torch.float16     False      0.002235         0.004299         0.001961        0.519846        1.139663
5    attn.w0  (16384, 1024, 8192)   torch.float16     False      0.001852         0.003770         0.001631        0.491125        1.135182
6    ffn.w13  (16384, 8192, 7168)   torch.float16     False      0.010180         0.010949         0.006506        0.929722        1.564646
7     ffn.w2  (16384, 3584, 8192)   torch.float16     False      0.005883         0.006727         0.003579        0.874513        1.643654

// after this PR
> python ./benchmarks/bench_linear_float8_nots.py -o ../tmp/float8_perf_20230918.csv
        name                shape       ref_dtype  compiled  ref_time_sec  pt_fp8_time_sec  te_fp8_time_sec  pt_fp8_speedup  te_fp8_speedup
0  attn.wqkv  (16384, 8192, 1280)  torch.bfloat16     False      0.002056         0.001820         0.001912        1.129804        1.075357
1    attn.w0  (16384, 1024, 8192)  torch.bfloat16     False      0.001798         0.001594         0.001644        1.128419        1.094035
2    ffn.w13  (16384, 8192, 7168)  torch.bfloat16     False      0.010004         0.006586         0.006307        1.519072        1.586163
3     ffn.w2  (16384, 3584, 8192)  torch.bfloat16     False      0.005434         0.003654         0.003591        1.487089        1.513293
4  attn.wqkv  (16384, 8192, 1280)   torch.float16     False      0.002194         0.001829         0.001966        1.199517        1.115886
5    attn.w0  (16384, 1024, 8192)   torch.float16     False      0.001851         0.001579         0.001681        1.171625        1.100746
6    ffn.w13  (16384, 8192, 7168)   torch.float16     False      0.010248         0.006567         0.006567        1.560686        1.560480
7     ffn.w2  (16384, 3584, 8192)   torch.float16     False      0.005541         0.003785         0.003645        1.463700        1.520210

Reviewers:
Subscribers:
Tasks:
Tags:

@drisspg I'm also trying to use TE's fused_cast_transpose with the float8_experimental library, and I can't seem to get the function to work with torch.compile(). I'm seeing this error:
│ /llm-foundry-private/llmfoundry/models/utils/fp8_gemm.py:187 in te_fp8_cast_transpose_fused      │
│                                                                                │
│   184 │   │   x.shape[1], x.shape[0], device="cuda", dtype=out_dtype                             │
│   185 │   )                                                                                │
│   186 │                                                                                │
│ ❱ 187 │   tex.fused_cast_transpose(                                                              │
│   188 │   │   x,                                                                                │
│   189 │   │   scale,                                                                             │
│   190 │   │   amax_history,

BackendCompilerFailed: backend='inductor' raised:
RuntimeError: /tmp/pip-req-build-lbo4_uw3/transformer_engine/common/transformer_engine.cpp:39 in function CheckInputTensor: Assertion failed: t.data.dptr != nullptr. Input
cast_transpose_input is not allocated!

I'm using the same function as in your comment above, and am trying to compile the entire fp8 linear function. Have you seen a similar issue?


Treat UTF-16 surrogate pairs as single characters for string min/maxLength

Makes the following test pass:
  {
      "description": "minLength validation",
      "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "minLength": 2
      },
      "tests": [
          {
              "description": "one grapheme is not long enough",
              "data": "\uD83D\uDCA9",
              "valid": false
          }
      ]
  }

The JSON-quoted derivre strings do not allow \uxxxx escapes except for \x00xx. The assumption is that everything else will be emitted as UTF-8.
It's all the same as far as JSON goes (when you read JSON {"x":"ł"} or {"x":"\u0142"} you get exactly the same object in memory), but I don't know if we want to let the model output the general \uxxxx sequences in non-regex case. I would say not just to be consistent. If we do allow it, we would also need to check if the surrogate pairs with \xD8xx are output correctly (that is the high surrogate only ever occurs before low surrogate and vice versa).

Oh and BTW the test will pass if do json.dumps(..., ensure_ascii=False)

@mmoskal thanks for taking a close look at this. I have to admit that all of this encoding stuff is still very far from intuitive to me...
RE: being self-consistent... I would, as a user, expect
{"maxLength": X, "minLength": Y}

to produce an identical constraint to
{"pattern": "(?s:.{X,Y})"}

Does this imply that we should use my solution but change the JSON quoting semantics in derivre? Or something else?

A JSON object {"x":"ł"} can be also encoded as {"x":"\u0142"}. It is the same JSON object when read into memory, just a different serialization format (in Python it's the ensure_ascii option, which defaults to False (\u0142); most other libraries/languages AFAIK default to ł as it is shorter and easier to read). In some sense this is similar to { "x" : "\u0142" } (with spaces) also being the same object.
Now, the model may want to generate ł or \u0142; I don't know which one it likes more, but my money would be on ł, Who knows if the test data was passed through Python with default settings at some point, but I suspect not.
Our current unconstrained string regex allows for both, while derivre JSON-quoted only allows for ł. I would say let's merge this and if we find that models like \u0142, we'll change derivre.


Run e2e tests on a candidate build

/kind documentation
This PR provides a mechanism to run our tests in ./test/e2e against a candidate OpenShift GitOps operator build triggered manually. This complements the manual testing done by QE today. This must be superseded by better infra when we have it.
Following changes have been made in this PR:

When tests are run against an installed operator, do not deploy operator
A Dockerfile has been added to build a custom operator-sdk image
Tekton manifests have been added which clone this repo and run ./test/e2e tests on the installed candidate build.

@sbose78 @amitkrout are we still working on this PR?


Publication of MeshMark

Current Behavior
Related to #227, MeshMark in its initial form has been defined.
Desired Behavior
Its definition should be published on amp-spec.io/meshmark
Acceptance Tests

This should include its formula and description of scoring system.

Contributor Guides and Resources

🛠 Meshery Build & Release Strategy
📚 Instructions for contributing to documentation

Meshery documentation site and source

🎨 Wireframes and designs for Meshery UI in Figma
🙋🏾🙋🏼 Questions: Layer5 Discussion Forum and Layer5 Community Slack

Hi @leecalcote do we need to make a separate page covering MeshMark?  I am a little confused as we already have this page here: https://smp-spec.io/blog/spec/meshmark-explained, would you please tell me what you mean by the "publication of MeshMark" and from where I can learn more about it.

Yes. - separate page. Materials for the page can be found in the ServiceMeshCon EU deck and the google doc on MeshMark.

Yes. - separate page. Materials for the page can be found in the ServiceMeshCon EU deck and the google doc on MeshMark.

Ok I will work on it


feat(pie-lottie-player): DSW-2365 implement lottie player

Please click the Preview tab and select a different PR template if your change isn't for an                                            existing web component.
PIE Docs Template
New Web Component Template
═══════════════════════════════════════════════════════════
Describe your changes (can list changeset entries if preferable)
Author Checklist (complete before requesting a review)

[ ] I have performed a self-review of my code
[ ] I have added thorough tests where applicable (unit / component / visual)
[ ] I have reviewed the PIE Storybook/PIE Docs PR preview
[ ] I have reviewed visual test updates properly before approving
[ ] If changes will affect consumers of the package, I have created a changeset entry.
[ ] If a changeset file has been created, I have used the /snapit functionality to test my changes in a consuming application

Reviewer checklists (complete before approving)
Reviewer 1

[ ] I have reviewed the PIE Storybook/PIE Docs PR preview
[ ] If there are visual test updates, I have reviewed them

Reviewer 2

[ ] I have reviewed the PIE Storybook/PIE Docs PR preview
[ ] If there are visual test updates, I have reviewed them

/snapit

/snapit

/snapit

/snapit

/snapit

/snapit

/snapit

/snapit

/snapit

/snapit

/snapit

After so many updates it became a bit messy, I'm closing it to open a clean one.


two stateChangesOnly alerts interfering

Hello,
I have two tick scripts that monitors one field each in the same measurement.
each script rises an alert when the field equals a value, and the alerts are stateChangesOnly(),
but it seems that one alert interferes with the other. I'll show you an example:
1st script 'door' :
stream
    |from()
        .measurement('mymeasurement')
    |alert()
        .info(lambda: "door" == 1)
        .stateChangesOnly()
        .message('door. Level: {{ .Level }}, value:{{ index .Fields "door" }}')
        .mqtt('sensors/test')
        .brokerName('localhost')

2nd script 'brake':
stream
    |from()
        .measurement('mymeasurement')
    |alert()
        .info(lambda: "parking_brake" == 1)
        .message('parking brake. Level: {{ .Level }}, value: {{ index .Fields "parking_brake" }}')
        .stateChangesOnly()
        .mqtt('sensors/test')
        .brokerName('localhost')

here's what happen when I inssert some values in influxDB :
insert mymeasurement door=1
message received :
door. Level: INFO, value:1
ok so far.
now I make a new insert :
insert mymeasurement parking_brake=1
2 messages received :
door. Level: OK, value:<no value>
parking brake. Level: INFO, value: 1

What triggers the door script here? I don't understand why the door alert goes down to "OK" when I set a value for parking_brake.
I use Kapacitor 1.5.2-1 on windows.
thanks.

I think I've found what caused me some troubles.
When I insert a value for parking_brake, the value for door is not set, but kapacitor reads it and conclude that it's not equal to 1 so it triggers the alert.
if I want to avoid this, i can add an eval node after the from node, example for the door script :
|eval(lambda: "door")
        .as('value')

the eval node will eliminate the other fields in the stream


Item Frame Server Error

Minecraft v1.16.5
Forge v36.0.7
Dynamic Weaponry Beta v2
After trying to place a dynamic weapon in an item frame, I got disconnected from my server:
01.02 14:28:39 [Server] Netty Epoll Server IO #3/FATAL [ne.mi.fm.lo.RuntimeDistCleaner/DISTXFORM]: Attempted to load class net/minecraft/client/entity/player/ClientPlayerEntity for invalid dist DEDICATED_SERVER
01.02 14:28:39 [Disconnect] User WenXin2 has disconnected, reason: Internal Exception: java.lang.RuntimeException: Attempted to load class net/minecraft/client/entity/player/ClientPlayerEntity for invalid dist DEDICATED_SERVER
01.02 14:28:39 [Server] Server thread/INFO [minecraft/DedicatedServer]: WenXin2 left the game

This issue actually isn't related to dynamic weaponry, it's related to the mod which it depends on (Assorted Utils).
try this jar for assorted utils:
AssortedUtils.zip

Alright, thanks

Reason I was able to point you to the actual culprit so quickly is because I have a server which has the mod (hosted by a user called LorenzoPapi) linked to my discord server, and at the start of the server, me and a different user Mohatax (who made Shulkered), were unable to get food because of this, as we couldn't kill pigs nor fish to get food, and clicking on any entity through either click would dc us


bracket-push: update tests and version file (v1.1.0 -> v1.3.0)

Please update the version specified in the bracket-push version file from 1.1.0 to 1.3.0.
This update has been caused by the application of a new input policy, and the addition of a test case.
Please additionally update the test suite to match the canonical-data. The test for "partially paired brackets" should be added.

Closed via #260


[Suggestion] Hide PowerShell windows that popup after Windows is installed.

Hi!
There's something I'd like it to suggest.
After user logs in, there is a chance that you have something running, for example, language pack installations or something.
My suggestion is to make those windows appear as an icon in system tray, or even completely hidden.
This way, it'll be less intrusive for a user if running process takes some time.
As an additional "feature" of this "feature" maybe have it behave like Notepad or Excel, making it "impossible" to reboot until some modal window is not closed.
Since Powershell is able to utilize some of the C# stuff, I believe this should be doable, I'm no expert though.
Anyway, thank you very much for this useful tool, it is a game changer and makes Windows a better OS.

UserOnce.ps1 can very well contain Read-Host calls that prompt for user input. Hence, the PowerShell window must not be hidden.
However, I have now added a simple progress indicator, together with a note to not close the window:

@cschneegans
You are correct, in case of interactive that would case some issues.
Thanks for the new tooltip though, this seems really handy!


fix: Update checkfile logic to split install types

Testing from my previous PR was incomplete. This splits install and uninstall into two logical if statements so it is easier to maintain over time, and it makes more sense for me at least 😅. I'm not sure if it's worth adding tests for this but if so I can work on it next week.

Thanks @clburlison!


config not saving

I am running this in docker on a qnap and if anything unexpected happens like a reboot, the config file is gone and a default one is replaced in the shared directory. None of my other docker containers have this problem. Any ideas or something to look for?

No, it shouldn't.  As long as you mounted in your config.yml into /config, it shouldn't replace it: https://github.com/stjohnjohnson/smartthings-mqtt-bridge/blob/master/server.js#L52

That's the thing, I always catch it after its running as a default already so I am assuming it finds no default there and is creating it. I just can't figure out why the file wouldn't be there. Last time it happened it was a power blip and the qnap rebooted, all other containers were fine as far as their config dirs on the host. But this isn't the first time it's happened but it is the one where I remember the exact scenario. I'll play around and see if I can reproduce any way to get any more info.
I ran it just with your basic settings from the readme but I changed the network to be --net=host and in my config file I change the ports to 8181 due to a conflict with my wifi controller software.
docker run
-d
--name="mqtt-bridge"
-v /etc/conf/mqtt-bridge:/config
--net=host
stjohnjohnson/smartthings-mqtt-bridge

OK, I just figured it out. When looking closer I had put the config directory for this container int /etc/conf and the rest in /etc/config. Looks like the root (including etc) dir is somewhat virtual on the qnap with links to the actual HDs (raid array) for certain directories, the /etc/conf not being one, so at each reboot it was gone and the container, as it started, created it new. I moved it and I suspect I won't have any more issues :)


optimize redis sentinel connection

optimize redis sentinel connection

[This message is created by hyperf-bot]
Hi @fanuser, this is a READ-ONLY repository, please submit your Pull Request to hyperf/hyperf repository, this Pull Request will close automatically.


Initialize uc and vc to 0 in the r8 version of computeMassFluxes in dev/MAPL-2.0

This is required for the dev/MAPL-2.0 branch so that I can distribute my coupled CTM on Github and fixes #7 for that branch.

@kgerheiser Are these zero-diff? If so, we'll need a required label and, I suppose, someone to press the "Update branch" button below to make sure it has the latest code when merging.

It is zero-diff

Kyle updated this to using MAPL_UNDEF rather than 0s. That's when I approved it

Forgot about this branch. Changed it to MAPL_UNDEF here too.

Whoops. I might have hand merged this in earlier today:

As such I'll close as the code is now there

As proof:
https://github.com/GEOS-ESM/FVdycoreCubed_GridComp/blob/cdf4aa1398a52465816673f7749b27f7a20f80b7/FV_StateMod.F90#L2915-L2917


Issues while loading GeoJson file obtained from ESRI ArcMap tool

Hi @jiayuasu
Appreciate your help in helping us out with our issues.
We are using ESRI ArcMap to convert our feature classes to GeoJson data. Our geojson data looks like this
{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"EPSG:4326"}},"features":[{"type":"Feature","id":1,"geometry":{"type":"Polygon","coordinates":[[[74.479138523000074,15.23637526400006],[74.477792431000069,15.224213660000032],[74.488047980000033,15.228113961000076],[74.479138523000074,15.23637526400006]]]},"properties":{"OBJECTID":1,"SHAPE_Length":0.035358255765521845,"SHAPE_Area":5.9736880883337009e-05}},{"type":"Feature","id":2,"geometry":{"type":"Polygon","coordinates":[[[74.462140491000071,15.209399061000056],[74.462573410000061,15.196601632000068],[74.476942429000076,15.19804866000004],[74.474797396000042,15.210276462000024],[74.462140491000071,15.209399061000056]]]},"properties":{"OBJECTID":2,"SHAPE_Length":0.052348246074740742,"SHAPE_Area":0.00017058056436916421}}]}
So As you can see, when we tried to load this geojson we get the error as

org.wololo.geojson.FeatureCollection cannot be cast to org.wololo.geojson.Feature

So we removed  the firstline  and  since we had 2 records, those two records had to be on two different lines (else it showed the count as 1 only). Then  we were able to load the geojson file.
We referred the sample geojson in your github page
So basically our geojson after removing the first line now looks like
{"type":"Feature","id":1,"geometry":{"type":"Polygon","coordinates":[[[74.479138523000074,15.23637526400006],[74.477792431000069,15.224213660000032],[74.488047980000033,15.228113961000076],[74.479138523000074,15.23637526400006]]]},"properties":{"OBJECTID":1,"SHAPE_Length":0.035358255765521845,"SHAPE_Area":5.9736880883337009e-05}}, {"type":"Feature","id":2,"geometry":{"type":"Polygon","coordinates":[[[74.462140491000071,15.209399061000056],[74.462573410000061,15.196601632000068],[74.476942429000076,15.19804866000004],[74.474797396000042,15.210276462000024],[74.462140491000071,15.209399061000056]]]},"properties":{"OBJECTID":2,"SHAPE_Length":0.052348246074740742,"SHAPE_Area":0.00017058056436916421}}
with two records on two different lines exactly like your geojson sample in github.
Since we would be working with a huge datasets (shape file wont be feasible as our Geodatabases can reach 22.5 gb and shp files have a limitation of 2gb) can you help us out? I am not sure by removing the first line and the corresponding braces and brackets through a python script will solve this issue either.
Can you add the first line (till the features array) in the next fix  or is there any other workaround to this problem?
Thanks a lot
Settings
GeoSpark version = 1.1.2
Apache Spark version = 2.1
JRE version = 1.8?
API type = Scala

@SrinivasRIL We will try to fix this in the next major release which is 1.2.0. But it won't come out soon because it will contain many new functions and API changes. To solve this issue for now, I have several suggestions:

Generate your data to WKT or WKB. They are single-line data which is perfectly supported by GeoSpark RDD and SQL. They don't have any size limitation like Shapefile.
Use GeoJSON, but remove the header "FeatureCollections {" and the footer "}" using a small script. Currently, this is the only way to solve it.

I know this is very annoying however the design of GeoJSON really complicates the data parsing. To fix this trivial issue perfectly, we may have to write a big chunk of code to customize a Spark input reader like GeoSpark shapefile reader

Thanks @jiayuasu
Currently as you had suggested we are developing a script in python to remove the header and footer as per our convenience and may not be the best solution. Hopefully you guys can come up with the newer version soon.
Also with this current geopsark version with geojson.
i.e in ST_GeomFromGeojson, it results in reading geometry/shape only, can you tell us how to read other attributes from the geojson (included in the properties object)  like statename, cityname etc

@SrinivasRIL If you use RDD/SQL API to load GeoJSON, the other attributes are stored in geometry's UserData attribute. Use "myDf.map()..." "myRDD.map.." to manipulate.
The GeoJSON support in GeoSpark is limited. I will fix this issue in 1.2.0 (will be out late May or early June). For now, WKT and WKB are preferred.

@jiayuasu
Does the SQL API read the other attributes correctly? I am able to get the RDD API to load up the attributes, but when I  use the SQL API it fails to load it up.
Code:
    val geoJsonFile = "file:///data/test.geojson"

    val pointRDDSplitter = FileDataSplitter.GEOJSON
    val carryAttributes  = true
    val rdd              = new PolygonRDD(spark.sparkContext, geoJsonFile, pointRDDSplitter, carryAttributes)

    rdd.rawSpatialRDD.take(1).asScala.foreach(println)
    val rddWithOtherAttributes =
      rdd.rawSpatialRDD.rdd.map[String](f => f.getUserData.asInstanceOf[String])
    rddWithOtherAttributes.take(1).foreach(println)

    var df = spark.read
      .format("csv")
      .option("delimiter", "\t")
      .option("header", "false")
      .load(geoJsonFile)

    df.show(1, false)
    df.createOrReplaceTempView("tabblock")

    val converted = spark.sql("""
        | SELECT ST_GeomFromGeoJSON(tabblock._c0) AS shape,
        | FROM tabblock
      """.stripMargin)

    converted.show(1, false)
    converted.createOrReplaceTempView("poly_coords")

RDD Output
POLYGON ((-135.275376 56.883444,
 -135.275037 56.884441,
-135.27467 56.885352,
-135.274355 56.885938, ...))
	{tabblock_id=02220000100191}

SQL Show() (no _c* columns)
truncated to save space
|_c0|                                                                                +--------------------------------+
|{"type":"Feature",
"properties":{ "tabblock_id" : "022200001001962"},
"geometry":{"type":"MultiPolygon",
"coordinates":[[[[-135.275376,56.883444]
,[-135.275037,56.884441]
,[-135.27467,56.885352]....[-135.275376,56.883444]]]]}}|

SQL Show() after running  SELECT ST_GeomFromGeoJSON(tabblock._c0) AS shape
truncated to save space
|shape|
---------
POLYGON ((-135.275376 56.883444,
 -135.275037 56.884441,
-135.27467 56.885352,
-135.274355 56.885938,
-135.274264 56.886466,
-135.273923 56.887044,....))

Do we have to map over the entire _c0 column as a string and manually extract the attributes we want to get it into the dataframe?

@kalvinnchau Unfortunately, yes, you have to manually extract the attributes. This will be fixed in 1.2.0.


Implemented path recognizer for recognizing along an SVGpath

feat: path recognizer for recognizing along an SVGpath
Implement a recognizer that receives an SVG element and an SVG Path element, and recognizes a user following the path. Recognizer will fail if user starts gesturing at the middle of the path, veers too far from the path or stops input mid-way.
Special parameters:
resolution (default 10) - path will be quantized to this amount of segments
maxDistanceFromSegment (default 30) - the threshold in which input is allowed to stray from the path
Example use case: games where the player needs to follow an onscreen shape to achieve a goal.
Includes a pathRecognizer test in the manual tests dir.

@arschmitz this is really interesting, at first I thought perhaps this was outside the scope of the core lib, but the more I think about it the more I'd love to see something like this within the lib itself.

@runspired i actually totally agree iv been going back and forth with my self over this one but im leaning towards inclusion

@runspired @arschmitz Actually if I had the option I would have written it as a separate module and not as a PR to the hammer core. However after looking at the architecture currently there's no good way to add new recognizers dynamically to hammer.


Question about code in blog post

Hey! I was going through your blog post and actually implementing the code when I noticed the following snippet here.
#[derive(Debug, Clone, PartialEq)]
pub enum Stmt {
    Let {
        var_name: String,
        value:    Box<Expr>,      // <-------
    },
    Assignment {
        var_name: String,
        value:    Box<Expr>,      // <-------
    },
    IfStmt {
        condition: Box<Expr>,     // <-------
        body:      Vec<Stmt>,
        else_stmt: Option<Box<Stmt>>,
    },
    Block {
        stmts: Vec<Stmt>,
    },
}

I think these Boxes around Expr aren't needed, but I'm not sure. Is there a reason for it or is it another copy paste error? :)
In any case, the code still works with the Box, so I'm more curious if there is an intention behind using it. Thanks!

It is definitely not an "error". As you note, it works either way, and I just chose to follow the same pattern here as in Expr itself, where you do need the indirection.
There are only so many concepts a brain can handle from a single source of information, and since I wrote a 3000 line post I feel like I'm already stretching that budget fairly thin. So mostly I tried to not have to talk about the implementation of the syntax tree (as opposed to the concept of having one, which is discussed).
The AST is already not particularly efficient, and performance is in no way the point of the article, so I don't think it matters much.

I'll close this, as there is nothing to "fix" in the post. Feel free to still reply, I just don't want to have the issue hang around.

Thanks for the insights. I'm still relatively new to Rust and language development, so I appreciate you taking the time to explain everything. :+1:


Per-leaf test isolation

I've been thinking about possible improvements to kotlintest's runner structure for the next major version of the library.
Currently, kotlintest makes it easy to hierarchically structure test cases, but setting up test state requires listeners, which are more cumbersome. Since the entire spec is executed in a single pass, you can't set up test state inside a spec without it being shared between each test.
Listeners work, and are reusable. But in my experience, sharing setup and teardown code between test classes is uncommon outside of a few junit rules like creating temporary files. Tests with the same setup are usually all in the same class.
My favorite hierarchical test runner is Catch2 for C++. Tests in Catch2 are structured similarly to kotlintest, with top-level test cases that contain nested sections that form a tree of tests. The big difference from kotlintest is in how the control flow works. Quoting the Catch2 docs:

Sections can be nested to an arbitrary depth (limited only by your stack size). Each leaf section (i.e. a section that contains no nested sections) will be executed exactly once, on a separate path of execution from any other leaf section (so no leaf section can interfere with another). A failure in a parent section will prevent nested sections from running - but then that's the idea.

Example
Let's say we want to do an integration test of a database model where each test is run inside a transaction that is rolled back after the test ends:
class UserTableTest: KotlintestSpec({
    val db = Database.connectToDatabase()
    db.transaction { transaction ->
        section("an existing user") {
            val user = db.insertNewUser()
            section("a new user is added") {
                db.insertNewUser()
                db.fetchUsers().size shouldBe 2
            }
            section("the user is deleted") {
                db.delete(user)
                db.fetchUsers().size shouldBe 0
            }
        }

        section("two related users") {
            // etc ...
        }

        transaction.rollback()
    }
    db.close()
})

All of the setup and teardown is declared naturally with zero boilerplate. Since the entire spec is run once for each leaf section, we don't have to worry about test cases interfering with each other. This, in my opinion, a big improvement over JUnit rules, test listeners, etc.
Implementation
So how would we implement it? Catch2 takes advantage of macros and templates to set up its magic. We don't have those tools in Kotlin, so we would probably have to implement a runtime solution.
Here's an algorithm that we could use: https://gist.github.com/ajalt/df82eb9a32383c720f22081f449781f7
This algorithm allows sections to be nested arbitrarily. An advantage of this is that all the different test styles (like given/when/then, feature/scenario/on/it, String.() -> Unit etc.), could be implemented as aliases for section, obviating the need for the many current spec classes.
Fixtures
With this design, running code before and after each test is easy, as shown above. But we still need to consider how to run code before and after the entire spec. In the example above, if the database connection is expensive to set up, it would be nice to only connect once for the entire spec, and reuse the connection for each test. Here are two possible APIs for this:
Spec({
    val db = runOnce { Database.connectToDatabase() }
    section("...") {
        // ...
    }
    teardown {
        db.close()
    }
})

Spec({
    val db = runOnce(
        setup = { Database.connectToDatabase() }
        teardown = { db -> db.close() }
    )
    section("...") {
        // ...
    }
})

I feel that that second option is less error-prone. Both options could be implemented be caching the object and teardown block on the spec object.
Drawbacks
The runtime implementation does bring some challenges.
Excluding individual sections or tests is easy, but specifying a single test (or group of tagged tests) to run is more challenging. Since we don't know whether any given section contains the specified test until we run it, we wouldn't be able to support adding "f:" to the start of test names. Additionally, if you add a "!" to the name of a leaf section, we don't know not to run the outer sections that contain the excluded test. You would have to specify the entire path to the section that you want to exclude/focus on before the spec is run. This is easy to do for IDE plugins, but is probably cumbersome from the command line.
Let me know what you think. Is this viable? It seem like it's the direction that Kotlintest and Spek are going, but without the gotchas of Spek or the boilerplate of test listeners. It does make the common case of running a single test more difficult, however.

I think what you're asking for is similar (or the same) as what we already have with one instance per test.
So an example from the tests:
class OneInstancePerTestTest : FunSpec() {

  override fun isInstancePerTest(): Boolean = true

  init {
    var count = 0
    test("be 0") {
      count shouldBe 0
      count = 100
    }
    test("be 0 part 2") {
      count shouldBe 0
      count = 100
    }
    test("be 0 part 3") {
      count shouldBe 0
      count = 100
    }
    test("still be 0") {
      count shouldBe 0
    }
  }
}

The implementation is similar to your gist. See
https://github.com/kotlintest/kotlintest/blob/master/kotlintest-runner/kotlintest-runner-jvm/src/main/kotlin/io/kotlintest/runner/jvm/InstancePerTestSpecRunner.kt

Actually this test is much better example.
class FreeSpecInstancePerTestTest : FreeSpec() {

  override fun isInstancePerTest(): Boolean = true

  val count = AtomicInteger(0)

  init {
    "1" - {
      count.incrementAndGet().shouldBe(1)
      "1.1" {
        count.incrementAndGet().shouldBe(2)
      }
      "1.2" - {
        count.incrementAndGet().shouldBe(2)
        "1.2.1" {
          count.incrementAndGet().shouldBe(3)
        }
        "1.2.2" - {
          count.incrementAndGet().shouldBe(3)
          "<IP_ADDRESS>" {
            count.incrementAndGet().shouldBe(4)
          }
          "<IP_ADDRESS>" {
            count.incrementAndGet().shouldBe(4)
          }
        }
      }
    }
    "2" - {
      count.incrementAndGet().shouldBe(1)
      "2.1" - {
        count.incrementAndGet().shouldBe(2)
        "2.1.1" {
          count.incrementAndGet().shouldBe(3)
        }
        "2.1.2" {
          count.incrementAndGet().shouldBe(3)
        }
      }
    }
  }
}

Cool, isInstancePerTest is the right idea. There are two thing that make it currently unsuitable for my use case:

A new instance is created for each node in the tree, not just leaf nodes. This means that expensive setup and teardown will be run more than required.
More critial is the fact that new instances are created before previous instances have cleaned up, so global state can be dirty if cleanup is required.

Do you think that the current behavior could be changed, or is it necessary for other features?

The problem is, you don't know you have a leaf node until you execute it and no new tests are added. The way it works is that when a "test" is executed, any invocations to the test builder methods (like should or whatever is the keyword in the spec you are using) add a new "test" to the stack. So in order to know you have a leaf, you must execute the test, detect that no new child tests were pushed to the stack, but by this point you've executed it.

I'm not sure this is the case, as a full "test" is completed before the next one is started. Can you explain more ?

Actually I will back peddle on 1. I added TestType enum precisely to distinguish between leaves and branches. There are two instances of SpecRunner, and it would be possible to add a third to do what you want I think. Each time a container is found, just continue to execute it in the same context as the parent, but when a leaf is found, push it to the stack for future execution (like the InstancePerTestSpecRunner does).
We'd need to deprecate isInstancePerTest and replace it with executionType or something, which is an enum, so it supports all three modes. And if it's undefined, then default back to the deprecated isInstancePerTest.
If it works I'd be happy for this to be 3.2.0. I don't think it warrants a jump to 4.0.0 IMHO.
I'm still confused by point 2 though.

The TestType enum is probably the right way to solve the problem. The algorithm I proposed works without an enum, though, by using the fact that every intermediate node needs to be executed on the way to the leaves anyway, so the first time you enter a node, you can assume it's either a leaf, or it part of the execution path to a leaf.

Maybe I'm the one confused here, but with this test:

val count = AtomicInteger()
class FreeSpecTest : FreeSpec() {
  val i = count.incrementAndGet()
  override fun isInstancePerTest() = true
  init {
    "1" - {
      System.err.println("$i: start")
      "1.1" - {
        System.err.println("$i: 1.1")
        "1.1.1" {
          System.err.println("$i: 1.1.1")
        }
      }
      System.err.println("$i: end")
    }
  }
}

I would expect the following output (given that a new instance is created for each node):
1: start
1: 1.1
1: end
2: start
2: 1.1
2: 1.1.1
2: end

But instead the actual output is:
2: start
3: start
3: 1.1
4: start
4: 1.1
4: 1.1.1
4: end
3: end
2: end

So it looks like, when a new node is found, the current execution is suspended until all children have completed. That means that if I had some cleanup where I print "end", it wouldn't run until all tests had finished, rather than after each test. Am I misunderstanding how it works?

Ok so I've refreshed my memory on how I implemented this, and you're right, what I do is each time a discovered test is found, we execute it immediately. I do recall trying to make it work as you wanted but for some reason I abandoned that approach. However it's probably worth while me trying again as it would be better and the current approach is possibly a bit of a gotcha.
As for part 1, with intermediate tests not executed twice. I think it's worth having an extra mode. Instance per spec, instance per node, instance per leaf.

I don't want to change the functionality of existing listener methods as versions 3.0 and 3.1 both had a reasonable amount of breaking changes and I want 3.2 to be an upgrade that requires zero changes from the user if coming from 3.1.
Deprecation is fine though, so I think beforeSpec and afterSpec can both stay as "each time a spec is instantiated" but I would be open to renaming them to "beforeSpecCreated" and "afterSpecDestroyed" or something - deprecating the previous names, and adding a forward from them to the new methods. Then maybe it's a bit more clear on what they are doing.
I like your memoized idea. It's similar to the subject concept that some libraries use. We could add memoized even without any other changes elsewhere as that can just hook into the before and after spec methods we already have.

I've added an InstancePerLeafSpecRunner which executes each leaf node in turn, in it's own instance. As part of implementing this, and looking at your gist, I realised what you want is different to what I thought you wanted.
So in previous versions of KotlinTest we've had two modes:

Run each test as it registered, in order, all in a single instance of the spec class (1)
Run each test as it registered, in order, with the path to the newly registered test + the test running in a clean instance of the spec class. (2)

(I'm not sure if there's a term for this, but I will call a path from the root to an edge (leaf) a terminal path.)
And now I've implemented

Run each terminal path, in isolation, with each terminal path executing in a clean instance of the spec. (3)

I think what you wanted was

Run each terminal path, in isolation, in the same instance of the spec. (4)

Which of course I can implement as well - would be simpler than the one I've just done. I also think mode (2) is probably pretty useless. If you want a fresh instance of the test class (which is what junit does and hence why it's popular), then you probably want an entire path (either terminal or not) to complete before a new path is started. And mode 4 is nice too (your requirement).
So now, the newly minted isolation mode has three values:
enum class SpecIsolationMode {
  SharedInstance,
  InstancePerNode,
  InstancePerLeaf
}

But it needs to cover the new case. And perhaps all need to be renamed.

Awesome work! I agree with you that mode (2) probably doesn't have any use-cases, and could be deprecated/removed. You're correct that I had originally envisioned case (4), but looking at it now, I think that (3) and (4) would both work equally well, so I don't think there's any reason to implement both.


[rps] Replace TSLint with ESlint in RPS

Description
This PR replaces TSLint with ESlint in RPS.
TSLint is deprecated.
The rules can be changed.
What does everyone think?

I managed to get VSCode + ESLint + Prettier playing nicely together :)
This is my .vscode/settings.json files:
{
  "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"],
  "eslint.workingDirectories": [{"directory": "packages/rps", "changeProcessCWD": true}],
  "editor.formatOnSave": true
}

We will need to setup the eslint.workingDirectories option for each package.
I also downgraded Prettier in RPS to v1.18 so its consistent with other packages.
I also changed ESLintrc to not define Prettier rules but instead to inherit them from .pretterrc

Could you add your vscode/settings.json to the repo? I think we should definitely be sharing settings like these, if the development experience is broken without them.

Should we remove tslint and associated configuration as a part of this PR?

See #696

Thanks @geoknee!


UI file browser should show images properly

When I click on a PNG file in the file browser, it opens as a text document, rather than something more graphical.

Given the structure of the new tailer, this is likely not something we are going to support. The current tailer will not allow you to click on files it cannot view (based on extension). We can certainly take a crack at #1357 at some point so that downloading the files works more smoothly.


Fix dependabot jquery

Fixes https://github.com/OpenMaine/maineballot/security/dependabot/40
Also updates some peer dependencies (and the lockfile version)

Made a couple changes to make sure I can still build. Looks good!


Export formulae to homebrew/core.

Part 1, corresponding to https://github.com/Homebrew/homebrew-core/pull/11999

Thanks @fxcoudert!


Format code using 'cargo fmt'

Thanks for the PR! I should probably find out how to add rustfmt and clippy to Travis CI.


Missing #/definitions/HttpError in Swashbuckle implementation

Hi,
I am working on a code base that is generating a swagger document correctly.
All of the endpoints have HTTP responses which is referencing #/definitions/HttpError. However, HTTPError is missing from my swagger JSON documentation in the "definitions" section.
Expected: HTTPError should be present in the "definitions" element of the JSON doc.
Actual: HTTPError is missing in the "definitions" element of the JSON doc.
Example:
"/User": {
"get": {
"tags": [
"user"
],
"summary": "Get the user information",
"description": "User",
"operationId": "User_Get_GET",
"consumes": [],
"produces": [
"application/json",
"text/json",
"text/html",
"application/octet-stream",
"application/xml",
"text/xml"
],
"responses": {
"200": {
"description": "Successfully returns the system information",
"schema": {
"$ref": "#/definitions/SystemInfoDto"
}
},
"403": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/HttpError"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/HttpError"
}
},
"409": {
"description": "Another user has modified this record, please re-retrieve and try again",
"schema": {
"$ref": "#/definitions/HttpError"
}
}
}
}
}

me too

Please provide a minimal reproducible example as a GitHub repository that demonstrates the issue you're experiencing so we can look into this further.


Universal Door Remote

About the PR
Changes the captain's door remote to be able to work on any door on the station. Perfect for when the armory is bolted and the HoS has disappeared, or you just can't be bothered to call for an engi to fix a bolted door. Nevermind, adds a new door remote that has access to every door on the station. Admin only.
Changelog

:cl:
no cl since its an admin only item

Why?

I mean having a universal remote is fine for admemes, ghetto AI or others but giving it to the captain? Doesn't the captain already have 2 AA cards, sometimes 3 on specific maps (and asshole HoPs) they have to manage?

I mean having a universal remote is fine for admemes, ghetto AI or others but giving it to the captain? Doesn't the captain already have 2 AA cards, sometimes 3 on specific maps (and asshole HoPs) they have to manage?

QoL change, since it always ticked me off whenever playing captain that my door remote didn't work on every door despite my ID having access to every door

We dont need shitcaps bolting every single door on the station.

I'd say this is fine if it was given to CentCom, deathsquads, ghetto AI, etc.

Good for me

good itemfor admins

true

Untested webedit, closing.


Parse timeout after sharding mongodb

Environment:

MongoDB : 3x AWS EC2 (t2-large - Amazon Linux AMI 2016.03.0) eu-central
ParseServer:  AWS EC2 (t2-medium - CentOS 7) (with PM2) eu-central
Parse API

Problem
I have a Mongodb Cluster with 3 Shards, each shard has 3 mongod processes. I also use 3 mongos and 3 configs
Yesterday I turned on sharding for some collections
As a shard key I used a hashed objectId, before adding the shard key I added it to the index.
The Balancer is running, which quite normal, but my MongoDB is now so slow, I even stopped the balancer but it stills slow and my app get timeout or Database is not available error
It is something really slow about 20x slower,
a query that used to take 1sec it takes now about 20s sometime longer ...
But  ............
When I use my own ParseServer hosted on AWS it is really fast less than 600ms. Parse.com returns sometime "Your Mongo Database is not available" I think due to a timeout.
mongos> sh.status()
--- Sharding Status ---
  sharding version: {
        "_id" : 1,
        "minCompatibleVersion" : 5,
        "currentVersion" : 6,
        "clusterId" : ObjectId("571529b0ff2021142cfe35ac")
}
  shards:
        {  "_id" : "dbShard_0",  "host" : "dbShard_0/dbnode-0.x.7041.mongodbdns.com:27000,dbnode-1.x.7041.mongodbdns.com:27000,dbnode-2.x.7041.mongodbdns.com:27000" }
        {  "_id" : "dbShard_1",  "host" : "dbShard_1/dbnode-0.x.7041.mongodbdns.com:27001,dbnode-1.x.7041.mongodbdns.com:27003,dbnode-2.x.7041.mongodbdns.com:27001" }
        {  "_id" : "dbShard_2",  "host" : "dbShard_2/dbnode-0.x.7041.mongodbdns.com:27002,dbnode-1.x.7041.mongodbdns.com:27001" }
  balancer:
        Currently enabled:  yes
        Currently running:  yes
                Balancer lock taken at Tue May 03 2016 11:37:12 GMT+0000 (UTC) by dbnode-2:27017:1461004720:1804289383:Balancer:1681692777
        Collections with active migrations:
                x.Activities started at Tue May 03 2016 11:38:15 GMT+0000 (UTC)
        Failed balancer rounds in last 5 attempts:  0
        Migration Results for the last 24 hours:
                51 : Success
  databases:
        {  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
        {  "_id" : "x-staging",  "partitioned" : false,  "primary" : "dbShard_2" }
        {  "_id" : "x",  "partitioned" : true,  "primary" : "dbShard_2" }
                x.Activities
                        shard key: { "_id" : "hashed" }
                        chunks:
                                dbShard_0       4
                                dbShard_1       4
                                dbShard_2       12
                        too many chunks to print, use verbose if you want to force print
                x.ActiveItems
                        shard key: { "_id" : "hashed" }
                        chunks:
                                dbShard_0       4
                                dbShard_1       3
                                dbShard_2       13
                        too many chunks to print, use verbose if you want to force print
                x.MyProfile
                        shard key: { "_id" : "hashed" }
                        chunks:
                                dbShard_0       3
                                dbShard_1       3
                                dbShard_2       7
                        { "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("-7722015169224027045") } on : dbShard_0 Timestamp(2, 0)
                        ...
                x.Layer1
                        shard key: { "_id" : "hashed" }
                        chunks:
                                dbShard_0       2
                                dbShard_1       1
                                dbShard_2       2
                        { "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("-5438161287775123827") } on : dbShard_0 Timestamp(2, 0)
                       ...
                x.Layer2
                        shard key: { "_id" : "hashed" }
                        chunks:
                                dbShard_0       3
                                dbShard_1       2
                                dbShard_2       3
                        { "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("-5089453483550015893") } on : dbShard_0 Timestamp(2, 0)
                         ...

        {  "_id" : "test",  "partitioned" : false,  "primary" : "dbShard_0" }

My AWS instances (the Cluster and my own MongoDB) are located in eu-central

Parse.com is hosted in AWS-US-EAST. Connecting to a server in europe will take a long time. I suggest moving your data to US east if you are still sending traffic to api.parse.com


"let else" causing internal error ("left behind trailing whitespace")

$ cargo fmt --version
rustfmt 1.5.1-stable (d5a82bb 2023-02-07)

Minimal (perhaps not exactly) reproducible example:
fn main() {
    pub fn example(arg: Option<f32>) -> f32 {
        let Some(a) = arg else {
    let b = 0.0;
            return b;
        };
        a
    }
}

Leave formatting errors (e.g. spurious whitespace) anywhere except the let-else expression (which isn't formatted, I understand to be intended behaviour), and rustfmt crashes rather than formatting it away. It outputs this with exit code 1:
$ cargo fmt
error[internal]: left behind trailing whitespace
 --> /home/jmaargh/code/eg/src/main.rs:3:3:33
  |
3 |         let Some(a) = arg else {
  |                                 ^
  |

warning: rustfmt has failed to format. See previous 1 errors.

This appears to only happen when there is trailing whitespace left within the else block. That is, the trailing whitespace within the else block causes all formatting elsewhere in the file to break. If you manually "properly" format this else block by removing trailing whitespace, the error appears to go away.

Thanks for reaching out. This is a duplicate of #5688. let-else formatting is currently being worked on in #5690, but until these changes are merged and released rustfmt will continue to leave let-else statements unformatted. As a result it's up to the developer to remove trailing whitespace.

As I said, I do not expect the whitespace within the let-else to be removed. This is a bug where valid input causes the application to crash.

@jmaargh I don't think that's correct. Are you invoking rustfmt directly on your code? If not it's likely that whatever program is calling rustfmt is preventing the formatting due to the 1 exit code.
The error does not prevent rustfmt from formatting the file. Take the following modified example:
fn main() {
    pub fn example(arg: Option<f32>) -> f32 {
        let Some(a) = arg else {
    let b = 0.0;
            return b;
        };
        a
    }
}

struct MyPoorlyFormattedStruct {

a:     usize,
b:            String,
}

After running rustfmt directly on the input you get (note the let-else code is left unchanged while the other code is formatted):
fn main() {
    pub fn example(arg: Option<f32>) -> f32 {
        let Some(a) = arg else {
    let b = 0.0;
            return b;
        };
        a
    }
}

struct MyPoorlyFormattedStruct {
    a: usize,
    b: String,
}

And you also get the error:
error[internal]: left behind trailing whitespace
 --> <stdin>:3:3:33
  |
3 |         let Some(a) = arg else {
  |                                 ^
  |

warning: rustfmt has failed to format. See previous 1 errors.

The 1 exit code was recently discussed in #5711, and in the future we'll add an option to allow users to ignore trailing whitespace issue.
I also want to emphasize again that the underlying issue here is the lack of let-else support. I ran your input snippet against my feature branch for PR #5690 and got the following output with no errors.
fn main() {
    pub fn example(arg: Option<f32>) -> f32 {
        let Some(a) = arg else {
            let b = 0.0;
            return b;
        };
        a
    }
}

However calling cargo fmt might be where the issue is coming from in your case. It's likely that what your experiencing is related to / a duplicate of #3008

I see, thanks for explaining.
Personally, I'd still consider this to be two bugs (ignoring the fact that let-else is not yet supported, which is expected right now):

Something odd is happening with trailing whitespace that's causing rustfmt to exit with 1, this doesn't appear to be quite the same as #5711 as it doesn't seem to have anything to do with over-long lines.
rustfmts response to some valid input (above example) causes all formatting to cease, at least when run through another tool. My guess is that this is because cargo fmt sees a non-zero exit code and (understandably) errors out. This seems related to the couple of examples raised in #3008.

I'd be happy to help diagnose further/fix either of these issues. Personally, I'd consider exiting with non-zero code on valid input (that is, well-formed Rust) to be a bug, but I don't want to get my hands dirty with a new repo until I'm on the same page as the maintainers on the issue.

Something odd is happening with trailing whitespace that's causing rustfmt to exit with 1

There's nothing odd happening here, and exiting with 1 is intentional. rustfmt considers trailing whitespace to be a formatting error. From rustfmt's perspective the presence of trailing whitespace after formatting is an indication that something went wrong. Regardless of the reason (max width issue, unsupported language construct, some other underlying bug) rustfmt wasn't able to remove the trailing whitespace in the input. In the best case It's some weird edge case where there was whitespace in the input that the user can manually remove, and in the worst case (like the recently filed #5703) rustfmt was responsible for adding that trailing whitespace. Can you see why the latter would be considered an issue?

Personally, I'd consider exiting with non-zero code on valid input (that is, well-formed Rust) to be a bug

rustfmt's main concern is the output it produces, not the input it receives. In general the input doesn't even need to compile. The only criteria is that the input can be parsed as valid rust code. so I think shifting your perspective from "well-formed input" to "well-formed and well-formatted" output might help.

I'd be happy to help diagnose further/fix either of these issues.

I appreciate your willingness to help here! First and foremost we'd need a minimal example that reproduces the issue. As I demonstrated in https://github.com/rust-lang/rustfmt/issues/5714#issuecomment-1467215107 code within the same file is still formatted, so maybe we need more than one file to reproduce the issue that you're describing.
If you're able to nail it down I'd suggest opening a new issue.

Want to add a bit of (hopefully helpful) context.
rustfmt is a pretty printer that works with the AST and doesn't directly process files/tokens. A key tenant of that model of formatter is ensuring that it can deal with any issue/failure/etc. that occurs when trying to format an AST node so that the formatter doesn't completely obliterate code the user wrote just because it can't format it.
The inability/failure to format can happen for a number of a reasons, and unsurprisingly as is often the case with software, rustfmt doesn't necessarily at compile time explicitly know the root cause of a runtime issue.
The error behavior reported and discussed here is part of a generalized recovery and alerting process to handle such formatting issues. That process exists both to ensure that the code is not lost and also to inform the user so that they know part of their code actually wasn't formatted (and thus likely needs human inspection), and so that they can hopefully share with the rustfmt team so that the underlying issue can be identified and addressed.
It's somewhat analogous in form and function to rustc ICEs, and is definitely not a bug/unintentional; the occurrence that triggers an ICE in rustc, or the trailing whitespace internal error in rustfmt, is a bug, but the reporting mechanism is not.
There could potentially be room for enhancements to allow users to opt into making this a warning vs. a hard error, but I think such a discussion around the "if" and "how" would be best carried out in a new, dedicated issue (same holds for any consideration around cargo fmt behavior when it encounters an error exit from its rustfmt ... invocations)


REST Sample

You mentioned you used REST to access the models running in docker.  Could you please provide the sample REST calls?

Since I no longer maintain this repository, I won't run through the setup steps again. I could however refer you these links those are quite extensive and well written out. Adapting to my codebase should be fairly simple:

RESTful API  |  TFX  |  TensorFlow
Train and serve a TensorFlow model with TensorFlow Serving  |  TFX


Separate the associations from the fields in the QueryBuilder

In preparation for the JSON-API renderer, this PR takes the time to clean up some of the mess when dealing with a list of either a field or an association. Now it's explicit which one you want; no more constant instanceof AbstractField everywhere.
Also fixes the policy inconsistency. Closes #9

Codecov Report

Merging #21 into master will decrease coverage by 0.12%.
The diff coverage is 92.01%.

@@             Coverage Diff              @@
##             master      #21      +/-   ##
============================================
- Coverage     82.03%   81.91%   -0.13%
- Complexity      824      851      +27
============================================
  Files           102      105       +3
  Lines          1887     1968      +81
============================================
+ Hits           1548     1612      +64
- Misses          339      356      +17

Impacted Files
Coverage Δ
Complexity Δ

src/Apitizer/Exceptions/DefinitionException.php
78.94% <0%> (-9.29%)
17 <2> (+2)

src/Apitizer/Exceptions/InvalidOutputException.php
86.79% <0%> (-13.21%)
14 <2> (+2)

src/Apitizer/Rendering/BasicRenderer.php
100% <100%> (ø)
11 <11> (ø)
:arrow_down:

src/Apitizer/Types/Concerns/HasPolicy.php
100% <100%> (ø)
5 <3> (ø)
:arrow_down:

src/Apitizer/Support/FetchSpecFactory.php
100% <100%> (ø)
24 <24> (?)

src/Apitizer/Interpreter/QueryInterpreter.php
100% <100%> (ø)
13 <6> (ø)
:arrow_down:

src/Apitizer/Types/Association.php
100% <100%> (ø)
12 <6> (-2)
:arrow_down:

src/Apitizer/Types/Apidoc.php
84.21% <100%> (-1.28%)
25 <0> (-3)

src/Apitizer/Parser/ParsedInput.php
100% <100%> (ø)
2 <2> (?)

src/Apitizer/Support/SchemaValidator.php
100% <100%> (ø)
20 <3> (+3)
:arrow_up:

... and 12 more

Continue to review full report at Codecov.

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


get_width() in non-UTF-8 locales

In non-UTF-8 locales R will translate characters it can't display to "<U+xxxx>" sequences. Should utf8_width() respect this, or maybe we can provide another entry point? This is important for pillar.
rlang::mut_latin1_locale()
#> Locale codeset is now latin1
"\u6211\u662f\u8c01"
#> [1] "<U+6211><U+662F><U+8C01>"
utf8::get_width("\u6211\u662f\u8c01")
#> Error: 'get_width' is not an exported object from 'namespace:utf8'

Calling utf8_width(x, encode = TRUE) (the default) gives the width of utf8_encode(x), not of x:
Sys.setlocale("LC_CTYPE", "C")
cat(utf8_encode("\u6211\u662f\u8c01"), "\n12345678901234567890\n")
#> \u6211\u662f\u8c01
#><PHONE_NUMBER>1234567890
utf8_width("\u6211\u662f\u8c01")
#> [1] 18

I would recommend printing utf8_encode(x) to print with "\u" escapes instead of <U+XXXX>; this makes it easier for the user to copy/paste.
You might think that setting encode = FALSE would give you the behavior you want, but right now that function gives NA for strings that are not printable in the current locale:
utf8_width("\u6211\u662f\u8c01", encode = FALSE)
#> [1] NA

Also, right now the utf8 package only knows about two locales: C (ASCII-only) and UTF-8. If you're willing to add support for other locales, then I'll accept a PR, but I don't think it's worth the effort. R supports printing UTF-8 on every platform, including both RGui and RStudio on Windows (Well, mostly: on Windows R can't print codepoints above U+FFFF; the utf8 package escapes these codepoints on Windows). See, e.g., the following screenshot from Windows RGui:

I actually pasted the reprex without looking at it, sorry. Here's the corrected version:
rlang::mut_latin1_locale()
#> Locale codeset is now latin1
"\u6211\u662f\u8c01"
#> [1] "<U+6211><U+662F><U+8C01>"
utf8::utf8_width("\u6211\u662f\u8c01")
#> [1] 6
utf8::utf8_width("\u6211\u662f\u8c01", encode = FALSE)
#> [1] 6

The encode argument doesn't seem to make a difference in the latin1 locale.
I'm fine with "\uxxxx" in values, but for column names it has to be <U+xxxx> for consistency with the way foreign column names are processed. I guess I'll just convert these to native and back for printing.
Thanks for mentioning that only C and UTF-8 are supported, this might explain a few peculiarities I see in the automated tests, but not for the printed output. The latter is much more important at this point, but I'd argue that latin1 and some Asian locales are very prevalent on Windows.

The reason utf8 treats all non-C locales as UTF-8 is that on Windows it is impossible to set the character locale to UTF-8. RGui and RStudio both support UTF-8 output on Windows, no matter what the declared locale is (see the screenshot above).
I made the choice that it's better to ignore the declared locale and just treat all locales other than C as UTF-8. Most non-Windows users will be on UTF-8 locales, and most Windows users would rather not have output restricted to their declared locale.

I just put v1.1.0 on CRAN a few minutes ago. See the docs for the new output_utf8 function for the character locale logic.


Docs deployment error

The github action which deploys a release appears to have a auth problem when deploying the documentation. See the output for the 3.3 release.

I've never used an action for this. I use this: https://github.com/facelessuser/pymdown-extensions/blob/master/.github/workflows/deploy.yml#L30. Seems to work still as I released 10 days ago.

I didn't use that because we are using an org setup, where the built site is deployed to the master branch of a different repo rather than the gh-pages branch of the same repo. I'm assuming the auth issue is related to crossing the two repos. I thought I had done everything correctly, but apparently not.

When I did this I followed these instructions and set up the deploy key as instructed here with the private key saved to this repo (as a secret named PAGES_DEPLOY_KEY) and the public key saved to the Python-Markdown/Python-Markdown.github.io repo (as a deploy_key). I'm assuming I messed something up with that.

Maybe I need to save the secret to the organization rather than the repo?

See Manually running a workflow, which could be handy for testing purposes.

When a workflow is configured to run on the workflow_dispatch event, you can run the workflow using the REST API or from the Actions tab on GitHub.

See also workflow_dispatch.

Ah, I forgot that you are running in an org.

This may be resolved with github-action-push-to-another-repository. There is very comprehensive documentation (including all sorts of troubleshooting tips). Also copy_file_to_another_repo_action is a simpler action. Both are implemented as shell scripts, which could be helpful in developing our own solution around  mkdocs gh-deploy. Or we could use one of them directly.

Hmm, I just discovered that Python-Markdown/Python-Markdown.github.io did not have any deploy keys. Anyway, I just generated a new public/private pair and saved them to the correct locations. We'll see if that resolves it with the next release.

Still failing. As seen here I'm getting:
 Error loading key "/home/runner/.ssh/github": error in libcrypto
 Error: Action failed with "The process '/usr/bin/ssh-add' failed with exit code 1"


Added back in 1.1 plugins

Signed-off-by: keithhc2<EMAIL_ADDRESS>#339 and #341
Check List

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@keithhc2 it is not fixed as 1.2.0 is consist of both 1.1.0 and 1.2.0 plugins.


Swap the positions of artist name and song name [Feature Request]

Is it possible to have a toggle to swap the positions of the artist name and song name?

yes, it possible, we can create a new template to handle it.

I'm a new user here, and I would like to ask the same request, too. The priority of the artist's name and song name makes the first look confusing.
And I found a new issue: the composition will mess up when the name is too long, causing the music playing effect won't show up like this:

Thanks to all of you for such a great job!


CLDC-768: Add 2FA for Admin Users

When signing into the ActiveAdmin panel AdminUsers now receive an SMS OTP code via Gov Notify that they need to enter before they're authenticated.

[x] Require phone numbers for all AdminUsers
[x] Fix OTP code view
[x] Use real Gov Notify API key and Template ID
[x] Add resend code page
[x] Dasherize URLs

Current flow:

OTP code sent by Notify:

OTP code prompt:

Resend OTP code:

Successful sign in:

Can we CORE customise CORE the CORE text CORE message at all?

Haven’t tested yet, but looks great from a code point of view.

@paulrobertlloyd if you don't like my content you only have to say so... :stuck_out_tongue: . Have updated the template and screenshot.

@baarkerlounger Thanks - looks great. Just a couple of small things:

‘Resend security code’ page

I’d shorten to: ‘If you don’t receive the text message with your security code after a few minutes, you can request a new one.’

‘Success’ banner on final screen

I’d change ‘authentication code’ to ‘security code’ to keep it consistent.

@Dan13L3 have updated the resent flash content (and screenshot), have left the resend page text the same as the design guidance as discussed.

perfect - thanks @baarkerlounger


Header file changes

includes full path for headers
removes individual directories under cmake
@fiona-gladwin @swetha097 Please remove this commit. This might throw warnings of "not a directory" for each header file. That's what we observed.

This PR is the way @kiritigowda suggested it's done.
Results on Navi21/Ub22 system:
svcbuild@Legolas:~/work/lk/rocAL/build$ cmake ..
 It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[100%] Built target PyPackageInstall
svcbuild@Legolas:~/work/lk/rocAL/build$ sudo make install
[  1%] Built target rocAL_hip
[ 97%] Built target rocal
[100%] Built target rocal_pybind
Install the project...
-- Install configuration: "Release"
-- Up-to-date: /opt/rocm/share/doc/rocal/README.md
-- Up-to-date: /opt/rocm/share/doc/rocal/LICENSE.txt
-- Installing: /opt/rocm/lib/librocal.so
-- Set runtime path of "/opt/rocm/lib/librocal.so" to ""
-- Installing: /opt/rocm/include/rocal/rocal_api.h
-- Installing: /opt/rocm/include/rocal/rocal_api_info.h
-- Installing: /opt/rocm/include/rocal/rocal_api_augmentation.h
-- Installing: /opt/rocm/include/rocal/rocal_api_data_loaders.h
-- Up-to-date: /opt/rocm/include/rocal/rocal_api_types.h
-- Installing: /opt/rocm/include/rocal/rocal_api_data_transfer.h
-- Installing: /opt/rocm/include/rocal/rocal_api_parameters.h
-- Installing: /opt/rocm/include/rocal/rocal_api_meta_data.h
-- Installing: /opt/rocm/include/rocal/rocal_api_tensor.h
-- Installing: /usr/lib/python3.10/rocal_pybind.cpython-310-x86_64-linux-gnu.so
svcbuild@Legolas:~/work/lk/rocAL/build$ make test
Running tests...
Test project /home/svcbuild/work/lk/rocAL/build
      Start  1: basic_test_cpu
 1/14 Test  #1: basic_test_cpu .....................   Passed   17.90 sec
      Start  2: basic_test_gpu
 2/14 Test  #2: basic_test_gpu .....................   Passed   14.65 sec
      Start  3: basic_test_gray
 3/14 Test  #3: basic_test_gray ....................   Passed    5.25 sec
      Start  4: basic_test_rgb
 4/14 Test  #4: basic_test_rgb .....................   Passed   14.40 sec
      Start  5: rocAL_dataloader_mt_cpu
 5/14 Test  #5: rocAL_dataloader_mt_cpu ............   Passed    4.77 sec
      Start  6: rocAL_dataloader_mt_gpu
 6/14 Test  #6: rocAL_dataloader_mt_gpu ............   Passed    1.42 sec
      Start  7: rocAL_performance_tests_cpu
 7/14 Test  #7: rocAL_performance_tests_cpu ........   Passed    3.94 sec
      Start  8: rocAL_performance_tests_gpu
 8/14 Test  #8: rocAL_performance_tests_gpu ........   Passed    0.67 sec
      Start  9: performance_tests_with_depth_cpu
 9/14 Test  #9: performance_tests_with_depth_cpu ...   Passed    4.22 sec
      Start 10: performance_tests_with_depth_gpu
10/14 Test #10: performance_tests_with_depth_gpu ...   Passed    1.58 sec
      Start 11: unit_tests_cpu
11/14 Test #11: unit_tests_cpu .....................   Passed   16.95 sec
      Start 12: unit_tests_gpu
12/14 Test #12: unit_tests_gpu .....................   Passed   13.75 sec
      Start 13: unit_tests_gray
13/14 Test #13: unit_tests_gray ....................   Passed    5.46 sec
      Start 14: video_tests
14/14 Test #14: video_tests ........................   Passed   93.22 sec

100% tests passed, 0 tests failed out of 14

Total Test time (real) = 198.20 sec
svcbuild@Legolas:~/work/lk/rocAL/build$

@kiritigowda resolved review comments and synced with ToT. Re-running CI

@kiritigowda CI complete and passes


az afd security-policy update failing with unexpected internal error

Describe the bug
os:rocky linux 9.3 ARM
{
"azure-cli": "2.61.0",
"azure-cli-core": "2.61.0",
"azure-cli-telemetry": "1.1.0",
"extensions": {}
}
Related command
az afd security-policy update  --resource-group front-door --security-policy-name ttkx --profile-name ttkx-fd --domains '/subscriptions/ad123456789/resourcegroups/front-door/providers/Microsoft.Cdn/profiles/ttkx-fd/customdomains/ttkxsscom'
Errors
ERROR: The command failed with an unexpected error. Here is the traceback:
ERROR: Expect <class 'str'>, got {'id': '/subscriptions/ad123456789/resourceGroups/front-door/providers/Microsoft.Network/frontdoorWebApplicationFirewallPolicies/ttkxwaf'} (<class 'dict'>)
Traceback (most recent call last):
File "/usr/lib64/az/lib/python3.9/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/commands/init.py", line 664, in execute
raise ex
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/commands/init.py", line 731, in _run_jobs_serially
results.append(self._run_job(expanded_arg, cmd_copy))
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/commands/init.py", line 712, in _run_job
result = LongRunningOperation(cmd_copy.cli_ctx, 'Starting {}'.format(cmd_copy.name))(result)
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/commands/init.py", line 1039, in call
result = poller.result()
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_poller.py", line 108, in result
self.wait(timeout)
File "/usr/lib64/az/lib/python3.9/site-packages/azure/core/tracing/decorator.py", line 76, in wrapper_use_tracer
return func(*args, **kwargs)
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_poller.py", line 130, in wait
raise self._exception
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_poller.py", line 83, in _start
for polling_method in self._polling_generator:
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/command_modules/cdn/aaz/latest/afd/security_policy/_update.py", line 122, in _execute_operations
self.pre_operations()
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/command_modules/cdn/custom/custom_afdx.py", line 1321, in pre_operations
args.web_application_firewall = {
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_field_value.py", line 90, in setattr
self[key] = data
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_field_value.py", line 76, in setitem
self._data[name] = attr_schema.process_data(data, key=name)
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_field_type.py", line 234, in process_data
value[key] = sub_data
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_field_value.py", line 76, in setitem
self._data[name] = attr_schema.process_data(data, key=name)
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_field_type.py", line 48, in process_data
raise AAZInvalidValueError('Expect {}, got {} ({})'.format(self.DataType, data, type(data)))
azure.cli.core.aaz.exceptions.AAZInvalidValueError: Expect <class 'str'>, got {'id': '/subscriptions/ad123456789/resourceGroups/front-door/providers/Microsoft.Network/frontdoorWebApplicationFirewallPolicies/ttkxwaf'} (<class 'dict'>)
To check existing issues, please visit: https://github.com/Azure/azure-cli/issues
Issue script & Debug output
.
Expected behavior
The command should succeed.
Environment Summary
{
"azure-cli": "2.61.0",
"azure-cli-core": "2.61.0",
"azure-cli-telemetry": "1.1.0",
"extensions": {}
}
Additional context
No response

Thank you for opening this issue, we will look into it.

I am also encountering this issue. Is anyone aware of a workaround?


Skip aligned allocation on SV39 MMUs

An attempt at fixing https://github.com/microsoft/mimalloc/issues/939
The SV39 detection works well enough with my sample size of 1. But I also had to add some extra #ifs to mi_os_prim_alloc_aligned() to avoid the pointless alloc/free. I don't have any 32-bit hardware any more, but this should speed things up there, too.

@microsoft-github-policy-service agree

I've tested this on my Milk-V Jupiter system (SpacemiT M1 SoC), and I'm no longer seeing the warnings, as expected.
I'm wondering, tho, if this should be a runtime check rather than a build-time check. Are there other RISC-V MMUs where the >2TiB allocation would work? If so, this could cause an issue for distro packages which may be built on a machine with a different MMU but get run on a machine with sv39.

Hey, thanks for taking a look.
I know basically nothing about cross-compiling with CMake, but with autotools, you're supposed to override the (computed) settings for the build system with the values for the host system. In this case that's still possible because the setting is passed to the compiler (or preprocessor) via  -DFOO. For example, if your build machine has an SV39 MMU and the host machine does not, you could append -UMI_SV39_MMU to your CFLAGS. Conversely, if the build machine does not have an SV39 MMU but the host does, -DMI_SV39_MMU=1. There could be a simpler way to handle this in CMake, though.
The binary distro thing is more of an issue. As a highly enlightened user of a source-based distro, this had not occurred to me :P
There are indeed other RISC-V MMU types where the hinting should be enabled, and distros will not be making special binaries targeted at each MMU. Runtime detection would be better in this scenario, but it also makes the value of this proposition a lot fuzzier. We're only avoiding an alloc/free with this detection -- it's not a huge savings. If we stop to parse /proc/cpuinfo at runtime, have we killed the intended benefit when there are only a small number of mallocs being made? There is a __riscv constant we could check to avoid stating /proc/cpuinfo on other architectures at least.

For now I have integrated the cmake check directly (since the other os.c modifications were not quite right -- hope this is ok :-)). I added the MI_NO_ALIGNED_HINT macro to disable aligned hinting in general. I would prefer a runtime check to enable better binary distributions but only if it does not add too much complexity... not sure if parsing /proc/cpuinfo is a bit too much at runtime...   it would be nice to have a virtual_address_bits field in the mi_os_mem_config.t though.

For now I have integrated the cmake check directly (since the other os.c modifications were not quite right -- hope this is ok :-)).

Yep, fine by me. How wrong are the changes to os.c? (Is it something I should try to fix?)

I'll close this for now, the big problem is solved, thanks for your help.
I see that you added virtual_address_bits to the OS config; if you ever want to try skipping the first aligned-hint alloc on systems where there are too few bits for it to succeed, feel free to ping me.


Internal/navigation improvement

Not 100% happy with the result to be honest but I feel like I could spend a lifetime working on this, it handles all the cases I encountered, but for sure there will be some that will not, I will switch to a different thing and come back later to improve, as I feel like there's more important things than getting the perfect keyboard navigation. It's good enough imho

superceded by #268


Simplify Mobile Web View Login - Use GitHub Mobile to Login and verify instead of using the browser

When a user already has the GitHub Mobile app, let VSCode Web allow for the option to use GitHub Mobile to Login and Verify  - "instead of using the browser and then still requiring the GitHub Mobile app to verify Login with 2FA".
This will greatly improve the user experience and the server load, making it make RPC calls once instead of twice.

Honestly, I don't think this is feasibly possible with what GitHub gives us for APIs.

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our documentation.
Happy Coding!