Deleting inactive mailboxes with org-wide retention policies applied

Hello,
This is partially related to another issue I have logged (https://github.com/MicrosoftDocs/microsoft-365-docs/issues/4243) where we are managing inactive mailboxes and Security & Compliance policies which apply to all mailboxes.
This article (https://docs.microsoft.com/en-us/microsoft-365/compliance/delete-an-inactive-mailbox?view=o365-worldwide) provides instructions for deleting an inactive mailbox when a litigation hold is applied, or an in-place hold is applied (and this lists the get-mailboxsearch cmd-let which is now deprecated in favour of the newer compliance cmd-lets).
There are no instructions however for removing an organisation-wide policy from an inactive mailbox.
An inactive mailbox cannot be excluded from an organisation policy (as it cannot be be selected in the GUI or added in PowerShell) and the "IgnoreLegalHold" parameter has now been removed from the Remove-Mailbox cmd-let; indeed the following article (https://docs.microsoft.com/en-us/office365/troubleshoot/holds/ignorelegalhold-not-available) says that an inactive mailbox must be excluded but again doesn't say how to do this for a global (All Mailboxes) policy
Many Thanks

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

ID: 9c129f4e-664c-971f-e438-18ae3eb87f17
Version Independent ID: e63b5be8-3c3c-2592-72bf-3f00cca0e525
Content: Delete an inactive mailbox - Microsoft 365 Compliance
Content Source: microsoft-365/compliance/delete-an-inactive-mailbox.md
Service: o365-seccomp
GitHub Login: @markjjo
Microsoft Alias: markjjo

@LukeAllinson-NS Thanks for feedback. You might try this cmdlet in EXO PowerShell:
Set-Mailbox -ExcludeFromOrgHolds
which is documented here: https://docs.microsoft.com/en-us/microsoft-365/compliance/identify-a-hold-on-an-exchange-online-mailbox?view=o365-worldwide&preserve-view=true#next-steps
also see https://docs.microsoft.com/en-us/powershell/module/exchange/set-mailbox
I'll look into adding that procedure to this topic on deleting an inactive mailbox.
Also as an FYI, we do recommend using an explicit retention policy exclusively for inactive mailboxes, which may help make them easier to manage after the fact.
I'm also looking into your other github issue you logged against the change hold duration for inactive mailbox topics.
Note also that even though In-Place Holds have been deprecated, you can still use the Remove-MailboxSearch cmdlet to remove an in-place hold so that an inactive mailbox can be deleted. Get-MailboxSearch can also be used to get info about in-place holds.

Thanks so much for the quick response Mark.
I will review the links you sent and let you know how I get on.
Kind Regards
Luke
Luke Allinson
Microsoft 365 Architect
Microsoft Business Group
D:    +44 20 8132 4416
✉
<EMAIL_ADDRESS>🌐   https://mbg.cognizant.com
Cognizant
Microsoft Business Group
#NS1001
From: Mark Johnson - MSFT<EMAIL_ADDRESS>Sent: 24 February 2021 20:44
To: MicrosoftDocs/microsoft-365-docs<EMAIL_ADDRESS>Cc: Luke Allinson<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/microsoft-365-docs] Deleting inactive mailboxes with org-wide retention policies applied (#4246)
@LukeAllinson-NShttps://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FLukeAllinson-NS&data=04|01|Luke.Allinson%40newsignature.com|93299952b28d421b369208d8d904f385|a1a2578a8fd34595bb187d17df8944b0|1|0|637497962582048294|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=FHG8Y504rPImZyuYuJo7TnnBDe3%2Bz5QhCZaNrAZ7pDE%3D&reserved=0 Thanks for feedback. You might try this cmdlet in EXO PowerShell:
Set-Mailbox -ExcludeFromOrgHolds
which is documented here: https://docs.microsoft.com/en-us/microsoft-365/compliance/identify-a-hold-on-an-exchange-online-mailbox?view=o365-worldwide&preserve-view=true#next-stepshttps://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fmicrosoft-365%2Fcompliance%2Fidentify-a-hold-on-an-exchange-online-mailbox%3Fview%3Do365-worldwide%26preserve-view%3Dtrue%23next-steps&data=04|01|Luke.Allinson%40newsignature.com|93299952b28d421b369208d8d904f385|a1a2578a8fd34595bb187d17df8944b0|1|0|637497962582058253|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=YxVT%2BpR1BICl2BAQtuYo16xkUe2nQvwAykBuuydWcWA%3D&reserved=0
also see https://docs.microsoft.com/en-us/powershell/module/exchange/set-mailboxhttps://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fpowershell%2Fmodule%2Fexchange%2Fset-mailbox&data=04|01|Luke.Allinson%40newsignature.com|93299952b28d421b369208d8d904f385|a1a2578a8fd34595bb187d17df8944b0|1|0|637497962582058253|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=WupTM44EA9XGskn2AAVgAMJwY3Bw4b8IL490wxTmOCM%3D&reserved=0
I'll look into adding that procedure to this topic on deleting an inactive mailbox.
Also as an FYI, we do recommend using an explicit retention policy exclusively for inactive mailboxeshttps://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fmicrosoft-365%2Fcompliance%2Finactive-mailboxes-in-office-365%23inactive-mailboxes-and-microsoft-365-retention-policies&data=04|01|Luke.Allinson%40newsignature.com|93299952b28d421b369208d8d904f385|a1a2578a8fd34595bb187d17df8944b0|1|0|637497962582068204|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=EqHZPnK1ECZek4GtseJ8cgrMhcG%2BnFTt3%2BpFM3NFPwg%3D&reserved=0, which may help make them easier to manage after the fact.
I'm also looking into your other github issue you logged against the change hold duration for inactive mailbox topics.
Note also that even though In-Place Holds have been deprecated, you can still use the Remove-MailboxSearch cmdlet to remove an in-place hold so that an inactive mailbox can be deleted. Get-MailboxSearch can also be used to get info about in-place holds.

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fmicrosoft-365-docs%2Fissues%2F4246%23issuecomment-785363859&data=04|01|Luke.Allinson%40newsignature.com|93299952b28d421b369208d8d904f385|a1a2578a8fd34595bb187d17df8944b0|1|0|637497962582068204|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=S9k06ZA8IHejyo%2F6V99LMYyzA8MP1Ivtx19i06pRx5E%3D&reserved=0, or unsubscribehttps://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAS7JJYIYLNRNJZXG7K26TS3TAVQJ7ANCNFSM4YFFUGWQ&data=04|01|Luke.Allinson%40newsignature.com|93299952b28d421b369208d8d904f385|a1a2578a8fd34595bb187d17df8944b0|1|0|637497962582078160|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=2oTUF7x6o2maYD%2Bb7okFoI2jL0VZ1Nul9%2BL4cCNHPyw%3D&reserved=0.

Closing. Info about removing inactive mailboxes from both org-wide and explicit retention policies added to this topic on deleting inactive mailboxes.


Cannot modify plasticity constant and LTP/LTD multiplier for memory area efferent

When a memory connection is projected to another cortical area, plasticity can be enabled but plasticity parameters are not.

this seems to be fixed with the rebuild of the mapping window


Handle reads on STDIN

Closes #1434

@samrat FYI, this PR has some feedback for you to address. :)  No rush though, just making sure it does not get lost.

:umbrella: The latest upstream changes (presumably #1460) made this pull request unmergeable. Please resolve the merge conflicts.

@samrat what is the status here? Do you still plan to work on this?

@RalfJung Apologies for the lack of updates here, and for the delay. I'll try to work on it this weekend and address the feedback on the PR.

No need to rush, I'd just like to close this PR and give other contributors a chance in case you decide to not work on this for the foreseeable future. :) But

Does anyone reading along have an idea for how to properly test this?

@RalfJung I've addressed your comments.
This does introduce some duplication with read, so I attempted factoring out the common parts into a method that takes impl Read and so can read both File's and Stdin: https://github.com/samrat/miri/commit/3b9c8d3cd13bf3ad6a4badbc90ab3bc880d6dba2#diff-560909e2fdd6fac0fb0b832d9470ac7cR438. Currently, I'm not sure how to resolve a multiple mutable borrows type error that results with this approach.
Do you think this approach is workable?

This does introduce some duplication with read

True. Let's go with this for the PR though, and do refactoring later.
IMO the proper fix here is to handle FDs 1-3 in fs.rs together with the rest of them.

Thanks. :)
@bors r+

:pushpin: Commit f4d1841811c260c96c71a41774d3cb61b62dad7f has been approved by RalfJung

:hourglass: Testing commit f4d1841811c260c96c71a41774d3cb61b62dad7f with merge b021209b0e889d9c61ec41c4016393f7415e69e8...

For the read refactoring, if you want to work on that, could you open an issue? I am on vacation now, but I can write up mentoring instructions in about a week or so when I am back.

:sunny: Test successful - checks-travis, status-appveyor
Approved by: RalfJung
Pushing b021209b0e889d9c61ec41c4016393f7415e69e8 to master...


Have checkout flow consume checkout.js

Rather than paypal.checkout.v4.js

Done for checkout flow, still needs to be done for guest flow.

Done, awaiting push.


Save queueing seems broken

When creating a child resource of a new resource, an error occurs when trying to save the child resource.
The error comes from the server and it says it's parent doesn't exist. This is true because we havent saved the parent yet but we have some logic in Store that should prevent this and queue the child to save after its parent has finished saving.

Issue is caused by #967


Updated project to work with new Elcodi v.

Warning! Requires https://github.com/elcodi/elcodi/pull/1004 to be merged and new tag.

Removed all phpunit tests
Added new compat with mmoreram/symfony-bundle-dependencies
Changed the usage in the Kernel

Let me know when https://github.com/elcodi/elcodi/pull/1004 is merged, so I can restart tests :)

@EmanueleMinotto I just updated the elcodi/elcodi version to new one, and tests are automatically updated :)


Update reconciliation.md

typo on this page.

I don’t see the typo. Lack of space is intentional.


German translation

Probably not perfect, but much better than before. I have already tested it on my server. There are still some texts that cannot be translated with the file (e.g. alias page). If new keys are added, I will be happy to update them. I'm looking forward to the further updates :-)

#254 can be resolved with this translation-file.

There are still some texts that cannot be translated with the file (e.g. alias page).

sorry, not sure i get this part..?

If new keys are added, I will be happy to update them.

I don't think we plan to do so anytime soon. :)
otherwise looks great and I'd merge?

Alias Page: Here I didn't find the corresponding key to translate.

I'll merge based on cryptix's comment "otherwise looks great and I'd merge".
Thanks for your contribution!


Update softdeleteable-filter.rst

update softdeleateble configuration example
I think the the configuration example is related to an older version.

The example uses the expanded syntax (supporting multiple entity managers), while you switch it to the shortcut syntax (supporting only the default entity manager). But both are valid. and the documentation has a note after that code snippet about the short syntax, which would not make sense if the code snippet shows the short syntax and not the expanded syntax.

thank you @stof


Lutz von Hohenzollern (G4)

text: The pool loss is now applied after the controller is ousted. (So ruling 2 is now incorrect)
link: https://www.vekn.net/forum/rules-questions/79952-when-does-lutz-ability-trigger

Duplicate


typo

Haha yeah not a bad idea, good catch. Some day I intend to try running code before publishing it ;)


