Displaying Organizations and AORs past date of last citation

We need a way to display Organizations and their Areas of Responsibility (AORs) on the Map and the Chart past the last citations we have for them. This is useful for two cases:

Monitor staff are confident (or otherwise have no reason to believe) that an Organization remains headquartered at a Site to the current date
Monitor staff are confident (or otherwise have no reason to believe) that an Organization maintains an a certain AOR to the current date

For some, but not all, Organizations and AORs the Monitor can make the determination that they are likely to exist up to the current date and thus should be displayed. Otherwise, we would need to update every single entry every day, which is not possible as every Organization in the Monitor is not cited everyday. For example, if the Monitor was live today it should show the 3 Armoured Division in Nigeria as based in the city of Jos and have responsibility over Plateau State even if the last citations for either of those entries is from several months ago. This is a long standing Organization with a longstanding AOR and it makes sense to continue to display this information.
Currently as a stopgap measure we are handling this by giving "Medium" confidence or higher on the date of last citation which is tied to the Site - but we have no such sort of mechanism for the AOR.  For both we should have something different to handle both cases. It would be helpful in cases where there is "Low" confidence in a Site or an AOR but Monitor staff still want to have it be displayed on the Map and Chart.

Perhaps the UI can use the logic "If this is the latest area, assume it has no end date."

We would need to determine if anything in the API would need to change to enable that sort of logic.

Would we need to update the dataset to reflect this as well? Perhaps a Y/N "assume to current date" column after the first date and last citation dates?

That would be a simpler, easier-to-implement solution.

Great - will update sheets accordingly!

Let me know once the data's ready.

Data is ready now!

As with #9, what's left to do is for @sebastien to let me know what he needs from the API.

Same as #9, I don't have the context to formulate an opinion.

@jpmckinney - there is a similar issue with Parent Relationships - shall I add a Y/N "assume to current date" for parent relationships too? That way the Chart wouldn't go blank after a certain date.

@badapplesdatabase Sounds good.

Great - will do!


Added Language Translator Project

kindly approve my pr

@Nehaaa3121 Kindly link the issue which you have resolved and Add Readme.md file

now please check

Hey @Nehaaa3121 This issue is assigned to someone else. You cannot directly raise a PR. You can wait for sometime. If the person fails to complete the task, then it will be assigned to you, and then only this PR will be accepted.

Hey @Nehaaa3121 This issue is assigned to someone else. You cannot directly raise a PR. You can wait for sometime. If the person fails to complete the task, then it will be assigned to you, and then only this PR will be accepted.

ok thanks no problem . I have raised the new issue kindly check it.

@Nehaaa3121 Kindly Add the Screenshots for better understanding.

@Nehaaa3121 Kindly Add the Screenshots for better understanding.

here are the screenshots of my project. this project consists of an audio feature and copy button, one can listen to the quote or can also copy the quote. it also consists of one search button where one can search for new quotes also.

#287
kindly approve my PR.

@Vanshiii203 kindly approve my pr
#287  for this issue

Language Translator web app using HTML, CSS & JavaScript. it consists of  an audio feature also where users can hear the
pronunciation. Users can check the translation of any word or sentence in any language.
#283  Issue number
#287  pull request

@Vanshiii203

@Vanshiii203

create a Readme.md file and in that describe the project ,tech stack used and screenshot of project.

@Vanshiii203  now check

@Vanshiii203 done

The translator is not working properly

 The translator is not working properly

Yes it's because i have posted the screenshot.

 The translator is not working properly

it is screenshot link not the project link. My project is working properly.

I'm attaching a screenshot of your project and according to this screenshot your project is not working

I'm attaching a screenshot of your project and according to this screenshot your project is not working

Yes it's because it is a snapshot. If you want then i can share the project link too. You can check that.

I'm attaching a screenshot of your project and according to this screenshot your project is not working

Yes it's because it is a snapshot , i have directly added the snapshot for image purpose.If you want then i can share the project link too. You can check that.

I've taken screenshot from your project

@TusharKesarwani see , its working properly.

Ok

Ok

Thankyou:)


Type information for RunGroupBy.apply()

Is your feature request related to a problem? Please describe.
I get the error:
error: Call to untyped function "apply" in typed context  [no-untyped-call]

if I use run.groupby(…).apply(…). That's a bit sad.
Describe the solution you'd like
It would be great to add type information to RunGroupBy.apply(), however that's not really possible because there would be a dependency cycle: run.groupby() returns a RunGroupBy object (and therefore has to import scmdata.groupby), and RunGroupBy.apply() return an ScmRun object (and therefore has to import scmdata.run).
I'm not sure how to properly solve this.
Describe alternatives you've considered
We could:

dump everything into one file, no dependency cycles ever
Protocolize ScmRun. Sounds painful and like a lot of work, but would decouple implementation and types clearly.
Protocolize RunGroupBy. Probably less work, but I'm not sure if run.py can live without importing scmdata.groupby, so probably doesn't break the cycle?
Other ideas?

Is it not possible to use from __future__ import annotations combined with if TYPE_CHECKING to get around this?

Hm, maybe it is. I think I tried using quotes around types (the equivalent of from __future__ import annotations), but I didn't try if TYPE_CHECKING, so maybe the combination can do the trick.

