@firebaseextensions/fs-bq-import-collection "Error importing Collection to BigQuery: Error: The default Firebase app already exists."

Extension name: firestore-bigquery-export
Script: @firebaseextensions/fs-bq-import-collection
Script version: 0.1.16

Running script version 0.1.16 (with default settings) outputs error:
Error importing Collection to BigQuery: Error: The default Firebase app already exists. This means you called initializeApp() more than once without providing an app name as the second argument. In most cases you only need to call initializeApp() once. But if you do want to initialize multiple apps, pass a second argument to initializeApp() to give each app a unique name.
Reverting to version 0.1.15, the script successfully imports rows without error.

Related

Same issue for me, running extension version:
<EMAIL_ADDRESS>on a mac, with npx -v 8.5.5
Only affects view generation. Data sync continues as normal.

Same problem here

same problem. There are my sample
input:
npx @firebaseextensions/fs-bq-import-collection --non-interactive --project=workky-pruebas --dataset=MasterDB --table-name-prefix=_ --source-collection-path=appUsersData --query-collection-group=false --dataset-location=us
output:
{"severity":"WARNING","message":"Warning, FIREBASE_CONFIG and GCLOUD_PROJECT environment variables are missing. Initializing firebase-admin will fail"}
Error importing Collection to BigQuery: Error: The default Firebase app already exists. This means you called initializeApp() more than once without providing an app name as the second argument. In most cases you only need to call initializeApp() once. But if you do want to initialize multiple apps, pass a second argument to initializeApp() to give each app a unique name.

Closing as a new release has been added. Please ping this issue occurs again.
https://github.com/firebase/extensions/pull/1455

npx @firebaseextensions/fs-bq-import-collection still produces the same error.
npx<EMAIL_ADDRESS>works as @richbenwell mentioned.

Hi @asendia
Can you provide a list of the cli options you have chosen for this error?
I cannot reproduce the error with the default configuration and wondering if a specific config is causing the problem.


What is the point of Merkle Root?

How can we give the merkle root functionality? Are we currently calculating merkle root properly?

We will not be delving too much into the specifics


Obtain eye tracking data directly from sensor and not recorded log file during replay

It seems to me that the eye-tracker information from a user using the VR headset during the replay of a recorded scene is ignored. The eye-tracking data from the original log file produced by the start_recording.py script overrides the eye-tracking info from the user in replay mode (with the start_replaying.py script).
Do you already have a procedure to log the eye-tracking data from a user observing a recorded scene during replay, please? If not, do you have any suggestions (like a hack) other than using a scenario runner?

Hi, just so I understand this question correctly -- are you having someone observe a driving replay in VR? Replays were designed to be viewed by the experimenter on a flat screen rather than by a human subject in VR and so some things may break if you try to do this (but it should be possible by listening to SRanipal instead of going through the replay flags -- this behaviour is untested and we can provide some more details on how to do this shortly).

Yes, that's what I meant. However, this issue has now been resolved.
Fix:

