"Line ending logic out of sync" assert when calling JsGetAndClearExceptionWithMetadata

Executing a failing script and getting error details with JsGetAndClearExceptionWithMetadata seems to trigger an assert condition in some cases, apparently when some Unicode characters are used.
Sample script:
function main() {
  var x = '€' + test();
}
main();

Test program (slightly modified version of the C++ HelloWorld sample):
#define _JSRT_
#include "ChakraCore.h"
#include <string>
#include <iostream>

using namespace std;

int main()
{
	JsRuntimeHandle runtime;
	JsContextRef context;
	JsValueRef result;
	unsigned currentSourceContext = 0;

	wstring script = L"function main() {\n  var x = '€' + test();\n}\nmain();";

	// Create a runtime.
	JsCreateRuntime(JsRuntimeAttributeNone, nullptr, &runtime);

	// Create an execution context.
	JsCreateContext(runtime, &context);

	// Now set the execution context as being the current one on this thread.
	JsSetCurrentContext(context);

	// Run the script.
	JsErrorCode runResult = JsRunScript(script.c_str(), currentSourceContext++, L"", &result);

	if (runResult != JsNoError)
	{
		JsValueRef exception;

		if (JsGetAndClearExceptionWithMetadata(&exception) != JsNoError)
		{
			std::cout << "failed to get exception";
		}
		else
		{
			std::cout << "got exception";
		}
	}
	else
	{
		std::cout << "no error!";
	}

	// Convert your script result to String in JavaScript; redundant if your script returns a String
	JsValueRef resultJSString;
	JsConvertValueToString(result, &resultJSString);

	// Project script result in JS back to C++.
	const wchar_t *resultWC;
	size_t stringLength;
	JsStringToPointer(resultJSString, &resultWC, &stringLength);

	wstring resultW(resultWC);
	cout << string(resultW.begin(), resultW.end()) << endl;
	system("pause");

	// Dispose runtime
	JsSetCurrentContext(JS_INVALID_REFERENCE);
	JsDisposeRuntime(runtime);

	return 0;
}

When running this code in debug mode it fails at this assert: https://github.com/Microsoft/ChakraCore/blob/6d96d5b98638fe4535bb4db906378938338050bb/lib/Runtime/Library/JavascriptExceptionMetadata.cpp#L146
After replacing the '€' with something else (for example, 'a'), it works as expected (prints "got exception").

Has this fix been released? The issue seems to still happen in 1.11.7

The fix didn't go into 1.11 branch. It will go into 1.12 when that is released.


check css files recursively under BUILD/css directory

Why do we have a new configuration option? Can't we check for all *.css files anywhere in the BULID_DIR?

You right, it's more logical, updated PR.

Looks great, merging


Test UnionType

Motivation
Part of #3275, UnionType breaks when transactions are non-empty
Description
PR to show errors with UnionType

created #3285 to correct the merge Transaction type


Small comment to document our binary search routine

... should be a no-brainer to merge.

Current coverage is 48.43% (diff: 100%)

Merging #616 into master will increase coverage by 0.27%

@@             master       #616   diff @@
==========================================
  Files           170        170
  Lines         11097      11097
  Methods        9564       9559     -5
  Messages          0          0
  Branches       1533       1538     +5
==========================================
+ Hits           5344       5375    +31
+ Misses         5753       5722    -31
  Partials          0          0

Powered by Codecov. Last update 6b24361...47728ba


experimental support for repos that upload "raw" golang binaries