Fix Home Assistant media viewer for new Frigate versions

https://github.com/blakeblackshear/frigate/pull/6320 changed the events API to move box, region, score and top_score into a "data" sub-struct

@NickM-27 Do these old references in frigate need to be updated as well?
maintainer.py:31
ha_notifications.md:79
mqtt.py:25-92

Even maintainer.py:31? Those are Events

Even maintainer.py:31? Those are Events

They are just labeled that way because mypy requires a label, they are actually just a dict and come from here https://github.com/blakeblackshear/frigate/blob/f2ff55dba2c8548fedca3f4a4a3da7d7a5feaaf8/frigate/object_processing.py#L264 so yes it is correct

Fixed

@madsciencetist Almost! Looks like formatting isn't quite right, run the precommit manually and commit/push the changes?

Might I suggest that you not require workflow approval, so that CI failures are immediately evident!

Might I suggest that you not require workflow approval, so that CI failures are immediately evident!

I'll counter-suggest installing the precommit in your local client with pre-commit install so it runs before your commits, that will catch these issues immediately in your local environment. With that said, I wouldn't object at all to changing the workflow approvals, but that's something only the repo owner (not me!) can do.

Thanks @madsciencetist !


Failed installation on Julia 1.10

The installation failed on julia ver. 1.10 with the error message showing:
Updating registry at ~/.julia/registries/General.toml
Resolving package versions...
ERROR: Unsatisfiable requirements detected for package JLD2 [033835bb]:
JLD2 [033835bb] log:
├─possible versions are: 0.1.0-0.4.45 or uninstalled
├─restricted by julia compatibility requirements to versions: 0.4.28-0.4.45 or uninstalled
└─restricted by compatibility requirements with DSGE [6cf23378] to versions: 0.1.0-0.3.3 — no versions left
└─DSGE [6cf23378] log:
├─possible versions are: 0.5.0-1.3.0 or uninstalled
└─restricted to versions * by an explicit requirement, leaving only versions: 0.5.0-1.3.0
This seems to be related to the issue #216, which looks like it hasn't been addressed. Can someone take a look at this issue, please? Thanks!

As mentioned in #216, the DSGE.jl package still works on Julia's current Long-term support (LTS) release: v1.6.7. You can download it from here.


Cache Handling

I want to know the point at which the cache generated thumbnail got deleted. Will i have to handle it manually by myself or the deletion of those cache generated thumbnail is automated.. If Yes.. How?
Thanks in advance and best regards

Hi @Oguntoye, As far as i know there is no in-built mechanism for deleting the cache generated. In my application I have handled it manually, by deleting the cache by using RNFS.


Convert mlscript terms to typescript declarations

Closes #57

By the way, the right thing to do here is to keep track of variance as an Option[Boolean] parameter, not special-case function types. For example a function type in negative position has its polarities reversed. And bounds types may appear nested deep in other types, as in S -> List[A..B] where A..B is the bounds type.

Since quite a few examples have single letter names for functions or variables it might be confusing to have a single letter type alias as well.
If t style prefix does not look good I can remove it.

it might be confusing to have a single letter type alias as well

You mean type variables, right? Please make sure to use the correct terminology, to be sure we're talking about the same things.

You mean type variables, right? Please make sure to use the correct terminology, to be sure we're talking about the same things.

//│ type a = (arg0: int) => a
//│ export declare const l: a

As an example. I was saying that a is a type alias and that identifier l is ascribed with. I thought it would be a confusing, but it looks fine.

As an example. I was saying that a is a type alias and that identifier l is ascribed with. I thought it would be a confusing, but it looks fine.

For type variables that we end up treating as type variables, it may indeed probably be better to give them another name. But that should not be at the expense of mangling the names of all type variables.

One key change requested is to make typegen context immutable and use copy semantics to pass it around.
The challenge is that apart from polarity all the other fields - argCounter, existingTypeVars, newTypeAlias, and newTypeParams are modified by the recursive toTsType function. And then these changed values need to be passed backup because they are needed for generating final output. For e.g. Recursive(uv, body) adds a new type alias and removes a type variable.
This can be done using variable capture as mentioned in a previous comment. But internally this still works by making a function object with some mutable variable fields. By creating a separate class for it, I found it easier to read and document.