Remove the check that disables the sensor update when replay is enabled. This is found here: (https://github.com/HARPLab/DReyeVR/blob/main/DReyeVR/EgoSensor.cpp#L97). In my case, I simply replaced "if (!bIsReplaying)" with "if (true)"
Comment these lines: https://github.com/HARPLab/DReyeVR/blob/main/DReyeVR/EgoVehicle.cpp#L259-L260
this prevents the camera from being updated with the recorded head position.
Thanks to @GustavoSilvera and @ajdroid


fix(🤖): fix bug with default clear color on Android offscreen surfaces

offscreen surfaces showed that they were using the fill color of the parent context unless overridden. This fixes that.

starting in this version samsung galaxy s22 ultra having this issue
E/BufferQueueProducer(13396): [SurfaceTexture-0-13396-0](id:345400000001,api:1,p:13396,c:13396) connect: already connected (cur=1 req=1)12-07 22:51:14.140 E/vulkan  (13396): native_window_api_connect() failed: Invalid argument (-22)

Can you provide us with an example that could help us reproduce the issue?
On Sat, Dec 7, 2024 at 11:53 PM Johan @.***> wrote:

starting in this version samsung galaxy s22 ultra having this issue
E/BufferQueueProducer(13396): SurfaceTexture-0-13396-0 connect: already connected (cur=1 req=1)12-07 22:51:14.140 E/vulkan  (13396): native_window_api_connect() failed: Invalid argument (-22)
—
Reply to this email directly, view it on GitHub
https://github.com/Shopify/react-native-skia/pull/2781#issuecomment-2525334547,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACKXVXGI73A2VNHTR23JC32EN36RAVCNFSM6AAAAABSYU2XEOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMRVGMZTINJUG4
.
You are receiving this because you modified the open/close state.Message
ID: @.***>

Can you provide us with an example that could help us reproduce the issue?
On Sat, Dec 7, 2024 at 11:53 PM Johan @.***> wrote:

starting in this version samsung galaxy s22 ultra having this issue
E/BufferQueueProducer(13396): SurfaceTexture-0-13396-0 connect: already connected (cur=1 req=1)12-07 22:51:14.140 E/vulkan  (13396): native_window_api_connect() failed: Invalid argument (-22)
—
Reply to this email directly, view it on GitHub
https://github.com/Shopify/react-native-skia/pull/2781#issuecomment-2525334547,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACKXVXGI73A2VNHTR23JC32EN36RAVCNFSM6AAAAABSYU2XEOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMRVGMZTINJUG4
.
You are receiving this because you modified the open/close state.Message
ID: @.***>


union(1:∞) floods memory

What's the goal here? union is usually expected to be called with multiple arguments, and isn't special-cased for one argument. There is a specialized union for two arguments in this package, but perhaps this may be generalized to multiple arguments.

at least it should throw an error.

union is usually expected to be called with multiple arguments, and isn't special-cased for one argument.
That's not true:

julia> union([1,2,3,1])
3-element Vector{Int64}:
 1
 2
 3

Yes, I meant that there's no special case like union(x::AbstractUnitRange) = x, and it falls back to the default implementation that allocates the result. We may special-case union for infinite ranges, though, since we rule out the case where the ranges don't overlap.


Add instructions for adding OASIS Saphire to Metamask to testnet-faucet.md

Fixes # .
Added link to the Oasis docs to add their network to your Metamask, and a link to setting up a metamask

We will merge this as part of #283 "Consolidate tokens READMEs".
Not before, it's too confusing.

I thought more about this PR. I was planning to integrate its ideas as part of #283 "Consolidate tokens READMEs". However I realize it does NOT make sense to consolidate to a single .md file, because there is complexity in each sub-step. One md would be way too big.
As for this PR, it's in the wrong place. Too prominent of a location for what it does.  Therefore, closing.


Kernel ABI stability in OCP Minor Version may reduce rebuild efforts of driver container

Summary:
The Kernel Application Binary Interface (kABI) is a set of in-kernel symbols used by drivers and other kernel modules. Currently, the general idea is to rebuild and test the Intel GPU driver container image whenever the kernel version associated with a particular OCP z stream changes. This is the safest approach. Unfortunately, it requires continuous rebuild and test efforts that can be facilitated by automation but still carries a non-zero cost. It may be possible to reduce rebuild efforts based on the theory that no rebuild is required if the kernel ABI does not change across all z streams in a particular OCP minor version X.Y.
Potential Idea:
Assuming that the driver is using the list of stable symbols for which Red Hat guarantees ABI compatibility, consider the following.
Based on RHEL KB,

The kernel-abi-stablelists packages contain reference files, /lib/modules/kabi-/kabi_stablelist_, listing interfaces provided by the kernel that are considered to be stable by Red Hat engineering. Such interfaces are safe for long-term use by third-party loadable device drivers, as well as for other purposes.
With Red Hat Enterprise Linux 7 and 8, the stablelist is valid for the particular major release. This means that once a symbol has been introduced into kABI for a particular major release, it will not be removed, nor will its meaning be changed during that kernel major release complete life cycle.
With Red Hat Enterprise Linux 9, each minor release will have a unique stablelist that is valid throughout the minor release lifecycle. For more information on this, please refer to the following knowledgebase article;

Red Hat Enterprise Linux 9 kABI Policy
Red Hat recommends recompiling kernel modules against every minor release of Red Hat Enterprise Linux.

Based on this other KB, an OCP minor version always uses a certain minor RHEL version.

RHCOS/OCP Versions
RHEL Versions

4.11
RHEL 8.6

4.12
RHEL 8.6

4.13
RHEL 9.2

Tentative Conclusion:
It would be reasonable to conclude that for OCP 4.12 based on RHEL8.6, only 1 driver container is required to support all OCP 4.12.z versions as long as the kernel ABI stays the same. Similarly, all z streams for OCP 4.13 based on RHEL9.2 would require a single driver container image.
Goal:
The goal is to understand the pros, cons and the potential risk of this approach. Theoretically, it is possible to use the same driver container with different kernel version as long as the kernel ABI remains stable. It is important to note that

in very rare and special circumstances, a symbol in a kABI stablelist needs to be changed. For example, Red Hat could introduce kABI breakage when a critical security issue cannot be resolved without breaking kABI. Red Hat will inform the partners if such a situation should occur.

In general, even if rebuilds are avoided, it is reasonable to retest the existing driver container when the kernel version changes using automation to ensure compatibility and functionality.

@qbarrand, any comments/feedback on this appreciated. Thanks!


chore: housekeeping golangci-lint config

Description:

Sort imports by gci linter
Remove linters from disabled list that are used now
Add comments with reason why linters are disabled
Add comments for linters that should be enabled but would result in too many changes for now (will be handled later)

/test pull-lifecycle-mgr-tests

/test pull-lifecycle-mgr-tests


Change Addresses do not default to taproot

Background
I am creating transactions and my changes addresses seems to always be native segwit v0.
Expierenced when calling sendoutputs and lncli sendcoinsusing lnd 0.15.4

Thank you for creating an issue so it easier to track @benthecarman
We need to add here the correct KeyScope. We are using nil so btcwallet uses the default one (P2WKH)
A possible fix is simply using waddrmgr.KeyScopeBIP0086 as the key scope param but I will need someone with more context before creating the PR.
I know some people were talking about not using P2TR addresses as default and  having it configurable. If we follow that path, then we need to send here whatever the user configures. If not, KeyScopeBIP0086 is the way to go :rocket:


refactor(cve): remove the global of type cveinfo.CveInfo from the ext…

…ensions package
Replace it with an attribute on controller level
Signed-off-by: Andrei Aaron<EMAIL_ADDRESS>By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Codecov for this PR seems to be broken.
Replace by https://github.com/project-zot/zot/pull/1183.


FIX: quantities should be a child of supplierOrderLineItems[] and not of routeLegs

There is a mistake in the structure: quantities should be a child of supplierOrderLineItems[] and not of routeLegs. I think that quantities should be required.

Done in commit 9661992.

We closed this issue with @robertalivan, @bengtwentus and @MrNordenberg.


RequestError: read ECONNRESET

Environment

MacOS Monterey 12.1
Node v16.13.2
Alfred 4.6.2

When I type anything, an error occurs.
"items": [
	{
		"title": "RequestError: read ECONNRESET",
		"subtitle": "Press ⌘L to see the full error and ⌘C to copy it.",
		"valid": false,
		"text": {
			"copy": "```\nRequestError: read ECONNRESET\n    at ClientRequest.<anonymous> (/Users/younho9/.nvm/versions/node/v16.13.2/lib/node_modules/alfred-npms/node_modules/got/dist/source/core/index.js:962:111)\n    at ClientRequest.origin.emit (/Users/younho9/.nvm/versions/node/v16.13.2/lib/node_modules/alfred-npms/node_modules/@szmarczak/http-timer/dist/source/index.js:43:20)\n```\n\n-\nnpms 3.0.0\nAlfred 4.6.2\ndarwin 21.2.0",
			"largetype": "RequestError: read ECONNRESET\n    at ClientRequest.<anonymous> (/Users/younho9/.nvm/versions/node/v16.13.2/lib/node_modules/alfred-npms/node_modules/got/dist/source/core/index.js:962:111)\n    at ClientRequest.origin.emit (/Users/younho9/.nvm/versions/node/v16.13.2/lib/node_modules/alfred-npms/node_modules/@szmarczak/http-timer/dist/source/index.js:43:20)"
		},
		"icon": {
			"path": "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/AlertStopIcon.icns"
		}
	}
]

I found this issue comment, https://github.com/request/request-promise/issues/147#issuecomment-349148433, and I added Connection: 'keep-alive' header to alfred-npms/node_modules/alfy/index.js:137 then the error has been resolved.
response = await got(url, {headers: {Connection: 'keep-alive'}, searchParams: options.query}).json();

Is there anyone else who experiences this error? I wonder if should add a Connection: 'keep-alive' header to the alfy.fetch.

It's too opinionated to put in alfy.fetch, but I don't mind adding it here as it could speed up subsequent requests. PR welcome.

But, alfy.fetch doesn't pass any other options except searchParams to got. How could I add header option here without modifying alfy.fetch?
https://github.com/sindresorhus/alfy/blob/main/index.js#L136-L138


const enum NamedValues gets compiled into an integer instead of a string (release build)

C#
[NamedValues]
[Imported]
enum Size {
    [ScriptName="small"]
    Small
}

public class Foo {
    public const Size DefaultSize = Size.Small;
    ...
    public SomeMethod() {
        this.SetSize(DefaultSize); // problem is reflected on this line
    }
}

JavaScript
this.setSize(0);

You can see that DefaultSize got compiled to 0 instead of 'small' or Foo.DefaultSize. One theory is that there's some kind of race condition in the compiler in handling const vs enum NamedValues.
My current work around this is to use static readonly instead of const.

Thought I'd try to reproduce this to see if I could find a fix, but performing a release build against the latest Saltarelle NuGet (2.6.2 Runtime/2.6.0 Compiler) doesn't produce the error described for me (building in VS2013).
The C# I compiled is:
namespace NamedEnumTest
{
	[NamedValues]
	[Imported]
	public enum SizeEnum
	{
		[ScriptName("small")]
		Small
	}

	public class Foo
	{
		public const SizeEnum DefaultSize = SizeEnum.Small;

		public void SetSize(SizeEnum s)
		{
		}

		public void SomeMethod()
		{
			SetSize(DefaultSize);
		}
	}
}

And it produced the following Javascript:
(function() {
	'use strict';
	var $asm = {};
	global.NamedEnumTest = global.NamedEnumTest || {};
	ss.initAssembly($asm, 'NamedEnumTest');
	////////////////////////////////////////////////////////////////////////////////
	// NamedEnumTest.Foo
	var $NamedEnumTest_Foo = function() {
	};
	$NamedEnumTest_Foo.__typeName = 'NamedEnumTest.Foo';
	global.NamedEnumTest.Foo = $NamedEnumTest_Foo;
	ss.initClass($NamedEnumTest_Foo, $asm, {
		setSize: function(s) {
		},
		someMethod: function() {
			this.setSize($NamedEnumTest_Foo.defaultSize);
		}
	});
	(function() {
		$NamedEnumTest_Foo.defaultSize = 'small';
	})();
})();

I'm not sure if the C# I'm compiling (or my build configuration, which is all just default) is missing something to replicate the issue, or if you might be compiling against an older version of Saltarelle (or a different branch)?

I believe some bug that might have caused this was fixed in 2.6, but I also know that the fix was incomplete and that the full fix will need to wait for 3.0 (Roslyn) because lack of support in NRefactory.


GoogleDriveLoader no longer filters based on file_type paramter

System Info
Python 3.10, langchain=0.0.201
Who can help?
@eyurtsev
Information

[ ] The official example notebooks/scripts
[ ] My own modified scripts

Related Components

[ ] LLMs/Chat Models
[ ] Embedding Models
[ ] Prompts / Prompt Templates / Prompt Selectors
[ ] Output Parsers
[X] Document Loaders
[ ] Vector Stores / Retrievers
[ ] Memory
[ ] Agents / Agent Executors
[ ] Tools / Toolkits
[ ] Chains
[ ] Callbacks/Tracing
[ ] Async

Reproduction
Load any folder with multiple file types and pass the file_type parameter. It will not filter any types.
Expected behavior
It should filter to the provided list of file types.

This PR added the functionality: https://github.com/hwchase17/langchain/pull/4926
This PR removed the functionality when adding code to filter trashed files by using the files variables instead of _files variable


Doesn't work on linux

I just tried this out on linux and it doesn't work (I thought I tried it before and it did work). Not sure why. I'll investigate soon.
I still need to test this on mac.
thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, mepanic

This was actually a dprint cli bug. Will be fixed in 0.7.3


onFilter(filteredData)

I have a table, in this table, there are two columns which display the class and height of the students, Now I want to display the sum of the heights of the students. When I filter the class column the table shows the data of students of the filtered class. Now I also want to show the sum of the height of the filtered students.
Basically, I want a callback function which takes the filtered data. something just like this.
columns = [{
dataFied: 'class,
filter: textFilter(),
onFilter: (filteredData) => {  /* set state here */  }
},
{
dataFied: 'class,
filter: textFilter(),
}];
Is there any option available for this? @AllenFang
Thanks

@narayanchoudhary currently, we dont support the table sum feature, so you have to do it by yourself.  in the onFilter listener, you can get the filtered data so that i think you are able to do more advance calculation, like sum etc.
Please tag me if my answer is not helpful to you, thanks

Thanks, @AllenFang But I am still unable to figure out how to get the filtered data. Can you please show me a reference in the storybook or somewhere.
Thanks.

@narayanchoudhary currently, we dont support the table sum feature, so you have to do it by yourself. in the onFilter listener, you can get the filtered data so that i think you are able to do more advance calculation, like sum etc.
Please tag me if my answer is not helpful to you, thanks

Thanks, @AllenFang But I am still unable to figure out how to get the filtered data. Can you please show me a reference in the storybook or somewhere.
Thanks.

@narayanchoudhary  you can use exposed API to get current data which displayed on table:
https://react-bootstrap-table.github.io/react-bootstrap-table2/docs/exposed-api.html#get-current-display-rows

I have used bootstrap table and in that table default filter search will be there.
But i need some customization while filtering the items in search area., such that if user has to type minimum three(3) characters to obtain any search in the table.
can anyone help me :) in this.... please reply to this comment

Using the exposed-api, to get the filtered data you should access this.node.filterContext.data


[Beta] Remove prefetch for navlinks in the beta site

Removing them everywhere might be a bit much?

Main branch:

This branch:

Removing them everywhere might be a bit much?
Yea kinda I wanted to check with the coverage for diff components. This is after removing the links inside the markdowns + navigations (verified in page - https://beta.reactjs.org/learn/describing-the-ui)

One reason why I removed from markdown anchors as well is because we have this in this chapter section where all of the open nav items are displayed in the markdown landing as well. So when we click on that page it results in prefetching the markdown although we have disabled it in the nav bar.
So where do you think we need to disable prefetching? would it make sense to disable prefetching the route's script?


Update styles.css

Title and Issue number

Title :NEW ISSUE WELCOME(JWOC 2k24)
Issue No. :#32
Code Stack :
Close #32 >

Video/Screenshots (mandatory)
https://github.com/apu52/Travel_Website/assets/140962818/7184d378-13c2-4ea0-be7d-fbf566e00404

Checklist:

[] I have mentioned the issue number in my Pull Request.
[] I have commented my code, particularly in hard-to-understand areas
[] I have gone through the  contributing.md file before contributing

Additional context (Mandatory )
Are you contributing under any Open-source programme?

@13AdityaDey This PR can't me merged. please make  one single PR for one issue. Not multiple.
Sorry this PR can't be merged. Kindly make a new branch in your forked repo & make all the enhancement there & then submit your PR


onChange is not firing

Ionic version:  (check one with "x")
[ ] 2.x
[ ] 3.x
[x ] 4.x
Ion2-calendar mode:  (check one with "x")
[ x] components mode
[ ] modal mode
I'm submitting a ...  (check one with "x")
[x ] bug report
[ ] feature request
[ ] help me
Current behavior:

onChange event is not getting triggert.
Expected behavior:

When changing a date I expect the onChange to fire.
Related code:
`<ion-calendar [(ngModel)]="date"
(onChange)="onChange($event)"
[format]="'YYYY-MM-DD'">
onChange(date) {
console.log(date);
this.getAvailability(date);
}`

It seems like the Release Candidate changed the output event to change instead of onChange. Try using this:
<ion-calendar [(ngModel)]="date"
(change)="onChange($event)"
[format]="'YYYY-MM-DD'">

Change the docs please, I spend 1 hour debugging this.

the npm package's readme has old documentation info for this event
https://www.npmjs.com/package/ion2-calendar


Throw from UpgradeAsync when request is not upgradable

Add a check to IHttpUpgradeFeature.UpgradeAsync to ensure IHttpUpgradeFeature.IsUpgradableRequest is true before upgrading the request and sending HTTP 101.

CI is upset.

Yeah, this broke a few functional tests that were calling UpgradeAsync without sending Connection: Upgrade. I've rebased on dev and updated.


Should I ignore the the build binary?

go build generates a binary build of the program. To be safe, I am assuming this file could contain secrets/environmental variables (stored in an ignored .json file) that I do not want to expose, so I am ignoring it.
I notice GitHub's standard gitignore template for Go does not ignore this binary.
I ignored it by adding the following lines to my gitignore:
# Ignore all
*

# Unignore all with extensions and directories
!*.*
!*/

Is this unnecessary? Is there a better practice?

In general, the best practice is to abstract out secrets and environmental config variables, often times to a .ENV file that's hoisted at runtime. The reason being, as you mentioned, to avoid exposing those details, but also to make it easier to assign variables during deployment to a variety of environments.
Being that you can't use third party plugins for this assignment, don't worry about using .ENV files as they can be a pain to manually parse. Using a standard JSON file is significantly easier to open and parse - so feel free to go that route in order to maintain the separation, and do ignore that file as you mentioned.

Thank you kindly! That all makes sense and echoes what most of my research has told me so far.
I have it working with the .json file, so I will keep it as is for now. But I will make a note to switch to .env later on for deployment.


(autohotkey.portable) Fix if condition and typo

Description

This commit encloses Get-OSArchitectureWidth 64 with parentheses and removes an unnecessary space.
Motivation and Context

This commit ensures that the 32-bit version of AutoHotkey v2 can be installed on an x64 environment.
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Migrated package (a package has been migrated from another repository)

Checklist:

[x] My code follows the code style of this repository.
[ ] My change requires a change to documentation (this usually means the notes in the description of a package).
[ ] I have updated the documentation accordingly (this usually means the notes in the description of a package).
[x] All files are up to date with the latest Contributing Guidelines
[ ] The added/modified package passed install/uninstall in the chocolatey test environment.
[x] The changes only affect a single package (not including meta package).

:white_check_mark: Package verification completed without issues. PR is now pending human review


Cannot toggle guest access

When attempting to toggle guest access for Teams "on", the toggle switch is grayed out. Any ideas?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 042d7ce6-ee22-690f-8188-ff8a4a585847
Version Independent ID: 3e5bc99c-e08e-44e0-cda3-687ed3633175
Content: Turn on or off guest access to Microsoft Teams
Content Source: Teams/set-up-guests.md
Service: msteams
GitHub Login: @laithalshamri
Microsoft Alias: laal

@Kettenhund Thank you for this feedback
I want to make sure this guest access swiths gets addressed quickly for you. Support will be able to handle this issue to resolution.
I think the best way forward is if you can open a service ticket in your tenant so this can get resolved ASAP. Based on outcome let me know if it is something that can be called out in the docs.
Here is a quick video on opening a ticket: https://www.youtube.com/watch?v=puuOy0sEg1Y
If you don't mind please keep us posted here on the resolution and I really want to get this information you are discovering back into the docs.

same problem here - i opened a ticket (#: 11521432) and we are currently searching.
i also ran following script:
Import-Module SkypeOnlineConnector
$Cred = Get-Credential
$CSSession = New-CsOnlineSession -Credential $Cred
Import-PSSession -Session $CSSession
Set-CsTeamsClientConfiguration -AllowGuestUser $True -Identity Global
but this doesn't help - i'm not able to toggle the slider nor to invite guests

I also have this problem. Can it be because it takes time before enabling guest access is provisioned?

Same issue. I have enabled guest access everywhere else but this toggle still won't budge. I am running a hybrid environment should it work the same way?

Same issue. Cannot toggle button the Guest button.

I can add guest.  So, would you pls give more detail steps?

I can add guest. So, would you pls give more detail steps?

@loveunicom - sorry but i don't know what you mean - we can't toggle the switch to allow guest-access - that's the problem - and i think that's the reason why we can't invite guests, although i ran the powershell-script above.
i didn't receive a possible solutions from microsoft yet - when i get answer, i'll let you know

@sweikelt  I mean that there are three places that control the guest access, so which toggle  you can not switch?

edit: in the https://admin.teams.microsoft.com - portal the guest-access is activated, but i'm not able to  invite any external user

@sweikelt How can I insert a pic here?

@sweikelt Please confirm the above two places setting first.

@loveunicom - that's pretty simple - in case that you have it in your clipbord, just use ctr+v.
if you have it on your drive, drag and drop or select them

@loveunicom - roger - this permission is set to yes - i switch it now

@sweikelt  Addition:
The sharepoint setting:

settings are set like yours, but i can't toggle the switch on.
let's wait some time, maybe it takes some time to be active.
PS: i don't like the setting in AzureAD ->Guest permissions are limited = set to "no" - it must work without setting this to "no" :-(

settings are set like yours, but i can't toggle the switch on.
let's wait some time, maybe it takes some time to be active.
PS: i don't like the setting in AzureAD ->Guest permissions are limited = set to "no" - it must work without setting this to "no" :-(

Yes, you're right.  Me too.

settings are set like yours, but i can't toggle the switch on.
let's wait some time, maybe it takes some time to be active.
PS: i don't like the setting in AzureAD ->Guest permissions are limited = set to "no" - it must work without setting this to "no" :-(

Please check this to see whether your powershell takes effect.

@loveunicom - jep this is set to "on" too

Did you upgrade teams?

@loveunicom - jep this is set to "on" too

@loveunicom , this settings are also enabled. Microsoft is just working on it - but the last info i got yesterday - with the same questtions you asked :-P

@loveunicom , this settings are also enabled. Microsoft is just working on it - but the last info i got yesterday - with the same questtions you asked :-P

My sub is OK.

another colleague of mine can toggle the switch on (he works in another company on an different o365-tenant).
i suspect, that he can toggle it on, because he bought o365 directly - we bought it through ingram.

Same problem than @sweikelt, tried everything that @loveunicom mentioned (even if unlikely related), and still unable to toggle guest access for MS Teams :(

@KarimEZ - we now managed to toggle it on - but on a very suspicious way.
i've informed microsoft about the way we did it and now exspect an answer if i may publish the workaround here.
pls stay tuned  👍

Update: Microsoft says, that this switch should not be used anymore lol and that's why, in some tenants it is deactivated - because they are already migrated to "teams and skype for business portal".
My workaround (scripting via browser - not kidding!) is not supported (of course - would be a shame if it would be supported).
and again - we still don't got a working solution - maybe tomorrow with the help of the remote-help-god ^^

Um, ok, thanks... so I currently don't have a solution to add guests to Teams:(

@KarimEZ Thank you for this feedback.
I want to make sure this issue is documented and troubleshooted promptly. Please open a ticket with support so we can start figuring out what is going on with some of the rings for Teams.
I think the best way forward is if you can open a service ticket in your tenant so this can get resolved ASAP. Based on outcome let me know if it is something that can be called out in the docs.
Here is a quick video on opening a ticket: https://www.youtube.com/watch?v=puuOy0sEg1Y
If you don't mind please keep us posted here on the resolution and I really want to get this information you are discovering back into the docs.

@sweikelt do you mind publishing your unsupported workaround? That would be more than what Microsoft is giving us. I have had a ticket open with them and all they do is keep sending me documents that I have already seen. I love that they are attempting to merge everything together but they should keep the old stuff working until the new stuff has been thoroughly tested.

@DarkwingDucker - yeah for sure - i wanted to wait till microsoft gives me the correct solution, but i think now, this will take some time o_O
so here is what we did (i used firefox):
Open office 365-admin-center and go to Settings -> Services and Add-Ins -> Microsoft Teams -> settings by user/license type
-> now switch to Guest
here the funny-part beginns ^^
open the page inspector (https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector)
-> click on "Console" and fire this up:
document.getElementById("EnableForSkypeTeams").disabled = false;
than press save, reload the page to be sure, that the insertion was successful.
after the switch is on, wait some mins and than invite some guests in your team.
i thought - "this will never work" and after the trick was done - i fell off the chair because i could not believe it

@sweikelt wow. I was like you. No way is this going to work, but Bam! It did, big kudos on this. Thanks!

Thank you all for the information and good discussion. Please let us know the resolution so that we can make sure to update the docs for it.

Lol, thanks @sweikelt.
Saved my day.

Thank you so much. Fixed a two day problem for me. For anyone that that types in the command and then presses save make sure you toggle the switch lol. The command, in my case, only enabled the switch to be toggled it does not change the setting. Thank you so much for this fix!

I'm glad you all have found a workaround while Support is working on this. I am closing again until we have word from support.

Any updates on this one here?
I have the same issue :(

Follow sweikelt's answer. It's an improbable workaround, but it's working.

Okay, so, you click inspect- console and then just type his line and press enter?
I did that in chrome and nothing happened, it just returned "false".. :/

So use Firefox, as he suggested... 😑

So use Firefox, as he suggested... 😑

Doesn't change a thing... :/

@Davidomir
i just tried it again - works like a charm for me.
maybe your Syntax-Error causes this

Hmm okay... just to make sure.
I just copy paste it and press enter, right?
On Thu 8. Nov 2018 at 14:13, Stephan Weikelt<EMAIL_ADDRESS>wrote:

@Davidomir https://github.com/Davidomir
i just tried it again - works like a charm for me.
maybe your Syntax-Error causes this
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/OfficeDocs-SkypeForBusiness/issues/775#issuecomment-436989352,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AcEUBQV9zz35dDKLGpmiZNeY9uSoy5Ngks5utC30gaJpZM4Wuta6
.

@Davidomir
jep - just c&p and hit enter - maybe hit it a little bit harder ^^
in your posted screenshoot, i can see, that the command was correctly fired.
just be save and test all other suggested settings by microsoft
good luck!
viel erfolg!

@Kettenhund   - thank you for submitting feedback.
I think the best way forward is if you open a service ticket in your tenant so this can get resolved ASAP. Based on the outcome let me know if it is something that can be called out in the docs.
Please follow this link to contact support for business products:  https://docs.microsoft.com/office365/admin/contact-support-for-business-products
Please keep us posted here on the resolution so we can feed whatever information you discover into the content.

@officedocsbot close


Create devcontainer.json

Related command

Description

Testing Guide

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change
[Component Name 2] az command b: Add some customer-facing feature

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

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

[ ] I adhere to the Error Handling Guidelines.

Thank you for your contribution! We will review the pull request and get back to you soon.

@Jordanwaslistening, please provide more details in description, for example, why we need this change?


Support a no-immediates mode

One use case people have found for SIMDe which I honestly never anticipated is using it to implement run-time emulation.  One problem with this is that there a bunch of functions with immediate-mode parameters which must be know at compile time as they are actually encoded in the instruction instead of referencing a register.
It shouldn't actually be too difficult to support this, we would just have to avoid code paths which require a constant if a certain macro is defined (e.g., SIMDE_NO_IMMEDIATES).  Obviously it would also have to disable the constant checking in macros (SIMDE_REQUIRE_CONSTANT, SIMDE_REQUIRE_CONSTANT_RANGE).
So, for example, simde_mm_srai_epi16 might look like
SIMDE_FUNCTION_ATTRIBUTES
simde__m128i
simde_mm_srai_epi16 (simde__m128i a, const int imm8)
    SIMDE_REQUIRE_CONSTANT_RANGE(imm8, 0, 255) {
  /* MSVC requires a range of (0, 255). */
  #if defined(SIMDE_X86_SSE2_NATIVE)
    return _mm_sra_epi16(a, _mm_cvtsi32_si128(imm8));
  #else
    simde__m128i_private
      r_,
      a_ = simde__m128i_to_private(a);

    const int cnt = (imm8 & ~15) ? 15 : imm8;

    #if defined(SIMDE_ARM_NEON_A32V7_NATIVE)
      r_.neon_i16 = vshlq_s16(a_.neon_i16, vdupq_n_s16(HEDLEY_STATIC_CAST(int16_t, -cnt)));
    #elif defined(SIMDE_WASM_SIMD128_NATIVE)
      r_.wasm_v128 = wasm_i16x8_shr(a_.wasm_v128, cnt);
    #else
      SIMDE_VECTORIZE
      for (size_t i = 0 ; i < (sizeof(r_) / sizeof(r_.i16[0])) ; i++) {
        r_.i16[i] = a_.i16[i] >> cnt;
      }
    #endif

    return simde__m128i_from_private(r_);
  #endif
}
#if defined(SIMDE_X86_SSE2_NATIVE) && !defined(SIMDE_NO_IMMEDIATES)
  #define simde_mm_srai_epi16(a, imm8) _mm_srai_epi16((a), (imm8))
#elif defined(SIMDE_ARM_NEON_A32V7_NATIVE) && !defined(SIMDE_NO_IMMEDIATES)
  #define simde_mm_srai_epi16(a, imm8) vshrq_n_s16((a), (imm8))
#endif
#if defined(SIMDE_X86_SSE2_ENABLE_NATIVE_ALIASES)
  #define _mm_srai_epi16(a, imm8) simde_mm_srai_epi16(a, imm8)
#endif

Notice the additional checks before defining the macros after the function definition and, even though there are immediate-mode implementations for NEON and SSE2, there are duplicate implementations inside the function body for when SIMDE_NO_IMMEDIATES is defined.
I can't really think of a good way to test this without a bunch of ifdefs in the tests which I don't want to do. We can at least add a CI check to make sure the code is correct, I just can't think of a way to automatically make sure that we accept non-constant values, so I would expect occasional bugs (which would be easy to fix).
CC @danoon2 & @EvgeniySpinov. What do you two think; does this sound useful for you?

That is a tough one, too bad the cpp method signature isn't different for an integer constant vs a variable int.  Since I don't need this check and I use SIMDE_NO_CHECK_IMMEDIATE_CONSTANT, I think it might be ok to assume that if someone is using SIMDE_NO_CHECK_IMMEDIATE_CONSTANT that they are responsible for their own checks.

That is a tough one, too bad the cpp method signature isn't different for an integer constant vs a variable int.  Since I don't need this check and I use SIMDE_NO_CHECK_IMMEDIATE_CONSTANT, I think it might be ok to assume that if someone is using SIMDE_NO_CHECK_IMMEDIATE_CONSTANT that they are responsible for their own checks.

My case is relatively simple (emulation of SSE 4.1, 4.2, AVX instruction sets for Windows API during runtime), I do not see any issue with the current constant approach as I know supported instructions during compilation times.
Likely I'm not very representative person here or I'm missing something?

My case is relatively simple (emulation of SSE 4.1, 4.2, AVX instruction sets for Windows API during runtime), I do not see any issue with the current constant approach as I know supported instructions during compilation times.
Likely I'm not very representative person here or I'm missing something?


fix: Correct the model name of h35i

looks good, just needs to update requirements.txt and manifest.json for depend 1.14.0

rolled this into https://github.com/dahlb/ha_blueair/commit/88a9eb6193ddf062e9190252a52af6aa5ca272bc in order to add 211i support


Rails 5 support

I see that this gem doesn't support rails 5. What stops it from doing so? Is there any way I can help you getting past that?
Thank you for considering that!

I'm looking into this soon as we are now migrating to Rails 5!

Awesome. Please let me know if you need any help!

Released 1.3.0. It looks good to go with a minor change. Please, report any issues.

Looks fine to me. I'll open up new issues in case I'll find edge cases that will concern those changes. Thank you!


LIVY-617: Livy session leak on Yarn when creating session duplicated names

What changes were proposed in this pull request?
When creating a session with duplicated name, instead of throw exception in SessionManager.register() method, we should stop the session. Otherwise the session driver process will keep running and end up creating a leaked Yarn application.
https://issues.apache.org/jira/browse/LIVY-617
How was this patch tested?
This is just a simple fix and verified with manual end to end test.

Reopen the PR to retest it.

Thanks @shanyu for the fix. Would you please add an UT about your fix. Thanks!

@jerryshao UT added. Thanks for reviewing it.

CC @yiheng

LGTM

Reopen to test it.

Reopen to test again.


Calther example does not compile

Please re-open the closed issue because the problem is not solved. None of the error messages were cleared by the new library (v0.0.4).

@hakova I think some library is missing in your setup. Have you installed the following libraries?

Thank you @rgujju . I confirm that all of them are installed and I have to admit that a few more unnecessary libraries are installed during my desperate troubleshooting attempts (e.g. Arduino_JSON).
I re-installed the whole arduino 1.8.19 using the install.sh executable, this time with sudo privileges, thinking that it may have caused an incomplete installation last time around. After that, with library v0.0.4, I still cannot compile the darn thing. This time the error messages are different though:
Arduino: 1.8.19 (Linux), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

/home/user/Arduino/libraries/Paperdink/src/ui/weather/weather.cpp: In member function 'int8_t PaperdinkUIWeatherClass::fetch_data(const char*, const char*, const char*, const char*)':
/home/user/Arduino/libraries/Paperdink/src/ui/weather/weather.cpp:79:13: error: 'DynamicJsonDocument' was not declared in this scope
             DynamicJsonDocument json(35 * 1024);
             ^
/home/user/Arduino/libraries/Paperdink/src/ui/weather/weather.cpp:85:13: error: 'DeserializationError' was not declared in this scope
             DeserializationError error = deserializeJson(json, https.getStream());
             ^
/home/user/Arduino/libraries/Paperdink/src/ui/weather/weather.cpp:87:17: error: 'error' was not declared in this scope
             if (error) {
                 ^
/home/user/Arduino/libraries/Paperdink/src/ui/weather/weather.cpp:93:17: error: 'JsonObject' was not declared in this scope
                 JsonObject root = json.as<JsonObject>();
                 ^
/home/user/Arduino/libraries/Paperdink/src/ui/weather/weather.cpp:95:70: error: 'root' was not declared in this scope
                 snprintf(Paperdink_Weather.weather_string, 10, "%s", root["list"][0]["weather"][0]["main"].as<const char*>());
                                                                      ^
/home/user/Arduino/libraries/Paperdink/src/ui/weather/weather.cpp:95:111: error: expected primary-expression before 'const'
                 snprintf(Paperdink_Weather.weather_string, 10, "%s", root["list"][0]["weather"][0]["main"].as<const char*>());
                                                                                ^
/home/user/Arduino/libraries/Paperdink/src/ui/weather/weather.cpp:96:89: error: expected primary-expression before 'float'
                 Paperdink_Weather.day_max_temp = root["list"][0]["main"]["temp_max"].as<float>();
                                                                                ^
/home/user/Arduino/libraries/Paperdink/src/ui/weather/weather.cpp:97:89: error: expected primary-expression before 'float'
                 Paperdink_Weather.day_min_temp = root["list"][0]["main"]["temp_min"].as<float>();
                                                                                ^
/home/user/Arduino/libraries/Paperdink/src/ui/weather/weather.cpp:98:75: error: expected primary-expression before 'float'
                 Paperdink_Weather.rain = root["list"][0]["rain"]["1h"].as<float>();
                                                                           ^
/home/user/Arduino/libraries/Paperdink/src/ui/weather/weather.cpp:99:75: error: expected primary-expression before 'float'
                 Paperdink_Weather.snow = root["list"][0]["snow"]["1h"].as<float>();
                                                                           ^
/home/user/Arduino/libraries/Paperdink/src/ui/weather/weather.cpp:101:79: error: expected primary-expression before 'float'
                     Paperdink_Weather.rain = root["list"][0]["rain"]["3h"].as<float>();
                                                                               ^
/home/user/Arduino/libraries/Paperdink/src/ui/weather/weather.cpp:104:79: error: expected primary-expression before 'float'
                     Paperdink_Weather.snow = root["list"][0]["snow"]["3h"].as<float>();
                                                                               ^
Multiple libraries were found for "WiFi.h"
 Used: /home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi
 Not used: /home/user/software/arduino-1.8.19/libraries/WiFi
exit status 1
Error compiling for board ESP32 Dev Module.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Do you think it is due to some library collusion based on the error messages above? If so, how can I uninstall unneeded libraries?

Alright, I deleted all directories created by arduino and re-installed it along with the libraries that it fails to install (Json Streamer and ArduinoJson), confirmed all other libraries were installed too and recompiled, and it worked. However, now I cannot upload it to the board. I am using linux and the message I get is pasted below. My understanding is that my user doesn't have permission to access/write to /dev/ttyS0. I tried /dev/ttyS1 as well with no avail. I will try this on a Windows machine next. I suspect that the VCP drivers won't be available for linux either.
Arduino: 1.8.19 (Linux), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

Sketch uses 1030162 bytes (78%) of program storage space. Maximum is 1310720 bytes.
Global variables use 57672 bytes (17%) of dynamic memory, leaving 270008 bytes for local variables. Maximum is 327680 bytes.
Traceback (most recent call last):
esptool.py v3.0-dev
  File "/usr/lib/python3.10/site-packages/serial/serialposix.py", line 322, in open
Serial port /dev/ttyS0
    self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
PermissionError: [Errno 13] Permission denied: '/dev/ttyS0'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.arduino15/packages/esp32/tools/esptool_py/3.0.0/esptool.py", line 3682, in <module>
    _main()
  File "/home/user/.arduino15/packages/esp32/tools/esptool_py/3.0.0/esptool.py", line 3675, in _main
    main()
  File "/home/user/.arduino15/packages/esp32/tools/esptool_py/3.0.0/esptool.py", line 3329, in main
    esp = chip_class(each_port, initial_baud, args.trace)
  File "/home/user/.arduino15/packages/esp32/tools/esptool_py/3.0.0/esptool.py", line 263, in __init__
    self._port = serial.serial_for_url(port)
  File "/usr/lib/python3.10/site-packages/serial/__init__.py", line 90, in serial_for_url
    instance.open()
  File "/usr/lib/python3.10/site-packages/serial/serialposix.py", line 325, in open
    raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg))
serial.serialutil.SerialException: [Errno 13] could not open port /dev/ttyS0: [Errno 13] Permission denied: '/dev/ttyS0'
the selected serial port serial.serialutil.SerialException: [Errno 13] could not open port /dev/ttyS0: [Errno 13] Permission denied: '/dev/ttyS0'
 does not exist or your board is not connected

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Windows cannot communicate with the device either. To install the VCP driver, I right-clicked the silabser.inf file on the driver folder from silicon labs and clicked install. Windows asked permission for making changes on the computer, but otherwise there was no indication of anything installing, nor any confirmation of installation being complete. Windows device manager reports Silicon Labs CP201x USP to UART bridge at COM73. Uploading to this port (COM73) fails as seen below. During the communication attempt, device screen flashes several times and after the failure, the device resets. That actually makes me think that my device is perhaps broken.
Arduino: 1.8.19 (Windows 10), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

Sketch uses 1030162 bytes (78%) of program storage space. Maximum is 1310720 bytes.

Global variables use 57672 bytes (17%) of dynamic memory, leaving 270008 bytes for local variables. Maximum is 327680 bytes.

esptool.py v3.0-dev

Serial port COM73

Connecting........_____....._____....._____....._____....._____....._____.....____An error occurred while uploading the sketch

_

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

I also realized that Windows does not recognize the device when the USB cable is plugged in, despite what is reported on Device Manager. I think I am done fiddling with this for a while. Good luck in your development. Please stop selling these devices until they are a little bit more ready for use.


[Blob] Return all clients by ptr

@mohsha-msft you should transition the mohsha-msft/bug-shared-cred branch into a feature branch or merge it into main. There are no CI checks that run when you use this branch.


Requesting config XML should result in a 404 when the domain doesn't exist

Currently, Diffa returns a 200 response containing an empty config XML.

I can see where you're going with this one but I have a few general concerns:

Does the domain existence lookup not apply for any domain scoped API call - or is the protection different for those code paths?
If this check needs to go into multiple places, should it not be put into a read-through cache (like the pair cache), given the fact that every API call is domain scoped?

You're right, this issue should really be fixed across all domain-scoped API calls. I'll have another look.


GDrive w/ CRON

When trying to use cron to automate backup the following is logged in the log file:
Authentication needed
Go to the following url in your browser:
https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=Et Cetera
Enter verification code: Failed reading code: EOF
As per other Issues I have set the PATHs in the crontab already.
CRON Entry: 37 14 * * Wed gdrive update 0B0llAyNlUCAWbzk4UHVmNUg5aWM /usr/local/bin/cronlog.log >> /usr/logs/gdrive.log 2>&1
Entered in sudo crontab.  user crontab entry gets a permission denied error for reading the .json file I think.
running the command outside of cron works with and without sudo.
Running Ubuntu Server 16.04.3 LTS

@dominion66 Could you just chmod 777 the gdrive file to make it accessible to the root user?

Thanks, I gave it a try and got the same responses as before running from CRON.  Running the same command outside of CRON works fine.

The problem is the root user expects the token file in a different directory.
Use the flag --config /home/<you>/.gdrive and it should work.

That did the trick and works beautifully.  Thanks so Much!


Tweak the licence preamble copyright year

Update the google/addlicense params to maintain consistency for new files
Add a grep/xargs/sed Makefile script to help update the existing preambles
Update the existing preambles

Reviewers, see the Makefile diff.

Not sure about this. For a file that didn't exist in 2022, is it wrong to say "Copyright 2022-2023"? :thinking:

@lcarva pointed out the policy on this. I'll revise to match. Moving to draft in the meantime.

Updated to match the RH guide.

Though we might want to go with ... Contributors instead of Red Hat?

Though we might want to go with ... Contributors instead of Red Hat?

Yeah we could do that. Idk what the pros and cons are...

Replaced with #846.


Better error message for unexpected property access

Before:
lib/garage_client/response.rb:111:in `method_missing': undefined method `name' for #<GarageClient::Response:0x00000002fdebf0> (NoMethodError)

After:
lib/garage_client/resource.rb:51:in `method_missing': undefined method `name' for #<Hashie::Mash error="Sorry, something went wrong"> (NoMethodError)

@cookpad/garage What do you think?

Looks good to me :+1:


Changing theme no longer focuses first result

This might have started happening today?
Repro:

cmd+k, cmd+t (change theme)
"mo"

Monokai should be focused and the theme should be previewed.
Insiders:

Stable:

VS Code version: Code - Insiders 1.36.0-insider (a6ab1bf5479ff75896a7f8f4babdb05bcef41957, 2019-06-27T21:13:05.717Z)
OS version: Darwin x64 18.6.0

Accessibility mode was on 🤦♂


Add 1.3.0 and Remove 1.1.z

Description
Check each of the following when appropriate to help reviewers verify work is complete.
Modifying an existing version

[ ] I modified operator permissions in the OLM CSV and operator.yml
[ ] I modified the operator deployment in the OLM CSV and operator.yml
[ ] I modified operand permissions in the OLM CSV and ansible role
[ ] I modified CRDS in the OLM CSV and ansible role

Adding a new release version

[x] I created a new z release directory in deploy/olm-catalog/konveyor-operator
[x] I updated channels in the konveyor-operator.package.yaml
[x] I created a new release directory in deploy/non-olm
[x] I created or updated the major.minor link in deploy/non-olm
[x] I updated the spec.skips parameter in the CSV

@eriknelson @jwmatthews this will change us from latest and release-1.x channels to just development and stable. I don't foresee a problem pinning old 1.2.x versions if desired. My understanding is we want to do this, particularly for downstream to keep people on the path upgrading to the newest.
If we want to do this now would be a good time. If not I can back it out.


C# Integration recording problem

Hi,
I'm trying to run the .NET demo, and I'm running into some problems.
I'm getting the following exception:
System.AccessViolationException: 'Attempted to read or write protected memory. This is often an indication that other memory is corrupt.'
StackTrace:
   at Arthur.WindowsClient.Services.Porcupine.pv_porcupine_process(IntPtr pointer, Int16[] voiceData, Boolean& results)
   at Arthur.WindowsClient.Services.Porcupine.Process(Int16[] data, Boolean& result) in path\to\file\Services\Porcupine.cs:line 106
   at Arthur.WindowsClient.Services.HotWordDetection.Start() in path\to\file\Services\HotWordDetection.cs:line 52
   at Arthur.WindowsClient.ConsoleAppTest.Program.Main() in path\to\file\ConsoleAppTest\Program.cs:line 50

Steps to reproduce the behavior
I've set the build action to Any CPU
This is my code:
public class HotWordDetection
    {
        private short[] GetNextAudioFrame()
        {
            if (WaveIn.DeviceCount < 1)
            {
                Console.WriteLine("No microphone!");
            }

            // some functionality that gets the next frame
            var waveIn = new WaveInEvent
            {
                DeviceNumber = 0,
                WaveFormat = new WaveFormat(16000, 1)
            };
            var writeLock = new object();

            byte[] data = new byte[8192];

            waveIn.DataAvailable += (sender, args) =>
            {
                lock (writeLock)
                {
                    Buffer.BlockCopy(args.Buffer, 0, data, 0, args.BytesRecorded);
                }
            };
            waveIn.StartRecording();
            Console.WriteLine("Listening...");

            //Task.Delay(TimeSpan.FromSeconds(3));
            Thread.Sleep(3000);
            waveIn.StopRecording();
            List<short> frames = new List<short>();

            foreach (var value in data)
            {
                frames.Add(value);
            }
            return frames.ToArray();
        }

        public void Start()
        {
            string modelFilePath = @"path\to\file\porcupine_params.pv";
            float sensitivity = (float)0.5;
            string keyword_file_path = @"path\to\file\alexa_windows.ppn";

            Porcupine instance = new Porcupine(modelFilePath, keyword_file_path, sensitivity);

            int i = 0;

            while (true)
            {
                Console.WriteLine(i++);
                var frame = GetNextAudioFrame();
                var status = instance.Process(frame, out var result);
                if (status != PicoVoiceStatus.SUCCESS)
                {
                    // error handling logic
                }
                if (result)
                {
                    // detection event logic/callback
                    Console.WriteLine("SUCCESS");

                    Thread.Sleep(5000);
                }
            }
        }
    }

This happens after 79 iterations of the while loop.
I believe it might be a problem with the recording. I would appreciate it very much if you could help me with this issue.

OK, so I've modified the GetNextAudioFrame() as seen in the question. Now it's getting recording data fine (I think, the array is populated with values). There are no more exceptions thrown, but it's still not being triggered by the "Alexa" hotword used from the alexa_windows.ppn file. Is there anything I'm doing wrong?

frame needs to have 512 samples in it.

this means that the frames array should have 512 values?

You are getting further than I am..  I can't get pv_porcupine_init to return without an error.  My paths seem fine...
"D:\SoftwareDev\Cloud\VoiceDemoConsoleApp\model\porcupine_params.pv"
"D:\SoftwareDev\Cloud\VoiceDemoConsoleApp\keywords\hey_pico.ppn"
ideas?

You are getting further than I am.. I can't get pv_porcupine_init to return without an error. My paths seem fine...
From debugger window:
"D:\SoftwareDev\Cloud\VoiceDemoConsoleApp\model\porcupine_params.pv"
"D:\SoftwareDev\Cloud\VoiceDemoConsoleApp\keywords\alexa_windows..ppn"
ideas?

Adrian -  Did you get this figured out?
I am trying to do something similar.  Wondering what the issue is here.

Hi,
I did a workaround. I saved the recorded bytes as a wav file. Then, I loaded the wav file just like they did in the example project. Let me know If this works for you or if you figure out a better method to aquire this.

Do you mind sharing your code for that?

closing due to inactivity.

Hello everyone!
Soooooo, after a day or two of testing, bruteforcing solutions, reading about inputs, sample rates, naudio waaaaves and whatnot, I've solved this.
There are two "inconveniences" about integrating nAudio with Porcupine.

As @kenarsa pointed out on your code @adriansd27 , porcupine expects to process only 512 samples each time, while nAudio, depending on your sample rate, it returns a fixed amount (for the fixed sample rate of 16000 that porcupine needs, nAudio returns 3200 bytes or recorded audio). To get the samples, we have to BlockCopy Buffer.BlockCopy(e.Buffer, 0, sampleData, 0, e.BytesRecorded); all of the bytes to short[]. Each short is 2 bytes (16 bits) by definition. So. ok, we get 3200 bytes from nAudio, when divided by 2, we still have 1600 shorts, when we must use only 512 of them. So we come to the next problem.

We have to keep these shorts somewhere so we can "spoon-feed" porcupine with the right amount of shorts (512). Also, it needs to be in a "queue" manner. We have to give them in the right order, otherwise the sound they represent isn't correct. For example, even if we give them in short batches (e.g. make some threads and Process them with porcupine in asynchronous manner), we might end up with incorrect order, i.e. the "blueberry" word might come out as "berryblue" or even worse, "beblruery",

So, where we go:
First, create a class that wraps a queue, and handles batches of shorts (512 to be exact). This class should do the following:

We give it some shorts, no matter how many, 100, 500.000, 1.000.000, and it stores them.
Whenever the amount of shorts reaches 512 or more, we must remove these 512 shorts from the queue, and then send them to anyone who cares to have them.

The class (implemented as Generic, not only for shorts, for any potential future use):
public class BufferBatch<T>
{
    private readonly ConcurrentQueue<T> _Queue;
    private readonly object _Lock;
    private readonly int _BatchSize;

    /// <summary>
    /// Event handler that raises events whenever a new batch is ready.
    /// </summary>
    public event EventHandler<BufferBatchReadyEventArgs<T>> OnBatchReady;

    /// <summary>
    /// Writes the given items to the buffer.
    /// </summary>
    /// <param name="items"></param>
    public void Write(IEnumerable<T> items)
    {
        lock (_Lock)
        {
            //Add the items to the queue.
            foreach (T item in items)
            {
                _Queue.Enqueue(item);
            }

            //Begin sending as many batches as we can.
            while (_Queue.Count >= _BatchSize)
            {
                //Dequeue the items.
                List<T> batch = new List<T>();
                for (int i = 0; i < _BatchSize; i++)
                {
                    _Queue.TryDequeue(out T item);
                    batch.Add(item);
                }

                //Send the batch to anyone listening.
                OnBatchReady?.Invoke(
                    this,
                    new BufferBatchReadyEventArgs<T>(batch));
            }
        }
    }

    /// <summary>
    /// Creates a new instance of the class.
    /// </summary>
    /// <param name="batchSize">The size of the batches.</param>
    public BufferBatch(int batchSize)
    {
        _Queue = new ConcurrentQueue<T>();
        _Lock = new object();
        _BatchSize = batchSize;
    }
}

public class BufferBatchReadyEventArgs<T> : EventArgs
{
    public IEnumerable<T> Items { get; private set; }
    public BufferBatchReadyEventArgs(IEnumerable<T> items)
    {
        Items = items;
    }
}

Now, we need a class that will handle the recording, and whenever there is new data from our microphone, will store them to the BufferBatch. This class will also use nAudio, and will handle the conversion from bytes (that nAudio gives) to the Shorts (the porcupine expects). So it will have a WaveInEvent that will handle async recording of the microphone input, and will have the BufferBatch.
Let's name it class MicrophoneSampleProvider since it provides small samples short[512] arrays from a microphone device.
/// <summary>
/// Class that provides samples from an input (microphone) device.
/// </summary>
public class MicrophoneSampleProvider
{
    #region [Private Fields]

    private readonly BufferBatch<short> _BufferBatch;
    private readonly WaveInEvent _SourceStream;

    #endregion [Private Fields]

    #region [Public Properties]

    public string MicrophoneDeviceName { get; private set; }

    #endregion [Public Properties]

    #region [Event Handlers]

    /// <summary>
    /// Event handler that raises events whenever a new samples batch is ready.
    /// </summary>
    public event EventHandler<MicrophoneSamplesEventArgs> OnReadySamples;

    #endregion [Event Handlers]

    #region [Listeners]

    /// <summary>
    /// Adds the new recording data to the batched buffer.
    /// </summary>
    private void OnNewRecordingData(object sender, WaveInEventArgs e)
    {
        //Each sample (short) takes up 2 bytes. So when we copy the buffer
        //over to the short[] array, we need half the capacity. (2 bytes => 1 short).
        int samplesCount = e.BytesRecorded / 2;
        short[] sampleData = new short[samplesCount];

        //Copy/covert the event args buffer to samples.
        Buffer.BlockCopy(e.Buffer, 0, sampleData, 0, e.BytesRecorded);

        //Write the data to the buffer. If the items count reach more than the limit,
        //it will handle itself and raise the appropriate events.
        _BufferBatch.Write(sampleData);
    }

    /// <summary>
    /// Raises a new OnReadySample event whenever a buffer batch is ready.
    /// </summary>
    private void OnBufferBatchReady(object sender, BufferBatchReadyEventArgs<short> e)
    {
        //Whenever a new batch is ready, send the samples to whoever is listening to "OnReadySamples".
        OnReadySamples?.Invoke(
            this,
            new MicrophoneSamplesEventArgs(e.Items.ToArray()));
    }

    #endregion [Listeners]

    #region [Public Methods]

    /// <summary>
    /// Starts recording.
    /// </summary>
    public void StartRecording()
    {
        _SourceStream.StartRecording();
    }

    /// <summary>
    /// Stops recording.
    /// </summary>
    public void StopRecording()
    {
        _SourceStream.StopRecording();
        _SourceStream.Dispose();
    }

    #endregion [Public Methods]

    #region [Constructor]

    /// <summary>
    /// Creates a new instance of the class.
    /// </summary>
    /// <param name="deviceNumber">The device (microphone) to attach nAudio to. Takes the OS default as default parameter (id = 0).</param>
    /// <param name="bufferLimit">The buffer limit, that, when reached, a new OnReadySamples event will be raised. Porcupine default = 512.</param>
    /// <param name="sampleRate">The sample rate of the microphone device. Porcupine default = 16000.</param>
    public MicrophoneSampleProvider(int deviceNumber = 0, int sampleRate = 16000, int bufferLimit = 512)
    {
        WaveInCapabilities deviceCapabilities =
            WaveInEvent.GetCapabilities(deviceNumber);

        MicrophoneDeviceName = deviceCapabilities.ProductName;

        _SourceStream = new WaveInEvent
        {
            DeviceNumber = deviceNumber,
            WaveFormat = new WaveFormat(sampleRate, 1)
        };
        _SourceStream.DataAvailable += OnNewRecordingData;

        _BufferBatch = new BufferBatch<short>(bufferLimit);
        _BufferBatch.OnBatchReady += OnBufferBatchReady;
    }

    #endregion [Constructor]
}

public class MicrophoneSamplesEventArgs : EventArgs
{
    public short[] Samples { get; private set; }

    public MicrophoneSamplesEventArgs(short[] samples)
    {
        Samples = samples;
    }
}

I hope the documentation is enough to get the gist of it and I didn't mess anything up.
Now, lets make one more class. This class will wrap the porcupine class, in order to make everything pretty for us (and to be easier to use it in the future). Let's make class WakeWordDetector. This class will have an EventHandler an event gets raised each time a keyword is used. It will also handle some minor construction code whenever we create a new Pv.Porcupine instance etc.
/// <summary>
/// Class that contains logic on detecting certain "wake" words from an audio input.
/// </summary>
public class WakeWordDetector
{
    #region [Private Fields]

    private readonly Pv.Porcupine _Porcupine;
    private readonly string[] _Keywords;

    #endregion [Private Fields]

    #region [Public Properties]

    /// <summary>
    /// The keywords the detector listens to.
    /// </summary>
    public IEnumerable<string> Keywords => _Keywords;

    /// <summary>
    /// The microphone sample provider that the class uses to process audio and
    /// detect wake words.
    /// </summary>
    public MicrophoneSampleProvider MicrophoneSampleProvider { get; private set; }

    #endregion [Public Properties]

    #region [Event Handlers]

    /// <summary>
    /// Event handler that fires when a wake word is detected.
    /// </summary>
    public event EventHandler<WakeWordDetectedEventArgs> OnWakeWord;

    #endregion [Event Handlers]

    #region [Listeners]

    /// <summary>
    /// Process the new microphone samples, and if a wake word is detected, raise
    /// an OnWakeWord event.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void OnNewMicrophoneSamples(object sender, MicrophoneSamplesEventArgs e)
    {
        int result = _Porcupine.Process(e.Samples);

        //Raise an event in case of keyword.
        if (result >= 0)
            OnWakeWord?.Invoke(
                this,
                new WakeWordDetectedEventArgs(
                    _Keywords[result],
                    DateTimeOffset.Now));
    }

    #endregion [Listeners]

    #region [Public Methods]

    /// <summary>
    /// Starts listening for wake words.
    /// </summary>
    public void StartListening()
    {
        MicrophoneSampleProvider.StartRecording();
    }

    /// <summary>
    /// Stops listening for wake words.
    /// </summary>
    public void StopListening()
    {
        MicrophoneSampleProvider.StopRecording();
    }

    #endregion [Public Methods]

    #region [Constructor]

    /// <summary>
    /// Creates a new wake word detector.
    /// </summary>
    /// <param name="modelPath">The model path. If left null, will search at the default location.</param>
    /// <param name="keywords">The keywords to listen for.</param>
    public WakeWordDetector(string modelPath = null, params string[] keywords)
    {
        //Build the model path. If no model path specified, search at default path.
        if (modelPath == null)
        {
            string currentDirectory = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
            string commonModelPath = @"lib\\common\\porcupine_params.pv";
            string expectedModelPath = Path.Combine(currentDirectory, commonModelPath);

            if (!File.Exists(expectedModelPath))
                throw new FileNotFoundException(
                    $"[{nameof(WakeWordDetector)}] Tried to find model path at path {expectedModelPath}." +
                    $" No model found. Please set the model path at construction time.");

            modelPath = expectedModelPath;
        }

        //Build the keywords. If no keywords specified, use all default.
        if (keywords.Length == 0)
            keywords = Pv.Porcupine.KEYWORDS.ToArray();

        //Keep a class variable with the keywords so we can find which keyword was proccessed.
        _Keywords = keywords;

        //Create porcupine instance by searching for each keyword location, and add a default frequency for each keyword.
        _Porcupine = new Pv.Porcupine(
            modelPath,
            _Keywords.Select(k => Pv.Porcupine.KEYWORD_PATHS[k]),
            Enumerable.Repeat(0.5f, keywords.Count()));

        //Use constructor defaults.
        MicrophoneSampleProvider = new MicrophoneSampleProvider();
        MicrophoneSampleProvider.OnReadySamples += OnNewMicrophoneSamples;
    }

    #endregion [Constructor]
}

public class WakeWordDetectedEventArgs : EventArgs
{
    public WakeWordDetectedEventArgs(string keyword, DateTimeOffset timeProccessed)
    {
        Keyword = keyword;
        TimeProccessed = timeProccessed;
    }

    public string Keyword { get; private set; }
    public DateTimeOffset TimeProccessed { get; private set; }
}

You should probably modify the classes to fit your needs. Probably most modifications will be on constructor of WakeWordDetector to pass keyword files etc. But as is, by default, it should load all keywords that come with the nuget package of porcupine.
You can test the implementation with the code below that listens for keywords for 60 seconds:
class Program
{
    static void Main(string[] args)
    {
        WakeWordDetector wakeWordDetector = new WakeWordDetector();
        wakeWordDetector.OnWakeWord += LogToConsole;

        Console.WriteLine("Keywords to listen for: ");
        wakeWordDetector.Keywords.ToList().ForEach(k => Console.WriteLine(k));

        Console.WriteLine($"Started listening with device {wakeWordDetector.MicrophoneSampleProvider.MicrophoneDeviceName}...");
        wakeWordDetector.StartListening();

        Thread.Sleep(60 * 1000);

        Console.WriteLine("Stopped listening...");
        wakeWordDetector.StopListening();

        Console.WriteLine("Press <Return> to exit.");
        Console.ReadLine();
    }

    private static void LogToConsole(object sender, WakeWordDetectedEventArgs e)
    {
        Console.WriteLine($"[{e.TimeProccessed:o}] {e.Keyword}");
    }
}

Well, that's all. @kenarsa with your permission, I could code it in a more simple manner with the bare minimum and create a pull request for the nuget package (to make it easier), or even create a Porcupine.Integrations.NAudio package. Otherwise, let's just leave it here for anyone that might come across the same problem in the future.

hey @koskit! thanks for this. Did you check out our new C# SDK? :) We moved to OpenAL for C# demos.

hey @kenarsa , no, I couldn't find any reference, could you share the link? I probably searched in the wrong section :)

@kenarsa Oh, I'm dumb, yes, I've downloaded the OpenAL and checked the demo. It played a major role in writing the code above. 😄
Unfortunately, as I'm trying to create self contained .net core apps for deployment on rpi both on Windows IOT Core and Raspbian, I have set myself a rule about only using nuget packages with no dependencies on other programs. From what I saw on OpenAL download section, both the windows installer and the core package are install-ables that need to be installed on that machine before running any application dependent on them. On the other hand, with nuget packages, (and on our case, nAudio)  I just have to include the assemblies on the .net core project and the dependencies get deployed along with the app.
Anyways, thanks for you input. I appreciate it. Keep up the awesome work.
I have to say, as my first experience with wake-word implementations and speech-to-text in general, when I saw porcupine, it was something else. Really impressed!

Hi @koskit,
Thanks for your interest in Porcupine - seems like you did a lot of good work here! I'm the developer who implemented the .NET SDK and worked on the demos. We were very interested in getting .NET Core running on Raspbian at the time of implementation, but had to move on to other SDKs before we could get a dependable version running.
The main issue with running on the rpi was to do with loading the correct Porcupine library file for the specific ARM architecture of rpi the developer is using. We use DllImport to load the Porcupine library in our SDK and it has a limitation with respect to detecting the proper architecture. When running on a Linux system it will just grab the first libpv_porcupine.so it finds and not select based on architecture. We could solve this with the NativeLibrary class and some additional platform detection logic, but it would restrict our support to .NET Core 3.0+ and we were trying to keep .NET Framework devs happy. We will eventually move in this direction if there's enough interest since .NET Framework is coming up on end-of-support in the next few years.
The other issue you may encounter has to do with NAudio. We initially used NAudio in our demos, but found that it doesn't support cross-platform audio input. Unfortunately, as it stands, NAudio's audio recording capabilities are restricted to Windows, though they do support file reading and the like on other OSs. The reason we moved to OpenAL is because of it's audio input support on Windows, macOS and Linux. If you want your application to run on Raspbian, you would not be able to use NAudio, so you may want to consider either restricting to Windows IoT Core or finding a way of integrating OpenAL into your application. It may work if you just include the OpenAL .dll and .so with your application.
All that said, these are not issues that should prevent you from making Porcupine work for you! I just wanted to make you aware of .NET Core limitations we encountered while implementing the SDK and demos. If you can overcome any of these limitations we'd love to hear about it and open a feature request for it as IoT Core and Raspbian are definitely OSs we'd love to support with our .NET SDK.
ps - if you use static create constructor you can make Porcupine with simply Porcupine.Create(keywords:Porcupine.KEYWORDS) and it will fill in the modelPath, sensitivities and keywordPaths for you!

Hey @laves !
I see. I should have done my research better. I will try your approach (using OpenAL.dll) and report any findings/resolutions on the problems you encountered.
Thank you so much for your input and your time.
Cheers!


Workers don't clean after themselves

Hi,
When a worker completes its tasks, it would be nice for the directories and files that were created to be automatically deleted (worker-XXXX directories and lock files). When running large jobs, all these extra files are quite the clutter :)
Thank you!

Just had a thought - is there a way to configure where the dask worker directories go?

Hi @edurand and @ericmjl,
In my setup, I put worker directories and file in a local space on my compute nodes. See http://jobqueue.dask.org/en/latest/examples.html#pbs-deployments:
local_directory='$TMPDIR',

This way, PBS Pro scheduler just removes this folder when job ends.
Generally, it is recommended to use a local storage for this directories. On the same document page is described the approach to take when you have no local storage.
If you are in another case, then I think this issue belongs to the upstream repository distributed. Worker process should clean their storage space when they are stopped.

Hi @guillaumeeb this is a good solution - it works well for me. Thanks for pointing this out!

Glad to hear it, closing then, and I hope your enjoying working with Dask and dask-jobqueue !


Update URL link of paragraph #07

Thanks for the PR @kant, unfortunately we need to close it as the Contributing.md file has seen quite some changes and the changes in this PR are no longer applicable.


Research, download and prepare Electron API for use

Download Electron and get the project structured for its use.

Project directory is structured properly and Electron is up and running


Fixed readme formatting, fixed and documented METADATA-LOOKUP_TYPE

Description
GitHub Issues

Hey thanks for the PR! I like the Readme fixes, but I'm not sure I follow on the lookuptype change. The reason it is failing is that a test is trying to get that key from the raw XML. Here is the sample XML it is trying to parse and the line it is failing on:
https://github.com/refindlyllc/rets/blob/master/tests/rets_responses/STANDARD-XML/GetMetadata_lookup.xml#L4
Do you have a different xml example that it is not parsing? Is there some other issue this is trying to solve?

Hmm, interesting.  Perhaps we are looking at different versions of the spec?  The XML response I got is here: https://gist.github.com/alalonde/f5e23f848e438140453683cf4a3c2a32

I was looking at 1.7. https://www.nar.realtor/retsorg.nsf/retsproto1.7d6.pdf
If you check out table 11-19 that is what I'm going off of. It was consistent with the responses we were getting from the rets providers we use. Who is the vendor for the response you gave?

We are using this service: http://rets.nys.mlsmatrix.com/rets/  I'm not sure how to tell which version of the spec they're referring to.

That is Matrix. A few of the matrix boards we have access to give the same LookupType as you have here and another non-matrix board does as well. So either I've misread the spec or the servers are inconsistent. Likely the former. If you want to update your PR to include a modification of the XML to match the format so the tests pass we can merge this.

Coverage remained the same at 92.241% when pulling 8cefa0723c7b8708d4823a1a30a6ae4ada19880a on alalonde:master into c21f24f4f79db3b85c8e61dc7f3b2f71316f7879 on refindlyllc:master.

Thanks -- I figured nobody was using that particular function anyway since it wasn't documented.  Happy to help.


How To Create Commit in Bare Repo

I'm initializing a bare repo and want to add an initial commit once it's created. I've initialized the repository just fine following the instructions on the website, but when trying to use createCommitOnHead I get the following error: Oid id is required.. Same error when trying to create a branch, or really do anything related to repo modification beyond adding a remote on a bare repo.
How can I add and commit files to a bare repository?

This should tell you what you need to know :+1:
https://github.com/nodegit/nodegit/blob/master/examples/create-new-repo.js

For future reference, I think that what you were looking for is something like that https://gist.github.com/getify/f5b111381413f9d9f4b2571c7d5822ce


Edit Descriptors

Describe the bug
When I navigate to the observation matrix hub I see recently created descriptors. When I click one the browser moves to the "create new" page rather than the previously generated descriptor.
To Reproduce
Steps to reproduce the behavior:

log in and click "Observation matrix hub"
Then I see "Recently created descriptors" on the right
And I click one of them ("monothalamous" in the attached screen shot)
I then go to the form to create a new one, rather than seeing (and being able to edit) the old one

Expected behavior
Int he example above I would like to click "monothalamous" and go to that descriptor, for example to edit it or destroy it
Screenshots
If applicable, add screenshots to help explain your problem.
Environment (please identify where you experience this bug:

Production
Chrome Version 85.0.4183.121 (Official Build) (64-bit)

Fixed


Implement GitProject.get_web_url()

Closes #213
Seems like it could be implemented in BaseGitProject.
Not quite sure about Pagure implementation, since I haven't found any tests regarding None as namespace.

I cannot seem to find any way to get URL for Pagure project in API.
Also I think that it would be better to remove condition from the function get_web_url by fixing non-existing namespace either in BaseGitProject or override the property in PagureProject

I cannot seem to find any way to get URL for Pagure project in API.

Maybe we can use  url_path property from projet's info (PagureProject.get_project_info):

https://src.fedoraproject.org/api/0/rpms/python-docker (with namespace)
https://pagure.io/api/0/ogr-tests (without namespace)

It looks like it takes care of the namespace.

Also I think that it would be better to remove handling no-namespace from the function get_web_url by fixing non-existing namespace either in BaseGitProject or override the property in PagureProject

I am not sure I fully get your point but feel free to send that change, and we can discuss the proposal here.

Maybe we can use url_path property from projet's info (PagureProject.get_project_info):
...
It looks like it takes care of the namespace.

Updated, but it still uses instance_url from service.

I am not sure I fully get your point but feel free to send that change, and we can discuss the proposal here.
Yeah, sorry, I didn't mention what I'm talking about, full_repo_name property in BaseGitProject...

Overriding it in PagureProject should do
I've just realised it's implemented twice BaseGitProject and GitProject

Fix flake8 remarks

Nice! I forgot to mention pre-commit yesterday.

@mfocko Sorry, I missed your previous comment before merging...

Updated, but it still uses instance_url from service, since url_path doesn't contain it.

That's fine.

Yeah, sorry, I didn't mention what I'm talking about, full_repo_name property in BaseGitProject...

Overriding it in PagureProject should do
I've just realised it's implemented twice (in BaseGitProject and GitProject)

You are right. If you want, create a new pull request with that:

Remove the code from GitProject -- it should be abstract (raise NotImplementedError())
Override that in PagureProject using the url_path