I think the TYPE_CHECKING guard should work.
I don't think `RunGroupBy is well-typed currently either.
RunGroupBy could use a generic with a TypeVar bound to a BaseScmRun (I think I've used the poorly named T variable). Then the type on run.groupby would be RunGroupBy[Self] and the apply functions would know which type they should return.

The generic TypeVar could work, but binding it to a BaseScmRun would introduce dependency circles again, no? We could just not bind it at all, which I think would be fine, no one is instantiating RunGroupBys out of whole cloth anyway.

Added typehints in #262


feat(plugin-copy-code): expose composable api

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 48.166%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
545

Relevant Lines:
986

💛  - Coveralls


⚠ Mobitopup has degraded performance

In cc86729, Mobitopup (https://napcard.voz.tech) experienced degraded performance:

HTTP code: 200
Response time: 3084 ms

Resolved: Mobitopup performance has improved in a7121ca.


Number of Guardian Math on User Input

When inputting number of guardians, a user should be made aware of the 3*f+1=n where n is the total number of guardians, and f is the number of potential malicious guardians. Perhaps a link to the reasoning behind this can be included.

Related to #143

@isaack-njama Can you get this branch up to date with master? We just discussed this during the Deep Dive today and I will prioritize it's merge once it's more up to date with master.


Add force-ssl package, closes #729

@apinf/developers please review
For review purposes in production, see apika.digipalvelutehdas.fi


Update README.md

remove grammatical mistakes

I am a GSSOC participant. Please check my pull request

Hi @KajalSinghBAGHEL Thanks for your interest
The grammatical issues are very minor & we don't think this is needed rn.
Do checkout the starter guide :)


PowerShell should respect /etc/paths.d/* and /etc/paths on macOS

Steps to reproduce
Write-Host $env:PATH

Expected behavior
$env:PATH should be built from paths defined in files under /etc/paths.d (where third parties may define custom paths) and the /etc/paths file (where macOS itself defines paths).
Example Paths

/etc/paths (which is "owned" by macOS itself, third parties should not
write to it):/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

/etc/paths.d/dotnet:/usr/local/share/dotnet

/etc/paths.d/mono-commands:/Library/Frameworks/Mono.framework/Versions/Current/Commands

Actual behavior
$env:PATH contains seemingly hard-coded paths:
/usr/local/microsoft/powershell/6.0.0-beta.9:/usr/bin:/bin:/usr/sbin:/sbin

Environment data
> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      6.0.0-beta.9
PSEdition                      Core
GitCommitId                    v6.0.0-beta.9
OS                             Darwin 16.7.0 Darwin Kernel Version 16.7.0: T...
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

Profile-based implementation
I have implemented the following in my PowerShell profile which redefines $env:PATH as I would expect (don't judge - I've been using PowerShell for about a week 😬).
if ($IsMacOS) {
  function Append-Path {
    $allPaths = @()
    for ($i = 0; $i -lt $args.length; $i++) {
      $path = $args[$i];
      if (Test-Path -PathType Leaf $path) {
        [IO.File]::ReadAllLines($path) | Foreach-Object {
          $allPaths += $_
        }
      } elseif (Test-Path -PathType Container $path) {
        Get-ChildItem $path | Foreach-Object {
          $allPaths += Append-Path($_.FullName)
        }
      }
    }
    return $allPaths
  }

  $path = @(
    Get-Command pwsh | `
      Select-Object -ExpandProperty Definition | `
      Split-Path -parent
  )

  $path += Append-Path "/etc/paths" "/etc/paths.d"

  $env:PATH = ($path -join ":")

  Remove-Variable -Name path
  Remove-Item -Path Function:\Append-Path
}

$env:PATH is now fully populated as I'd expect when I start a new PowerShell session:
> Write-Host $env:PATH
/usr/local/microsoft/powershell/6.0.0-beta.9:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:/Library/Frameworks/Mono.framework/Versions/Current/Commands

Implementation using path_helper -c
Thanks to @markekraus for pointing out path_helper - we can make this a lot simpler:
if ($IsMacOS -And (Test-Path -PathType Leaf /usr/libexec/path_helper)) {
  function setenv ($variable, $value) {
    [Environment]::SetEnvironmentVariable($variable, $value)
  }

  Invoke-Expression $(/usr/libexec/path_helper -c)

  Remove-Item -Path Function:\setenv
}

Related acticle

Hmm, is it too much to ask Apple to add a -p option to path_helper and have PowerShell call the binary?
I'm all for having pwsh support this, but, I'm somewhat against reinventing it within PowerShell.  If macOS updates their implementation to include something like ~./profile/paths.d/, then we'd have to stay on top of that change and add it to our own implementation. It makes better sense to me to call out to path_helper and either parse or evaluate the result.

@markekraus nice, I was completely unaware of path_helper. If invoked with -c we can use it directly from PowerShell already (we just need to define setenv first):
if ($IsMacOS -And (Test-Path -PathType Leaf /usr/libexec/path_helper)) {
  function setenv ($variable, $value) {
    [Environment]::SetEnvironmentVariable($variable, $value)
  }

  Invoke-Expression $(/usr/libexec/path_helper -c)

  Remove-Item -Path Function:\setenv
}

@markekraus as PowerShell in Windows does pull in PATH the same equivalency should be afforded to macOS or any other OS. If you ask Core for PATH does it respect /etc/paths values?

@thezim the way /etc/paths and /etc/paths.d/ is implemented is through a call to path_helper in /etc/profile. so this isn't the OS giving PATH to the login shell, its the login shell generating PATH on initialization through its profile. There are 2 possible switched to path_helper: -c and -s, -c generated a csh string that can be evaluated by csh to setup the path and likewise -s does the same for sh and friends.
What I'm suggesting is the best ultimate path is to have Apple add a -p which emits a string that can  evaluated by Invoke-Expression and then we can implement it similar to the other shells in our own pwsh global profile.
Until then, I'm suggesting we parse the output of path_helper -p or path_helper -c rather than in our own code try to duplicate the logic of path_helper that way we can avoid having to race to maintain our implementation when Apple possible changes to either include new PATH definition locations or remove existing ones, or to have to worry about differences that may exist betwee, say, macOS 10.12 and macOS 10.15.
For clarity, if you have bash/sh as your login shell and then launch pwsh, the PATH as defined in the parent shell IS respected in PowerShell. /etc/paths and /etc/paths.d/ only auto loads for the login shell. if you were to log in with bash, add a new item to /etc/paths.d/, and then launch python, it would not see the new path either. the reason you see id in child sh/bash/csh child shells is that they evaluate /etc/profile on luanch too.
The reason pwsh as a login shell doesn't process /etc/paths and /etc/paths.d/  is because pwsh does not run /etc/profile and really couldn't because it is written for other shells that use a completely different language.

@markekraus @thezim as I commented/updated the issue for: by invoking path_helper -c, nothing needs to be parsed. The C-Shell command is syntactically valid PowerShell - we just need to temporarily define setenv:
setenv PATH "... paths ...";

If anyone wants to lobby Apple for a -p option and if they ever implement it, that'd be great, but I certainly don't think PowerShell should block on that.

@abock I feel like creating a temporary function and then deleting it is a bit hacky.
In my experience, Environment variables are used way more heavily in *nix than Windows. With that in mind, I think it probably  makes sense to expose a Set-EnvironmentVariable with the setenv alias along with a Get-EnvironmentVariable with the getenv alias.
Set-EnvironmentVariable would take a -Name and -Value with -Name  as position 0 and -Value position 1. This would also help with some confusion about ENV vars only accepting strings as the -Value parameter would accept a String.
With that in place, the profile can work very similar to the csh: Test-Path for path_helper, execute with -c, and then evaluate with Invoke-Expression.
This, of course, means exposing 2 new cmdlets that will probably not see much heavy usage outside of macOS and possibly other *nix.  They are kind of redundant given powershell exposes the $env: variable prefix. But I still think this is the cleaner solution.
Another possibility is to have setenv as an alias of Set-Variable and some kind of logic to set an environment variable when the setenv alias is called. I'm not real thrilled with this solution. I dislike command behavior changing based on InvocationName. This is just as "hacky" to me as creating a temporary function and removing it.

If we run PowerShell from Bash why we don't get PATH extended by path_helper ?

@iSazonov We do:
If you have something already in /etc/paths or /etc/paths.d/ when you started your bash session, then PATH will be set with those settings and pwsh will receive them.
If you log in with bash and then add a file under  /etc/paths.d/ with a new path and then start pwsh (without having first exited and relaunched bash), then you will not see the new path in pwsh.
If you log in with bash, add a file under  /etc/paths.d/ with a new path, exit bash, log in with bash again, start pwsh you will see the new path.
If you log in with bash, add a file under  /etc/paths.d/ with a new path, launch a child bash shell, and then start pwsh in the child bash shell you will see the new path.
if you set pwsh as your login shell and start a console or ssh to the node, none of the paths in  /etc/paths or /etc/paths.d/ are loaded (because pwsh is not running path_helper)
So long as PATH is set correctly before pwsh is launched it will work. The problem is that pwsh will not respect changes made to /etc/paths or /etc/paths.d/ since the parent shell was launched and will alos not respect them when pwsh is the login shell.

@markekraus Thanks for clafiry!
It is standard bevavior for environment variables on all platforms. All processes inherit them this way.
Also I believe we still never consider PowerShell as login shell on Unix because of incompatibility. /cc @mklement0

@iSazonov

Also I believe we still never consider PowerShell as login shell on Unix because of incompatibility

Well, if you are like me and don't run into native globing issues, it makes an excellent login shell. :)

@markekraus: Good analysis; clarification:

The reason you see new paths created since login in child sh/bash/csh shells is that they evaluate /etc/profile on launch too.

POSIX-compatible shells such as bash (including bash in disguise on macOS, sh)  and ksh (but not zsh) source /etc/profile only when (effectively) launched as a login shell, with option -l or via login (see below).
This happens implicitly when Terminal.app, the macOS terminal program, creates a new tab / window, but it doesn't happen when you, say, invoke bash (without -l) from an existing shell.
This behavior is specific to macOS: terminal programs on Linux create non-login shells by default - see https://stackoverflow.com/a/23233967/45375
pwsh -l would actually break (PowerShell neither knows -l, nor does it know the distinction between a login shell and a(n interactive) non-login shell), but login, which is what Terminal.app uses, employs a different, convention-based technique to signal to the shell invoked that it should consider itself a login shell: it places the name of the shell preceded by - in the first argv argument ($0, in POSIX terms); e.g., -bash.
This is clearly something that PowerShell can - and does - ignore.
Arguably, though, PowerShell should pay attention to that, and evaluate /usr/libexec/path_helper output only then.
Not sure if this is technically feasible: both [environment]::CommandLine and [environment]::GetCommandLineArgs() seem to only reflect the PowerShell DLL name from within PowerShell; e.g., /usr/local/microsoft/powershell/6.0.0-beta.9/pwsh.dll.

As for a simpler way to apply /usr/libexec/path_helper output, using PowerShell code, without requiring ephemeral functions:
if ($IsMacOs) { $env:PATH=((/usr/libexec/path_helper) -split '"')[1] }

Note that this assumes that there are no escaped, embedded " chars., but that's generally a reasonable assumption (which @abock's function-based,  /usr/libexec/path_helper -c relies on, too).
Arguably, this code belongs in $profile.AllUsersAllHosts - ideally, however, with a conditional that only applies it if $0 starts with -.

More generally, https://github.com/PowerShell/PowerShell/issues/975#issuecomment-331049792 discusses how PowerShell might fit into the world of POSIX-compatible shells.

Hmm what is the mechanism that is making child bash sells pickup new additions to /etc/paths.d/ since login if it is not coming from /etc/profile?

Child bash shells do not pick up new additions (unless you invoke them with -l or via login).
New terminal tabs / windows, however, do - because they're invoked via login, as described.

erm.. then something is off in my environment?? Child bash shells are picking up the changes. This is why I assumed the /etc/profile is being run (none of the other profile files have anything dealing with paths). I haven't done anything fancy with this mac since it was re-imaged and upgraded to sierra.
repro:

ssh to macOS
add new path to /etc/paths.d/newpath
echo $PATH to verify path is not shown
run bash with no arguments
echo $PATH new path shown.

*shrugs. I'll admit I have almost no clue what I'm doing in macOS 😄 It is quite possible I have done something wrong along the way.

ssh introduces additional behaviors, so where you ssh from may matter.
I just tried from a Ubuntu 16.04 system, and I do not see the behavior you're describing - so: where are you SSH-ing from?
And, without ssh in the picture: do you see behavior that differs from what I've described?

I think we can close the Isuue as #975 dup.

@iSazonov agreed. this looks like a dup.
@mklement0 Not sure what the cause was but after re-imaging and upgrading again I can't repro it so there must have been something special about that environment. *shrugs


Jump not working when inside a process

Jump inside ctrl+J and bookmark menu (hyperlink and button) are not working inside a process. Ctrl+J jump sets the cursor to 0, bookmark menu buttons do nothing at all. Region goto hyperlinks work, and so do the ones inside the find menu.
Hexerator is being run with sudo. Nothing reported inside debug panel.
All of them work in a typical file.
Built today with rust nightly, would be great to have this functionality! Not sure if it's just my machine.

In case this info is of any use:
Hexerator:
Version: 0.3.0-dev
Git SHA: VERGEN_IDEMPOTENT_OUTPUT
Commit date: VERGEN_IDEMPO
Build date: 2023-11-20
Target: x86_64-unknown-linux-gnu
Debug: true
Opt-level: 0
Built with rustc: 1.74.0-nightly
System:
OS: Arch Linux rolling
CPU: Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz
Total memory: 15870 MiB
Used memory: 2758 MiB
Available memory: 13112 MiB

These turned out to be two separate bugs, I pushed fixes for both of them.
Thank you for helping test Hexerator! I haven't had much time to play around with it lately.

No problem! Thank you for such a quick fix. I wasn't sure if this would get seen, so thanks for doing such a great job maintaining this project.


Codegen does not produce compilable typescript queries.ts

How did you install the Amplify CLI?
brew
If applicable, what version of Node.js are you using?
22.9.0
Amplify CLI Version
12.13.0
What operating system are you using?
mac
Did you make any manual changes to the cloud resources managed by Amplify? Please describe the changes made.
no none
Describe the bug
https://github.com/aws-amplify/amplify-category-api/issues/1960 same issue at this
Expected behavior
https://github.com/aws-amplify/amplify-category-api/issues/1960 -> exactly the same issue
Reproduction steps
https://github.com/aws-amplify/amplify-category-api/issues/1960 reproduce this same issue
Project Identifier
No response
Log output

# Put your logs below this line

Additional information
n/a
Before submitting, please confirm:

[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
[X] I have removed any sensitive information from my code snippets and submission.

Hi  @nogeek 👋 thanks for raising this issue. We are working on reproducing the issue. Could you please run below command and send us the project identifier by running amplify diagnose --send-report.
please refer here

Hey 👋 , This issue is being closed due to inactivity. If you are still experiencing the same problem and need further assistance, please feel free to leave a comment. This will enable us to reopen the issue and provide you with the necessary support.


fix canceled task issues

@abdulrahuman5196 @flodnv
Details
This PR makes the following changes to the code:

Adds a utility function shouldHideCanceledTaskReport here. This function will return true if the given task is canceled and has no visible actions.
In cancelTask, set the pendingAction for the task preview action in Chat Report to Delete so that the default behavior is to hide the task preview until the API for task cancelation sends back a response. Since we do not want to hide the task preview for canceled tasks with visible actions, we prevent hiding the task preview by setting shouldHideOnDelete accordingly. We will use the utility function shouldHideCanceledTaskReport to decide on this.
Finally, to prevent the display of canceled tasks with no visible actions, we use the utility function shouldHideCanceledTaskReport  to make the decision within shouldReportBeInOptionList

Fixed Issues
$ https://github.com/Expensify/App/issues/27939
PROPOSAL: https://github.com/Expensify/App/issues/27939#issuecomment-1729683466
Tests
a) Add a task in a Chat Report
b) In the Task Report, click on 3dots menu and cancel the task
c) Navigate immediately to the Chat Report
d) Verify the expected behaviour for the below-mentioned problems
Verify Problem 1:
Actual Behaviour: [Deleted task] message gets displayed in Chat Report Screen
Expected Behaviour: [Deleted task] message should not be displayed in Chat Report Screen
Verify Problem 2:
Actual Behavior: The canceled task is still displayed in LHN.
Expected Behavior: The canceled task should be hidden when navigating away from the task report.

[x] Verify that no errors appear in the JS console

Offline tests
Same as the Steps for Tests Section.
QA Steps
Please note that the expected behavior for the issue differs from what is mentioned in the GH issue.
For QA, the steps mentioned within the Tests Section have to be followed.
The actual behavior is also mentioned in the test description for clarity.
For further clarity, a test video demonstrating the problems is also added here

Video demonstration of the problems
https://github.com/Expensify/App/assets/3004659/e59599d2-b8fb-4845-856d-f98767436fe3

[ ] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

iOS
https://github.com/Expensify/App/assets/3004659/b63a553c-9f9c-491f-9da4-3f00b109b9aa

Android
https://github.com/Expensify/App/assets/3004659/cb452e00-010f-414d-a7d8-c219ad289dbb

Mobile Web - Chrome
https://github.com/Expensify/App/assets/3004659/26b5d0ba-1450-4edf-ac69-6741fbd0e57c

Mobile Web - Safari
https://github.com/Expensify/App/assets/3004659/41ca9428-186c-4ca3-acbc-08a909ab0765

Web
https://github.com/Expensify/App/assets/3004659/4f1536f7-6a52-47f4-980f-005d7c7f184a

Desktop
https://github.com/Expensify/App/assets/3004659/19964411-1c7b-4ee4-a480-402f115b8a53

Offline-Desktop
https://github.com/Expensify/App/assets/3004659/e1bfe403-2be6-4609-99c1-1f4f36165de2

@abdulrahuman5196
PR checklist added and works well too
Over to you for review

@abdulrahuman5196
Gentle bump on review here.

Will review in my morning

Reviewing now

Starting to review again

@rojiphil Cancelled tasks are not removed from LHN in other devices, unless they are specifically visited.
https://github.com/Expensify/App/assets/46707890/8c6276be-96ea-44ff-a2dd-2aecf2046b95

Cancelled tasks are not removed from LHN in other devices, unless they are specifically visited.

@abdulrahuman5196
That looks like a BE issue. The BE is not sending out pusher updates for message due to which isDeletedParentAction is not updated. Only after we manually open the task report, the openreport API will fetch message. Then, it works well.
Please have a look at the following test video that supports the above mentioned issue.
https://github.com/Expensify/App/assets/3004659/8a78143e-2131-458c-beaf-e40a81990809

@rojiphil But do we need to use the isDeleteParentAction, if we just check for cancelledTask and childCount, we should be good here right?

But do we need to use the isDeleteParentAction, if we just check for cancelledTask and childCount, we should be good here right?

@abdulrahuman5196
That’s an interesting thought. I did check on this now.
I think, while using canceled task and childVisibleActionCount alone may solve the problem, we would still need the BE to send isDeletedParentAction as the LHN report name has to change to [Deleted task]. That is another issue I observed which will also be fixed. We can see this issue of the report name in LHN not getting updated in the test video that I sent today.
Further, isDeletedParentAction flag is an integral check of canceled task as we can see in the existing function of isCanceledTaskReport here. So, I doubt if we can do away with isDeletedParentAction here.
I think, it is best to keep our code as it is. And, if everything else is fine, we can go ahead with the merge and also raise an issue with BE to fix this.
What are your thoughts?

@thienlnam / @flodnv throughs on the above? Seems we might actually need backend fix after all if required to fix LHN

we would still need the BE to send isDeletedParentAction as the LHN report name has to change to [Deleted task]
we can go ahead with the merge and also raise an issue with BE to fix this.
Seems we might actually need backend fix after all if required to fix LHN

Sounds good to me, how about you @thienlnam ?

We already do send a pusher update to the task report participants for the new task cancelled reportAction

we would still need the BE to send isDeletedParentAction as the LHN report name has to change to [Deleted task]

What is this in reference to - what report is missing this parameter?

we would still need the BE to send isDeletedParentAction as the LHN report name has to change to [Deleted task]

What is this in reference to - what report is missing this parameter?

@thienlnam
Problem 1:
Steps:

User A creates a Task for User B. (Verify that task is received in User B FE)
User A cancels the Task.

Actual Result: User B’s Report Screen keeps showing the task even though it was canceled by User A
Expected Result: User B’s Report Screen should hide the task as it was canceled by User A.
The test video to this problem is attached to this comment below.
Problem 2: In this issue’s context, the problem is shown in the test video in comment here.
Both have the same root cause
Root Cause:
The FE depends on isDeletedParentAction. We can see this in the implementation of isCanceledTaskReport here. As the updated isDeletedParentAction is not received from BE, this prevents the User B’s FE to reflect the canceled task (i.e. due to User A canceling the task). However, if we trigger the OpenReport for the chat report in User B’s FE, the chat report will behave as expected.
Solution:
I think the problem will get solved if BE also sends pusher updates for the updated message in the task’s parent action. Since this will contain isDeletedParentAction with true value, it will update the UI accordingly.
Hope this helps.
https://github.com/Expensify/App/assets/3004659/f14d06e7-f01a-4ca9-adf2-52552eb52e88

Seems we might actually need backend fix after all if required to fix LHN

@abdulrahuman5196  @flodnv @thienlnam
As it is obvious, the identified problem has been there before. It is just that we identified this problem here. Also, as detailed in the previous comment, this problem has the same root cause as the one we are facing here. Now although I think it may be simple to fix this on the BE side, a good analysis is required if we want to explore solving this from the FE side. Either way, I think it may be better to take this up separately. Sharing my thoughts here if it helps to take this forward.

Oh you're talking about the ADD_COMMENT reportAction from the parent chat. There was another scenario from having access to a task but not the parentReportAction that created the task. This happens when you assign someone a task, but they don't have access to the report where the task was shared. So to handle that case, we add this field to the report so we can check if the task is deleted. That might also work here, checking if the isDeletedParentAction is on the actual task report.
I agree we'll also need to do a BE fix to update the main parent reportAction to update the key. But because we don't update all the possible linked reportActions, there might be a couple other scenarios where this doesn't work with different assignees

I agree we'll also need to do a BE fix to update the main parent reportAction to update the key. But because we don't update all the possible linked reportActions, there might be a couple other scenarios where this doesn't work with different assignees.

Thanks @thienlnam for bringing clarity on where the fix is required.
With this clarity in mind, how do we take this PR forward?

Wait for the BE fix and then continue on this PR or
Consider the BE fix as separate. And, go ahead with this PR and get this merged if there are no other problems.

@thienlnam @flodnv
Please advise

Let's just hold on the BE PR, and then we can see if there are other scenarios that need to be fixed in this App PR

Let's just hold on the BE PR, and then we can see if there are other scenarios that need to be fixed in this App PR

@thienlnam
Gentle bump on this.
When do you think the BE PR can be ready for us to take this further here?

Currently in review - should be live EOW or early next week

Currently in review - should be live EOW or early next week

@thienlnam
Is this still under review? Or is it live already?

We've had to revert the BE PR due to some other unintended issues that were caused. We've also had a discussion of possibly removing the key. I can spin up another PR later, but this is low priority since the bug is pretty minor

We've had to revert the BE PR due to some other unintended issues that were caused. We've also had a discussion of possibly removing the key. I can spin up another PR later, but this is low priority since the bug is pretty minor

@thienlnam
Thanks for the update.
Curious to know the next steps with the FE PR as the BE PR's priority is low.
Also, since this bug is pretty minor, can we go ahead and merge the FE PR if there are no other issues? or wait for the BE PR?
Please let us know

Also, since this bug is pretty minor, can we go ahead and merge the FE PR if there are no other issues? or wait for the BE PR?

If I'm misunderstanding but from this comment, the root cause is in the BE and so we might not even need to move forward with this PR right?
I looked over the changes and they look fine, but if it's not necessary to fix here then I think we should just close until the BE is resolved later

Maybe this point out during C+ approval can provide more information - https://github.com/Expensify/App/issues/27939#issuecomment-1762703334
I think the core fix on the chat page alone can still work with BE changes, only the extended fix for the LHN need BE changes.
Correct me if wrong @rojiphil

Gotcha, yeah if that's the case then we can just move forward with this

I think the core fix on the chat page alone can still work with BE changes, only the extended fix for the LHN need BE changes.

Core Fix:
Regarding core fix, I too agree that only FE changes are required. No BE fix is required here.
Extended Fix:
Regarding the extended fix, I think FE changes are required. With the current FE changes, the extended fix works smoothly in both local and remote devices except for one specific scenario as described below.
Extended Fix - Specific Scenario:
This specific scenario was identified in comment here

Cancelled tasks are not removed from LHN in other devices, unless they are specifically visited.

This scenario happens only on the remote device and is temporary in nature until the report is specifically visited or the report is updated via OpenReport API. I think there is no inconsistency in BE. Just that a pusher update would have helped the remote user to experience real-time change. This is where the need for BE fix came up.

If I'm misunderstanding but from this comment, the root cause is in the BE

For the specific scenario mentioned above, the root cause is in the BE as mentioned. So, while the FE changes are required for core fix and extended fix, BE changes will also address this specific scenario of extended fix. As I understood from comment here, this specific scenario is a minor bug (low priority) and can be fixed at some later convenient time in BE.
Summary:
My suggestion here was to go ahead with the FE PR changes for core fix and extended fix if there are no other issues.
And, for the specific scenario of extended fix, BE change can be independently taken up.
@thienlnam @abdulrahuman5196
Does this make sense?

@rojiphil I don't think doing the extended fix without BE changes makes sense. It would cause a behavioral difference between current device and remote device which might cause user confusion.
I would suggest to go ahead with just the core fix as part of this PR and the team can create a different issue for the LHN and the team can take on the new issue when it becomes priority.

I would suggest to go ahead with just the core fix as part of this PR and the team can create a different issue for the LHN and the team can take on the new issue when it becomes priority.

@abdulrahuman5196
As per your suggestion, I have reverted the extension fix.
Also, tested the core fix again and works well.
All yours for review

Looks like we need more discussion on this.

I don't think doing the extended fix without BE changes makes sense. It would cause a behavioral difference between current device and remote device which might cause user confusion.

Based on the analysis here, we have the remote device scenario even for the core issue. Actually, the test video in OP also have this problem. The testing team, however, refreshes the page.
@abdulrahuman5196  @thienlnam

Can we agree on whether the behavioral difference between the current device and the remote device is serious enough to be fixed now? Or is it minor enough to be fixed later?
I think the decision to make BE changes now or later depends on the outcome of the above question.

Meanwhile, I also noticed a similar issue raised two days ago here

Further, as I understand, we need FE changes for the Core Fix and Extended Fix to make it work. And, to test on the remote device, we do have a workaround by either revisiting the report or by refresh.
So, is it not better to go ahead with the FE changes here? And, create another issue for the BE changes to handle behavioral changes between current and remote device? What am I missing here?

@abdulrahuman5196
Since this PR is blocked on the BE issue here, I was thinking if there is a way to unblock this from the FE.
Since the root cause is insufficient information being pushed by BE via pusher updates, wondering if a refetch of report via reconnect (here) would help when FE receives insufficient information via pusher updates here as shown in the attached image below.
What do you think?

@abdulrahuman5196
Gentle bump for your feedback to the comment here.
@thienlnam
Also curious to know your thoughts too to the comment here

Yeah agreed, we shouldn't do a workaround when we know the root cause - that's why we do the RCA in the first place. Unfortunately this is just in a bad position with regards to other priorities right now.

Closing PR as this is stale.


new spam domain: sylviagreen club

The spam domain sylviagreen(dot)club is being spread via SMS/email, so we could add it.

@hyder365 you sure you don't know Sylvia Green? Looks to me like personal message from a close friend.

Never heard the name before and totally unsolicited message. The broken English isn't a great sign either.

The domain redirects to localbestdating1.com(malicious !!!)

Ping?

Steve @StevenBlack any decisions made yet on this one?

Thanks for the reminder Dan @dnmTX, I'll add this to the next release.

Done!  Closing.


Promise is not defined at ReactionIssueFiler.execute

Any idea why I would get this message?
ERROR ReferenceError: Promise is not defined at ReactionIssueFiler.execute (/app/node_modules/slack-github-issues/lib/reaction-issue-filer.
js:38:14)

Are you using Node earlier than v0.12.7? (I think that's when it began defining Promise.)

Aha. "I see!" said the blind man. Thanks @mbland


Document how to deploy container for MessageCast

Create an informative issue (See each section)
Using the current documentation as a model, please complete the issue template.
Prerequisite: Start with what we have
Always look at the current website to describe the change that is needed. Use the following link:

Describe the changes in the doc and link to your dev story
Provide info for the following steps:

[x] Mandatory Choose the page that needs to be updated:

[ ] About
[ ] Contribute
[x] Projects (specify project name) - MessageCast
[ ] APIs
[ ] Resources
[ ] Glossary
[ ] New topic

[ ] Mandatory for bugs: Clearly define what the problem is, what the change is, and link to the page:

[ ] Mandatory for content:

[ ] Add steps and/or other important conceptual information here:
[ ] Add verification at the end of the task, how does the user verify success (a command to run or a result to see?)
[ ] Add link to related dev story, if applicable

Closing this issue bc it is moved to Jira: https://team-16705118030816.atlassian.net/browse/AG-17


net: lwm2m: cancel pending retransmit work when closing context

Currently the retransmit_work is not cancelled when closing a context,
making it operate on an invalid context.
LwM2M RD client also closes the context and initializes it again when
registration with the server fails, overwriting the active timeout and
breaking the timeout dlist.
Signed-off-by: Pieterjan Camerlynck<EMAIL_ADDRESS>

Doh.  Forgot to flag this as a backport.

Doh. Forgot to flag this as a backport.

then, you would need a manual back-port :)


feat: redshift plan parsing to address ctas varchar(1) bug

in redshift, CTAS types are not determinstic based on the logical plan of a query. adding limits or where false to an md5(...) will change from the expected varchar(32) into a varchar(1). this pr tries to detect these and then force casts projections to the right types.

It would be nice if we could have a test that actually generates a plan on the engine and confirms the format has not changed from what we have assumed the format is for this parser to work. Do you know if postgres explain plans are the same format? If so we could add an engine test just for Postgres that will verify the explain plan matches what we expect.

ready for review


Completion on dot inputs double dot

Expected behaviour
Choosing a completion should not add double dots
Actual behaviour
It adds an extra dot
Steps to reproduce:

Edit a cell
input (Path('/') / d['metadata'])
Type a dot after the above expression, and choose one of the members of Path (e.g. name or `with_suffix)
Note that the path needs to contain a dictionary access, otherwise it works fine, so I guess it's the [ .. ] that has the bug.

https://user-images.githubusercontent.com/2991890/121210950-66bb8f80-c87c-11eb-973d-3224b220c41a.mp4
Logs
nothing generated by the completion
Environment data

VS Code version: 1.57.0-insider Commit: c7119ae8b6390a5700f6b28f0f1511d676c96562
Jupyter Extension version (available under the Extensions sidebar): v2021.6.914258744
Python Extension version (available under the Extensions sidebar): v2021.6.908196464-dev | Pylance v2021.6.1-pre.1
OS (Windows | Mac | Linux distro) and version: Local = Mac 10.15.7 | Remote = Ubuntu 18.04
Python and/or Anaconda version: 3.7.4
Type of virtual environment used : conda
Jupyter server running: Remote

This should have probably been in Pylance. Initially I thought it only happens in jupyter, as shown in the video, but then I noticed the point 4 in Steps to reproduce (after opening this issue).
If we do (Path('.') / d['a']).<ctrl+space> in a normal python file, it doesn't offer any completion at all, so probably not related to jupyter

@cipri-tom Thanks for filing the detailed report. In general the notebook cells function like normal editor instances, so I would suspect a pylance issue here. Did that specific example with the Image.open command work correctly for you in a standard .py file?

umm, Image.open() is not involved here.
Here's a minimal reproducible example:
from pathlib import Path

p = Path('/')
image_props = {'name': 'image.tiff'} # read from a file
img_path = (p / image_props['name']).with_suffix('.png')

erase the .with_suffix('.png') and try to complete it after the dot:
https://user-images.githubusercontent.com/2991890/121510285-c3878900-c9e7-11eb-9b92-8613f65012a8.mp4
So yes, it works in standard .py file, but not in jupyter cell.

I've run this in a local notebook, with a local Jupyter Server. I'm mentioning this because before I noticed a mismatch between the python version of the kernel and that of the window (#6224). When running everything locally, there's no option to choose Python version in the window, only the kernel.

@cipri-tom I was just attempting to make sure that I was using the exact example that you had in your original gif.
Initially in the second example I'm wasn't seeing the same issue.

However after poking around a bit more I do see a similar issue. For our completions when Jupyter is running we combine results both from Jupyter as well as results from VS Code's language server. It looks to me like we're doing something incorrect here as it looks like we are returning correct language server results (without the extra .) as well as Jupyter results that do have the extra period. In your gif above it looks like it's only returning Jupyter completion results (it has the wrench icon + the extra period).
When running live my completion looks like this:

We are getting duplication completions and the wrench icon ones do insert an extra period when placed in. I think that we can fix this in our code that looks specifically at Jupyter completion item results. Thanks again for the detailed report.

Moving to triage.

I'm no longer able to reproduce this problem using the latest VS Code Insider, PyLance, Python, and Jupyter extensions. Somewhere the bug must've been fixed. @cipri-tom, please reopen if you're still seeing this behavior.


enhancement: store instance type data for both Azure and Civo

Why do we need it?
there can be different instance types for control plane, worker nodes, load balancers, and databases , based on the user requirement , save the info in the cloud-state
What it will bring?
Additional context
Check Contribution's guidelines

I'll try to solve this issue. can you assign me this @dipankardas011 ?

I'll try to solve this issue. can you assign me this @dipankardas011 ?

Here is the catch this issue will take a bit longer to merge as this issue is directly dependent on #255 .
Still you can raise a PR. Just wanted to be clear upfront

NP. I just want to contribute

we need to store the instanceType in the stateDocument struct so that later we can refer to that when we get the state data

@AniketNS are you available to work on this issue?


feat: first draft of custom JS libs docs

fixes https://github.com/appsmithorg/appsmith-docs/issues/627
Related to https://github.com/appsmithorg/appsmith/issues/16394

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Created new PR, closing this one - https://github.com/appsmithorg/appsmith-docs/pull/719


[#2862] Remove @IgnoreMethod

#2862

Codecov Report

Merging #2917 into 1.6.x will increase coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##            1.6.x    #2917      +/-   ##
==========================================
+ Coverage   36.76%   36.77%   +<.01%
==========================================
  Files        1780     1780
  Lines       61414    61414
  Branches     8594     8594
==========================================
+ Hits        22581    22583       +2
- Misses      36451    36453       +2
+ Partials     2382     2378       -4

Impacted Files
Coverage Δ

...PostgreSqlPreparedStatementCreateInterceptor2.java
0% <ø> (ø)
:arrow_up:

...n/jdbc/interceptor/StatementCreateInterceptor.java
0% <ø> (ø)
:arrow_up:

...gin/jdbc/interceptor/DriverConnectInterceptor.java
67.5% <ø> (ø)
:arrow_up:

...interceptor/StatementExecuteUpdateInterceptor.java
0% <ø> (ø)
:arrow_up:

...bc/interceptor/TransactionRollbackInterceptor.java
0% <ø> (ø)
:arrow_up:

...ptor/CallableStatementExecuteQueryInterceptor.java
0% <ø> (ø)
:arrow_up:

...PostgreSqlPreparedStatementCreateInterceptor1.java
0% <ø> (ø)
:arrow_up:

...pclient/interceptor/ExecuteRequestInterceptor.java
0% <ø> (ø)
:arrow_up:

...ptor/PreparedStatementBindVariableInterceptor.java
0% <ø> (ø)
:arrow_up:

...terceptor/TransactionSetAutoCommitInterceptor.java
0% <ø> (ø)
:arrow_up:

... and 19 more

Continue to review full report at Codecov.

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


handtrackinggpu build error

I got "404" error at Fetching @org_tensorflow when I run "bazel build -c opt --config=android_arm64 mediapipe/examples/android/src/java/com/google/mediapipe/apps/handdetectiongpu"
I tried many times...
Any help greatly appreciated!

sometimes the error maybe "no such package" or "Read timed out".
Any help? Thanks!

@johniao I assume you are in china? This is likely a VPN networking issue

yes，It is vpn network problem！ Thank you!

It is vpn network problem！


buffers at status bar instead of top

environment

vim: VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Oct 13 2020 15:49:09)
vim-airline: latest (installed with plugged)
OS: linux
Have you reproduced with a minimal vimrc: yes
What is your airline configuration: this is my vimrc

call plug#begin('~/.vim/plugged')
Plug 'tpope/vim-commentary'
Plug 'vim-airline/vim-airline'
Plug 'jiangmiao/auto-pairs'
call plug#end()
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#switch_buffers_and_tabs = 1

hapens both in vim and nvim
actual behavior
I thought I could have the buffers in the status bar (at the bottom of the screen) and not the top. With switch_buffers_and_tabs:

How can I have the buffers displayed at the bottom, in the status bar?
Thanks a lot!!!
Best,
Sergio

The top is the tabbar. This is for displaying tabs and buffers. The bottom is the statusline, this is for displaying window-local options. The window-local local statusline cannot be used for displaying the buffer list.

Am 19.03.2021 um 15:50 schrieb Sergio Pérez Conesa @.***>:

environment
vim: VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Oct 13 2020 15:49:09)
vim-airline: latest (installed with plugged)
OS: linux
Have you reproduced with a minimal vimrc: yes
What is your airline configuration: this is my vimrc
call plug#begin('~/.vim/plugged')
Plug 'tpope/vim-commentary'
Plug 'vim-airline/vim-airline'
Plug 'jiangmiao/auto-pairs'
call plug#end()
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#switch_buffers_and_tabs = 1
hapens both in vim and nvim
actual behavior
I thought I could have the buffers in the status bar (at the bottom of the screen) and not the top. With switch_buffers_and_tabs:
How can I have the buffers displayed at the bottom, in the status bar?
Thanks a lot!!!
Best,
Sergio
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

Ah, I didn't know that! Thanks!


Multiple map reprojections fail + drawings not included

This issue was imported from CodePlex
sindizzy wrote 2016-05-05 at 22:56
So I am adding an option to my map to change projections between WGS84 and NorthPoleStereographic. The first time the user changes, it works well but then if they want to change it back it just results in a map that looks like a 3D x,y,z axis.
To demonstrate this open up the DemoMap and add land masses and your country and maybe some other shapefile. Right-click on the MapFrame>Projection and change to say Projected.Polar.NorthPoleStereographic. You may have to zoom in to specific country as zooming
to the world causes it to go to infinity. but anyways it looks like it should.
Now do the same except change to Geographic.World.WGS1984. It goes to the x,y,z axis. Not sure whats going on there. Is there a workaround?
The other issue is when I reproject a MapFrame the drawings are not reprojected. I think there should be an option to account for these as an overload. I have done this manually like so:
'set new projection of the map
'mapMain.MapFrame.Reproject(newProj) '<-- why doesnt this work?
Dim ignoredLayers = New StringBuilder
mapMain.MapFrame.ReprojectMapFrame(newProj, Function(layer) ignoredLayers.AppendLine(layer.LegendText))
If ignoredLayers.Length > 0 Then
    MessageBox.Show(Me, "These layers were skipped:" & Environment.NewLine & ignoredLayers.ToString, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If

'we have to reproject drawing layers separately
For Each lyr As ILayer In mapMain.MapFrame.DrawingLayers
            Debug.Print("Drawing layer has projection [{0}] and CanReproject={1}", lyr.ProjectionString, lyr.CanReproject)
    If lyr.CanReproject Then
        lyr.Reproject(newProj)
    End If
Next lyr
mapMain.MapFrame.ResetExtents()
~AGP

This one is a biggie for me as my apps will be used for analysis in different parts of the world. Some may require WGS84 and others may require a polar projection. Currently they will have to close the app and restart if they are to do more than 1 reprojection.


Measure tweaks and UKGT import script

Make measurement unit qualifiers optional.
Serializers for measures and associated models.
Store abbreviations and prefixes for duty sentence objects
Duty expression IDs should be integers
Include national measurement units which can be numeric.
Parser for duty sentences
Set a default community code for regulations
Split out envelope start and end for composition
Script for importing sheets of reference data
Script for importing the UKGT
Allow measure and transaction IDs to be started from anywhere.

Codecov Report

Merging #70 into master will increase coverage by 0.52%.
The diff coverage is 71.35%.

@@            Coverage Diff             @@
##           master      #70      +/-   ##
==========================================
+ Coverage   65.85%   66.37%   +0.52%
==========================================
  Files         123      125       +2
  Lines        6085     6231     +146
  Branches      367      382      +15
==========================================
+ Hits         4007     4136     +129
- Misses       1988     2004      +16
- Partials       90       91       +1

Impacted Files
Coverage Δ

certificates/models.py
23.80% <ø> (ø)

footnotes/tests/test_validators.py
100.00% <ø> (ø)

footnotes/validators.py
28.57% <0.00%> (ø)

geo_areas/validators.py
38.23% <0.00%> (-5.10%)
:arrow_down:

measures/models.py
26.92% <0.00%> (-0.32%)
:arrow_down:

regulations/models.py
13.20% <0.00%> (-0.52%)
:arrow_down:

regulations/serializers.py
0.00% <0.00%> (ø)

regulations/tests/test_importer.py
100.00% <ø> (ø)

measures/validators.py
54.62% <2.85%> (ø)

regulations/validators.py
18.60% <25.00%> (-4.48%)
:arrow_down:

... and 9 more

Continue to review full report at Codecov.

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

I guess going via XLSX has some advantages over CSV, in that you don't need to worry about what kind of delimiter is used etc  OTOH, it adds extra complexity.
If this stuck with CSV you might be able to just use postgres COPY for both input and output of the database.

For the import_sheet stuff, yeah we could probably have used CSV. The main reason I went with XLSX was that we're already consuming XLSX from policy teams for all of the other stuff so thought I'd stick with the pattern already established for that.

Also I guess I wanted to put it through the models to make sure everything validates.

I probably should have written that in future tense, not past-tense.
It may be good to make this also work with CSV in the future, to simplify the workflow of export TAP->import TaMaTo,

We have discussed this on Teams and there was a decision to merge this and deal with the tech debt later.


Combining rule-based and information retrieval techniques to assign software change requests

paper: http://dl.acm.org/citation.cfm?id=2642964&CFID=609852226&CFTOKEN=49731104
search for "Brazilian Federal Data Processing Service (SERPRO)"

Link to the paper: http://sci-hub.org/downloads/8124/10.0000<EMAIL_ADDRESS>**Author, email:
Yguaratã Cerqueira Cavalcanti<EMAIL_ADDRESS>Ivan do Carmo Machado<EMAIL_ADDRESS>Paulo A. da Mota S. Neto<EMAIL_ADDRESS>Eduardo Santana de Almeida<EMAIL_ADDRESS>Silvio Romero de Lemos Meira<EMAIL_ADDRESS>**Main Objective:  Facilitating the task of assigning Change Request (CR) to developers as being a labor-intensive and time consuming task.
** Main Contribution: Development of a configurable approach for semi-automated assignment of CRs which enables software analysts control its behavior, as well as, it provides a mean to support contextual information necessary to perform effective assignments.
**Evaluation Results: Results of an empirical evaluation showed that the approach is up to 46,5% more accurate than approaches which rely solely on machine learning techniques.
** Dataset:
The CR dataset was extracted from a private software development project conducted at SERPRO.
==> It is not possible to get data as being private datasets.


fix opportunity to work without authorization by API Key

EPAM AI DIAL chat version
0.20.0
What happened?
fix opportunity to work without authorization by API Key
https://docs.epam-rail.com/tutorials/quick-start-with-application
error log
dial.log
Steps:

remove all auth providers settings
execute chat

Confidential information

[X] I confirm that do not share any confidential information

The issue could not be reproduced on any of the available environments. The application is working properly without authorization if an API Key is used.
This issue was only reproduced in one environment in the external project and needs further investigation on the project's side.


Add support for reflection

This pull request introduces a new public constant representing the gRPC file descriptor set, which is a serialized version of the proto files.
This change enables the use of the gRPC reflection API, which allows clients to discover services and methods at runtime without having prior knowledge of the service definitions. The FILE_DESCRIPTOR_SET constant can be used to provide the necessary information to the reflection API.
To demonstrate this, a new example is included that shows how to use the FILE_DESCRIPTOR_SET constant with the reflection API to create a gRPC server that supports service discovery.
I have included an additional commit because I noticed cargo test updated some of the generated files.
I have strived to ensure the accuracy and effectiveness of this change, but I am not a gRPC or Rust expert. So, feedback and suggestions for improvement are welcome.

Hey @ananth-racherla I'm sorry for the long time I took to get back to you on this.
In this crate, we compile many protobuf files, but only a small subset of the corresponding services will likely be implemented by users. Since the reflection service does not differentiate between implemented and unimplemented services, the query results could be more confusing than helpful, in my opinion. I believe this feature wouldn't justify the extra complexity for now, so I will be closing this PR. Thank you!


acf::DetectorAsync

Actually making use of the GPU pyramid computation requires scheduling gpu->cpu transfers of ACF pyramids properly with a designated detection thread.  This currently has to be done at the application layer by users of the lib.  We can implement this within the lib by adding a simple acf::AsyncDetector class, which receives input images or textures and a user provided callback, and sends detection output to the provided callback with 1 or 2 frames of latency.

sample application added in #55, this will likely be merged to the installed library in a follow up after further tuning


Check amount of underwriter tokens that are minted

This PR adds a check for the amount of minted underwriter tokens when collateral tokens are deposited.
It addresses issue https://github.com/keep-network/coverage-pools/issues/133.
The check can be invoked:

deposit small amount of collateral tokens (so that the amount of underwriter tokens is at least 1)
send (not deposit) a bigger amount of collateral tokens to the asset pool
depositing collateral tokens will result in transaction reverting.

You can add Closes #133 to the PR description @tomaszslabon and the issue will get closed on this PR gets merged.


Decouple annotations/associations from the main release obo/owl files

Current pyobo includes annotations (in the sense of GO annotations, not OWL annotations) modeled as relationships (i.e S subClassOf R some O).
An example of this is ec.obo:
[Term]
id: eccode:<IP_ADDRESS>
name: alcohol dehydrogenase
is_a: eccode:1.1.1 ! With NAD(+) or NADP(+) as acceptor
relationship: RO:0002327 GO:0004022 ! enables alcohol dehydrogenase (NAD+) activity
relationship: RO:0002351 uniprot:A0A0H2URT2 ! has member ADHE_STRPN
relationship: RO:0002351 uniprot:A0A0H2ZM56 ! has member ADHE_STRP2
[many rows deleted]

This has a number of practical and semantic disadvantages

It bloats the size (ec.obo is 14x bigger with relationships)
Danger of ontological errors (real: the composed products will simply not work in OWL environments unless everything is modeled just so)
Lack of modularity / Harder to recompose into application-specific products (e.g. what if I want EC + just human proteins)
product becomes stale sooner
lack of separation of concerns
For associations it's important to have evidence, provenance. While this can be done with ontology formats using axiom annotation, this can get bulky and awkward. A TSV is simpler and better often
Directionality issues (are links to EC distributed with uniprot? links to uniprot distributed with EC? both?)
Shoreline issues (ec.obo includes all swissprot annotations, but not, say an arguably more useful set like reference proteomes for core species. Why?)
It's broadly understood that distributing annotations and "contingent knowledge" in the ontology and in models like OWL is not a good strategy, see e.g https://doi.org/10.1016/j.yjbinx.2019.100002. See also  slides 51 onwards

Instead decouple the associations / annotations / contingent knowledge. Use TSVs without OWL semantics and all its pitfalls. KGX is a good choice. Some associations are better modeled as SSSOM. By all means distribute these as .obo/.owl as well, and by all means distribute merged products too. The key is to focus on the "conceptual coat hanger" as Rector calls it, and allow people to hang their coats as they please.
In practical terms something like this:

`https://w3id.org/biopragmatics/resources/eccode/eccode.{obo,.owl}
`https://w3id.org/biopragmatics/resources/swissprot/swissprot.{obo,.owl}
`https://w3id.org/biopragmatics/resources/associations/swissprot-eccode-associations.{obo,.owl,.kgx,.ttl,csv,...}
`https://w3id.org/biopragmatics/resources/eccode/eccode-all-merged.{obo,.owl}

This is less work for pyobo/obo-db-ingest overall. Sometimes you can simply say "we are only providing the coat rack today, we may get to the associations later"

This is still a major impediment to reusing the fantastic work in obo-db-ingest.
E.g. here is the latest rhea ingest


Switch install to use new releases.hashicorp.com download URL

The new official way to get hashicorp project binaries is now from https://releases.hashicorp.com. Updated the consul_template installer to use this new URL, and removed the special cases (for the github releases)

Thanks for that - it's always nice to remove ugly logic :)


क्षि is being split

http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries.
considers it as a grapheme

Duplicate of #22
I think that the author is not willing to address linguistic grapheme splitting rules.

This is a typographic ligature and depends on the font. https://en.wikipedia.org/wiki/Typographic_ligature
Here is for example how it is rendered in TextWrangler on macOS:
Image
It's probably different than what you see in the browser.
Also you can try deleting the characer by pressing backspace on the keyboard. You'll notice it is not deleted as a single entity, but as several independent steps.
If the default standard implemetation doesn't suit your needs, the standard also allows for custom rule-based tailoring: http://www.unicode.org/reports/tr29/#Tailoring
You're welcome to suggest a patch if you can come up with a general-purpose standards-based solution


Add fee-based cut-off within SendPayment of the ChannelRouter

Issue
Any attempts to send payments within the daemon is eventually routed through the SendPayment method of the ChannelRouter. As it stands now, there are no fee-based cut offs during the path finding process. This means that it's possible, given a particular path and payment amount for the fees paid to exceed 100%. To guard against this, the user should be able to specify a fee-cut off, above which the send attempt is either suspend completely, or path finding short circuited.
The fee cut-off can either be expressed in one or all of the following thresholds:

Percentage based: "I will pay at most 2% to send payments.
Absolute cut-off: "Abandon the route if I would pay more in fees than the amount of the payment"
Absolute with constant: "Abandon a route if it would pay more than X satoshis in fees"

Steps to Completion

[ ] Extend the SendRequest proto to allow users to specify one of the cut-offs described above, or all of them. If the latter option is chosen, a oneof field might be of use.

[ ] Modify SendPayment to accept one of the three cut off types.

[ ] The newRoute function should be modified to take in the new fee cut-off type. During route construction, the TotalFees fields should be checked at each iteration of the walk backwards within the path. If the threshold is exceeded, then the route should be abandoned.

As long as someone else hasn't been working on this, I'd love to take this issue. I was using this issue as a self-study, but now I think I'm pretty close to finishing the implementation. I definitely need to write some tests, though, before PR.

Cool! Feel free to put up a pull request of your work (even though it is not ready for merge yet), to get some initial feedback 😄

I believe I have found an issue in the current formulation of this proposed feature. Essentially, if a set of routes is cached, newRoute is never called, so once again anything goes. This makes it possible for a route to succeed even if fees > maxFee.
For example, consider the route: Alice->Charlie->Bob, where Charlie charges a 5 sat fee.
Alice first attempts to pay Charlie 1000 sat with maxFee=10 sat. This obviously succeeds.
Alice then attempts to pay Charlie 1000 sat with maxFee=2 sat. Since the previous route is cached, this payment succeeds, even though fee > maxFee.
Is this the intended result?


[0.55.3] Mines before any notes confuses % display

See pic. Mines passed before any notes did. As soon as some notes passed it was fine.

fine fine i'll fix it....65728c89a73247f1a923fc9c893d808230194d5e


Power-on command does not work when the air conditioner is off

Problems
When sending a command to turn on the air conditioner, an issue occurs. The power-on command does not successfully execute when the unit is off, and the air conditioner does not turn on. However, commands to change the mode and adjust the temperature work correctly when the unit is on.
Logs
Power off when the air conditioner is on(successful)
2024-08-30 02:47:32.685 INFO (MainThread) [custom_components.tuya_smart_ir_ac] climate.air_conditioner setting hvac mode to off
2024-08-30 02:47:32.686 DEBUG (MainThread) [custom_components.tuya_smart_ir_ac] API send_command url: /v2.0/infrareds/ebd5bd0526540a550ecmkn/air-conditioners/eb34564cb4780179b9pl6m/command
2024-08-30 02:47:32.687 DEBUG (MainThread) [custom_components.tuya_smart_ir_ac] API send_command request: {'code': 'power', 'value': '0'}
2024-08-30 02:47:33.013 DEBUG (MainThread) [custom_components.tuya_smart_ir_ac] API send_command response: {'result': True, 'success': True, 't':<PHONE_NUMBER>951, 'tid': 'c4c5b5f6662e11ef95b0e2c325534a77'}

Power on when the air conditioner is off (fail)
2024-08-30 02:47:34.824 INFO (MainThread) [custom_components.tuya_smart_ir_ac] climate.air_conditioner setting hvac mode to cool
2024-08-30 02:47:34.824 DEBUG (MainThread) [custom_components.tuya_smart_ir_ac] API send_multiple_command url: /v2.0/infrareds/ebd5bd0526540a550ecmkn/air-conditioners/eb34564cb4780179b9pl6m/scenes/command
2024-08-30 02:47:34.824 DEBUG (MainThread) [custom_components.tuya_smart_ir_ac] API send_multiple_command request: {'power': '1', 'mode': '0', 'temp': '27.0', 'wind': '0'}
2024-08-30 02:47:35.076 DEBUG (MainThread) [custom_components.tuya_smart_ir_ac] API send_multiple_command response: {'result': True, 'success': True, 't':<PHONE_NUMBER>014, 'tid': 'c60beef2662e11efbcbd7aea62a19b8a'}

Mode change when the air conditioner is on (successful)
2024-08-30 02:51:54.569 INFO (MainThread) [custom_components.tuya_smart_ir_ac] climate.air_conditioner setting hvac mode to cool
2024-08-30 02:51:54.570 DEBUG (MainThread) [custom_components.tuya_smart_ir_ac] API send_multiple_command url: /v2.0/infrareds/ebd5bd0526540a550ecmkn/air-conditioners/eb34564cb4780179b9pl6m/scenes/command
2024-08-30 02:51:54.570 DEBUG (MainThread) [custom_components.tuya_smart_ir_ac] API send_multiple_command request: {'power': '1', 'mode': '0', 'temp': '27.0', 'wind': '0'}
2024-08-30 02:51:54.961 DEBUG (MainThread) [custom_components.tuya_smart_ir_ac] API send_multiple_command response: {'result': True, 'success': True, 't':<PHONE_NUMBER>899, 'tid': '60de3fb3662f11ef95b0e2c325534a77'}

Thanks!

or other libraries used by Home Bridge, these commands were sent when the air conditioner was turned off.
This worked well.
As you can see, I sent the on command twice.

But this library only sends on command once, and my air conditioner doesn't turn on.

Hi @minu-j , the problem you describe is very strange.
It doesn't seem like an integration issue and I don't know if we can fix it.
In fact, from the logs you sent me I don't see any errors, the integration correctly sends the power on command to the cloud and the cloud responds successfully... but your air conditioner doesn't receive it.
You told me that with another library the power on command is sent twice... but this is a strange way of working... not standard compared to other air conditioners.
Do you have the source of this library for me to investigate?
In any case I would like to understand the problem better.
When you turn on the air conditioner from Smart Life does it work correctly?
Try turning on the air conditioner using this command from the developer tools, in the action tab:
action: climate.turn_on
target:
  entity_id: your_entity_id

Does anything change?
Thank you

It works!
I think it's because the action of turning on the air conditioner on the air conditioner card and homekit doesn't work.
All I can do with the card is switch from off to cooling.
There is no action to turn on the power.
For now, I think I can turn on the air conditioner by turning that action into a switch.

The plug-in of the home bridge I used had a separate option to turn on the air conditioner in the homekit.
I'll leave a link. I don't know if it helps.
https://github.com/prasad-edlabadka/homebridge-tuya-ir

Perfect!
Probably your air conditioner does not accept the sending of multiple commands, or probably this only applies to power on/off.
It's normal that you don't have any buttons on the card to turn it on, because Home Assistant turns on the air conditioners by directly setting the HVAC mode (cool, heat, dry, etc...); the power on is sent together with this command.
Instead, for example, using Google Assistant (connected to Home Assistant) I noticed that the power on is performed first and then the hvac mode is set.
I've seen the plugin of the home bridge, and it also only handles sending single commands
This integration has been optimized to send as few commands as possible to the air conditioner and therefore when an HVAC mode is set, it sends a single command that contains the power on, HAVC mode, fan mode and temperature.
A possible fix could be to add an option which, if activated, changes the mode of sending commands from multiple to single.
However, at the moment I have not received any other reports of this type, so this type of change would be a low priority.
Anyway, thank you for your report!

Ok, thanks!

Hi, I'm having the same issue. I need to turn on climate either by service or manualy and then it will work.

@Jozefik
Hi!,
I solved it by adding a simple automation.
automation:
  ...
  - alias: Turn on AC when state changes from 'off'
    trigger:
      platform: state
      entity_id: climate.airconditioner
      from: 'off'
    action:
      - service: climate.turn_on
        target:
          entity_id: climate.airconditioner

And I also added one switch to check on/off.
switch:
  - platform: template
    switches:
      ...
      virtual_ac_switch:
        value_template: "{{ not is_state('climate.airconditioner', 'off') }}"
        turn_on:
          - service: climate.turn_on
            target:
              entity_id: climate.airconditioner
        turn_off:
          - service: climate.turn_off
            target:
              entity_id: climate.airconditioner

Thank you for presenting the same issue.
Good luck!

@minu-j
Hi,
That's clever idea. Thank you for a suggestion. I will try it.

hi @minu-j , I'm reopening this issues because more people are having the same problem.
I would need more information; when the air conditioner is turned on by setting the HVAC mode you said that the air conditioner does not turn on; but if you check from the SmartLife or Tuya application, does the air conditioner appear to be on?
I need this information to try to create a fix that solves the problem.
Thanks

hi @minu-j , @Jozefik,
can you give me this information?
Otherwise I can't solve this problem.
Thank you

hi @minu-j , I'm reopening this issues because more people are having the same problem. I would need more information; when the air conditioner is turned on by setting the HVAC mode you said that the air conditioner does not turn on; but if you check from the SmartLife or Tuya application, does the air conditioner appear to be on? I need this information to try to create a fix that solves the problem. Thanks

Hi @EnzoD86, sorry for the late comments.
When I changed the HVAC mode, I checked the SmartLife app and it looks like the air conditioner is on.
To be precise,
If you press the power button on me, I hear the beep sound from the air conditioner when I receive the IR signal twice. I guess these two beeps are the signals to turn on the power and set the HVAC mode, respectively.
However, just changing HVAC mode through this plug-in doesn't make any beep. It looks like it doesn't even get a signal to change HVAC before it's turned on. Of course, as I said before, SmartLife shows as if the air conditioner is on.
And the actual air conditioner is not on, but when HVAC is changed to OFF, the beep code sounds normal once. I guess they recognize the power-off signal well.
I hope my explanation helps. What's sent to Tuya cloud is consistent with what's in the top comment.
Thank you!

@minu-j  you were very clear, thank you!
I try to find a solution and release a beta version with the possible solution that will be tested.

Thanks!

hi @minu-j , @Jozefik,
I released version 2024.9.0-beta with fix.
It is important to activate the "Force power on when setting hvac mode" option in the air conditioner configuration.

Can you tell me if this solves your problem?
Thank you

Hi @EnzoD86, Thank you for your quick resolution.
I also have a suggestion that I’d like to share. Please consider it as a light reference.

Wind Speed Adjustment in Apple HomeKit

The current wind speed control in Apple HomeKit is a bit confusing. The gauge increments at 0%, 33%, 67%, and 100%, making it unclear which setting corresponds to “Automatic.” Additionally, when adjusting the wind speed slider, the system sends multiple signals, causing repetitive beeping sounds. Is there a way to improve this experience?

Enhancing IR Remote Control Reliability

Since IR remotes are one-way, it’s hard to be sure whether the air conditioner is actually on or off. I know some people use electricity usage monitoring or sensors attached to the air conditioner blades to check its status. It would be great if we could link the on/off status to the sensor data. For example, the system could wait for confirmation from the sensor before updating the on/off state. This would also ensure that even when the physical remote control is used, the system’s state remains accurate. Just a suggestion to enhance reliability.

Hi @minu-j , I'm glad the problem has been resolved. I will release the official version soon.
As for your suggestions:

unfortunately the problem is on Apple HomeKit. The integration identifies the fan speed using the standard names provided by home assistant, so I can't do anything unfortunately.

this point is interesting, but the integration is only a bridge between Home Assistant and Tuya. It doesn't have much logic.
To be able to develop something like this I would have to have hardware with which to do this type of testing.

Thank you for your suggestions, I will keep them in mind.


Gridsome Not rendering Math Equations Properly

Description
Gridrome remark-katex not working
It is displaying the commands as well the output which messes things up
It can be see everywhere on my site: https://nbody.netlify.app/docs/2d/science/
Expected result
Should render only the equations. This is from development runtime:

Actual result

Environment
It works perfectly fine in development but whenever I'm serving the website, it messed up

@sparxastronomy
Your site looks fine to me, did you manage to solve the issue already?

@sparxastronomy
Your site looks fine to me, did you manage to solve the issue already?

@tkhquang
No I couldn't solve it. Are the math equations rendering properly at your end?

@ sparxastronomy
This is what it looks like on my end

Well, it looks right with Firefox, I just tried opening your site in Chrome and the issue appears.

@tkhquang  can I know the status of this bug, please?


New version: DavidRios.Remindr version 2.1.1

Pull request has been created with WinGet Automation :rocket:
Microsoft Reviewers: Open in CodeFlow


Add new Alert icons

Update requested
See the attached file. New update request to update the ALERT icons in the library.
Icons.zip

Fix icons #18


Suggestions for flow from View back to Service

Description
At the bottom of the Binder section there are 3 rules mentioned :

Assign Service data that is available at the binding time to the View Controller
Bind Service data or events that are available asynchronously (as Signals/Observables) to the View Controller
Observe user actions or user input from the View Controller with the instance methods of the Service

# 1 and # 2 are pretty straightforward as well as most situations for # 3. However for more complex scenarios, I am having some issues figuring out what to use and where to locate it.
Example
Let's assume we have a ScheduleService in the Business Logic portion of the application. We are able to retrieve schedules / events by calling APIs of a calendar backend and feeding that data to a Signal in the ScheduleService (let's say a LoadingSignal).
For example, something like :
public class EventService: DisposeBagProvider {
    public let randomSchedule: LoadingSignal<ScheduledEvent, ApplicationError>
    ...
    public init() {

        randomSchedule = ScheduledEvent
                        .getEvent(for: random)
                        .response(using: client)
                        .map { $0.event }
                        .toLoadingSignal()
    }
}
...(simplified version)

The View will show, for example, a UIDatePicker that represents the start date of the schedule if one is available or the current date / time if there's no existing schedule (a new one is being created)
The Binder will leverage the Signal from the ScheduleService to update that UIDatePicker based on new events coming in (say if another schedule is selected from a table view that lists available schedules).
        controller.start_dtPicker.reactive.date
            .bind(signal: eventService.randomSchedule
                .value()
                .map { $0.start_dt }
                .ignoreNil() )
            .dispose(in: controller.bag)

That will link the UIDatePicker display to the value of the start date from the scheduled event. No problems so far.
However what gets trickier, to me, is when the user starts modifying that start date via the UIDatePicker. The date is just one element of a Schedule object, which will, eventually, have to be saved back via another API call to the calendar backend.
But since I cannot feed that into the LoadingSignal from the ScheduleService, I need to implement either an intermediate Signal (or a Property) that will be used when a "Save" button is selected (since we don't want to trigger an API call for every change of the UIDatePicker).
Since there's probably more to customize in the Schedule object, that means I will have to somehow aggregate all those Signals together.
But where do those intermediate Signals belong ? Should they be declared in the ScheduleService or in the Binder itself (since they are a proxy between view components and the underlying service) ?
How to properly handle all those aggregated values ? Should it be an object made of Properties ? Or should be just collect the signals from the various UI components ?
Or maybe use a SafeReplayOneSubject<ScheduledEvent> where a new element is emitted every time an interaction happens in the view (i.e. changing the date twice in the UIDatePicker will emit 2 new ScheduledEvent), and then observe a tap of the Save button with a saveSchedule() that would use that SafeReplayOneSubject and call the API  ? If so would the coupling still reside in the Binder ?
While everything else seems to flow pretty well from the Service to the View via the Binder, the opposing flow isn't as straightforward.
Any brilliant ideas ?

If I understood you correctly, you have an event service that can provide and update an event and a view controller that can display and edit an event. That is a very interesting example because it touches multiple problems.
Here is one possible implementation. I've made it very verbose on purpose so that it can be easier understood.
Assuming we are working with the following:
struct ApplicationError: Error {}

struct ScheduledEvent {
    let name: String
    let date: Date
}

class EventService {
    var event: LoadingSignal<ScheduledEvent, ApplicationError>
    func updateEvent(_ event: ScheduledEvent) -> LoadingSignal<Void, ApplicationError>
}

class EventViewController: UIViewController, LoadingStateListener {

    enum UserInputError: Swift.Error {
        case missingName
    }

    let datePicker = UIDatePicker()
    let nameTextField = UITextField()
    let saveButton = UIButton()
}

This is how the binder implementation could look like.
let eventService: EventService
let viewController = EventViewController()

// Bind service data to the view.
// When the data in the signal is supposed to fill multiple views,
// we can bind the signal to a common parent of the views, like
// the view controller itself, and then populate the individial views.
eventService.event
    .consumeLoadingState(by: viewController)
    .bind(to: viewController) { viewController, event in
        viewController.datePicker.date = event.date
        viewController.nameTextField.text = event.name
    }

// This signal contains the data needed to update the event.
let eventDetails = combineLatest(
    viewController.datePicker.reactive.date,
    viewController.nameTextField.reactive.text
)

// This signal fires when the user taps the save button.
let saveButtonTap = viewController.saveButton.reactive.tap

// We can create an event instance from the event details. However, that will not
// always be possible since something could be wrong with the input data.
// We can use the result type to express operations that can fail.
let eventOrInputError = eventDetails.map { (dateAndName) -> Result<ScheduledEvent, UserInputError> in
    let date = dateAndName.0
    if let name = dateAndName.1 {
        return .success(ScheduledEvent(name: name, date: date))
    } else {
        return .failure(.missingName)
    }
}

// At this point we have a signal that fires events when the user taps the save button and
// a signal that either fires an event constructed from the input data or an error
// describing what is wrong with the input data.

// What can happen when the save button is tapped? More than one would usually imagine:
//   1. Something could be wrong with user input - we need to indicate that to the user
//   2. User input is valid and the event service is used to update the event on the backend
//   2.1. Update request starts - we need to display loading indication to the user
//   2.2. Update request succeeds - we need to inidicate success to the user
//   2.3. Update request fails - we need to show the error to the user

// Let's model those outcomes with a simple enum:

enum EventUpdateResult {
    case inputError(UserInputError)
    case eventUpdateState(LoadingState<Void, ApplicationError>)
}

// Now that we have the possible outcomes spelled out, let's implement save button logic:

// We start with the save button taps...
let eventUpdateResult = saveButtonTap
    // ...and we flat map them into the possible events
    .flatMap(.latest) { eventOrInputError }
    // Now we have a signal whose value is either an event or an input error.
    // We have to switch on the value and continue with the appropriate action. Another flatMap.
    .flatMap(.latest) { (eventOrInputError) -> SafeSignal<EventUpdateResult> in
        // Here is where we branch into the two possible outcomes...
        switch eventOrInputError {
        case .success(let event):
            // ...on success we call the service and then wrap the loading state into our enum
            return eventService.updateEvent(event).map { .eventUpdateState($0) }
        case .failure(let error):
            // ...on failure we just propage the input error case
            return Signal(just: .inputError(error))
        }
    }

// Alright. At this point we have a signal that represents the event update
// result triggerd by tapping the save button. So far we have just expressed a
// desired behaviour. To make all this work, all that is left is to observe or
// bind our eventUpdateResult signal.

// Who handles the side effects of our actions? View controller, of course:

eventUpdateResult.bind(to: viewController) { viewController, result in
    switch result {
    case .inputError(let inputError):
        viewController.indicateInputError(inputError)
    case .eventUpdateState(let loadingState):
        switch loadingState {
        case .loading:
            viewController.indicateEventUpdateInProgress()
        case .failed(let error):
            viewController.displayErrorDialog(error)
        case .loaded: // the event has been successfully updated
            viewController.dismiss(animated: true)
        }
    }
}

What's nice about this solution is that the whole logic around saving/updating is represented by one signal: eventUpdateResult. Observing (binding) that signal gives us all possible outcomes of the save action. It's obvious what can happen when saving the event just by looking at this single bind(to:) method.
In imperative paradigm logic can simplified by splitting it into multiple functions. In functional-reactive one can split long signal operator chains into simpler ones as we did with signals like eventDetails, saveButtonTap and eventOrInputError. We then used those to build more complex behaviours.
Hope this gives you some ideas on how to solve problems like these.

@srdanrasic , thank so much for the really detailed response. 🤯
This really helps me to understand what to include in the Binder and what to move to the Service area.
At this point I am even tempted to remove the ScheduledEvent(name: name, date: date) notion and just purely push the bare application logic data to the eventService.updateEvent(). I.e. :
        return eventService.saveEvent(name, date)

This way I can let the Event Service deal with how the underlying data is modeled and just provide a method that will use the outflow / outputs of the Binder. Would that make sense ?
As for the details, I was mostly successful in refactoring my code along the lines you indicated. However, I am a little confused about that last part :
eventUpdateResult.bind(to: viewController) { viewController, result in
   switch result {
   case .inputError(let inputError):
       viewController.indicateInputError(inputError)
   case .eventUpdateState(let loadingState):
       switch loadingState {
       case .loading:
           viewController.indicateEventUpdateInProgress()
       case .failed(let error):
           viewController.displayErrorDialog(error)
       case .loaded: // the event has been successfully updated
           viewController.dismiss(animated: true)
       }
   }
}

I am probably missing some fundamental knowledge of LoadingState and LoadingSignal, so I apologize if this is basic understanding... So I guess the focus is on :
    func updateEvent(_ event: ScheduledEvent) -> LoadingSignal<Void, ApplicationError>

and how we're wrapping the LoadingState to pass it inside the enum...
        case .success(let event):
            // ...on success we call the service and then wrap the loading state into our enum
            return eventService.updateEvent(event).map { .eventUpdateState($0) }

Shouldn't we pass the LoadingSignal altogether so that we can use .consumeLoadingState as the signal gets updated ?
As it stands right now it seems, to me, that we will only get an update for eventUpdateResult when the button is pressed and that will, most likely, only trigger .loading loading state forever... Am I missing something ?

Is there any update to this question? I find myself wondering the same thing. Cheers!


test: remove stray comment markers (NFC)

This removes the stray comment on the RUN commands that cause issues
with Python 3 and lit which will treat the last argument as a glob
pattern rather than a valid run command.

Replace this paragraph with a description of your changes and rationale. Provide links to external references/discussions if appropriate.

Resolves SR-NNNN.

CC: @aschwaighofer

@swift-ci please smoke test


Ensure downloader selects the correct level of theory

Fixes #44.

Sorry for the delay, this looks good to me! Thank you.

Thanks!


Update formatBody to take original method

This fixes the case where DELETE doesn't send back a proper body and is
treated as an api request failure. (Since the API doesn't always send
back proper error codes, we were relying on JSON body format to
determine the error state.)
:eyeglasses: @schwers

or :eyeglasses: @nramadas or @curioussavage

FWIW: might be nice to pass the original query in as well. In Rules I've been pulling the formatted method / query, etc out of the request object. But passing in the originals like this makes more sense. :fish:

Yeah, not a bad idea. I may tackle that in a separate pr.

I could add it in my patch as well; I made some changes to not let formatQuery clobber values for formatPath. I'll try to clean that up today or tmr morning