So, here is what I think we should do.
First, we should remember the big picture – the goal here is to generate a .d.ts file from a given MLscript typing unit. Crucially, the type aliases we introduce as helpers alongside the main exported definitions should not have name clashes between each other. Therefore, what you need to do here really is a form of "fresh name" management. This is why I originally suggested you make use of @chengluyu's Scope abstraction (it'd be mainly for generating type aliases). This abstraction already handles unique name generation in a nice way.
Second, polarity should simply be an immutable function parameter,
Third, newTypeAlias and newTypeParams should be a local list variable or a local mutable ListBuffer. They have no business being exported as visible mutable state outside of the function.
Finally, I don't quite understand why existingTypeVars needs to be mutable. Chances are it's better as simply an immutable val simply storing the current ShowCtx's variables.

I don't really like these definitions being added to TypeImpl. Why not put all the ts-gen things in its own file, to more cleanly separate concerns?

I've moved the current ts type generation logic into a separate class called TsTypeGen it's own package - mlscript.codegen.typescript. This is considering that the typedef type gen related changes will live in this package, while the common codegen functionality between js and ts may be shared through the mlscript.codegen package.

What does this line achieve? What if there happens to be the same recursive variable used twice, as in (... as 'a) -> (... as 'a)? (This is valid; 'a happens to be bound twice.) This logic is very fishy.

Currently an example like this will converted like this.
(f -> a as a) -> (g -> a as a)
type newF = f -> newF
type newG = g -> newG
export const res: newF -> newG

Is this is an acceptable conversion? The two recursive functions will be aliased with different names. I am not able to think up an example where two different recursive types will produce the same type.

@twitu

Is this is an acceptable conversion?

Yes. I was just pointing out that the previous logic was broken.

I am not able to think up an example where two different recursive types will produce the same type.

I don't actually know what you mean by this. A typical example is int -> 'a as 'a and int -> int -> 'b as 'b, which are different recursive type expressions which refer to equivalent types. But this is out of topic, so I don't think that's what you meant.

Things you bind to type aliases may capture local type variables, like 'c above. You need to add these type variables as parameters to the type aliases.

:ts
def f: ('c -> 'a as 'a) -> 'c -> int
//│ f: ('c -> 'a as 'a) -> 'c -> int
//│ // start ts
//│ export type ta = (arg1: [tc]) => ta
//│ export declare const f<tc>: (arg: [ta]) => (arg2: [tc]) => int
//│ // end ts

I tried the fixing the above example you showed in a6a4e00. The current output is.
//│ // start ts
//│ export type a<c> = (arg: [c]) => a
//│ export declare const f<c>: (arg: [a<c>]) => (arg1: [c]) => int
//|  // end ts

It's still incorrect because it's slightly more challenging than I expected because of this -

inside the type alias a<c> a is now an applied type but inside the Type tree it's still being considered as a type variable.

We could pre-compute all the type variable names using ShowCtx and then use type scope to give each type variable a friendly name and in the type variable mapping map a to -> a<c_friendly_name, d_friendly_name.....>. So that when type var a was found it's friendly name would be it's applied version. But this approach will not work if there are nested recursive types. For e.g.
def f: (('b -> 'a as 'b) -> 'c as 'c) -> 'b -> 'c -> int

When we begin typegen for c, we map c -> c<b>. But once we visit b and figure out it's recursive function it becomes a separate type alias and is not longer a type variable. The above approach, where we we pre-compute all the type variables as type parameters before completely visiting type c, fails to consider that a type variable might be removed.
The approach I can think of might require a combination of both

add another field to typegen context like ignoreTypeVar this keeps track of any type variables that have been removed.
modify the type tree of a recursive body and map the type nodes to applied type nodes with appropriate parameters.

There's another case I wanted to confirm.

The case where a recursive type might be used as a type variable outside it's body. As far as I understood as a, a will only be used inside the body of the recursive type it cannot exist outside, because it's ascribing the whole function to it's own output type.
def f: ('c -> 'a as 'a) -> 'a -> 'c -> int
('c -> 'a as 'a) -> anything -> 'c -> int

Again 'a will be considered a type variable even though it maybe an applied type. Although in this particular case it's being inferred as anything.

You still don't handle function parameter lists correctly. Remember that every function type has a tuple type as its left-hand side. It's a sort of invariant (in a sense we could refactor FunctionType to be declared as case class FunctionType(lhs: TupleType, rhs: SimpleType) but we don't currently do it for various reasons). These tuple types should be interpreted as TS multi-parameter lists.

I wanted to check I fully understand the issue well, here's the current state.
def g (x, y) = x + y
def h (x, (y, z)) = y z + x
def l m n = m + n
//│ // start ts
//│ g: (int, int,) -> int
//│ h: (int, ('a -> int, 'a,),) -> int
//│ l: int -> int -> int
//│ export declare const g: (arg: [int, int]) => int
//│ export declare const h<a1>: (arg: [int, [(arg1: [a1]) => int, a1]]) => int
//│ export declare const l: (arg: [int]) => (arg1: [int]) => int
//│ // end ts

Each separate argument and () tuple/parameter list is getting converted into it's own fixed length array. Nested tuples are becoming fixed length nested arrays. Have I misunderstood something in this part?

Things you bind to type aliases may capture local type variables, like 'c above. You need to add these type variables as parameters to the type aliases.

I realized that my previous comment was proposing a complex solution because I was constrained to a single pass approach. Instead I think this can be solved in a better way by doing two passes on the type.

Find all the type variables that will no longer by type variables after the type gen
Do the type gen

Two passes might also help with some complexities with classes and methods type gen that I'm not aware of right now.

I'm observing a tricky case where the definition will come after the declaration.
def convert: string -> int
def convert d = 4

Currently this will throw an error because typegen has already allocated the name convert in the term scope. This can be fixed by adding extra checks or my using addition Scope helper methods.
Q. In such cases the type of the declaration should be used or the type inferred from the definition? I remember you had mentioned that in such situations for methods, mlscript only shows the declared type and not the type inferred from the definition.
Then there is the case where there is only a declaration. In such cases, export "declare" const convert will not be correct. Because the function won't be defined in the runtime.
def convert: string -> int

This grid summarizes it.

declaration
definition
translate

:heavy_check_mark:
:heavy_check_mark:
which type to use?

:heavy_check_mark:
:red_circle:
export but don't declare

:red_circle:
:heavy_check_mark:
export declare and use inferred type

:red_circle:
:red_circle:
do nothing

You should always review the diffs that your changes effect on the test files. It seems you did not notice  several ones like this:
//│ res: int
//│ // start ts
//│ export declare const cont: (arg1: int) => int
-//│ export declare const app<a>: (arg1: int) => (arg3: (arg5: int) => a) => a
+//│ export declare const app: (arg1: int) => (arg3: (arg5: int) => a) => a
//│ export declare const res: int
//│ // end ts

This is because you forgot the base case for TypeVar in nonRecTypeVarSet.

Q. In such cases the type of the declaration should be used or the type inferred from the definition? I remember you had mentioned that in such situations for methods, mlscript only shows the declared type and not the type inferred from the definition.

You should use the declared type indeed. Note that in the diff-tests, things can also be re-declared. I don't think you should crash here. Just re-emit the same name like you do for res.

Then there is the case where there is only a declaration. In such cases, export "declare" const convert will not be correct. Because the function won't be defined in the runtime.

Ideally, an MLscript file could be used to provide type definitions without implementations, just like TS declaration files. So the declaration may well be correct even if it's not accompanied by an MLscript definition. Just generate it normally.

I've removed the check for already declared terms so shadowing is now possible.
However there is a challenge with translating a term definition to show it's type declaration (if previously declared). Currently TsTypeGen does not store such a mapping from a term name to it's declaration. So there is no way to access the previous declaration.
It is possible to re-use Scope's lexicalTypeSymbols field to store the declaration as a TypeSymbol, although it's not really a type symbol. Then for any new definition the type from the declaration can be looked up and reused.

It is possible to re-use Scope's lexicalTypeSymbols field to store the declaration as a TypeSymbol, although it's not really a type symbol.

That sounds unholy. I don't know why you'd need that. Can't you just check if the thing was declared before, and if it was, simply do not re-emit a TS type?
Anyway, better to keep things as simple as possible here, rather than find ugly workarounds. In the end this logic will likely change anyway!

TS requires exported values to have an explicit type so just having export declare const <name> will not be valid TS. In the latest commit I've added a // skip <name> in place of an already defined/declared term.

By "do not re-emit a TS type" I of course meant to skip the const declaration, not to literally leave the declaration without a type 🙄

Okay, so after looking at the latest change, I think it's better to redeclare the type of all declared/defined identifiers even if they have already been declared before.
I prefer to see this:
//│ export type b<a> = a | (arg1: (arg3: b<a>) => [int, int] & a) => [int, int]
//│ export declare const weird<a>: b<a>
//│ export type a = [int, a]
//│ export declare const weird: (arg1: a) => int
//│ export declare const weird<a>: (arg1: a | [int, bool]) => a

Rather than this:
//│ // skip weird
//│ // skip weird
//│ // skip weird

Remember that this is just the logic for the tests, and in this context we don't want to skip any possibly useful output.  Again, the actual logic for generating valid .d.ts files will adapted adequately. Sorry for the back and forth!


Add sbt tmp files to .gitignore

sbt stores its distribution in /sbt when running from checked in sbt.sh (#1990)

Why did you install sbt in a sub directory of marathon? I still feel I am missing something obvious...

Never mind. I installed sbt locally month ago and assumed it was checked in.


Feature to skip blank/empty rows, or commented rows

@quinnj: Does this work? It would be great if there was a similar mechanism like DataFrame's allowcomments and commentmark option for readtables.


The ISO3166_2.doc usage appears to be out of date

The docstring mentions
from iso3166_2 import *

#get ALL subdivision data for ALL countries
all_subdivisions = ISO3166_2()

#get ALL subdivision data for Lithuania, Namibia, Paraguay and Turkmenistan
lt_subdivisions = ISO3166_2("LT")
na_subdivisions = ISO3166_2("NA")
pry_subdivisions = ISO3166_2("PRY")
tm_subdivisions = ISO3166_2("795")

#get subdivision names, local names, types, parent codes, flag urls and lat/longitudes
#   for GB-ANS, GB-BPL, GB-NTH, GB-WGN and GB-ZET subdivision codes for the UK
gb_subdivisions = ISO3166_2("GB")

gb_subdivisions['GB-ANS'].name
gb_subdivisions['GB-BAS'].localName
gb_subdivisions['GB-BPL'].type
gb_subdivisions['GB-NTH'].parentCode
gb_subdivisions['GB-WGN'].flagUrl
gb_subdivisions['GB-ZET'].latLng

#get list of all subdivision codes for Botswana
bw_subdivisions = ISO3166_2("BW")
bw_subdivisions.subdivision_codes()

#get list of all subdivision names for Japan
jpn_subdivisions = ISO3166_2("JPN")
jpn_subdivisions.subdivision_names()

#adding custom Belfast province to Ireland
all_subdivisions = ISO3166_2()
all_subdivisions.custom_subdivision("IE", "IE-BF", name="Belfast", local_name="Béal Feirste", type="province", lat_lng=[54.596, -5.931], parent_code=None, flag_url=None)

#searching for the Monaghan county in Ireland (IE-MN) - returning exact matching subdivision
all_subdivisions = ISO3166_2()
all_subdivisions.search("Monaghan")

#searching for any subdivisions that have "Southern" in their name, with a likeness score of 0.8
all_subdivisions = ISO3166_2()
all_subdivisions.search("Southern", any=True, likeness=0.8)

Well a few of these things simply don't work.
For example
>>> gb_subdivisions = ISO3166_2("GB")
>>> gb_subdivisions['GB-ANS'].name
*** ValueError: Invalid alpha-2 code input: GB-ANS.

Hi @charettes
Apologies for the delay, I've just released version 1.6.0 of the software with a lot of updates and a few bug fixes. This issue should be resolved now. Please refer to the docs below for some updated usage examples: [https://iso3166-2.readthedocs.io/en/latest/usage.html]. Let me know if everything is working as expected.
Thanks!

Thank you @amckenna41, appreciated!


Is hrs package used for ECG or PPG signal?

I am process the PPG signal but I got error:

This is the code I am implementing

from hrv.classical import frequency_domain
from hrv.io import read_from_text
ppg = np.loadtxt('ecg.txt', delimiter=',')
results = frequency_domain(
    rri=ppg,
    fs=64.0,
    method='welch',
    interp_method='cubic',
    detrend='linear'
)
print(results)

The error:

Traceback (most recent call last):

  File "/Users/yuyang01/Documents/publication/journal/workloadVR/python/hrv.py", line 51, in <module>
    detrend='linear'

  File "/Users/yuyang01/miniconda3/envs/py37/lib/python3.7/site-packages/hrv/classical.py", line 188, in frequency_domain
    rri = _interpolate_rri(rri, time, fs, interp_method)

  File "/Users/yuyang01/miniconda3/envs/py37/lib/python3.7/site-packages/hrv/utils.py", line 77, in _interpolate_rri
    return _interp_cubic_spline(rri, time, fs)

  File "/Users/yuyang01/miniconda3/envs/py37/lib/python3.7/site-packages/hrv/utils.py", line 83, in _interp_cubic_spline
    time_rri_interp = _create_interp_time(time, fs)

  File "/Users/yuyang01/miniconda3/envs/py37/lib/python3.7/site-packages/hrv/utils.py", line 97, in _create_interp_time
    return np.arange(0, time[-1] + time_resolution, time_resolution)

TypeError: 'NoneType' object is not subscriptable

Here is the data:
ppg.txt

Best regards,

Hi @Yuyang01, how are you doing?
The hrv expects that you already have the R peaks detected and you already have the RRi series.
Based on the signal you've attached in the issue, you can detect the R peaks doing the following:
import numpy as np
from biosppy.signals import ecg

signal = np.loadtxt('ppg.txt')

# you need to provide fs = the frequency in which the ECG was recorded
out = ecg.ecg(signal=signal, sampling_rate=fs, show=True)

rri = np.diff(biosppy_ecg["rpeaks"]) / fs

Thank you. I will give it a try:)


Fails to start on debian (serverSIOCSIFADDR: No such device)

Hi,
Thanks for this script but it seems that every time I attempt to start it on debian 7 kernal 3.2.0-4-amd64 I get the following error:
[FAIL] VPN 'server' is not running ... failed!
sherief@PersonalServer:~$ sudo service openvpn start
[....] Starting virtual private network daemon: serverSIOCSIFADDR: No such device
: ERROR while getting interface flags: No such device
SIOCSIFDSTADDR: No such device
: ERROR while getting interface flags: No such device
SIOCSIFMTU: No such device
 failed!

Something is probably wrong with your TUN adapter, not a problem with the script. Reboot your server and try again, a kernel update could cause this.
If then is still happening, you'll need to troubleshoot this by yourself.


[*] character gets generated at run time and breaks the liquibase build

Search first

[X] I searched and no similar issues were found

Description
I encountered an error while attempting to add a new changeSet to the liquibase XML file. The purpose of this changeSet was to introduce a unique index. However, when I built the changes, I encountered the following error message. Upon careful observation, I noticed that the generated SQL contained the symbol [*], which caused the build to fail. I have attempted several solutions to address this issue, but all of them resulted in the same problem.
Here is the original code snippet for the changes:
<changeSet author="test" id="1687906863480-2">
    <preConditions onFail="MARK_RAN">
        <tableExists tableName="city"/>
    </preConditions>
    <comment>Add unique index on city table</comment>
    <createIndex indexName="idx_unique_active_name_county_state" tableName="city" unique="true">
        <column name="name"/>
        <column name="state_id"/>
        <column name="county_id"/>
    </createIndex>
    <modifySql>
        <append value="WHERE is_deleted = 'TRUE'"/>
    </modifySql>
</changeSet>
<changeSet author="test" id="1687906863487-2">
    <preConditions onFail="MARK_RAN">
        <tableExists tableName="city"/>
    </preConditions>
    <sql>
        CREATE UNIQUE INDEX idx_unique_active_name_county_state ON city (name, state_id, county_id) WHERE (is_deleted = 'FALSE');
    </sql>
</changeSet>

<changeSet author="test" id="1687906863489-2">
    <preConditions onFail="MARK_RAN">
        <tableExists tableName="city"/>
    </preConditions>
    <sql>
        CREATE UNIQUE INDEX idx_unique_active_name_county_state ON city(name, state_id, county_id,is_deleted='FALSE'));
    </sql>
</changeSet>

And here is the error message that was received:
Reason: liquibase.exception.DatabaseException: Syntax error in SQL statement "CREATE UNIQUE INDEX idx_unique_active_name_county_state ON city (name, state_id, county_id) [*]WHERE (is_deleted = 'FALSE')"; SQL statement:
CREATE UNIQUE INDEX idx_unique_active_name_county_state ON city (name, state_id, county_id) WHERE (is_deleted = 'FALSE') [42000-214] [Failed SQL: (42000) CREATE UNIQUE INDEX idx_unique_active_name_county_state ON city (name, state_id, county_id) WHERE (is_deleted = 'FALSE')]

Steps To Reproduce
<changeSet author="test" id="1687906863480-2">
    <preConditions onFail="MARK_RAN">
        <tableExists tableName="city"/>
    </preConditions>
    <comment>Add unique index on city table</comment>
    <createIndex indexName="idx_unique_active_name_county_state" tableName="city" unique="true">
        <column name="name"/>
        <column name="state_id"/>
        <column name="county_id"/>
    </createIndex>
    <modifySql>
        <append value="WHERE is_deleted = 'TRUE'"/>
    </modifySql>
</changeSet>
<changeSet author="test" id="1687906863487-2">
    <preConditions onFail="MARK_RAN">
        <tableExists tableName="city"/>
    </preConditions>
    <sql>
        CREATE UNIQUE INDEX idx_unique_active_name_county_state ON city (name, state_id, county_id) WHERE (is_deleted = 'FALSE');
    </sql>
</changeSet>

<changeSet author="test" id="1687906863489-2">
    <preConditions onFail="MARK_RAN">
        <tableExists tableName="city"/>
    </preConditions>
    <sql>
        CREATE UNIQUE INDEX idx_unique_active_name_county_state ON city(name, state_id, county_id,is_deleted='FALSE'));
    </sql>
</changeSet>

Expected/Desired Behavior
Should be generating a unique index idx_unique_active_name_county_state
Liquibase Version
4.9.1
Database Vendor & Version
No response
Liquibase Integration
No response
Liquibase Extensions
No response
OS and/or Infrastructure Type/Provider
No response
Additional Context
No response
Are you willing to submit a PR?

[ ] I'm willing to submit a PR (Thank you!)

Hello @go2sujeet , how are you?
I have a couple of questions, as I haven't been able to replicate this bug.
I'm testing it using the CLI and SQL Server.
Firstly, are you using Liquibase from the CLI? Or are you using a different integration (like Maven or Gradle)?
Secondly, I noticed that there's an extra parenthesis at the end of your last SQL query, could you try deleting it and re-running the command?
Lastly, in that same query at the end, "is_deleted='false'" isn't valid SQL Server syntax, are you using a different database?
Thank you in advance,
Tatiana

@go2sujeet - this looks like a database extension-specific issue. Which database platform are you using?


Indicate of failured refreshes

Currently, the status of a refresh is either 'Completed, NoHistoryorUnknown`.
Is there any way to tell if a refresh has failed?

Hi Carlo. I have not been maintaining this airflow plugin for quite a while now. Feel free to fork it and investigate it further.


Linker problems

Can anyone tell me why this is happening:
Undefined symbols for architecture armv7:
"OBJC_CLASS$_ZXDecodeHints", referenced from:
objc-class-ref in S2VC4.o
"OBJC_CLASS$_ZXCapture", referenced from:
objc-class-ref in S2VC4.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Environment:
Xcode5
Device is my 5S, attached to mac.
Architectures:  Standard (in my code and in pods)
Build active architecture only:  NO
Valid Architectures:  arm64, armv7 armv7s
Profile:  team provisioning provide
ZXing downloaded about a week ago.

This is probably a configuration issue: http://stackoverflow.com/a/6429568


CSS

#CSS
##As a boot camp student
I want the prework notes to be structured on a webpage
So that I can easily find and read the information
GIVEN a Prework Study Guide website
WHEN I view the study guide
THEN I see a dark blue header and footer, and four boxes with a shadow

done


JBPM-4847 - Fix popover not hiding after row selection

Review implementation so showing and hiding popover is tied to GWT events.
Clean up visible popovers once re-rendering cells.

+1 to merge.

https://github.com/uberfire/uberfire-extensions/commit/02ff3c9590bbbb379389d0a9f44d4fc03627122e


[Feature]: create a demo of VSF & Vendure & Storyblok

How the project can be improved?
One of the steps to of post MVP is to have a CMS integration. I picked Storyblok as it is open source and not sticked to any ecommerce platform.
https://github.com/vuestorefront/storyblok
What are the acceptance criteria?

[ ]

Additional information
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Integration is available as a part of template-vendure repo that is used to generate project from cli -> https://github.com/vuestorefront/template-vendure/tree/feat/storyblok-integration


Add hex and octal escapes

Closes https://github.com/jyn514/rcc/issues/122
r? @pythondude325

Codecov Report

Merging #283 into master will decrease coverage by 0.49%.
The diff coverage is 84.78%.

@@            Coverage Diff            @@
##           master     #283     +/-   ##
=========================================
- Coverage   78.36%   77.86%   -0.5%
=========================================
  Files          25       25
  Lines        6614     6556     -58
=========================================
- Hits         5183     5105     -78
- Misses       1431     1451     +20

Impacted Files
Coverage Δ

src/lex/tests.rs
93.54% <100%> (+0.32%)
:arrow_up:

src/lex/mod.rs
87.39% <82.5%> (-0.4%)
:arrow_down:

src/lex/cpp.rs
73.63% <0%> (-6.25%)
:arrow_down:

tests/runner.rs
88.15% <0%> (-0.74%)
:arrow_down:

src/data/error.rs
95.41% <0%> (+1.52%)
: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 e406456...436420f. Read the comment docs.


Mark *Laws functions NOINLINE (#105)

GHC 8.10 takes 90s on my machine to compile with optimisations, with
most of the time spent in the Simplifier.
With the added NOINLINE pragmas, it "only" takes 8s, vs. 0.8s without
optimisations.
I also added some files for development with nix. Feel free to drop that commit if you don't want it.
Fixes #105.

If you insist on adding nix files, can you add a comment saying something like
# this configurtion is contrib, if it doesn't work anymore, please fix it and submit a PR

Let me move this repository to GHA to make CI run.

Rebased and merged in https://github.com/haskellari/lattices/pull/108, thanks!


fix(rpc): fix commands handling

Overview
Fixes all found rpc issues
Fixes https://github.com/celestiaorg/celestia-node/issues/2503 and https://github.com/celestiaorg/celestia-node/issues/2500
Checklist

[ ] New and updated code has appropriate documentation
[ ] New and updated code has new and/or updated testing
[ ] Required CI checks are passing
[ ] Visual proof for any user facing features like CLI or documentation updates
[ ] Linked issues closed with keywords

Codecov Report

Merging #2515 (a9ac16a) into main (8a06f31) will decrease coverage by 0.11%.
Report is 3 commits behind head on main.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main    #2515      +/-   ##
==========================================
- Coverage   52.48%   52.38%   -0.11%
==========================================
  Files         156      156
  Lines        9995    10020      +25
==========================================
+ Hits         5246     5249       +3
- Misses       4283     4305      +22
  Partials      466      466

Files Changed
Coverage Δ

cmd/celestia/rpc.go
13.79% <0.00%> (-0.85%)
:arrow_down:

share/getters/cascade.go
71.62% <0.00%> (-6.64%)
:arrow_down:

... and 8 files with indirect coverage changes

testing out https://based64.xyz (so testing retrieval of submitted plain-text) on this branch and it is not, functioning as expected, so this doesn't resolve the issue of plain text data that is expected to be returned in base64, being returned as base64

my version matches last commit on this PR:
Semantic version: v0.11.0-rc8-13-ga9ac16a2
Commit: a9ac16a24181094162b54b2ce5e3616037038fdc
Build Date: Thu Jul 27 14:01:39 CEST 2023
System version: arm64/darwin
Golang version: go1.20.2

as an example, i will try to submit "gm" and retrieve base64 that converts to string as "gm". alternatively, as explained in this comment: https://github.com/celestiaorg/celestia-node/issues/2503#issuecomment-1641782724 the only difference is i am using the version above

celestia light start --core.ip consensus-full-arabica-9.celestia-arabica.com --p2p.network arabica
export CELESTIA_NODE_AUTH_TOKEN=$(celestia light auth admin --p2p.network arabica)
celestia rpc blob Submit 0x42690c204d39600fddd3 '"gm"'
celestia rpc blob GetAll [blockheightfrom#3] 0x42690c204d39600fddd3
it should convert to "gm" with some metadata, it doesn't

oddly, converting from base64 -> hex and then from hex -> text returns the same data as converting base64 -> text as shown above:

linking docs context https://github.com/celestiaorg/docs/pull/915#issuecomment-1653527378

oops 😅

I feel like #2503 has two potential issues inside.

Issue with converting(that @jcstein mentioned in Actual Result)
Issue with incorrect handling of rpc commands(see Relevant Output).

This PR is now fixing only issue #2. I need to look deeper what is wrong with the serialisation.

FYI @jcstein , we changed the plaintext flag to base64 in order to convert data to the human readable format by default. To get the data as base64 string, you have to pass --base64=true

okay, so what happens if no --plaintext or --base64 flag?

Data will be converted to the plain text by default


Fixed django.conf.urls import error in django 4

django.conf.urls is deprecated in django 4 and thus throws an error.I have fixed by using from django.urls import re_path
instead

Can you merge this, please? It's been too long!!!


To add working steps in Nth term of HP calculator

Is your feature request related to a problem? Please describe.
I would like to add working steps in Nth term of HP calculator

Hi, I want to work on this issue I will start working on it as soon as I get assigned!! I am a part of GSSoC'21.
Kindly assign this issue to me!
Discord Username : Abhijeet Sinha(P)
Discord Tag: #4018

Go ahead
Deadline 10 May,2021


Mime types on scripts and css

Was unable to implement application options to prevent sniffing files and overriding the Content-Type header when using the standard admin Views because mime types are not set for the css and script content.
As a workaround I used a custom version of the admin app and added type="text/css" and type="text/javascript" tags where needed.
Should  blogifier.core have these set by default?
Simon

That no longer relevant with all the latest changes.


Is there a way to ignore type errors?

I want to ignore TypeError messages. Is there a way to specify which errors shall be shown?

Very simple to add a flag for that. See the -i flag which is implemented like this in includes/cli.php:
        case 'i':
        Log::setOutputMask(Log::getOutputMask()^Log::EUNDEF);
        break;

Works like a charm. Thanks.


[v6 rc3][Bug] valid/invalid props are not updated

It seems like the valid & invalid props aren't updated in my component.

I think I'm seeing the same thing. If I inspect the connected form component, I can see that there is an error in the syncErrors object, but invalid is false.

After looking into my issue some more, and with some help from this comment, I discovered that the fields aren't always being registered in the store, so the syncErrors don't match up with the fields that are visible on the screen.
We're doing a wizard form of sorts, but it's different from the example in the docs in that it renders fields dynamically based on data from the server. The frontend doesn't know ahead of time what the form will look like, so it uses generic components for everything. As a result, sometimes the same Field components are shared between steps in the wizard, so their componentWillMount method doesn't get called, and that's where the field is supposed to be registered.
I found a way to work around the problem by rendering a loading spinner between steps until the step data is ready, so that the field components are re-mounted every time, but I was wondering if there's a better way that I'm missing.

Closing due to inactivity.
In case you still have problems, please open a formal bug report.
Otherwise, please ask for help at StackOverflow.


De Morgan's laws

not (A and B)  <=> (not A) or (not B)

https://en.wikipedia.org/wiki/De_Morgan's_laws

Thanks, but not here. Using (not A) or (not B) is hard to understand the logic here.


LayerProtocol::layerProtocolName value to be added to comments at LTP reference attributes

Added the following text to the comment: "Referenced LTP must associate a LayerProtocol class with layerProtocolName attribute having LAYER_PROTOCOL_NAME_TYPE_AIR_LAYER as value."

Close it like this or adding a "must" statement to the leafref statement in YANG?
(@demx8as6 , @michbin)


Remove setupModel calls

While looking at a model, I realized Typescript was missing some errors; it somehow failed to infer the type from inside the function, probably because the argument passed to setupModel (the model itself) was not typed.
I figured that, since we have .git-blame-ignore-revs now, we could get rid of them and ignore the commit in the history.
This is best reviewed with "Ignore whitespace changes": https://github.com/opencollective/opencollective-api/pull/7814/files?diff=split&w=1

@znarf I'll wait for your feedback before merging this one

Ok, but we should. not squash and merge right ?
I also saw that it's possible to add comments in the .git-blame-ignore-revs, that could be useful?

Ok, but we should. not squash and merge right ?
Indeed

I also saw that it's possible to add comments in the .git-blame-ignore-revs, that could be useful?
Adding one now

Rebased


Implement Stargate V2 REST endpoints for "createTable" using new gRPC endpoint

(similar to #1426)
Stargate V2 REST implementation has accessor for Table metadata but "createTable()" missing -- Integration tests for now use SGv1 version. Implementing creation natively is possibly the last missing piece needed for full end-to-end testing of the minimal functionality (create ks, table(s); insert data; get data).

Implemented, 2 more ITs passing.


TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/103578

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/114782

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/118439

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/118468

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/118596

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/118825


Fix Documentation Examples

I am trying to follow the documentation examples, particularly:
https://github.com/SciSharp/TensorFlow.NET/blob/master/docs/source/NeuralNetwork.md
But there are several discrepancies between the code there and what is actually supported by the library today. Particularly, the MNIST data loading isn't done how the example shows, and tf.get_variable is used but does not exist, a call to tf.matmul(x, W) doesn't work because of a typing issue around W. There may be others.
I don't know how to work around these discrepancies so I am pretty stuck unable to learn how to use the library for this purpose.

Please follow the latest sample source code.


matcher.similarity gives an error

I tried the example given in the README, but I got the following error:
Python code:
import hmni

# Initialize a Matcher Object
matcher = hmni.Matcher(model='latin')

# Single Pair Similarity
matcher.similarity('Alan', 'Al')

Terminal:
Traceback (most recent call last):
  File "/home/cecile/.local/lib/python3.6/site-packages/hmni/input_helpers.py", line 33, in <module>
    from .preprocess import MyVocabularyProcessor
  File "/home/cecile/.local/lib/python3.6/site-packages/hmni/preprocess.py", line 30, in <module>
    from tensorflow.python.platform import gfile
  File "/home/cecile/.local/lib/python3.6/site-packages/tensorflow/__init__.py", line 28, in <module>
    from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
  File "/home/cecile/.local/lib/python3.6/site-packages/tensorflow/python/__init__.py", line 52, in <module>
    from tensorflow.core.framework.graph_pb2 import *
  File "/home/cecile/.local/lib/python3.6/site-packages/tensorflow/core/framework/graph_pb2.py", line 7, in <module>
    from google.protobuf import descriptor as _descriptor
  File "/home/cecile/.local/lib/python3.6/site-packages/google/protobuf/descriptor.py", line 47, in <module>
    from google.protobuf.pyext import _message
AttributeError: module 'google.protobuf.internal.containers' has no attribute 'MutableMapping'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "name_similarity.py", line 2, in <module>
    import hmni
  File "/home/cecile/.local/lib/python3.6/site-packages/hmni/__init__.py", line 1, in <module>
    from . import input_helpers, matcher, preprocess, siamese_network, syllable_tokenizer
  File "/home/cecile/.local/lib/python3.6/site-packages/hmni/input_helpers.py", line 35, in <module>
    from preprocess import MyVocabularyProcessor
ModuleNotFoundError: No module named 'preprocess'

I needed to upgrade pip, this solved it:
pip install --upgrade pip
pip install --upgrade protobuf


Godot 4 does not respect OS power settings, always selects high performance GPU.

Godot version
v4.0.alpha3.official [256069eaf]
System information
Windows 10, Vulkan, Hybrid Laptop - AMD iGPU(Ryzen 7 4800HS) + GTX 1660 Ti Max-Q
Issue description
Godot 3 always picks the correct GPU to use based on which power profile/settings are active in Windows, (Integrated low power GPU when on power saving, high performance dedicated GPU when on AC power).
Godot 4 currently always fails to do this on my system, it always picks the high performance GPU regardless of whatever power profile is active.
This makes testing on different GPU's on multi GPU systems a tedious process, I understand you can use --gpu-index to manually select which GPU to use, but this launch option does not persist correctly in the editor.
When I run the editor like this:
.\godot.exe --gpu-index 1 --path "path\to\project" -e
(gpu-index 1 being my integrated GPU, and 0 the high powered one.)
The editor opens up fine with the chosen GPU, but when I run the game for testing (F5 or F6) in the editor afterwards, it just opens up with the high performance GPU again, ignoring everything else.
Not sure if this happens on Linux, I don't have a multi-GPU device running Linux at the moment, so I can't test.
Perhaps someone else with a multi-GPU setup running Linux could test this.
Steps to reproduce
Put your system on a power saving profile or force the Godot4 executable to use the Power Saving setting in Windows, which you can set in the "Graphics Settings" pane.

Then run Godot 4 in a terminal window to see which GPU its using.
Minimal reproduction project
Not Applicable

Still present in alpha16

May need another ticket, but I experience this issue on Linux system as well. No matter what environmentals I pass to the command, Godot 4 will never use my iGPU, unless I explicitly power down the dGPU.
Interestingly vkcube exhibits the same behaviour, and during my research on this topic a commenter suggests this might be a intended (but in my opinion, bad) behaviour.
https://bbs.archlinux.org/viewtopic.php?pid=2060946#p2060946
If this commenter is correct and Godot is making the same decision, I definitely vote that Godot not be greedy and honour the user's requested GPU.

This is still an issue I am running into, I have a Linux laptop with intel integrated graphics and a dedicated graphics card. I cannot get the entirety of the editor/engine to run only on the iGPU, passing --gpu-index 0 (the iGPU, dedicated is 1) to just godot4 does not change anything in the editor, but doing godot4 --gpu-index 0 ~/Projects/projectname/project.godot -e does make the editor itself run on the integrated. However, running the project/scene makes the new window/rendering run on the dGPU. It seems like it does not pass requested GPU to any subsequent rendering contexts, project manager > editor > project/scene.

The forwarding of --gpu-index had already been fixed in #75198.
#93985 will make Godot respect the GPU preference in Windows Settings.
Is there a system-wide GPU preference for any DE on Linux?


PubSub subscription dataAsPayload flag that sends only the data/data_base64 value of the data attribute to the application

/area runtime
This feature applies only to the HTTP application protocol. This is not a usability issue with the gRPC API spec.
In some cases, the application may not need the full CloudEvent payload sent to the HTTP application. This is particularly the case with raw events, where receiving the CloudEvent wrapper is unexpected/confusing. This also avoids some performance hit in Base64 encoding/decoding when sending binary data (e.g. Avro/Protobuf). It is important to propagate the telemetry trace IDs through the call flow, but those are added to the header of the request to the app.
Here is what the configuration for raw events could look like:
apiVersion: dapr.io/v1alpha1
kind: Subscription
metadata:
  name: products
spec:
  pubsubname: pubsub
  topic: inventory
  route: products
  dataAsPayload: true

Note: dataAsPayload is not defined as a metadata attribute because it could apply per route in the case of PubSub Routing:
apiVersion: dapr.io/v2alpha1
kind: Subscription
metadata:
  name: mysubscriptions
spec:
  pubsubname: pubsub
  topic: inventory
  dataAsPayload: false   # (maybe) if specified, acts as the default for the routes
  routes:
    rules:
      - match: "event.type == 'widget'"
        path: widgets
        dataAsPayload: true    # overrides the default
      - match: "event.type == 'gadget'"
        path: gadgets
    default: products
    defaultDataAsPayload: true

Site note: In hindsight, default should have been a nested structure:
    default:
      path: products
      dataAsPayload: true

I don't think the CRD can be changed now. 🤷
From an SDK perspective (C# shown) the handler's method signature would look like this for dataAsPayload: false
public IActionResult Widget([FromBody] CloudEvent<Widget> widgetEvent)

Or like this with dataAsPayload: true
public IActionResult Widget([FromBody] Widget widget)

Release Note
RELEASE NOTE: Subscriptions can optionally send only the data of a CloudEvent to the application

/assign


Invalid Or Corrupted Pad Block

Describe the bug
Adding an base 64 encoded image entry to the local secondary seems to work, but the data that is being returned when I get the image entry is throwing an AT0023: "Invalid argument(s): Invalid or corrupted pad block" error.
To Reproduce
Steps to reproduce the behavior:

Create an AtKey: var key = AtKey()
Assign a Uuid to the key name: atKey.key = const Uuid().v1();
Set the shared properties to only be shared with my current atSign: atKey.sharedBy = await clientSDKInstance.getAtSign();    atKey.sharedWith = await clientSDKInstance.getAtSign();
Upload the image: await ClientSdkService.getInstance().put(atKey, base64Encode(media));
Fetch all keys in the client, the client will list a set of keys that do indeed include the image's Uuid: var imageKey = await AtClientManager.getInstance().atClient.getAtKeys();
Attempting to get the associated data throws the above error: var data = await AtClientManager.getInstance().atClient.get(imageKey);

Expected behavior
The image data is fetched and returned as base 64, which can be decoded and shown in the app.
Screenshots
Smartphone (please complete the following information):

Device: Samsung S20 FE
OS: Android One 4.0
Browser N/A
Version N/A

Were you using an @application when the bug was found?
Custom app created by me.
Additional context
I used to be able to fetch the image, but there was an issue where the secondary sync was not working. Now the sync seems to work, but the client can't get the data.
Logs:
https://cdn.sourceb.in/bins/qgmGMq0LT7/0
https://cdn.sourceb.in/bins/P1HCSyXtHd/0
(Note that the pin exception is part of a separate package and has nothing to do with this issue)

Thanks @kmahon99 we will tackle this issue in our next sprint which starts today.

@kmahon99 I see server timed out and socket exceptions in mine(custom app) as well.
Here are logs for future investigation.

@kmahon99 can you please share your atKeys file with us(May be in discord).

@kmahon99 I would like to confirm a few things.

From point 3(reproducible steps), It looks like both sharedWith and sharedBy values are the same which means it must be a self key.
Just FYI there is a property called isBinary in metadata, If you pass true values, it will handle the Base64.encode() internally.
From point 5(reproducible steps), getAtKeys() will return List<Atkeys>. Looks like you are passing the whole List<AtKeys> to get() method where it returns AtValue.

I would like you to make sure you are doing it correctly and Would like to request you to share a sample code block if you are doing it correctly.

Hi Kevin
I've spent some time looking into this as well, but haven't been able to reproduce it thus far.
Here's the logic trail I'm using to try to narrow down where the problem might be

Decryption only ever happens in the client - we don't need to think about server interactions
The only place where the AtKeyException can be thrown with this underlying exception text (which is a decryption exception) is in EncryptionUtil.decryptValue
I am pretty confident that the only reason we would get an "Invalid Or Corrupted Pad Block" message is if either
a. The encryption key is not the same as what was used to encrypt
b. The 'encrypted' value we're trying to decrypt had not previously actually been encrypted

I've tried various permutations on your code snippets, but I can't make either of those conditions happen
A couple of more questions / requests for you

Are you able to reproduce this easily? If so, the fastest way forward will likely be to get on a video conference and talk us through it; if that's not possible for you right now then please can you share a little bit more code, because I am failing to cause the problem to happen
What version of at_client package were you using?
Are you doing anything in particular with Metadata?
Were there any 'interesting' lifecycle events leading up to this? e.g. on-boardings, use of multiple at-signs, resetting of at-signs, etc ? Or anything else unusual you can think of?

One wild idea worth mentioning: There have been a lot of bug fixes and improvements in the client SDK over the past few months. Given the code snippet you provided, it might be that, when you originally 'put' the data, the data was stored unencrypted (wrongly), because you hadn't explicitly set a Metadata with isEncrypted=true ... let me know if you think that might possibly be what's happened and I will try to reproduce it (have the key/value pair created using an at_client 3.0.8 or lower; then try to read it back using a more recent at_client)
Cheers

Gary

PS Apologies for not starting work on this issue sooner; somehow none of us noticed it until it came to sprint planning!

Sorry guys, didn't notice that this had been picked up. To answer your questions:
@yahu1031

Yes this is a self key, I'm only sharing it with myself to perform a simple test of encrypting an image and then retrieving, decrypting and displaying the image in another widget.
I'm not sure what you mean? I do a base64 encode because the clientSDKinstance.put() method will only accept strings as values, I can't pass the binary image itself into that method, or is there a way to do that?
For clarification: I get all keys and then iterate through the list of keys where each one is passed in individually to the get() method, which I expect to retrieve the data.

@gkc

This happens every time I try to upload an image, I can't get this to work at all.
I'm using 3.0.15
No I'm just specifying that the data should be encrypted and non-public.
We had issues with onboarding before, I had to remove an old at key and reinstall the app due to bad key formatting that was causing lookup issues, but it's a clean install now which isn't giving any issues that I can see. The only thing is that onboarding seems to be retrieving the key twice for some reason.

I didn't realize that the data wouldn't be encrypted if I didn't explicitly specify it, I didn't have it initially but now I do and I'm still getting the same result unfortunately.

@kmahon99 What I mean by encoding to base64 is, If you set metadata of an AtKey to isBinary: true, You don't actually need to do encoding from your code block. Where atClientInstance.put(AtKey key, dynamic value), you can just pass the bytes there in the place of value. You can refer to the internal code of put request transformation here.

Maybe I'm getting this wrong, but I'm doing AtClientManager.getInstance().atClient.put(atKey, data); and I get this error:

Ah ok, I was using the wrong put method, but I'm still getting the same issue with the pad block.

Looks like you write your own class and you have created a put method there.

Use 1.5.21 kotlin version. That may resolve it. @kmahon99

Ok, I've fixed the Kotlin issue but I'm still getting the original pad block error when uploading.

While uploading? We can get on a call if you are sure it is while uploading data.

@kmahon99 two quick questions:

What size is the image you are uploading?
What is the atSign you are using?

Thanks

Gary

PS Have you tried deleting it, waiting for sync, and then re-creating it?

FYI Here's the code I'm using to try to recreate your issue, @kmahon99
  List<int> media = utf8.encode("The quick brown fox jumps over the lazy dog");
  var mediaDigest = sha1.convert(media);

  var metadata = Metadata()..isPublic = false..isEncrypted = true;
  var atKey = AtKey()..key = 'media'..namespace='issue474'..sharedBy = atSign..sharedWith = atSign;
  // Upload the image:
  print('media digest: $mediaDigest');
  var mediaBase64 = base64Encode(media);
  print('put encoded as base64: $mediaBase64');
  await atClient.put(atKey, mediaBase64);

  var valueReadBack, mediaReadBack, mediaReadBackDigest;
  // Read the data back
  valueReadBack = await atClient.get(AtKey()..key = 'media'..namespace='issue474'..sharedBy = atSign..sharedWith = atSign);
  print('get result (base64) : ${valueReadBack.value}');
  mediaReadBack = base64Decode(valueReadBack.value);
  mediaReadBackDigest = sha1.convert(mediaReadBack);
  print('media read back digest: $mediaReadBackDigest');

  atMgr.syncService.sync();
  await Future.delayed(Duration(seconds:30));

  // Read the data back again
  valueReadBack = await atClient.get(AtKey()..key = 'media'..namespace='issue474'..sharedBy = atSign..sharedWith = atSign);
  print('get result (base64) : ${valueReadBack.value}');
  mediaReadBack = base64Decode(valueReadBack.value);
  mediaReadBackDigest = sha1.convert(mediaReadBack);
  print('media read back digest: $mediaReadBackDigest');

... but I've failed to reproduce the issue so far.

@kmahon99 Also could you please reconfirm that your code uses the latest version of at_client by checking up the imports.

Go to any file where you import at_client/at_client_mobile.
Ctrl/Cmd + click on the import
And you will find the path of the file on the top bar of the code. There you will see the version.
Please update the at_client and at_client_mobile versions.

@kmahon99 Yes, For some reason, we cannot pass the atKey we got from the server directly to the get() method. That will throw some errors. Instead, you can just create a new object of AtKey and write down the key and namespace to that new object and pass it to the get() method. Ideally passing the atkey you fetched to the get method must work.

@kmahon99 Can I know what is the exact key you are getting issues with?

BTW here is what I have tried depending on this comment
/// Fetches the master image key from secondary.
static Future<void> getMasterImage() async {
  _logger.finer('Getting master image');
  List<AtKey> _keys = await sdkServices.atClientManager.atClient
      .getAtKeys(regex: Keys.masterImgKey.key);
  try {
    for (AtKey _key in _keys) {
      print(_key.toString());
      AtValue value = await sdkServices.atClientManager.atClient.get(_key);
      _userData.masterImage = Uint8List.fromList(
          Base2e15.decode(json.decode(value.value)['value']));
    }
    _logger.finer('Fetched master image successfully');
  } on Exception catch (e, s) {
    _logger.severe('Error getting master image', e, s);
    return;
  }
}

This is my output
flutter: FINER|2022-05-23 14:34:23.978624|AppServices|Getting master image
flutter: @mangotangostable:masterpassimg.passman@mangotangostable
flutter: FINER|2022-05-23 14:34:24.098464|UserData|Setting current master image

@kmahon99 Can you please share your resolved steps that you have considered this to close.