This for example:
https://github.com/mvdan/sh/releases
just uploads naked golang binaries as releases... not in tar, not in zip.
I've seen this a few times.  Anyways experiment.
(BTW, also we also support https://Equinox.io but it's gross as they don't really make it easy to figure out what the last release is).
n

^^ would be an interesting feature for goreleaser.  I prefer tar/zip but I guess some do not.


Don't export "Slices"

Julia complains all the time now about Catlab and Base both exporting the word Slices. Can we just change the name? This would be a breaking change, not sure whether there's a better approach but I think leaving it as is isn't a serious option in that the attempted export wouldn't actually work if you tried to use Slices unqualified.

Yes, we should change the name. I would suggest renaming the module to SliceCategories.
I'm not sure why this PR deletes the modules.

I think I just didn't add the renamed files on the first commit?

Thanks! Can you please rebase and force-push so we get a clean commit?

Yep, done.


[BUG] Set-PnPTenantSite randomly fails with "Cannot get site $URL"

I have a script that creates a new sharepoint site.  One of the steps involves modifying some of the settings for the site, which I do via the following command:
Set-PnPTenantSite -Connection $Connection -Identity "$SiteFullURL" -DenyAddAndCustomizePages:$false -DisableAppViews:Disabled -DisableFlows:Disabled -Wait -ErrorVariable result -ErrorAction Continue
It will, completely randomly, fail with:
Set-PnPTenantSite: /$PATH/MasterSiteCreateScript.ps1:104:9
Line |
104 |          Set-PnPTenantSite -Connection $Connection -Identity "$SiteFul …
|          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Cannot get site https://$MY-URL.
To get around it, I have had to put it into a loop where I retry the command several times.
Expected behavior
I expect it to execute successfully.  The site most definitely exists.
Actual behavior
It randomly fails for unknown reasons.
Steps to reproduce behavior
Pseudocode is:

Connect to admin site
Check if the target site already exists.  If so, delete it
Wait 5 seconds
Create site with New-PnPTenantSite -Url $SiteFullURL -Owner $SiteOwner -Title $SiteTitle -Template $SiteTemplate -TimeZone $TimeZone -RemoveDeletedSite -Wait
Wait 5 seconds
Reconnect directly to new site $Connection = Connect-PnPOnline -Url $SiteFullURL -ReturnConnection -Credentials $Credential
Update permissions for a couple of the groups, disable AppViews and Flows via PnP Context
Enable scripting and repeat disabling App Views and Flows because there multiple ways of doing this and I'm not sure which is the "correct" since everything changes so much.  Set-PnPTenantSite -Connection $Connection -Identity "$SiteFullURL" -DenyAddAndCustomizePages:$false -DisableAppViews:Disabled -DisableFlows:Disabled -Wait -ErrorVariable result -ErrorAction Continue

Step 8 fails randomly with the above error, despite the fact that I had very obviously created the site and had performed multiple operations against it already.  A subsquent attempt likely succeeds, so I've had to put that command into a while loop to retry.
What is the version of the Cmdlet module you are running?
Confirmed with 1.10.0 and 1.11.0
Which operating system/environment are you running PnP PowerShell on?

[ ] Windows
[ ] Linux
[X] MacOS
[ ] Azure Cloud Shell
[ ] Azure Functions
[ ] Other : please specify

Please set tracing to "debug" using Set-PnPTraceLog and provide further information. This will allow the community to better understand the issue.

Same here as well, will have to move this to discussions since this an issue with the environment itself and not the cmdlet.


Add "metadata" argument to watchQuery

[x] If this PR is a new feature, reference an issue where a consensus about the design was reached (not necessary for small changes) — Discussed in person with @stubailo
[x] Make sure all of the significant new logic is covered by tests
[x] Rebase your changes on master so that they can be merged easily
[x] Make sure all tests and linter rules pass
[x] Update CHANGELOG.md with your change
[x] Add your name and email to the AUTHORS file (optional)
[ ] If this was a change that affects the external API, update the docs and post a link to the PR in the discussion

Libraries such as react-apollo can pass metadata with their queries,
which can be read by tools such as the Apollo Chrome DevTools.

That would be great, if you're still around today!

@glasser: sure thing! I'll do it when I get back from dinner in about an hour or so.


feat(code): added clear_text function

Corresponding to Github Issue-390

Tested clear_text function and it's working properly

@hetangmodi-crest can you please add a corresponding UI test as well?

This PR makes sense, alert actions tests are failing exclusively for Splunk 9.1.1, I will investigate it in a separate PR.

:tada: This PR is included in version 2.4.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


More intuitive short/long name?

I just recently updated my geocoder version, and it seems like the short/long names are used differently.
Normally an address like 10 w 10th st, new york, ny should give a route of W 10th St, city of New York, and state of NY. But with the new defaults, I get West 10th Street, New York, and New York. Adding short_name=Trueis no good, cause now I getW 10th St, NY, NY`.
For almost all purposes, addresses are written with route and state as the short name and city as the long name. Currently, the only way to get this combination is by doing using short_name for some attributes and then doing self.address_city = g.parse['locality'].get('long_name') (figured out this syntax by looking in geocoder source code) for the city. Even if it was just making attributes like state_short/ city_long or something, it would be a lot easier.

I do agree with your comment, I think that adding the extra long name attribute would be best instead of including the short_name parameter as True or False.
I'll update the code to reflect Short Name as the default and Long Name will be an extra attribute.
Thanks for the issue

@patrickyan I've updated the Github Repo, test it out by installing it from Github or when the PyPi 1.1.2 version gets released.
The default is now retrieving the Short Name from Google
These are the only attributes that have differences in the Long vs Short names:

road_long
city_long
state_long
country_long


APIView pipeline job must update comment when APIView job fails

The APIView PR pipeline job posts a comment in the PR to say that it has begun generation of an APIView:

But if APIView generation fails, the comment is not always updated to indicate that processing failed and why.
The APIView pipeline job should ensure that this comment is updated, whatever the outcome of the processing.
Also, the PR Check should not report "Succeeded" when it has actually failed.

The APIView PR pipeline job posts a comment in the PR to say that it has begun generation of an APIView:

But if APIView generation fails, the comment is not always updated to indicate that processing failed and why.
The APIView pipeline job should ensure that this comment is updated, whatever the outcome of the processing.

The comment is updated if APIView generation fails. The only case where it's not updated is if all the APIViews are skipped.

Another thing to keep in mind is that the pipeline might generate SDK and Swagger APIReview. While it aggregates all the results in the pipeline under the Generated APIReview Comment

The success report in the swagger validation pipeline refers only to the Swagger APIReview generation, so if an SDK review generation should fail this will still apprear as a success.

Oh yes and it does send an event if the generation fails.

I have fixed the first two cases. And I have added logging so as to be able to track down exactly where and how events are getting missing, dropped or not picked up.
One approach suggested by @praveenkuttappan is to add the comment directly from APIView service using the DetectApiChanges endpoint and setting commentOnPr to true. We will have to format the comment into the existing table structure, then we can disable the unifiedPipelines -> eventhubs -> kebabbot approach for adding the Generated APIView comment.

I would like to avoid having the APIView service knowing about the specs PR and figuring out how to update those type of comments. I know we do it for the SDK repos currently but I'd like to eliminate that at some point as well, if possible.
Is the issue that we are generating the APIView's async and we don't update the comment until it is finished? I thought APIView was always returning a URL even if it is wasn't ready yet and we should be able to add that to the comment.

A event is pushed to eventhub for each APIView generation attempted, with the result (success or fail) of the attempt.  The kebab bot picks up this event then writes the comment to Github. The issue here is one where the event was pushed to eventhub but the kebab bot did not write any comment.

Yeah that seems like a bug we should be trying to handle in the kebab bot as opposed to adding a new ApiView dependency on it.


Distance plots: Show interaction-relevant distances

Description
Add distance cutoffs (or interaction on/off) to distance plots.
Todos

[x] Distance line plot: Add interaction-relevant distances as dots on-top
[x] Distance histogram: Plot interaction-relevant distances only

Questions
None.
Status

[ ] Ready to go

Codecov Report

Merging #35 (811f55b) into master (c54be7a) will not change coverage.
The diff coverage is n/a.


[5.9][CodeCompletion] Enable SwiftParser parsing for code completion

cherry-pick #65078 into release/5.9
Explanation: The new SwiftSyntax parsing is required for macro expansion, but it was disabled for a source manager mode that has code completion token in the buffer. Because of that, any macro generated declarations weren't suggested in code completion. Enable SwiftParser parsing for code completion, but without the roundtrip/validation testing. With this change, macros are correctly expanded, and those introduced decls are correctly suggested in code completion
Scope: Code completion with macros
Risk: Low-Mid. This introduces a new thing to code completion, but it is well tested in other modes including compilation and SourceKit cursor info
Testing: Added a regression test case
Issues: rdar://107900870
Reviewers: Ben Barham (@bnbarham) Alex Hoppen (@ahoppen)

@swift-ci Please test

@swift-ci Please test

@swift-ci Please test Windows

@swift-ci Please test Windows


Bad Interpreter

On ubuntu python interpreter is python3, not python

Fix it by replacing first line with
#!/usr/bin/env python3


Binder and Thebelab not working for demo book

Heya! I'm super sorry if this is a mistake on my end, but when I go to https://jupyter.org/jupyter-book/01/3/Plotting_the_Classics and then click on the Binder link I get a 404 : Not Found. The Thebelab link on the page also doesn't work....
(I don't know how to fix these, sorry!)

eek! I bet that's because we're hosting the demo book from gh-pages instead of master now...I just opened up #156 let's see if that fixes it

I think it works now! can you double check @KirstieJane ?


about TLineEditV1.qml on chapter 4

import QtQuick 2.5

Rectangle {
  width: 96; height: input.height + 8
  color: "lightsteelblue"
  border.color: "gray"

  property alias text: input.text
  property alias input: input

  TextInput {
    id: input
    anchors.fill: parent
    anchors.margins: 4
    focus: true
  }
}

I tested this code on QT 5.12.5.
height: input.height + 8 doesn't work.  input.height is no value. If I replace anchors.fill: parent with height: xx, that code works.

I got this warning too (I think it's warning because my application run but I got this message "Binding loop detected for property "height")


i-pi: init at 2.4.0

Motivation for this change
Adds i-PI. This is a molecular dynamics engine for quantum chemistry written python. Part of the packages @markuskowa and me want to merge from markuskowa/NixOS-QChem#56.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Added a release notes entry if the change is major or breaking
[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 125238 at 0bb2f42a run on x86_64-linux 1

2 packages built successfully:

i-pi (python38Packages.i-pi)
python39Packages.i-pi

1 suggestion:

warning: no-python-tests
Test runner could not discover any test cases: ‘Ran 0 tests in 0.001s’
Near pkgs/development/python-modules/i-pi/default.nix:35:0:
   |
35 |     description = "A universal force engine";
   | ^


User Warning about Environment not being present.

make sure to add a small test for it

Once I have added the changes for GCP/Azure, I'll add the test cases for it.


Why doesn't chart-value-input  start from 0?

here https://github.com/e-xtrategy/framework-compass-chart-editor/blob/master/index.html#L12
or here https://github.com/e-xtrategy/framework-compass-chart-editor/blob/5-change-number-of-axis/src/components/Form/row.tpl.html#L3
Why set minimum value on 20 instead 0?

Yeah I was thinking about it, I decided to keep data for the chart from 0 to 100. So instead of making a mapping in the code to 1 to 20, 2 to 40 and so on, I decided to make the html to do that.

Yes but actually the user has a range of only 4 option if you set minimum value on 0 he has a range of 5

Ah yes, I dind't get that. I will change it.

I make the fix on this PR #6


Possibility to omit container tag for BaseListView and derivative classes

Now there is a possibility to omit an item container class for yii\widgets\ListView by setting [itemOptions['tag']=>false] while running the widget.
But there is no ability to skip the wrapper of whole widget - it's always set to div, if undefined.
I suggest a little improvement that allows to omit container tag by setting the [options['tag']=>false] like it's done with items of ListView.

@samdark  @yujin1st  this issue is fix in #10764


Error compiling in Electron

Hi,
great work with tail!
I get the following error when trying to use the package within an Electron application:
Error: ./node_modules/tail/lib/tail.js [0] Module parse failed: Unexpected token (66:126)
It is probably something to do with my webpack config, but I haven't been able to figure out what's wrong.
Line 66 in tail.js looks like this:
({separator: this.separator = /[\r]{0,1}\n/, fsWatchOptions: this.fsWatchOptions = {}, fromBeginning = false, follow: this.follow = true, logger: this.logger, useWatchFile: this.useWatchFile = false, flushAtEOF: this.flushAtEOF = false, encoding: this.encoding = "utf-8"} = options);
If I split this line to one per variable it works. I guess there is some coffee script magic I don't know.
I'll continue to try to configure the webpack configuration.

hi,
I have the same issue with pkg. After investigating the issue it seems like there is a problem with "fromBeginning = false". Changing it to "fromBeginning: fromBeginning = false" fixes the issue.
==> I have no idea about coffee script so I cannot create a pull requet, sorry...

This worked for me with the error i was having in electron. Is this something that can be submitted as a pull request?

I have no experience with Electron.
How do you include the library?
Are you not including the npm package?

We use npm and typescript. It could be the version of ecmascript we are using, the error occurs during compile.

I'm using it with npm, the issue is the compiled JS-File:
As NPM installs it:

Executing the issue in the Browser F12 (another example of the issue, just to better visualize the issue):

I still don't understand the problem.
Latest version of the library works fine, so we need to understand what's difference when in Electron/webpack.
Which version of node are you using?
Can you share a redacted version of your webpack?

The dev tool screenshot is irrelevant.
The syntax there is just wrong: in that case you are creating an object and assign it to var options, hence the wrong syntax ({fromBeginning=false} is not a valid object syntax).
Current assumption is that the library destructuring code fails to compile.

Steps to reproduce (for pkg, should be the same in electron):
index.js:
require('tail');
npm install tail pkg
.\node_modules\.bin\pkg index.js

The problem is not with the syntax/coffeescript transpilation, otherwise it should failed consistently (and it's not happening).
The issue has to be in the webpack/babel interaction with the library.
If someone can reproduce wit hclarity around:

node version
webpack configuration
babel configuration

Then it would be great.

That means you could not reproduce the issue with https://github.com/lucagrulla/node-tail/issues/78#issuecomment-432544967 ? (it used pkg instead of electron because of the faster reproduction setup, electron and pkg have the same issue)
==>

Node Version 10.12.0
no webpack
no babel

I can replicate the issue with:
https://github.com/lucagrulla/node-tail/issues/78#issuecomment-432544967
Still, the Coffeescript/JS syntax is correct.
The problem happens from the specific ecosystem used for packaging up tail with electron/pkg.
It might be worth to check if there's an open issue with any of these projects.
I'll have a look at this in more details, but I have no timeline on looking into this one.

Simple moving fromBeginning = false to the end of the object deconstructing) fixes the parsing issue in pkg (and most likly in electron too).
I still don't have any idea whats wrong in the parsing (and who is responsible), but in the meantime it would be nice to have this small quickfix.

Coffe script fixed
See the above link, I can confirm what viyaha is saying, moving  fromBeginning = false to the end of the destructuring works.
This must be a bug in babel some how, see this example:

I've created a PR: https://github.com/lucagrulla/node-tail/pull/80 to work around babel issue.

Thanks @gautejohan , it does look like a Babel bug.
I'm overall happy with the PR as well (it's neat and not intrusive).
I'll merge PR and release new version as soon as I have time (i.e. not later then end of the week, most likely earlier than that).


Kue job concurrency not being honored

Hi there. I'm running into a weird issue where my worker processes are not honoring concurrency limits. My understanding is that the default behavior of Kue - when a concurrency value is not supplied - is to run a given job from start to success before handling the next job of that type in the queue.
// worker.js
...
const queue = require('./lib/queue')  // Reference to my library file for Kue functionality
...

// ./lib/queue.js
...
function _createJobWithNameAndOpts (name, opts, cb) {
  if (!name) { return cb() }
  if (!opts) { opts = {} }

  console.log('Creating new job \'' + name + '\' with opts ' + JSON.stringify(opts))

  var job = jobs.create(name, opts)
  var execute = require('./' + name).process

  job
    .on('enqueue', function () {
      var message = 'QUEUED: Job ' + job.id + ' added to queue (' + dateFormatter.getFormattedTimestampForConsoleOutput() + ')'
      if (VERBOSE) { console.log(message) }
    })
    .on('start', function () {
      var message = 'START: Job ' + job.id + ' has started (' + dateFormatter.getFormattedTimestampForConsoleOutput() + ')'
      if (VERBOSE) { console.log(message) }
    })
    .on('complete', function () {
      var message = 'SUCCESS: Job ' + job.id + ' completed (' + dateFormatter.getFormattedTimestampForConsoleOutput() + ')'
      if (VERBOSE) { console.log(message) }
    })
    .on('failed', function () {
      var message = 'FAILURE: Job ' + job.id + ' did not complete (' + dateFormatter.getFormattedTimestampForConsoleOutput() + ')'
      if (VERBOSE) { console.log(message) }
    })

  jobs.process(name, 1, execute)    // The same as jobs.process(name, execute)

  job.save()
  return cb()
}

module.exports.createJobWithNameAndOpts = _createJobWithNameAndOpts

In one example file - where I pass in name as invoice - the ./invoice.js exported process method is one that simply simulates a process that takes five seconds to complete:
...
module.exports.process = function (job, done) {
  var message = 'PROCESSING: ' + TASK_NAME + ' ' + job.id + ' is ready to be processed (' + dateFormatter.getFormattedTimestampForConsoleOutput() + ')'
  console.log(message)
  setTimeout(function () {
    return done()
  }, 5000)
}
...

From what I understand, I should see logging output where one process starts and completes successfully before a second process kicks off. However, here is what happens when I queue up five (5) processes:
13:03:14 web.1    | QUEUED: Job 2 added to queue (2017-01-04 13:03:14:896)
13:03:14 web.1    | QUEUED: Job 3 added to queue (2017-01-04 13:03:14:896)
13:03:14 web.1    | QUEUED: Job 4 added to queue (2017-01-04 13:03:14:896)
13:03:14 web.1    | QUEUED: Job 5 added to queue (2017-01-04 13:03:14:896)
13:03:14 web.1    | QUEUED: Job 6 added to queue (2017-01-04 13:03:14:896)
13:03:14 web.1    | PROCESSING: invoice 2 is ready to be processed (2017-01-04 13:03:14:958)
13:03:14 web.1    | PROCESSING: invoice 3 is ready to be processed (2017-01-04 13:03:14:958)
13:03:14 web.1    | PROCESSING: invoice 4 is ready to be processed (2017-01-04 13:03:14:959)
13:03:14 web.1    | PROCESSING: invoice 5 is ready to be processed (2017-01-04 13:03:14:959)
13:03:14 web.1    | PROCESSING: invoice 6 is ready to be processed (2017-01-04 13:03:14:959)
13:03:15 web.1    | START: Job 2 has started (2017-01-04 13:03:15:018)
13:03:15 web.1    | START: Job 3 has started (2017-01-04 13:03:15:018)
13:03:15 web.1    | START: Job 4 has started (2017-01-04 13:03:15:019)
13:03:15 web.1    | START: Job 5 has started (2017-01-04 13:03:15:019)
13:03:15 web.1    | START: Job 6 has started (2017-01-04 13:03:15:019)
13:03:20 web.1    | SUCCESS: Job 2 completed (2017-01-04 13:03:20:142)
13:03:20 web.1    | SUCCESS: Job 3 completed (2017-01-04 13:03:20:142)
13:03:20 web.1    | SUCCESS: Job 4 completed (2017-01-04 13:03:20:142)
13:03:20 web.1    | SUCCESS: Job 5 completed (2017-01-04 13:03:20:142)
13:03:20 web.1    | SUCCESS: Job 6 completed (2017-01-04 13:03:20:142)

What could be the issue here? Shouldn't I see a SUCCESS: Job 2 ... message before job 3 is processed/started? Each invoice job will take five seconds to run, and if it's only supposed to run them one at a time, why is it starting them at once? I was able to confirm this by running 50 jobs against this, and sure enough all 50 start at the same time. I wouldn't want to have 50 connections attempting to be opened to the database cluster - the goal is to have them fire sequentially =)

Are you sure _createJobWithNameAndOpts is called once?
You may be calling .process multiple times...

I wonder if maybe the design/implementation wasn't quite what I hoped it would be? Basically I have that main queue library which handles creating the Kue queue instance and then exports that to be shared by two separate node processes - process A and process B.
From what I could see in testing, if I created the job within the queue library and set queue.process(job, max_concurrency, function), it wouldn't be respected in the exported queue that process A and process B were referring to. However, if I waited to set the concurrency limit in process A, it would work fine.
I then realized I missed a remark in the documentation where each process contains a singleton reference to a queue, but it doesn't appear queue concurrency limits are respected unless they are explicitly defined by the process.
Is there a better way to handle a queue that is shared among multiple processes?

Hey @TheRobBrennan, not sure if this helps you or not. We needed to ensure FIFO with multiple processes processing the same queue. We created https://github.com/Automattic/kue/pull/896 to handle that, and have been using it in production for over a year with no problems.

where should the .process() be if i want to fire it by users request?
i tried putting it inside user.post() route with no luck,
having the same issues of job events spaghetti...

@TheRobBrennan Hi Rob, did you solve your issue of processing concurrency not being respected for jobs?
I’m having the same issues where a queue is created at Node.js server start. Then I initialize all jobs to the queue with Queue.process(name, 1, fn). Within my application I’m using the reference to the queue created at startup to create new jobs which then get processed with the defined function (within Queue.process).

@marcuspoehls Ehhhh...kinda. I'm not overly pleased with it, but here is the 30,000 ft view. Process A and process B all use the same kue queue Q. While both processes could be running separately, each process needed to be aware of any special handling that was required.
The solution I put into place has essentially a shared library that both processes refer to - and if there is a job of type j1 that requires special handling, both process A and process B needed to have logic in there to know how to handle that.
Not ideal, but it seemed to get the intended job done.


What should happen when the sink receives an error?

I'm using this fine library in a pipeline, simplified to a minimal case here:
Exile.stream!(~w(cat), input: 1..100 |> Enum.map(&"#{&1}\n"))
|> Stream.take(1)
|> Stream.run()

(The code above is slightly nondeterministic, I think it's possible that cat buffers all output items to a single line on fast machines.)
Normal processing is fine, but if I have for example a Stream.take/2 downstream which ends the processing, I'm finding that if the stream isn't shut down cleanly, it breaks Exile in a loud way.  Here's how it looks in the minimal case above:
write(): Bad file descriptor
** (EXIT from #PID<0.96.0>) an exception was raised:
    ** (MatchError) no match of right hand side value: {:error, 9}
        (exile 0.1.0) lib/exile/stream.ex:18: anonymous fn/4 in Collectable.Exile.Stream.Sink.into/1
        (elixir 1.14.3) lib/enum.ex:1513: Enum."-reduce_into_protocol/3-lists^foldl/2-0-"/3
        (elixir 1.14.3) lib/enum.ex:1502: Enum.into_protocol/2

I'm not totally sure about the details, but it seems that Exile is intercepting a failure rather than letting it bubble up normally?  Exile.Stream.Sink does handle happy shutdown, but is missing a case for {:error, errno}.

Thanks for taking a look, and for the reassurance about cleanup!
I'd be happy to attempt a patch, or to test one if you've already figured out the implementation...

@adamwight ping!
Let me know if you are busy. Thanks.

Closing in favor of MR, let me know if you still face issues

Hi, thanks for the work and the great explanations!  Release 0.2 seems to work perfectly for my use case, and behavior with or without :ignore_epipe are what I would expect.
Perhaps it's still a bit strange that EPIPE is an error in the first place, I'm not sure how to close the Stream any more cleanly than simply letting Stream.take shut it down.  But this is only curiosity and no longer a practical concern for me!

Whether premature closing of stream can is okay or not depend on the application. For example, say we are encoding video using FFmpeg and the reader process exit due to some error before finishing the job (premature reader exit) then the writer should be notified of that error by raising epipe.  Shells by default ignores the SIGPIPE errors, but I am not sure if hiding errors is correct in this context since premature closure of the pipe can be due to multiple reason and caller should be aware of it.

Perhaps it's still a bit strange that EPIPE is an error in the first place, I'm not sure how to close the Stream any more cleanly than simply letting Stream.take shut it down.

Can you share what is the command you are running, if possible? imo stream.take with ignore_epipe is a clean way approach, in-fact the purpose of the SIGPIPE & EPIPE is to allow the cases you mentioned. Are you saying because of the extra ignore_epipe user has to pass?
Some more details on epipe here: https://www.pixelbeat.org/programming/sigpipe_handling.html


api breaking changes

Hello
is there a place for the http/internal-js API api breaking changes? i found ArangoDB 3.0 New Features for major changes but it would be great if there is one place for all changes on each versions.
im fixing the API for working with edges in ArangoDB 3.0 (https://github.com/ra0o0f/arangoclient.net/issues/47). any suggestion on how should i prevent this kind of issues? (inform users for deprecation's? add tests for requesting database on all APIs?)
thanks

You find the incompatible changes in the same chapter (release notes):
https://docs.arangodb.com/3.0/Manual/ReleaseNotes/UpgradingChanges30.html
In addition, there's an upgrading chapter under administration:
https://docs.arangodb.com/3.0/Manual/Administration/Upgrading/Upgrading30.html

@Simran-B thanks. how did i miss that

Regarding graph functions, we offer 3 cookbook recipes about how to migrate:
https://docs.arangodb.com/3.0/cookbook/AQL/MigratingGraphFunctionsTo3.html


Evaluate / Improve CollectionView Performance

With the support for different cell types (#131), we've introduced another native bridge turnaround (event/call) for every item. In case of the iOS client, it turned out that this turnaround is required for every data item upfront in order to calculate the aggregated height and then once again before creating / populating every single item. This increases the number of (native/JS) context switches also for CollectionViews that don't use multiple cell types. Chances are that this has a noticeable effect on the performance.
We should evaluate and, if necessary, optimize the native bridge protocol for iOS.

I'll see if can come up with some numbers tomorrow.

For 1000 items (41 on screen), time from before create -> after render
1.0: 210 - 240 ms
1.1: 400 - 420 ms

Optimizing the protocol seems like something we should do. Back to staging.

I don't have any specific ideas but I agree that we could look closer and try to speed things up.

Collection view scrolling performance still does not seem satisfactory. The Reddit example is visibly stuttering during scroll with iPhone SE/11.4.1. The performance is comparable to iPhone 6/12.0. Scrolling is mostly fluid with iPhone X/12.0, but scrolling still stutters sometimes. Using "auto" cell height further worsens scrolling performance.

Closing as handled by https://github.com/eclipsesource/tabris-js/issues/1767


Add JSON5 lexer

Implemented a JSON5 lexer, as requested in #1880.
This lexer was mostly derived from the jsonnet lexer, which already implements lexing for features such as unquoted and single quoted object names and string values, comments and trailing commas in objects and arrays. This lexer covers the other JSON5 features such as mulitline strings, hexadecimal numbers, exponentials, leading and trailing decimal points, optional plus/minus signs and Infinity/NaN keywords while removing most of the jsonnet-specific code.
I'm not familiar with pygments or regex, so any feedback would be appreciated.

Merged, thanks!


Improve GitHub actions and fix package.json SCSS script

Improves GitHub actions to fore run on dependencies and browserlistrc changes
Add missed commit information to BundeSize run and token for BundleSize run on master. We actually don't need to rebuild minified assets as currently they are part of repository. I would suggest to remove them from repository and just build current version on publish.
Updated node-sass to latest version to trigger this actions run on this PR and also allow installing on Node 12.13 (new LTS starting today :tada:)
Upgraded csso dependency to correct csso-cli that cuts sourcemaps (to let budnlesizes pass)
Fixes run-p use instead of run-s at css-build

I've added the CYPRESS_RECORD_KEY secret 👍

I would suggest to remove them from repository and just build current version on publish.

I would suggest to remove them from repository and just build current version on publish.

I would suggest to remove them from repository and just build current version on publish.

I would suggest to remove them from repository and just build current version on publish.

I'd ideally like to do this but they're required for the demo page (deployed to gh-pages). If there is a clever way of deploying to building assets and deploying them to gh-pages, that'd be the best case scenario.

I've added the CYPRESS_RECORD_KEY secret 👍

@jshjohnson  Are you sure there is no error (in name, empty value, etc)? It doesn't picks the value...

I would suggest to remove them from repository and just build current version on publish.

I'd ideally like to do this but they're required for the demo page (deployed to gh-pages). If there is a clever way of building assets and deploying them to gh-pages, that'd be the best case scenario.

@jshjohnson well, GitHub Actions is a clever way :-)
You can always do something like after build (I'm just typing here, so, need to try :-))

run: |
           git stash
           git checkout gh-pages
           git stash pop
           git add public/assets/scripts/choices.min.js public/assets/styles/base.min.css public/assets/styles/choices.min.css
           git commit -m "Updating productions assets"
           git push https://${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN<EMAIL_ADDRESS>HEAD:gh-pages

@jshjohnson remove Cypress recording from this PR, so, you can merge it and check the CYPRESS_RECORD_KEY later on, as other changes here are more important

hey @tinovyatkin - I've just merged your other PR and got this error when publishing to NPM:
npm ERR! 403 Forbidden - PUT https://registry.npmjs.org/choices.js - You cannot publish over the previously published versions: 7.1.1.

hey @tinovyatkin - I've just merged your other PR and got this error when publishing to NPM:
npm ERR! 403 Forbidden - PUT https://registry.npmjs.org/choices.js - You cannot publish over the previously published versions: 7.1.1.
I was under the impression that it would only attempt to run the "Publish Package" workflow if a tag had been pushed with the PR? Or am I just misunderstanding

hey @tinovyatkin - I've just merged your other PR and got this error when publishing to NPM:
npm ERR! 403 Forbidden - PUT https://registry.npmjs.org/choices.js - You cannot publish over the previously published versions: 7.1.1.
I was under the impression that it would only attempt to run the "Publish Package" workflow if a tag had been pushed with the PR? Or am I just misunderstanding

It does run on both, pushes to master or pushes of tags starting with v. If version in package.json wasn't changed then failed attempt to publish can be just ignored. The whole on master however, is always makes sense, as it uploads code coverage and bundlesizes base sizes to compare. We can separate in two actions or add more conditions to the run, but it doesn't hurts to leave as is.

@jshjohnson 🏁


Multi-language support

It would be great if vs code simply supported different languages instead of English only

Hi @cl-ement05 You can change the VS Code display language via the Configure Display Language command.
You can read more details at https://code.visualstudio.com/docs/getstarted/locales

Hi @cl-ement05,
You can change the VS Code display language via the Configure Display Language command.
You can read more details at https://code.visualstudio.com/docs/getstarted/locales

Oh I am so sorry I didn't know it. I changed my feature request


Maintain node-os.com

I am okay when it comes to web-development, but I an no artist.
If you've got creative talent, and want to flex your css/html skills, I could use your help on node-os.com
It probably needs:

more info about the project (more pages?)
some info-graphics about node/operating-systems/linux
better writing

Thank you awesome folk, you are all great.

Is this still needing to be done?
I am a full stack dev and would love to join in on this project. My current fav frameworks is bootstrap with Googles material design theme, https://github.com/FezVrasta/bootstrap-material-design.
What would you like to see accomplished on the website?

Hi @GradyD, sorry for the delay. Yes, the web page needs some love and update its content, but probably the general design is ok. Maybe a re-structure of the home page (the big image is somewhat useless, maybe), but we would need to add some content. At this moment, our main way of communicate ourselves is on the project repository. You can take a look on the web page and give your ideas about how to improve it :-)

Hi! I'll gladly accept this position and maintain the website ^_^


Fix problems with dockerfile

👍

Coverage remained the same at 90.144% when pulling 7eccffa0303e3375a9a2308f91813b20d698f00c on fixes into ed0446d9a055c71c92a29a85ba210784193351a0 on release2.0.


[ACR] Add managed registries, webhooks, AAD auth, and repository delete

Fixes https://github.com/Azure/azure-cli/issues/2445

This checklist is used to make sure that common guidelines for a pull request are followed.
General Guidelines

[ ] The PR has modified HISTORY.rst with an appropriate description of the change (see Modifying change log).

Command Guidelines

[ ] Each command and parameter has a meaningful description.
[ ] Each new command has a test.

(see Authoring Command Modules)

Codecov Report

Merging #3747 into master will decrease coverage by 0.44%.
The diff coverage is 45.03%.

@@            Coverage Diff            @@
##           master   #3747      +/-   ##
=========================================
- Coverage   72.14%   71.7%   -0.45%
=========================================
  Files         421     423       +2
  Lines       26009   26340     +331
  Branches     3943    4004      +61
=========================================
+ Hits        18765   18886     +121
- Misses       6025    6235     +210
  Partials     1219    1219

Impacted Files
Coverage Δ

...li-acr/azure/cli/command_modules/acr/credential.py
70.58% <ø> (-3.1%)
:arrow_down:

...e-cli-acr/azure/cli/command_modules/acr/_format.py
27.77% <0%> (-11.12%)
:arrow_down:

...e-cli-acr/azure/cli/command_modules/acr/_params.py
100% <100%> (ø)
:arrow_up:

...ure-cli-acr/azure/cli/command_modules/acr/_help.py
100% <100%> (ø)
:arrow_up:

...-cli-acr/azure/cli/command_modules/acr/_factory.py
100% <100%> (+11.11%)
:arrow_up:

...li-acr/azure/cli/command_modules/acr/_constants.py
100% <100%> (ø)
:arrow_up:

...-cli-acr/azure/cli/command_modules/acr/commands.py
100% <100%> (ø)
:arrow_up:

...li-acr/azure/cli/command_modules/acr/repository.py
17.26% <18.05%> (-34.67%)
:arrow_down:

src/azure-cli-core/azure/cli/core/_profile.py
86.52% <20%> (-1.56%)
:arrow_down:

...acr/azure/cli/command_modules/acr/_docker_utils.py
22% <22%> (ø)

... and 10 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 e80e204...c56df0b. Read the comment docs.

/cc @SajayAntony @DavidObando @ankurkhemani

/cc @listonb

LGTM

LGTM! Thanks for adding the docker exec check! Excellent additions to the cli!

Please rebase your changes and resolve the conflicts.

Most of my comments are about the truthiness in the condition when a string is in place.  They're all about whether the empty strings should be treated as the legal values.  Other than that the one outstanding question is whether the commands with a hard requirement of api version will be hidden when user switch to an older API profile. That is the case in Azure Stack.


How to set timeout and maximum retry in AWSCognitoIdentityUser?

State your question
How to change retry and timeout values for signin/up operations with AWS Cognito Identity module?
Which AWS Services are you utilizing?
Cognito, S3, IAM, CloudFront, etc.
Provide code snippets (if applicable)
I tried setting it like below
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USWest2, identityPoolId: Constants.IDENTITY_POOL_ID)
configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialsProvider)
configuration.allowsCellularAccess = true
configuration.maxRetryCount = 1
configuration.timeoutIntervalForRequest = 1
configuration.timeoutIntervalForResource = 1
AWSServiceManager.default().defaultServiceConfiguration = configuration

and
    try Amplify.add(plugin: AWSCognitoAuthPlugin())
    try Amplify.add(plugin: AWSS3StoragePlugin())
    try Amplify.configure()

But I still the login requests take about 4 mins to finally fail (when network is disabled)
Environment(please complete the following information):

SDK Version: Amplify 1.5.0
Dependency Manager: Cocoapods
Swift Version : 5.0

Device Information (please complete the following information):

Device: [e.g. iPhone6, Simulator]
iOS Version: iOS 14
Specific to simulators:

Setting the retry timeout is not currently supported in Amplify. We will take this as a feature request and will update here when we have more info.

Any updates on that? I am currently having this issue on the sign in, it takes too long to give a user callback when the user has poor internet connection. I tried to do a work around by canceling AuthSignInOperation but it only cancels the callback of the sign request, the network activity keeps happening.

Could you please give us the use case of this requirement? Trying to understand why the current retry mechanism is not working for you.

Could you please give us the use case of this requirement? Trying to understand why the current retry mechanism is not working for you.

@royjit in my case, 4 minutes of timeout (1 minute for each retry) gives a really bad user experience for the user. Our app gives support for remote areas when if we are luck 3g is available. So for instance, showing a loading spinner on the login view for 4 minutes gives the user the impression that app is broken.

This is released in the version v1.28.2


Injects http module dependencies with function call

Changes proposed in this PR

instead of expecting the user to configure the http modules, allowing them to be passed programmatically

Why are we making these changes?
To simplify the workflow for specifying custom http modules.

@leifwalsh I don't see importlib in install_requires

Oh weird, I guess you were getting those transitively then.

Thank you! Let me know when you’ve pushed a new sdist to PyPI.

@leifwalsh https://pypi.org/project/cook-client/2.7.0/


Add Apple M1 support

This PR adds Apple M1 support.
Note that no microsoft/onnxruntime pre-built binaries exists for the M1 (aarch64) so it needs to be manually compiled (see ONNX_Compilation_Notes.md for some notes on that).
Their is no CI for this arch so it will not be tested. See https://github.com/actions/virtual-environments/issues/2187 for GitHub Actions' M1 support request.

Codecov Report

Merging #74 (a5e7f95) into master (1948683) will increase coverage by 1.53%.
The diff coverage is 75.71%.

@@            Coverage Diff             @@
##           master      #74      +/-   ##
==========================================
+ Coverage   14.58%   16.11%   +1.53%
==========================================
  Files          18       19       +1
  Lines         960     1117     +157
==========================================
+ Hits          140      180      +40
- Misses        820      937     +117

Impacted Files
Coverage Δ

...untime-sys/src/generated/macos/aarch64/bindings.rs
0.00% <ø> (ø)

onnxruntime/src/session.rs
0.00% <0.00%> (ø)

onnxruntime/src/tensor/ort_tensor.rs
79.16% <75.47%> (-3.19%)
:arrow_down:

onnxruntime/src/lib.rs
42.55% <84.61%> (+5.20%)
:arrow_up:

onnxruntime/src/error.rs
62.50% <100.00%> (+5.35%)
:arrow_up:

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 3b5fcd3...a5e7f95. Read the comment docs.


Remove data example

Remove old gcs2bq example.

This has merge conflicts, and still uses old checks. Closing and replacing with #523


Bar plots with LogScale don't show up properly

Hi,
Describe the bug
I can't make Bar plots work using a LogScale scale.
I imagine the problem must be connected with the need for the minimum value of a LogScale be non-negative. It's similar but not the same as #1219.
To Reproduce
Here's a simple working example using a LinearScale:
import bqplot as bq
x = [i*3 for i in list("abc")]
y = np.abs(np.random.randn(10) * 100)

sc_x = bq.OrdinalScale()
sc_y = bq.LinearScale()
scales = {"x": sc_x, "y": sc_y}

line = bq.Lines(x=x, y=y, scales=scales, marker='circle')
bars = bq.Bars(x=x, y=y, scales=scales, opacities=[0.1])

ax_x = bq.Axis(scale=sc_x, grid_lines="none")
ax_y = bq.Axis(scale=sc_y, grid_lines="none", orientation="vertical")
bq.Figure(marks=[line, bars], axes=[ax_x, ax_y], title="Linear scale")

This example doesn't work at all:
sc_x = bq.OrdinalScale()
sc_y = bq.LogScale()
scales = {"x": sc_x, "y": sc_y}

line = bq.Lines(x=x, y=y, scales=scales, marker='circle')
bars = bq.Bars(x=x, y=y, scales=scales, opacities=[0.1])

ax_x = bq.Axis(scale=sc_x, grid_lines="none")
ax_y = bq.Axis(scale=sc_y, grid_lines="none", orientation="vertical")
bq.Figure(marks=[line, bars], axes=[ax_x, ax_y], title="Empty log scale")

And setting the minimum value for the LogScale leads to weird behaviour:
sc_x = bq.OrdinalScale()
sc_y = bq.LogScale(min=0.1)
scales = {"x": sc_x, "y": sc_y}

line = bq.Lines(x=x, y=y, scales=scales, marker='circle')
bars = bq.Bars(x=x, y=y, scales=scales, opacities=[0.1])

ax_x = bq.Axis(scale=sc_x, grid_lines="none")
ax_y = bq.Axis(scale=sc_y, grid_lines="none", orientation="vertical")
bq.Figure(marks=[line, bars], axes=[ax_x, ax_y], title="Log scale")

Expected behavior
I would expect that Bar plots should be possible using a LogScale, and maybe return an error if the dataset doesn't allow it (if values are non-positive).
Additional context
Tested on bqplot 0.12.20.
Thanks!

Hi,
I was able to make it work in some specific case using type="grouped", and setting base as positive.
The fact that it doesn't work with type="stacked" makes me think that corrections to the base code are necessary, though.
sc_x = bq.OrdinalScale()
sc_y = bq.LogScale()
scales = {"x": sc_x, "y": sc_y}

bars = bq.Bars(x=x, y=y, scales=scales, opacities=[0.1], type="grouped", base=1)

ax_x = bq.Axis(scale=sc_x, grid_lines="none")
ax_y = bq.Axis(scale=sc_y, grid_lines="none", orientation="vertical")
bq.Figure(marks=[bars], axes=[ax_x, ax_y], title="Linear scale")

I think https://github.com/bqplot/bqplot/pull/1423 fixes this, although I will only work for non-negative values and a non-negative base (see https://github.com/bqplot/bqplot/pull/1423#issuecomment-1735456363 )


RSC permission in 1:1 conversation with bot

Hi,
I was implementing the following sample that works well in a team channel as well as in a group chat:
https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/samples/graph-rsc/nodeJs/auth.js
I'm using Application RSC permission: ChannelMessage.Read.Group and ChatMessage.Read.Chat.
ChatMessage.Read.Chat is working great to retrieve older messages in the group conversation with URL https://graph.microsoft.com/v1.0/chats/{chat-id}/messages
But I have the following graph error when using the same URL in a personal chat:
{'error': {'code': 'Forbidden', 'message': "Missing role permissions on the request. API requires one of 'Chat.Read.WhereInstalled, Chat.ReadWrite.WhereInstalled, ChatMessage.Read.All, Chat.Read.All, Chat.ReadWrite.All, ChatMessage.Read.Chat'. Roles on the request 'Group.Selected'. Resource specific consent grants on the request ''.", 'innerError': {'date': '2023-09-11T12:54:40', 'request-id': 'e84d36de-a0e6-46c4-99f7-2c9406b86674', 'client-request-id': 'e84d36de-a0e6-46c4-99f7-2c9406b86671'}}}
I was wondering where the problem could come from:
1/ if it comes from the conversation ID that I get from Teams that does not correspond to the chat-id I see in the URL in teams web or in microsoft graph when I find my chat with the bot among the chats
2/ if the token "group.selected" is ok and how to change it if necessary
I have no more clue how to deal with that issue. Please help.

Hello @christopher5106 - Thanks for raising your query.
We will look into it and let you know the updates.

Hello @christopher5106 - Looks like "ChatMessage.Read.Chat" permission will not work in 1:1 chat and it is mentioned in the documentation as well:

Reference doc link:
https://learn.microsoft.com/en-us/microsoftteams/platform/graph-api/rsc/resource-specific-consent#rsc-permissions-for-a-chat-or-meeting
If you want to List messages in a chat, you can use below Graph API without RSC permissions:
 List messages in a chat
Could you please check and let me know if you need any further help here.

Ok. I still need little help about the method to call to get user consent on Chat.Read inside my bot ?

And also, please answer the second point: converstion.id I get in the request is not a valid ID for the graph URL /chats/{chat-id}
The ID starts with "a:1AFl..."  and is length 131 chars.
The graph error is:
Possible error found in URL near: :1AFlDDfaJiHNKHf...
It's not as clear to me how to get the conversation between the bot and me.

The conversation ID you get from Teams may not correspond to the chat ID you see in the URL or in Microsoft Graph. The conversation ID is specific to the Teams platform and may not be directly used in the API calls. You need to use the chat ID to retrieve messages in a personal chat. Make sure you are using the correct chat ID in your API call.
The token group.selected mentioned in the error message refers to the role permission required for the API call. It seems that the token is not being included. To change the token if necessary, you need to update the permissions in your Teams app manifest.

In your Teams app manifest, make sure you have specified the correct permission string for personal chat message reading. The permission string for personal chat message reading is 'ChatMessage.Read.Chat'. Ensure that this permission is included in the 'permissions' section of your app manifest.
"permissions": [
  {
    "resource": "ChannelMessage",
    "scope": "Group.Read.All"
  },
  {
    "resource": "ChatMessage",
    "scope": "Chat.Read.Chat"
  }
]

Make sure you have updated the app manifest with the correct permission string and re-install or upgrade your app to apply the changes. After that, you should be able to retrieve messages in a personal chat using the URL https://graph.microsoft.com/v1.0/chats/{chat-id}/messages.

To retrieve the conversation chatId follow below steps:

You must have your app's {teamsAppInstallationId}. If you don't have it, use the following:
GET https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps?$expand=teamsApp&$filter=teamsApp/id eq '{teamsAppId}'
The id property of the response is the teamsAppInstallationId.

Make the following request to fetch the chatId:
HTTP GET request (permission—TeamsAppInstallation.ReadWriteSelfForUser.All):
GET https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps/{teamsAppInstallationId}/chat
The id property of the response is the chatId.

You can also retrieve the chatId with the following request but it requires the broader Chat.Read.All permission:
HTTP GET request (permission—Chat.Read.All):
GET https://graph.microsoft.com/v1.0/users/{user-id}/chats?$filter=installedApps/any(a:a/teamsApp/id eq '{teamsAppId}')
Ref: https://learn.microsoft.com/en-us/microsoftteams/platform/graph-api/proactive-bots-and-messages/graph-proactive-bots-and-messages?tabs=dotnet#retrieve-the-conversation-chatid
https://learn.microsoft.com/en-us/graph/api/userscopeteamsappinstallation-get-chat?view=graph-rest-1.0&tabs=http

1/ In the GET https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps?$expand=teamsApp&$filter=teamsApp/id eq '{teamsAppId}' request, I get the fields id, consentedPermissionSet, teamsApp/id, teamsApp/externalId, and when I use id as teamsAppInstallationId in the request, I get "Possible error found in URL near: =" because this ID finishes with "=".
2/ With RSC permission ChatMessage.Read.All, am I able to get the teamsAppInstallationId and chatId or what other RSC permission shall I put in the Manifest?
Thanks

You need to run this API GET https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps?$expand=teamsApp
and get the id as highlighted below:

Additionally, you can refer to below document
https://learn.microsoft.com/en-gb/microsoftteams/platform/graph-api/rsc/grant-resource-specific-consent#check-your-app-for-added-rsc-permissions-in-a-chat

It's not working:

What is wrong ?

@christopher5106 - We are also observing the same behaviour. In documentation its mentioned to use that id, but on using that it gives away below error:

So next we opened the conversation with bot in MS Teams and copied the chat-id from browser.

and ran the following API query and were able to get the chat messages.

To be sure to understand.

I ask you how to get the chat ID from my bot. You answered by a documentation link List messages in a chat that I know and read 100 times
I told you it's not working. You gave me a procedure to get an ID.
I was not able to make this ID work. You told me to choose the  other ID, teamApp/id
I told you this ID is not working. You say to me to copy paste the ID from the browser ?! But how can my bot copy paste the ID from your browser ?!

First, I repeat my question: how to access the chat ID to paste in the URL /chats/{chat-id}/messages ?
Second, you have no more option than to give me a correct answer this time I think.

Hello, thank you @Prasad-MSFT for all the information provided in this ticket (and thank you Christopher for opening this ticket).
I have the same problem and was desperately looking for solutions on the web. So I'm very happy to see a reliable source of information on this subject. I've just opened a github account for that purpose :)
But can you clarify how the robot gets this ID ? Like @christopher5106 , I can reproduce the solution on the browser side but not on the robot side.
Thanks again

To be sure to understand.

I ask you how to get the chat ID from my bot. You answered by a documentation link List messages in a chat that I know and read 100 times
I told you it's not working. You gave me a procedure to get an ID.
I was not able to make this ID work. You told me to choose the  other ID, teamApp/id
I told you this ID is not working. You say to me to copy paste the ID from the browser ?! But how can my bot copy paste the ID from your browser ?!

First, I repeat my question: how to access the chat ID to paste in the URL /chats/{chat-id}/messages ? Second, you have no more option than to give me a correct answer this time I think.

@christopher5106 - Apologies for any inconvenience caused. Earlier we suggested to use teamsAppInstallationId in order to retrieve the conversation chatId according to the official documentation. However, as the id as well as teamApp/id didn't work, we suggested alternative to get the chatId directly from browser (which is something you do not intend to use as in your case you need bot to get that id).
So, if you want to get the id, you can get this from the bot context installationUpdate event while installing the app in personal scope.

{
    "action": "add",
    "type": "installationUpdate",
    "timestamp": "2023-09-14T13:18:01.14Z",
    "id": "f:6863f3e5-dd69-af99-234e-c623c0f3cdd2",
    "channelId": "msteams",
    "serviceUrl": "https://smba.trafficmanager.net/amer/",
    "from": {
        "id": "29:1GurVOhggttdCEGAZt8SXYhAIWmnd--1IgQ2NY2vXC30K1FI415uXN7a5YmxB9yPawJwBWAn3oL6rNzeImWqiWQ",
        "aadObjectId": "e652dd92-dd63-4fcc-b5b2-2005681e8e9f"
    },
    "conversation": {
        "conversationType": "personal",
        "tenantId": "aa923623-ae61-49ee-b401-81f414b6ad5a",
        "id": "a:1e5Kaun0rWLFm1E0kYKIHeGrP1tLGfl0k9tl7CqIO9END4PgXUIQ9b8sWGfLErh3BgiWXA0p66kt0WTFlpKKybV433XkEco9dgFNRDpKPiflSrVgL85qAEjcwIOVlgDEa"
    },
    "recipient": {
        "id": "28:4acdc558-04cc-49d2-a0c1-4c0f4138a9e9",
        "name": "AzureBotPSD"
    },
    "entities": [
        {
            "locale": "en-GB",
            "type": "clientInfo"
        }
    ],
    "channelData": {
        "settings": {
            "selectedChannel": {
                "id"<EMAIL_ADDRESS>            }
        },
        "tenant": {
            "id": "aa923623-ae61-49ee-b401-81f414b6ad5a"
        },
        "source": {
            "name": "message"
        }
    },
    "locale": "en-GB"
}

We verified this and using this id we were able to get the chat details using Graph API.
cc: @herve-stence

Do we get on_installation_update events very frequently ? Because currently the app has been already installed, how do we trigger an on_installation_update event to get this ID ?

Hello @christopher5106 - you can uninstall and install the app again just to test it.
ideally you can store the chat I’d in memory while installing the app and later you can use it for further operations.
please let us know if you have any other scenario which can not be implemented using above steps.

Any downtimes or error on our server and all users chat IDs are lost for users that install the app during this time. Not very convenient 😱

Don't you have another method to get this ID?

I'm extremely surprised I'm the first guy to imagine that an user would like to have a chat, ie a personal conversation with a bot

So now I have the ID.
Please show me how to use MSAL lib to exchange the token for a graph token under the Chat message.Read.Chat RSC permission (no SSO) to read users chat message in Microsoft Graph. I get an invalid grant saying I should have ChaMessage.Read.Chat that my app correctly has.
Until now no proof it's working.

@christopher5106 -
To use MSAL (Microsoft Authentication Library) to exchange the token for a Graph token under the ChatMessage.Read.Chat RSC permission, you can follow these steps:

Install the MSAL library in your project. You can use the following command to install the MSAL library in your Node.js project:
npm install msal

Import the necessary modules in your code:
const msal = require('@azure/msal-node');

Create an instance of the ConfidentialClientApplication class with your application's client ID and client secret:

const config = {
  auth: {
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
  },
};
const cca = new msal.ConfidentialClientApplication(config);

Acquire a token using the acquireTokenByClientCredential method:

const tokenRequest = {
  scopes: ['https://graph.microsoft.com/.default'],
};
cca
  .acquireTokenByClientCredential(tokenRequest)
  .then((response) => {
    const accessToken = response.accessToken;
    // Use the access token to make Graph API calls
    // For example, you can use the accessToken to call the /me endpoint:
    // GET https://graph.microsoft.com/v1.0/me
  })
  .catch((error) => {
    console.log(error);
  });

In the scopes array, specify the https://graph.microsoft.com/.default scope to request the default Graph API permissions.
Note: Make sure to replace 'YOUR_CLIENT_ID' and 'YOUR_CLIENT_SECRET' with your actual client ID and client secret.
By following these steps, you can use MSAL to exchange the token for a Graph token under the ChatMessage.Read.Chat RSC permission. This will allow you to read users' chat messages in Microsoft Graph without requiring Single Sign-On (SSO).

This is exactly what I'm doing and I'm getting an invalid grand on the chat message url.

Could you please verify these?

Verify the app manifest: Ensure that your app manifest correctly includes the ChatMessage.Read.Chat permission.
You can check the manifest file to confirm if the permission is specified as mentioned in the context.

Check the consent process: Make sure that the consent process for your app includes the ChatMessage.Read.Chat permission. During the installation or upgrade process, conversation owners need to grant consent for the app to receive all chat messages. If the consent process is not completed correctly, it can result in an "invalid grant" error.

Validate the token exchange: Double-check the code where you are exchanging the token for a Microsoft Graph token using the MSAL library. Ensure that you are requesting the correct scope (ChatMessage.Read.Chat) and that the token exchange process is implemented correctly.

Here's an example of how you can use the MSAL library to acquire a token for the ChatMessage.Read.Chat permission:
// Create a confidential client application using MSAL
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder
    .Create(clientId)
    .WithClientSecret(clientSecret)
    .WithAuthority(authority)
    .Build();

// Define the required scopes
string[] scopes = new string[] { "ChatMessage.Read.Chat" };

// Acquire a token for the specified scopes
AuthenticationResult result = await app.AcquireTokenForClient(scopes).ExecuteAsync();

// Use the acquired token to make requests to Microsoft Graph
string accessToken = result.AccessToken;

Make sure to replace clientId, clientSecret, and authority with the appropriate values for your application.
Additionally, it is recommended to check the Azure AD logs for more detailed error information.
If you have followed these steps and are still encountering the "invalid grant" error, you can share your manifest file along with your code repo zip, so that we can raise bug from our end.

Hello,
Here is my exact code following your advise:
const msal = require('@azure/msal-node');
const config = {
    auth: {
      clientId: client_id,
      clientSecret: client_secret,
      authority: "https://login.microsoftonline.com/" + tenant
    },
  };
const cca = new msal.ConfidentialClientApplication(config);
const tokenRequest = {
    scopes: ['ChatMessage.Read.Chat'],
};
cca
  .acquireTokenByClientCredential(tokenRequest)
  .then((response) => {
    const accessToken = response.accessToken;
  })
  .catch((error) => {
    console.log(error);
  });

The error message I get
ServerError: invalid_scope: 1002012 - [2023-09-25 19:46:48Z]: AADSTS1002012: The provided value for scope ChatMessage.Read.Chat is not valid. Client credential flows must have a scope value with /.default suffixed to the resource identifier (application ID URI).
Trace ID: f83ce916-6b97-49bc-9485-6607d31ec800
Correlation ID: ae5edeae-fc8d-47fb-80d9-3a913f6783aa
Timestamp: 2023-09-25 19:46:48Z - Correlation ID: ae5edeae-fc8d-47fb-80d9-3a913f6783aa - Trace ID: f83ce916-6b97-49bc-9485-6607d31ec800

This code is working with   scopes: ['https://graph.microsoft.com/.default'], but in this case when I request the https://graph.microsoft.com/v1.0/chats/{chat_id}/messages, I get:
{"error":{"code":"Forbidden","message":"Missing role permissions on the request. API requires one of 'Chat.Read.WhereInstalled, Chat.ReadWrite.WhereInstalled, ChatMessage.Read.All, Chat.Read.All, Chat.ReadWrite.All, ChatMessage.Read.Chat'. Roles on the request 'Group.Selected'. Resource specific consent grants on the request ''.","innerError":{"date":"2023-09-25T19:50:38","request-id":"59068fd7-c380-4f2c-941d-1fee19996227","client-request-id":"59068fd7-c380-4f2c-941d-1fee19996227"}}}
please help urgently but try to understand a bit better my case, because your advises seem generic / copy-paste of Microsoft documentation, not a real help.

This code with the same URL https://graph.microsoft.com/v1.0/chats/{chat_id}/messages  is working well to retrieve messages from group chats so I'm a bit suspicious if it's not working for one to one chat messages (with correct ID).

Do you have any update on that issue ?

Apologies. At the moment, we have not received any updates from the engineering team. However, we are actively communicating with them to stay updated on the progress. As soon as we receive any updates from them, we will notify you in this thread.
Thank you!

Apologies for delay in response.
We are actively checking the updates with engineering team and let you know once we get any updates.

Hello @christopher5106 - Sorry for delay in response.
ChatMessage.Read.Chat RSC permission will work if a chat has a meeting or a call associated with it.
Please refer this documentation: https://learn.microsoft.com/en-us/microsoftteams/platform/graph-api/rsc/resource-specific-consent#rsc-permissions-for-a-chat-or-meeting
Please let us know if you still need any further help here.

Not every 1:1 chat has a meeting or a call associated with it. How do we deal with general case ?

Hello @christopher5106 - Could you please confirm below queries:

Are you trying to retrieve 1:1 chat related history with bot in personal scope or trying to fetch the other chat's related data (using chat-id value) from your 1:1 conversation?

If you try to fetch 1:1 chat related data (Installed bot in personal scope) using RSC permission and chat-id from the same conversation, it is working for you?

retrieve 1:1 chat related history with bot in personal scope
no it's not working, there is a permission error in the case of 1:1 chat, while it's working correctly in channels for example.

Thanks for the information.
We will again test it accordingly and raise a bug if needed.

Thank you

Hi @christopher5106 - We got update from engineering team saying "Currently, the granting of .Chat permissions in personal scope has been locked down to ChatMessageReadReceipt.Read.Chat permission only."

We are closing this issue for now, please feel free to reopen it, if required.


Add scheme

Pull Request Test Coverage Report for Build 0694b1b9de893dc4af90abd3576675bd40565cb7-PR-8

17 of 17 (100.0%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.9%) to 75.652%

Totals

Change from base Build 5e3ee5b6e7a290b0d4e413f6aa19ce4227bf37f0:
0.9%

Covered Lines:
174

Relevant Lines:
230

💛  - Coveralls


Some installation help

As I thought it only worked in Firefox for some reason, might be useful to give some more installation help.

Applied with commit bb264bf05730cbe024b43783e4e0e51ca237be8a
Sorry, this took ages.


Error claiming PVC byte measurement

I've setup the deployment following the guide. Everything runs well and is deployed correctly. When I try create a PVC the status says pending and the freenas pod state the following in the logs:
[...]

I0208 11:24:44.552136       1 controller.go:926] provision "default/test" class "freenas-nfs": started
I0208 11:24:44.554605       1 event.go:221] Event(v1.ObjectReference{Kind:"PersistentVolumeClaim", Namespace:"default", Name:"test", UID:"a53f182d-2b93-11e9-b69e-005056a6835c", APIVersion:"v1", ResourceVersion:"2742491", FieldPath:""}): type: 'Normal' reason: 'Provisioning' External provisioner is provisioning volume for claim "default/test"
E0208 11:24:44.557407       1 controller.go:688] Giving up syncing claim "default/test" because failures 15 >= threshold 15
E0208 11:24:44.557427       1 controller.go:700] error syncing claim "default/test": failed to provision volume with StorageClass "freenas-nfs": byte quantity must be a positive integer with a unit of measurement like M, MB, MiB, G, GiB, or GB
I0208 11:24:44.557629       1 event.go:221] Event(v1.ObjectReference{Kind:"PersistentVolumeClaim", Namespace:"default", Name:"test", UID:"a53f182d-2b93-11e9-b69e-005056a6835c", APIVersion:"v1", ResourceVersion:"2742491", FieldPath:""}): type: 'Warning' reason: 'ProvisioningFailed' failed to provision volume with StorageClass "freenas-nfs": byte quantity must be a positive integer with a unit of measurement like M, MB, MiB, G, GiB, or GB

I cannot find the message in the code nor anywhere else in Kubernetes. I am not sure if it is a message from FreeNAS or from Kubernetes.
I am using FreeNAS 11.2 and kubernetes 1.11. Any thoughts about this issue? Or people who have the same issues?

Hi,
Can you provide your claim ?

Hi,
This is my class.yaml
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: freenas-nfs
#  annotations:
#    storageclass.kubernetes.io/is-default-class: "true"
provisioner: freenas.org/nfs
allowVolumeExpansion: true
reclaimPolicy: Delete
mountOptions: []
parameters:
  # namespace of the secret which contains FreeNAS server connection details
  # default: kube-system
  serverSecretNamespace: "kube-system"

  # name of the secret which contains FreeNAS server connection details
  # default: freenas-nfs
  serverSecretName: "freenas-nfs"

  # the name of the parent dataset (or simply pool) where all resources will
  # be created, it *must* exist before provisioner will work
  # example: tank/k8s/mycluster
  # default: tank
  datasetParentName: "Data/Kubernetes"

  # whether to enforce quotas for each dataset
  # if enabled each newly provisioned dataset will set the appropriate quota
  # per the PVC
  # default: true
  datasetEnableQuotas: "true"

  # whether to reserve space when the dataset is create
  # if enabled each newly provisioned dataset will set the appropriate value
  # per the PVC
  # default: true
  datasetEnableReservation: "false"

  # if enabled provisioner will create parent datasets for each namespace
  # otherwise, all datasets will be provisioned in a flat manner
  # default: true
  datasetEnableNamespaces: "true"

  # if datasetEnableNamespaces is enabled, sets a per-namespace quota
  # example: 5M | 10G | 1T  (M, Mi, MB, MiB, G, Gi, GB, GiB, T, Ti, TB, or TiB)
  # default: 0 (no quota)
  datasetNamespaceQuota: "0"

  # if datasetEnableNamespaces is enabled, sets a per-namespace reservation
  # this should not be greater than the datasetNamespaceQuota
  # example: 5M | 10G | 1T  (M, Mi, MB, MiB, G, Gi, GB, GiB, T, Ti, TB, or TiB)
  # default: 0
  datasetNamespaceReservation: "0"

  # if enabled created datasets will adhere to reliable pattern
  # if datasetNamespaces == true dataset pattern is: <datasetParentName>/<namespace>/<PVC Name>
  # if datasetNamespaces == false dataset pattern is: <datasetParentName>/<namespace>-<PVC Name>
  # if disabled, datasets will be created with a name pvc-<uid> (the name of the provisioned PV)
  # default: true
  datasetDeterministicNames: "true"

  # if enabled and datasetDeterministicNames is enabled then dataset that
  # already exist (pre-povisioned out of band) will be ratained by the
  # provisioner during deletion of the reclaim process
  # ignored if datasetDeterministicNames is disabled (collisions result in failure)
  # default: true
  datasetRetainPreExisting: "true"

  # the following parameters determine permissions and ownership of the
  # dataset mount directory (on FreeNAS) immediately upon creation
  # default: 0777, root, wheel
  datasetPermissionsMode: "0777"
  datasetPermissionsUser: "root"
  datasetPermissionsGroup: "wheel"

  # this determines what the 'server' property of the NFS share will be in
  # in kubernetes, it's purpose is to provide flexibility between the control
  # and data planes of FreeNAS
  # default: uses the 'host' value from the secret
  #shareHost:

  # determines if newly created NFS shares will have the 'All Directories'
  # option checked
  # default: true
  shareAlldirs: "true"

  # Authorized hosts/networks (space-separated) allowed to access the shares
  # default: ""
  #shareAllowedHosts:
  shareAllowedNetworks: "<IP_ADDRESS>/24, <IP_ADDRESS>/24"

  # Determines root mapping
  # cannot be used simultaneously with shareMapAll{User,Group}
  # default: root:wheel
  shareMaprootUser: "root"
  shareMaprootGroup: "wheel"

  # Determines user mapping for all access (not recommended)
  # cannot be used simultaneously with shareMaproot{User,Group}
  # default: ""
  #shareMapallUser:
  #shareMapallGroup:

  # if enabled and datasetDeterministicNames is enabled then shares that
  # already exist (pre-provisioned out of band) will be retained by the
  # provisioner during deletion of the reclaim process
  # ignored if datasetDeterministicNames is disabled (collisions result in failure)
  # default: true
  shareRetainPreExisting: "true"

And this is my claim.yaml
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test
spec:
  storageClassName: freenas-nfs
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: "100Gi"

No matter if I try 100G 100GB, 100M, 100Mi, nothing works. Am I doing something wrong?

Pretty sure that comes from: https://github.com/cloudfoundry/bytefmt/blob/master/bytes.go#L23
Can you provide the output of kubectl -n default get pvc test -o yaml

I already figured it out. It was caused by these settings in the class;
datasetNamespaceReservation: "0"
datasetNamespaceQuota: "0"

I commented them out and it works like a charm! This can be closed.


Move Git/shell install instructions from Carpentries page to this page

... and place them into OS tabs.

Taking it and plan to send PR soon. Then it can be improved.


Horizontal rule after table has no space in between

When drawing a horizontal line after a table, the line is just at the same height as the lower bound of the table.
As a user I would expect the line to have the same space after the table as if I wrote a text instead.
Code example here:
| My | Table |
| :---: | :--- |
| Data | Here |

---

fixed


Bug: Registration Infinite Spinner

Attempting to paste my email data to register.  While waiting for the tx to resolve, I observed a requirement I didn't bother to read "Provide a historical transaction email sent from Venmo containing "You paid" in the subject received after January 10th, 2024 to complete registration. Base ETH is required to submit a registration transaction. Base Bridge ↗"
I missed the January 10th, 2024 part so I knew the tx should fail.  I waited for over 60 seconds and the UI gave me no indication of failure, just infinite spin.  I'm sorry if I have to state this explicitly but not resolving to something after 60 seconds (+15?) is bad UX.  Thanks for the great product otherwise.

If this bug isn't fixed yet let me know, i will have look
@zach-is-my-name


authclient supporting full PAM

An authentication client that allows communicating with PAM in all possible ways via a Unix socket.
Solves #170.

So since this is only rough start, would you mind me just taking a stab at implementing it @Mikilio?

Definitely, I actually don't have that much time, so I was planning to dedicate only some time each weekend. But if you're willing to wait, I'd also be happy to use this as a C++ learning opportunity, and I'll only bother you once a weekend with a review


Provide option to disable auto crop feature in DumpCommand output

Problem
When using the dump command in parquet-tools, the output will sometimes be truncated based on the width of your console, especially on smaller displays.
Example:
row group 0
--------------------------------------------------------------------------------
id:          INT32 SNAPPY DO:0 FPO:4 SZ:44668/920538/20.61 VC:7240100  [more]...
name:        BINARY SNAPPY DO:0 FPO:44672 SZ:89464018/1031768430/11.53 [more]...
event_time:  INT64 SNAPPY DO:0 FPO:89508690 SZ:43600235/57923935/1.33 VC:7240100 [more]...

    id TV=7240100 RL=0 DL=0 DS: 2 DE:PLAIN_DICTIONARY
    ----------------------------------------------------------------------------
    page 0:                      DLE:BIT_PACKED RLE:BIT_PACKED VLE:PLA [more]... SZ:33291

This is especially annoying if you pipe the output to a file as the truncation remains in place.
Proposed fix
Provide the flag --disable-crop for the dump command. Truncation is enabled by default and will only be disabled when this flag is provided,
This will output the full content to standard out, for example:
row group 0
--------------------------------------------------------------------------------
id:          INT32 SNAPPY DO:0 FPO:4 SZ:44668/920538/20.61 VC:7240100 ENC:BIT_PACKED,PLAIN_DICTIONARY
name:        BINARY SNAPPY DO:0 FPO:44672 SZ:89464018/1031768430/11.53 VC:7240100 ENC:PLAIN,BIT_PACKED
event_time:  INT64 SNAPPY DO:0 FPO:89508690 SZ:43600235/57923935/1.33 VC:7240100 ENC:PLAIN,BIT_PACKED,RLE

    id TV=7240100 RL=0 DL=0 DS: 2 DE:PLAIN_DICTIONARY
    ----------------------------------------------------------------------------
    page 0:                      DLE:BIT_PACKED RLE:BIT_PACKED VLE:PLAIN_DICTIONARY ST:[min: 0, max: 1, num_nulls: 0] SZ:33291 VC:262146
    page 1:                      DLE:BIT_PACKED RLE:BIT_PACKED VLE:PLAIN_DICTIONARY ST:[min: 0, max: 1, num_nulls: 0] SZ:33291 VC:262145

Reporter: Daniel Harper
PRs and other links:

Pull Request

Note: This issue was originally created as PARQUET-668. Please see the migration documentation for further details.

Julien Le Dem / @julienledem:
Issue resolved by pull request 358
https://github.com/apache/parquet-mr/pull/358

Daniel Harper:
Added link to pull request


Add new themes: homage-white and homage-black

These themes were evolving for several years already in my personal
emacs configuration and finally moved to doom-themes framework. Main
idea of these themes is to reduce amount of colours to bare minimum, yet
preserve bright and sharp look of main elements.
I took doom-one and doom-one-light themes as an initial carcass for this
transformation.
White theme using palette inspired by various editors from 2000s, with a
lot of inspiration from eziam theme (thblt/eziam-theme-emacs) and tao
theme<PHONE_NUMBER>0/tao-theme-emacs).
Black theme is (manually) inverted white theme with a focus of having
pitch-black backgrounds. I also incorporated several ideas from jbeans
theme (synic/jbeans-emacs).

I used slightly modified eziam theme test files and my personal org-mode buffers to produce screenshots from below. I can produce different screenshots on request.
White theme:

Black theme:

Nice and minimal!

@mskorzhinskiy These look great! Just a thought on the homage, the DONE TODO items are difficult to differentiate, due to how minimal the theme is.
I found adding a strikethrough to help
(org-headline-done :strike-through t)

Thanks for spotting this, @Emiller88! I didn't noticed it since I have long-living colours specification in my configuration files. I've made changes to both of the themes so it should be better now. Although not sure if these colours shouldn't be brighter...
About strikethrough. I can attach special lever to control this and possibly some other aspects of the theme.

@mskorzhinskiy Those look much better! Kinda goes away from the black and white, but I like it.
Individual users can set the strike-through themselves, I just thought it would be a good default before your changes.

I've made another round of changes. There are mostly kind of bug fixes changes, but I can reupload screenshots on request. Also I didn't touched documentation. Should I?

Sorry for being so absent! I've been doing some paperwork in order to move to Europe to start my masters so I've been really busy.  With regard to the screenshots, don't worry much about it! But regarding the documentation, please give yourself some credit in the README and in the doom-themes.el file!

So how do you feel about adding this theme to the rest of the emacs themes?
I am probably the only user right now, but I never showed this theme outside this PR. With this theme merged, I can try to advertise this theme. And maybe start collecting suggestions, critique and start acting on it.

So how do you feel about adding this theme to the rest of the emacs themes?
I am probably the only user right now, but I never showed this theme outside this PR. With this theme merged, I can try to advertise this theme. And maybe start collecting suggestions, critique and start acting on it.

I am really sorry! It's been mostly my fault given that I've been too busy to work on these. Hopefully I can merge this this week.

No worries, there are already a lot of great themes and the base
theme is always improving. So thanks for all your hard work! I am
looking forward for the merge, but if there're anything I can fix
before or help anyhow else, please let me know. I would be happy
to.
Emmanuel Bustos Torres<EMAIL_ADDRESS>writes:

I am really sorry! It's been mostly my fault given that I've
been too busy to work on these. Hopefully I can merge this this
week.


fix(composer): split overlay content into parts

Overview
split overlay content into parts to avoid the issue with content over string length limit
Verifying Changes
Scene Composer
For scene-composer package changes specifically, you can preview the component in the published storybook artifact. To do this, wait for the Publish Storybook action to complete below.

Click on the workflow details
Select the Summary item on the left
Download the zip file

To run the storybook build locally, you need a local static web server:
npm install -g httpserver
cd <Extracted Zip Directory>
httpserver

Then open the website http://localhost:8080 to run the doc site.
Legal
This project is available under the Apache 2.0 License.

Do not merge yet


Is there any other way to download the dataset?

THANKS for your great work.
An error comes to me while trying to download the preprocessed DTU training data.
Any suggestions would be greatly appreciated~

Same. idm or wget do not work for me. ( I'm in mainland china )

Try Baidu Cloud: https://pan.baidu.com/s/1Wb9E6BWCJu4wZfwxm_t4TQ#list/path=%2Fmvsnet%2Ftraining_data.
Extraction code: s2v2

Thanks a lot for your help~


Buffer file change events

Description
Last step in solving #41
When editing config files using some editors and automatic tools we may get several file change events in a small time frame. This PR buffer events that happen during 1 sec into one event.
Screenshoots
Before:

After:

@nimrodshn @zgalor @moolitayer @elad661 @jhernand . Please review.

/lgtm


Test mariadb version upgrade

Sle 15.5 to 15.6 is going to change the mariadb version and the docker entry point is handling version updates by going through a data migration workflow.
We do not have a test for that and we know the current state was broken because the upstream developers notified us about that issue.
We need to test an upgrade scenario

Is the test scenario in mind around mariadb-upgrade?
In theory, SLE is not going to move to a version where mariadb-upgrade would not work. If you follow the SLE upgrade paths, you can migrate from SLE 12 MariaDB to SLE 15 with no issues, as long as you always run mariadb-upgrade in each SLE migration.

@alexandrevicenzi the entrypoint script performs the upgrade itself based on some logic and extra code paths that were broken. we're not testing them. we should be testing them prior to playing out the 15.6 upgrade.
see docker_mariadb_upgrade in the entrypoint.sh

As your new entrypoint is fixed, I don't think you are in a bad position. The mariadb-upgrade checks the file $DATADIR/mariadb-upgrade-info ( or mysql_upgrade_info) for the version that was previously installed/upgraded. The old invalid version number in the entrypoint was only used as a pre-check comparison if an upgrade was needed and wasn't actually stored anywhere.


not all ip ranges included

I added RO for Romania and not all ip block listed on the denyip site are included in the script.
For example: <IP_ADDRESS> the blocks are included on their site, but it's not in the elements
RO blocks:
https://www.ipdeny.com/ipblocks/data/aggregated/ro-aggregated.zone

I can see "<IP_ADDRESS>/22" in the ro-aggregated.zone which includes your address.

And when I run nft-geo-filter RO in can see <IP_ADDRESS>-<IP_ADDRESS> in the filter-v4 set, which includes <IP_ADDRESS>. So, it looks like it's working to me.

Let's say I want to include several countries (Romania, China, Russia) the command would look like this? All countries in one command right?
nft-geo-filter --interface eth0 --no-ipv6 RO CN RU

re-run the script with the 4 commands:
nft-geo-filter --table-name ukraine-filter --interface eth0 --no-ipv6 UA
nft-geo-filter --table-name china-filter --interface eth0 --no-ipv6 CN
nft-geo-filter --table-name russia-filter --interface eth0 --no-ipv6 RU
nft-geo-filter --table-name romania-filter --interface eth0 --no-ipv6 RO
guess that's the way to include multiple countries. The ipv6 addresses though are still in the filter.

The --no-ipv6 argument only works with the netdev family, so you gotta do something like:
nft-geo-filter --table-family netdev --table-name whatever --interface eth0 --no-ipv6 CN RU RO

If you don't want to use the netdev family and also don't want a set of IPv6 addresses, you got to use the "ip" family:
nft-geo-filter --table-family ip --table-name whatever RO CN RU

Thank you so much. One more time. Using the command like this
nft-geo-filter --table-family netdev --table-name whaterver --interface eth0 --no-ipv6 CN RU RO
will put ONLY the addresses from the last country (RO) in. CN and RU addresses are not in there. Do I have to use this command 3 times for each country with a different table-name?
Is it possible to get multiple countries in one command?
And finally, I if 1 ip-address should be excluded from that country, how can i accomplish that? Although the 1 IP is allowed in my chain it's not working anymore. I guess it's because of the -200 priority?!
Sorry for those noob questions :))

will put ONLY the addresses from the last country (RO) in. CN and RU addresses are not in there. Do I have to use this command 3 times for each country with a different table-name?

Oh wow! I did not realize that. That is an embarrassing bug. You're right, only the last country's IP block is being included in the filter set. That's definitely a problem. I'll try to fix that. In the mean time, you can run the script 3 different times with a single country, just like you suggested.

And finally, I if 1 ip-address should be excluded from that country, how can i accomplish that?

Adding exceptions to the filter set is still something that I have to add to the script. It's not supported right now. I'll probably add another argument called --exceptions to the script and you can add the list of IP addresses you want to be allowed using the exceptions argument like --exceptions <IP_ADDRESS>.
Thank you for testing out my script @frankofno. Really appreciate it!

@frankofno I've just a pushed a change to the script. The script should now work correctly when more than one country is specified in the arguments to the script. Please download the script again and give it a shot.
I still have to work on adding exceptions to the filter sets. Will let you know when I come up with something.

smooth :) not it's working much more convinient.
Blocks China, Russia, Romania, Ukraine all in one command.
/usr/local/bin/nft-geo-filter --table-family netdev --table-name SPAMMERS --interface eth0 --no-ipv6 CN RU RO UA
Would be great to get that --exceptions option or is it allready included in the last update?

@frankofno The --exceptions option is ready for use! Just provide a comma separated list of IP addresses that you want to allow to the --exceptions flag and packets from those IP addresses will always be accepted.
Copying the example from the README.md:

Only allow packets from Monaco but create exceptions for Cloudflare's DNS service
Command to run: nft-geo-filter --exceptions <IP_ADDRESS>,<IP_ADDRESS>,2606:4700:4700::1001,2606:4700:4700::1111 --allow MC
Resulting ruleset:table inet geo-filter {
      set filter-v4 {
              type ipv4_addr
              flags interval
              auto-merge
              elements = { <IP_ADDRESS>/22, <IP_ADDRESS>/20,
                           <IP_ADDRESS>/19, <IP_ADDRESS>/21,
                           <IP_ADDRESS>/19, <IP_ADDRESS>/18,
                           <IP_ADDRESS>/24, <IP_ADDRESS>/20,
                           <IP_ADDRESS>/22, <IP_ADDRESS>/22,
                           <IP_ADDRESS>/22, <IP_ADDRESS>/21,
                           <IP_ADDRESS>/23, <IP_ADDRESS>/23,
                           <IP_ADDRESS>/19, <IP_ADDRESS>/21,
                           <IP_ADDRESS>/19 }
      }

      set filter-v6 {
              type ipv6_addr
              flags interval
              auto-merge
              elements = { 2a01:8fe0::/32,
                           2a07:9080::/29,
                           2a0b:8000::/29 }
      }

      chain filter-chain {
              type filter hook prerouting priority -200; policy drop;
              ip saddr { <IP_ADDRESS>, <IP_ADDRESS> } accept
              ip6 saddr { 2606:4700:4700::1001, 2606:4700:4700::1111 } accept
              ip6 saddr { ::1, fe80::/10 } accept
              ip saddr { <IP_ADDRESS>/8, <IP_ADDRESS>/8, <IP_ADDRESS>/12, <IP_ADDRESS>/16 } accept
              ip saddr @filter-v4 accept
              ip6 saddr @filter-v6 accept
      }
}

awesome. just tried it on my server, all fine. exceptions included with multiple countries all in one command.


require-default-props , usage-question

sometimes i have code like this:
function header(props) {
    if (props.user) {
        return
hello {user}
;
    } else {
        return null;
    }
}

header.propTypes = {
    user:PropTypes.string,
};

this does not get through require-default-props, because the user attribute is not required, so, in theory, requires a default-prop. but there is no suitable default value. it not being here is important.
what is the recommended approach in such situations?
technically we can make it more explicit, and add a required boolean prop saying isUserAvailable, but then still you will have a string-prop that is not required, so the problem remains.

Of course there is; an empty string.

i disagree about using empty-string for value-does-not-exist, but ok, in that simple case it could work.
perhaps a different example better illustrates the issue:
header.propTypes = {
    user: PropTypes.shape {
        name: PropTypes.string.isRequired,
        messageCount: PropTypes.number.isRequired,
        favoriteFood: PropTypes.oneOf(['steak', 'hamburger']).isRequired,
    },
}

what is the default-value in this case?

null, of course - it has the same typeof value for a reason.


BRG-332: research gg-20 sign process

Added TestGG20_SignRoundsTime_Secp256k1 test
Added make command
Added readme for the bench

Benches time:

Bench profile:


[Select] Shows the first item to be selected when initial value is blank or null and the menu popover is not aligned properly with the Select

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Current behavior 😯

Trying to create a simple basic Select with no customization / or styling.
Two issues observerd --

As shown in picture, the first item 'Ten' is shown kind of selected gray background. However, I didn't hover or clicked inside the menu.
The menu popover has incorrectly aligned left positions w.r.t Select.

Please help.
Below is the code snipped used --
import * as React from 'react';
import MenuItem from '@mui/material/MenuItem';
import Select, { SelectChangeEvent } from '@mui/material/Select';

export default function SelectLabels() {
  const [age, setAge] = React.useState('');
  const handleChange = (event: SelectChangeEvent) => {
    setAge(event.target.value);
  };

  return (
    <div>
      <Select
        labelId="demo-simple-select-helper-label"
        id="demo-simple-select-helper"
        value={age}
        onChange={handleChange}
        sx={{ minWidth: 120 }}
      >
        <MenuItem value={10}>Ten</MenuItem>
        <MenuItem value={20}>Twenty</MenuItem>
        <MenuItem value={30}>Thirty</MenuItem>
      </Select>
    </div>
  );
}

Expected behavior 🤔
No response
Steps to reproduce 🕹
Steps:

Context 🔦
No response
Your environment 🌎

`npx @mui/envinfo`
  Don't forget to mention which browser you used.
  Output from `npx @mui/envinfo` goes here.

@michaldudak : Same issue here ! The first item is selected when initial value is blank or null. And this happen without pressing enter as you claim.

Same issue here! This problem can be triggered when running https://mui.com/material-ui/react-app-bar/#app-bar-with-menu on iOS ( 16.3.1 latest) and Safari (latest)

I didn't mean you need to press Enter. I'm saying that the first item is highlighted, which means it'll be selected after a user presses Enter. This is by design.

@michaldudak You are right, but the highlighted first item is not clickable so it can't be chosen by click but only by Enter.

@michaldudak I have same opinion as @NenadBecanovicPD. This issue is torturing my designer and me.. please let us know as least how to disable that option, either with api option or with css id.

the highlighted first item is not clickable so it can't be chosen by click but only by Enter.

@NenadBecanovicPD, what do you mean by not clickable?
@LeeSolfmk, how would you like to indicate the currently highlighted item, then?
You can target the highlighted item using the .Mui-focusVisible CSS class, but if you remove the highlight it will become inaccessible by the keyboard.

You should be able to disable autoFocus on the <Menu>.
<Select
  MenuProps: {{
    autoFocus: false
  }}
/>

https://mui.com/material-ui/api/select/#Select-prop-MenuProps
https://mui.com/material-ui/api/menu/#Menu-prop-autoFocus

Saved my day, Thanks.


getType().getTag() of an array in a ballerina map gives value for 'any' type and not 'BRefValueArray' type.

Description:
map m1 = {line1:"No. 20", line2:"Palm Grove", city:"Colombo 03", country:"Sri Lanka", checkinsTimes: [900, 2230]};

The type of the 'checkinsTimes' array is a 'BRefValueArray'. But getting the type tag number of the array, it gives as 'BAnyType' type(value as 6). The value should ideally be 16.
Steps to reproduce:
Compile the following:
map m1 = {line1:"No. 20", line2:"Palm Grove", city:"Colombo 03", country:"Sri Lanka", checkinsTimes: [900, 2230]};

Affected Versions:
Last commit: 96c16488014db5f594dcd2a5545f4aa8d62173d6
OS, DB, other environment details and versions:
Mac OS, MVN: 3.5.0

I tried to compile the above snippet. Got the following compile error: invalid usage of array literal with type 'any'
@hemikak Is this issue valid anymore?

@pubudu91 This is restricted in Ballerina now. We can close this issue.