Provide Postfix Method Syntax for Some Combinators

Rust version : 1.42.0
nom version : 5.1.1
nom compilation features used: Any

Proposal
I think it could improve readability of some complicated parsers if specific combinators could be applied as postfix method calls.
Candidate Combinators

map
cut
context
opt

Example of Proposed Syntax
This change would allow the following code...
fn data_variant_decl<'i>(input: &'i [Lex]) -> Res<'i, (DataVariant, Vec<SententialForm>)> {
    tuple((
        map(lower_ident, DataVariant),
        map(
            opt(delimited(
                lexeme(Lex::LParen),
                sentential_form_alternatives,
                lexeme(Lex::RParen),
            )),
            |opt_alternatives| opt_alternatives.unwrap_or_else(Vec::new),
        ),
    ))(input)
}

...to be rewritten:
fn data_variant_decl<'i>(input: &'i [Lex]) -> Res<'i, (DataVariant, Vec<SententialForm>)> {
    tuple((
        lower_ident.map(DataVariant),
        delimited(
            lexeme(Lex::LParen),
            sentential_form_alternatives,
            lexeme(Lex::RParen),
        ).opt().map(|opt_alternatives| opt_alternatives.unwrap_or_else(Vec::new)),
    ))(input)
}

This transformation allowed the delimited parser to be "un-nested" two levels.
(The example is from here.)
Implementation
As I understand it, nom doesn't define anything like a ParserCombinator trait to which these methods could be attached, but maybe a new trait that Fn(I) -> IResult<I, O, E> implements could be created (warning, pseudocode ahead):
trait PostfixCombinators {
    fn map(...) -> ...;
    fn opt(...) -> ...;
    fn context(...) -> ...;
    fn cut(...) -> ...;
    // ...
}

impl<P, I, O, E> PostfixCombinators for P
    where P: Fn(I) -> IResult<I, O, E>
{
    fn map<F, O2>(self, f: F) -> Box<dyn Fn(I) -> IResult<I, O2, E>>
        where F: Fn(O) -> IResult<I, O2, E>
    {
        Box::new(map(self, f))
    }

    // ...
}

Syntactic changes like this probably shouldn't be high up on the priority list, but I just wanted to put this proposal out there in case other people are interested.

so with ac34e5a and 61772cd we now have map, flat_map, and, and_then and or methods. I'm not sure about adding opt and cut, and context will not appear there, since I'm separating from the main error type (cf #1131)

The current map syntax in 5.1.1 is the by far least ergonomic out of the combinators I listed, so I'm really glad to see it will be updated!

nom 6 is released now :partying_face:


The textures of painted blocks do not connect with non-painted blocks of the same material

Issue Description:
Blocks that have connected textures do not connect with other blocks if they’re painted.
What happens:
E.g., a glowstone block painted as a glass block does not connect with actual glass blocks.
What you expected to happen:
The textures should connect; otherwise, it looks very out of place.
Affected Versions (Do not use "latest"):

Ender IO: Latest for 1.10.2, 1.10.2-3.1.179.
EnderCore: Latest for 1.10.2, 1.10.2-<IP_ADDRESS>-beta.
Minecraft: 1.10.2.
Forge: Latest for 1.10.2, 12.18-3-2254.

Vanilla Glass does not have a connected texture.  I think that may be added by Optifine, but that is usually not supported.  It would probably have to be fixed on Optifine's side anyway.
If you are using non-vanilla glass, then please specify which mod.  I have seen painted connected textures working with Chisel on Foolcraft videos.

If you would like to me to clarify what I said, please ask.  The confused emoji is rather unhelpful.

@VT-14 I used it more as “Aww, that’s a bummer” than “I’m confused.”


Send reminders to groups

Currently, the bot does not send reminders to groups, only to users. I think it should do it also.

Hi @alirezaomidi, the bot already sends reminders to groups. The problem you're facing is probably because you added the bot to a group and then upgraded it to a supergroup. In this case the bot fails to work (issue #14).
Please remove the bot from the group and add it again, this should make it work. Please let us know :)

Sorry! No problem at all! I just hadn't /start the bot -_-


Compounds: sync + parallel execution

Hello,
Here is my scenario: I want to launch server and client using compounds, but the problem is that I want to bundle in debug mode before launching client.
A possible launch.json could be:
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Server",
            "program": "${workspaceFolder}/server.js",
            "cwd": "${workspaceFolder}"
        },
        {
            "type": "node",
            "request": "launch",
            "name": "BundleClient",
            "program": "${workspaceFolder}/bundleclient.js",
            "cwd": "${workspaceFolder}"
        },
        {
            "type": "node",
            "request": "launch",
            "name": "Client",
            "program": "${workspaceFolder}/client.js",
            "cwd": "${workspaceFolder}"
        }
    ],
    "compounds": [
        {
            "name": "Server/Client",
            "configurations": ["Server", ["BundleClient","Client"] ]
        }
    ]
}

There are other ways to achieve this, but I think such launch.json would be easier to configure where BundleClient, Client are executed synchronously.
Thank you in advance for your opinion.

What exactly do you mean by "I want to bundle in debug mode"?

Instead of launching BundleClient then Client manually, I want to compound both. But the problem is compound executes in parallel, so client will be launched before being bundled.
So when BundleClient debugger stops, I need compound to launch client.
The goal is to be able to debug BundleClient+Client during the same session (this is just an example)
 "compounds": [
        {
            "name": "Server/Client",
            "configurations": ["Server", ["BundleClient","Client"] ]
        }
    ]

So is "BundleClient" really a program you want to debug or is it the task to "bundle" the client?
In the latter case I suggest to turn "BundleClient" into a real task and add it as a "preLaunchTask" to the "Client" launch configuration.

I want to debug "BundleClient": what I do for now is launching "BundleClient" in debug mode, then when finished, launching "Client" in debug mode (boring repetition).
I tried npm run BundleClient && npm run Client as a workaround, but the debugger stops after BundleClient without continuing with Client.
That's why instead of launching BundleClient manually, then Client manually, I think it would great to be able to queue BundleClient and Client as if it was a single debugging session.

so "BundleClient" and "Client" are two separate programs (running on two instances of node.js) and first you want to debug "BundleClient" until it terminates and then you want to debug "Client"?

Yes

Couldn't you just merge "BundleClient" and "Client" into one program that runs on one instance of node.js?

I think it will increase memory usage for Client which is unnecessary. And Client could be a browser app debuggable using vscode-chrome-debug.

We do not have plans to add this functionality to compound launches.
But you could do this in an extension by using the debug API.


The new vs code icon gave my computer ...

The new vs code logo is really not something I'd show my children. On Windows, it looks ugly, but on OS X it's horrible!!
It would be great to have the old one back, so I don't have to be ashamed of using vs code anymore. Thank you.

The title of this issue is not appropriate.

Try using Resources Hacker to change VSCode Icon on Window, I tried it on Sublime


Support Python 3.12

[x] Add CI for Python 3.12
[x] Update setup.cfg to support Python 3.12
[x] Update lockfile

Codecov Report
All modified lines are covered by tests :white_check_mark:
:loudspeaker: Thoughts on this report? Let us know!.


Removed unused code from arm-ttk build and added a if condition check

Required items, please complete
Change(s):

Remove unused code of playbook and data connector and a minor fix

Reason for Change(s):

Remove unused code and a minor fix

Version Updated:

No

Testing Completed:

Yes

Checked that the validations are passing and have addressed any issues that are present:

Yes

It is in review


Added the possibility to add a name to the finish instruction

Preparing to fix this Issue
Therefore, we need the possibility to add a name to the FinishInstruction. This method will be used here.

Thanks!


fix: typo in docs

Good catch!

Thanks! I just noticed it after merging #31, which fixes the same issue.


Seemingly non-deterministic failures on download testing in RSpec tests

When running RSpec tests we see failures of the form:
  1) Cherrypicking pipeline where picking by ng for a tecan robot behaves like a cherrypicking procedure running the cherrypicking pipeline
     Failure/Error: raise StandardError, "Could not open #{file} in #{PATH} after #{timeout} seconds"

     StandardError:
       Could not open 238_batch_DN4V_1.gwl in /Users/jg16/projects/sanger/sequencescape/tmp/capybara after 10 seconds
     Shared Example Group: "a cherrypicking procedure" called from ./spec/features/pipelines/cherrypick/cherrypick_pipeline_spec.rb:328
     # ./spec/support/download_helper.rb:26:in `rescue in wait_for_download'
     # ./spec/support/download_helper.rb:23:in `wait_for_download'
     # ./spec/support/download_helper.rb:13:in `downloaded_file'
     # ./spec/features/shared_examples/cherrypicking.rb:341:in `block (6 levels) in <top (required)>'
     # ./spec/features/shared_examples/cherrypicking.rb:240:in `block (5 levels) in <top (required)>'
     # ./spec/features/shared_examples/cherrypicking.rb:167:in `block (4 levels) in <top (required)>'
     # ./spec/features/shared_examples/cherrypicking.rb:165:in `each'
     # ./spec/features/shared_examples/cherrypicking.rb:165:in `block (3 levels) in <top (required)>'
     # ./spec/features/shared_examples/cherrypicking.rb:163:in `block (2 levels) in <top (required)>'
     # ------------------
     # --- Caused by: ---
     # Timeout::Error:
     #   execution expired
     #   ./spec/support/download_helper.rb:24:in `sleep'

This happens because the downloaded files are saved to the project root, rather than the Capybara.save_path
(./tmp/capybara). However, when runn in isolation, this failure is not reproduced.
Furthermore, even with a fixed test order, failure does not appear to be deterministic. When running:
be rspec './spec/api/dilution_plate_purpose_spec.rb[1:2:2:1]' './spec/features/generate_a_bulk_submission_template_spec.rb[1:1,1:2:1,1:3:1]' './spec/features/pipelines/cherrypick/cherrypick_pipeline_spec.rb[1:2:1:1:1,1:2:2:1:1,1:3:1:1,1:4:1:1,1:5:1:1,1:6:1:1,1:7:1:1,1:7:2:1:1,1:8:1:1,1:8:2:1:1]' './spec/features/tag_group_spec.rb[1:1,1:2]' './spec/lib/record_loader/submission_template_loader_spec.rb[1:1:3]' './spec/sample_manifest_excel/configuration_spec.rb[1:5:7]' --seed 34572 --format documentation --fail-fast

I would observe failure only about 50% ofd the time.
Observations:

Accessing page.driver.browser on a failed test (pry session in the rescue hook of DownloadHelper.wait_for_download
then up until you reach the test itself) revealed that the download directory should still be set to
Capybara.save_path
The deprecation warning seen upon setting the download directory appear to originate from within Capybara itself,
however the setting is not being ignored entirely. Removing the download directory in spec/spec_helper.rb results
in failure 100% of the time.

This is still an issue, seeing it in Cucumber test features/slf/robot_verification.feature


Adding :type to /diabetes, plus fixes

Adding :type URL param to diabetes operation
Fixing the name of the legend spec file, so it actually gets tested
Updating the index to load the version dynamically
Bumping the version to 2.4.0, since the diabetes param update isn't backwards-compatible

Believe it or not, lots of people use FOAAS as a teaching tool for APIs, and we really can't introduce breaking changes even with a semver bump. If you really want the endpoint, create a new one.


Facing Build Error during VSTS-Jenkins Integration using Build and Release Definition.

Problem Statement:- Integration of VSTS Test Manager with Jenkins Build
Steps I follow in Jenkins:-

Build Action:- Invoke Top level Maven Targets
Maven Version: M2_HOME
Goals:- clean install
Post Build Action:- Collect results for TFS/VSTS
Type: - JUnit
Files to include:- **/target/surefire-reports/TEST-*.xml
Steps I follow in VSTS:-
Create a Project
Test Tab >> Test Plan >> Add New Test Suite
Add a One Liner Test Case with Selenium Java Web Automation Testing.
Go to Code Tab >> Branches>> Master Right Click>> New Branch as Selenium Java
Go to Build and Release Tab
Build>> New definition
Add Jenkins Server URL:- http://ipaddress:8080
Username ,Password, Job Name(same as Jenkins Build name)
Note -On Clicking Verify, its giving me Error. (Operation Time Out) I am ignoring it as of now.
Add Task>> Publish test Results >> Format-JUnit, Test Result Files:- $(Build.ArtifactStagingDirectory)/jenkinsResults/**/TEST-*.xml
Search Folder:- $(System.DefaultWorkingDirectory)
Add Task>> Jenkins Download Artifacts
Save To:- $(Build.ArtifactStagingDirectory)
Add Task >> Publish Artifact:Drop
Path to Publish:- $(Build.ArtifactStagingDirectory)
Triggers:- Enabled the Trigger
Click Save and Queue
After Build Run, I am getting below Error log:-

2017-06-28T08:37:25.4600989Z ##[section]Starting: Build
2017-06-28T08:37:25.4620993Z Current agent version: '2.119.1'
2017-06-28T08:37:25.8016712Z ##[section]Starting: Initialize Job
2017-06-28T08:37:25.8136721Z Prepare build directory.
2017-06-28T08:37:25.8479958Z Set build variables.
2017-06-28T08:37:25.8546721Z Download all required tasks.
2017-06-28T08:37:25.8716725Z Downloading task: JenkinsQueueJob
2017-06-28T08:37:26.4686717Z Downloading task: PublishTestResults
2017-06-28T08:37:27.7096721Z Downloading task: JenkinsDownloadArtifacts
2017-06-28T08:37:28.4396000Z Downloading task: PublishBuildArtifacts
2017-06-28T08:37:29.2371258Z ##[section]Finishing: Initialize Job
2017-06-28T08:37:29.2671030Z ##[section]Starting: Get Sources
2017-06-28T08:37:29.3021014Z Syncing repository: MyFirstProject (TfsGit)
2017-06-28T08:37:29.3071294Z Prepending Path environment variable with directory containing 'git.exe'.
2017-06-28T08:37:29.3131356Z ##[command]git version
2017-06-28T08:37:29.4905241Z git version 2.12.0.windows.1
2017-06-28T08:37:29.5025389Z ##[command]git init "d:\a\1\s"
2017-06-28T08:37:29.5520685Z Initialized empty Git repository in d:/a/1/s/.git/
2017-06-28T08:37:29.5560928Z ##[command]git remote add origin https://ramandogra.visualstudio.com/_git/MyFirstProject
2017-06-28T08:37:29.5790921Z ##[command]git config gc.auto 0
2017-06-28T08:37:29.6014631Z ##[command]git config --get-all http.https://ramandogra.visualstudio.com/_git/MyFirstProject.extraheader
2017-06-28T08:37:29.6224401Z ##[command]git config --get-all http.proxy
2017-06-28T08:37:29.6524408Z ##[command]git -c http.extraheader="AUTHORIZATION: bearer ********" fetch --tags --prune --progress origin
2017-06-28T08:37:30.4484870Z remote:
2017-06-28T08:37:30.4484870Z remote:                    vSTs
2017-06-28T08:37:30.4484870Z remote:                  vSTSVSTSv
2017-06-28T08:37:30.4484870Z remote:                vSTSVSTSVST
2017-06-28T08:37:30.4484870Z remote: VSTS         vSTSVSTSVSTSV
2017-06-28T08:37:30.4484870Z remote: VSTSVS     vSTSVSTSV STSVS
2017-06-28T08:37:30.4484870Z remote: VSTSVSTSvsTSVSTSVS   TSVST
2017-06-28T08:37:30.4484870Z remote: VS  tSVSTSVSTSv      STSVS
2017-06-28T08:37:30.4484870Z remote: VS   tSVSTSVST       SVSTS
2017-06-28T08:37:30.4494744Z remote: VS tSVSTSVSTSVSts    VSTSV
2017-06-28T08:37:30.4494744Z remote: VSTSVST    SVSTSVSTs VSTSV
2017-06-28T08:37:30.4494744Z remote: VSTSv        STSVSTSVSTSVS
2017-06-28T08:37:30.4494744Z remote:                VSTSVSTSVST
2017-06-28T08:37:30.4494744Z remote:                  VSTSVSTs
2017-06-28T08:37:30.4494744Z remote:                    VSTs    (TM)
2017-06-28T08:37:30.4494744Z remote:
2017-06-28T08:37:30.4494744Z remote:  Microsoft (R) Visual Studio (R) Team Services
2017-06-28T08:37:30.4494744Z remote:
2017-06-28T08:37:30.4879557Z From https://ramandogra.visualstudio.com/_git/MyFirstProject
2017-06-28T08:37:30.4879557Z  * [new branch]      Selenium_Java -> origin/Selenium_Java
2017-06-28T08:37:30.4889561Z  * [new branch]      master        -> origin/master
2017-06-28T08:37:30.5049559Z ##[command]git checkout --progress --force refs/remotes/origin/Selenium_JavaTest
2017-06-28T08:37:30.5259558Z error: pathspec 'refs/remotes/origin/Selenium_JavaTest' did not match any file(s) known to git.
2017-06-28T08:37:30.7533189Z ##[error]Git checkout failed with exit code: 1
2017-06-28T08:37:30.7573193Z ##[section]Finishing: Get Sources
2017-06-28T08:37:30.7593187Z ##[section]Starting: Post Job Cleanup
2017-06-28T08:37:30.7653188Z Cleaning any cached credential from repository: MyFirstProject (Git)
2017-06-28T08:37:30.7693191Z ##[command]git remote set-url origin https://ramandogra.visualstudio.com/_git/MyFirstProject
2017-06-28T08:37:30.7933192Z ##[command]git remote set-url --push origin https://ramandogra.visualstudio.com/_git/MyFirstProject
2017-06-28T08:37:30.8163191Z ##[section]Finishing: Post Job Cleanup
2017-06-28T08:37:30.8223193Z ##[section]Finishing: Build
Note: -I have not installed any git or Visual Studio and My Scope is only in Selenium, Eclipse, HP UFT Tools from Automation testing Point of View.

Hi @DavidStaheli I just replicated the above Steps again and while queuing the Build, I select Master this time.
The Build throws me "Operation Time Out Error" this time.
Here is the Build Error Log:-
2017-06-29T11:47:04.4498030Z ==============================================================================
2017-06-29T11:47:04.4498030Z Task         : Jenkins Queue Job
2017-06-29T11:47:04.4508022Z Description  : Queue a job on a Jenkins server
2017-06-29T11:47:04.4508022Z Version      : 1.115.1
2017-06-29T11:47:04.4508022Z Author       : Microsoft
2017-06-29T11:47:04.4508022Z Help         : This step queues a job on a Jenkins server. Full integration capabilities require installation of the Team Foundation Server Plugin on Jenkins. More Information.
2017-06-29T11:47:04.4508022Z ==============================================================================
2017-06-29T11:47:06.1348035Z 67fb5744-f401-41ee-a32a-3a747a043dd2 exists true
2017-06-29T11:47:26.3136925Z Error: connect ETIMEDOUT <IP_ADDRESS>:8080
2017-06-29T11:47:26.3196916Z ##[error]connect ETIMEDOUT <IP_ADDRESS>:8080
2017-06-29T11:47:26.3216918Z ##[section]Finishing: Queue Jenkins Job: Selenium_Java1
2017-06-29T11:47:26.3279188Z ##[section]Starting: Post Job Cleanup
2017-06-29T11:47:26.3327160Z Cleaning any cached credential from repository: MyFirstProject (Git)
2017-06-29T11:47:26.3367173Z ##[command]git remote set-url origin https://ramandogra.visualstudio.com/_git/MyFirstProject
2017-06-29T11:47:26.3589432Z ##[command]git remote set-url --push origin https://ramandogra.visualstudio.com/_git/MyFirstProject
2017-06-29T11:47:26.3787152Z ##[section]Finishing: Post Job Cleanup
2017-06-29T11:47:26.3837150Z ##[section]Finishing: Build

@DavidStaheli downloading an Agent for Windows solve the Problem, I am guessing that When I am running the Build Earlier, it takes an Agent from VSTS Cloud to run the Build and that Agent might not able to access my Jenkins Service EndPoint as it is on Local(Not Exposed to Internet)

@ericsciple and @DavidStaheli  I am able to run Jenkins on my Local Server through VSTS Build and Release Definition.
I downloaded the Private Agent since Hosted agents will not work in my case. (Jenkins is on local Server). Build is running and getting succeeded.
I followed below Blog:-
https://www.visualstudio.com/en-us/docs/build/actions/agents/v2-windows
We can close this Issue.

Thank you @raman91dogra!


[PE-D][Tester B] Specifying 2 same prefixes

I can specify 2 same prefixes (eg 2 names, 2 postal codes, 2 ages) without getting an error. the latest prefix is taken.

Labels: type.FeatureFlaw severity.Low
original: bryanongjx/ped#5

Specified in the UG and has the same functionality as AB3.


Fix configuration cache compatibility of UsesSample tests

Part of #21027
Most fixes are either pure "name punning" or adding an extra intermediate variable to capture stuff. Some affected samples are exposed in the user guide.

@bot-gradle test RfN

OK, I've already triggered the following builds for you:

ReadyForNightly build

Some questions and feedback on the use of the term "working directory" (mostly in comments)

@bot-gradle test this

OK, I've already triggered the following builds for you:

PullRequestFeedback build

@mlopatkin Re: https://github.com/gradle/gradle/pull/22379#discussion_r998313781
For my benefit, why is the execution phase skipped in those cases? Aren't :help and :tasks regular tasks for most effects and purposes? (have a task action, etc)

@mlopatkin Re: #22379 (comment)
For my benefit, why is the execution phase skipped in those cases? Aren't :help and :tasks regular tasks for most effects and purposes? (have a task action, etc)

Poor choice of words from my side, what I mean is that execution of the interesting tasks is not happening. We already know that help and tasks are CC-compatible, so calling them adds nothing, but we care e.g. about doLast actions we wrote in the snippets.

@bot-gradle test and merge

OK, I've already triggered a build for you.


formatOnSave formats collection expression with trailing comma incorrectly

Environment data
VS Code version: 1.95.2, e8653663e8840adaf45af01eab5c627a5af81807, x64
C# Extension version: v1.14.2
Steps to reproduce

Create or open a C# project.
Add the following code wherever syntactically applicable:void M()
{
        int[] arr =
        [
            0,
        ];
}

Ensure the file uses 4 spaces for indentations and editor.formatOnSave is enabled.
Save the file.

Expected  behavior
void M()
{
    int[] arr =
    [
        0,
    ];
}

Actual behavior
void M()
{
    int[] arr =
    [
        0,
        ];
}

@just-ero Something seems off about your C# extension version. The closest I can find to 1.14.2 is 1.14.0 published back in 2018. The Roslyn Formatter that ships with that version of the extension predates collection expressions.

Thanks for the heads up. That was the version of the C# DevKit extension. I've fixed my mistake.

@just-ero Thanks for updating! I can reproduce your issue and will move it to the Roslyn repo.
The body of the method is indented 8 spaces and when the formatter deindents those lines to 4 spaces, it fails to deindent the line with the closing square bracket. The same code without the trailing comma formats as expected.


Custom theme support removed in Files 2.4.21

The option to add custom themes through files was removed as noted in several GitHub issues:
https://github.com/files-community/Files/issues/10315
https://github.com/files-community/Files/issues/10542
https://github.com/files-community/Files/issues/10885
The updated documentation suggests some ways to customize it to an extent. Is there any way to integrate catppuccin to this new version?

According to the docs, the only thing you can do is change are background colors, all accents are based off of windows theme color.

Sad to see this. 😢

Shouldn't this repo be archived since it can be applied anymore?

Shouldn't this repo be archived since it can be applied anymore?

Got it working!
{
  "AppThemeBackgroundColor": "#ff232634",
  "AppThemeAddressBarBackgroundColor": "#ff292c3c",
  "AppThemeSidebarBackgroundColor": "#ff292c3c",
  "AppThemeFileAreaBackgroundColor": "#ff303446"
}

Got it working!
{
  "AppThemeBackgroundColor": "#ff232634",
  "AppThemeAddressBarBackgroundColor": "#ff292c3c",
  "AppThemeSidebarBackgroundColor": "#ff292c3c",
  "AppThemeFileAreaBackgroundColor": "#ff303446"
}

@Aworldc Hi! How did you manage to do it? My settings file got erased (manual changes) after every restart... Thanks :-)

According to the docs, the only thing you can do is change are background colors, all accents are based off of windows theme color.

@CaidenBlock the current options are based on the brushes that users were customizing in the previous theming system, but we can add more options if there is enough interest.

@yaira2 it would be quite nice if additional options were available. The theme’s 80% there, but it would be great if we could really theme everything. Was there a specific reason to limit theme functionality? In my opinion, the more customization options, the better.
Also, I’ll test out the new theme methods and update this repository sometime today or tomorrow.

The previous system worked by loading xaml into the app at startup and overriding the default brushes in Files. This was a good idea in theory, but in actuality we found it had an impact on startup performance, the syntax was too complex for regular users, and was prone to breaking whenever we released updates to Files. On the flip side, the current theming system uses json, has good performance, and doesn't have any issues when the app is updated.


Finish typeaheads redesign

There are some parts of the typeahead menus that we never explicitly did a design pass on:

Descriptions (e.g., channel description, group description, user emails)
Hints (e.g., bottom of channel typeahead; bottom of topic typeahead)
Pronouns in @-mention typeaheads
Wildcard mentions: hint styling -- should it be like pronouns?; new icons
Unsubscribed channel hint triangle.

We should explicitly settle on the designs for these.

Designs:

Demo https://terpimost.github.io/compose-decomposed/
Source https://github.com/terpimost/compose-decomposed

This issue + this CZO thread covers what remains of #25116.

@zulipbot claim


TH2 variances returned as a list not a 2 by 2 array

It is not possible to use the variances method  effectivly for TH2 histograms ...  as it does not return an array with the correct dimensions

This belongs to uproot-methods. It could be because uproot_methods.classes.TH2 inherits an unshaped array from uproot_methods.classes.TH1.


Codespaces: Debugging is broken

Steps to repro:

Create a new Codespace in Web using a repo with launch.json. Eg: https://github.com/microsoft/vscode-remote-try-node
Start debugging (Press F5)

🐛 Prompts to select the debugger type

Expected: Starts debugging without any prompts

Fix of https://github.com/microsoft/vscode/issues/125259 triggered this.
Root cause: When asked to reload configuration, configuration service is reloading from the cache instead from real folder.
@isidorn @roblourens I see you are asking to reload configuration always
https://github.com/microsoft/vscode/blob/1fd7873ceeddc6a15e61c5b5d363c5fbd5226963/src/vs/workbench/contrib/debug/common/debugUtils.ts#L321-L321
I think you shall reconsider this and ask it only when needed.Because, it reloads all configurations, eg: user configuration (settings, tasks), remote user settings, workspace configuration, folder configurations (settings, tasks, launches). So it will impact perf.

Repros only on the web for codespaces (not with a codespace connected thru vscode), with the error:
You don't have an extension for debugging 'JSON with Comments'. Should we find a 'JSON with Comments' extension in the Marketplace?

@sandy081 thanks a lot for fixing this 👏
I have added the reloadConfiguration code because it was probably needed in the past. @roblourens feel free to remove some of this calls as part of some debt week.

I think this should just go out with the second recovery release. I opened another issue for looking at the reloadConfiguration usage

It's working in codespaces insiders 🎉


[BUG] Undefined behavior executing mret in debug-mode

Bug Description
In the process of porting the debug_test, a manually written, self checking directed test-program originally developed for the CV32E40P (v1) to the CV32E20, we encountered a difference in behavior between these two cores.  The Debug & Trigger sub-chapter of the CV32E40 User Manual states:

When in Debug Mode, the mret or uret instruction will also cause the PC to jump back to [dm_exception_addr].

This seems logical and the debug_test has an explicit check for this.  However, the CV32E20 appears to jump to a random location.  This seems odd, but is in compliance with section 4.1 of the Debug Spec (v0.13.2), which states (emphasis added):

Almost all instructions that change the privilege level have undefined behavior. This includes
ecall, mret, sret, and uret. (To change the privilege level, the debugger can write prv in
dcsr). The only exception is ebreak. When that is executed in Debug Mode, it halts the
hart again but without updating dpc or dcsr.

The CV32E40P has implemented a slightly non-standard, yet arguably much better Debug architecture.  Am I correct in my understanding?  If so, should the CV32E20 be modified to match?

Bug Description
In the process of porting the debug_test, a manually written, self checking directed test-program originally developed for the CV32E40P (v1) to the CV32E20, we encountered a difference in behavior between these two cores. The Debug & Trigger sub-chapter of the CV32E40 User Manual states:

When in Debug Mode, the mret or uret instruction will also cause the PC to jump back to [dm_exception_addr].

This seems logical and the debug_test has an explicit check for this. However, the CV32E20 appears to jump to a random location. This seems odd, but is in compliance with section 4.1 of the Debug Spec (v0.13.2), which states (emphasis added):
Is this the same in the latest debug spec? I think it is not actually set in stone what our point of reference is, but there have been PRs already updating to a more recent version of debug.

Almost all instructions that change the privilege level have undefined behavior. This includes
ecall, mret, sret, and uret. (To change the privilege level, the debugger can write prv in
dcsr). The only exception is ebreak. When that is executed in Debug Mode, it halts the
hart again but without updating dpc or dcsr.

The CV32E40P has implemented a slightly non-standard, yet arguably much better Debug architecture. Am I correct in my understanding? If so, should the CV32E20 be modified to match?
How is it non-standard, especially if the behavior is unspecified?
The situation seems to be a documentation issue to start with. On top, it could be good to harmonize with CV32E40P to avoid such hickups in verification. Functionally or compliance-wise, it doesn't seem to be a big issue.
I would say changing the behavior is preferred, but low prio. I would say it depends if there is somebody willing to do.


Update package for use in new versions of Python

Update package
This version of Nortek-Python does not support Python version 3 well and some of the libraries and modules used in it are obsolete and those libraries are no longer available.
For example:

UserDict

Or even to import, according to the example(from nortek.controls import PdControl), we encounter the following error, which does not allow working with this package at first.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python312\Lib\site-packages\nortek\controls.py", line 12, in <module>
    import win32com.client as _wc
  File "C:\Python312\Lib\site-packages\win32com\__init__.py", line 8, in <module>
    import pythoncom
  File "C:\Python312\Lib\site-packages\pythoncom.py", line 2, in <module>
    import pywintypes
  File "C:\Python312\Lib\pywintypes.py", line 130, in <module>
    __import_pywin32_system_module__("pywintypes", globals())
  File "C:\Python312\Lib\pywintypes.py", line 101, in __import_pywin32_system_module__
    raise ImportError("No system module '%s' (%s)" % (modname, filename))
ImportError: No system module 'pywintypes' (pywintypes312.dll)

Hint: This has also been done for lower versions of Python and we have encountered the same error.

What does your environment look like? Have you installed pywin32 (pip install pywin32)?

Yes, it is installed.
I even tested several times in different virtual environments to make sure, but it still doesn't have the pywintypes module.
I even tried to install this module via pip install pywintypes but this module does not exist and it gave me the following error:

ERROR: Could not find a version that satisfies the requirement pywintypes (from versions: none)
ERROR: No matching distribution found for pywintypes

Apparently, this module is one of the requirements of the pywin32 module, but it does not exist.
Even by searching on different sites, I found the files and added them manually, but I still had problems.
In my opinion, this code should be rewritten and optimized with Python3 and Python3 modules.
But I can't identify the structure of the code, because I can't run the code, so I can't understand its logic and function.
If you can tell the logic of the codes or give the algorithm of vno files so that I can read these types of files, I will be grateful.


make run acts successful when the server fails to bind to the port

Describe the bug

If port 3000 is taken, make run seems to complete successfully, rather than exiting and telling the user what went wrong
Also notice that vite falls back to 3002 instead of 3001, which I believe breaks everything.
Setup and configuration
Current version:

❯ git log -n1
commit 6f795f5e9c64e42b5577c2270cbf10d8dee593d9 (HEAD -> main)
Author: Akki<EMAIL_ADDRESS>Date:   Mon Apr 8 18:32:45 2024 +0400

Commands I ran to install and run OpenDevin:
make build
make setup-config
make run

Steps to Reproduce:

Start the backend on port 3000, or run some other app on 3000
run make run

Logs, error messages, and screenshots:
❯ make run
Running the app...
Starting backend server...
Waiting for the backend to start...
Backend started successfully.
Starting frontend with npm...

><EMAIL_ADDRESS>start
> vite --port 3001

Port 3001 is in use, trying another one...

  VITE v5.2.8  ready in 508 ms

  ➜  Local:   http://localhost:3002/
  ➜  Network: use --host to expose
  ➜  press h + enter to show help
/home/rbren/.local/share/virtualenvs/opendevin-0fQgowZe/lib/python3.12/site-packages/pydantic/_internal/_fields.py:151: UserWarning: Field "model_list" has conflict with protected namespace "model_".

You may be able to resolve this warning by setting `model_config['protected_namespaces'] = ()`.
  warnings.warn(
/home/rbren/.local/share/virtualenvs/opendevin-0fQgowZe/lib/python3.12/site-packages/pydantic/_internal/_fields.py:151: UserWarning: Field "model_name" has conflict with protected namespace "model_".

You may be able to resolve this warning by setting `model_config['protected_namespaces'] = ()`.
  warnings.warn(
/home/rbren/.local/share/virtualenvs/opendevin-0fQgowZe/lib/python3.12/site-packages/pydantic/_internal/_fields.py:151: UserWarning: Field "model_group_alias" has conflict with protected namespace "model_".

You may be able to resolve this warning by setting `model_config['protected_namespaces'] = ()`.
  warnings.warn(
/home/rbren/.local/share/virtualenvs/opendevin-0fQgowZe/lib/python3.12/site-packages/pydantic/_internal/_fields.py:151: UserWarning: Field "model_info" has conflict with protected namespace "model_".

You may be able to resolve this warning by setting `model_config['protected_namespaces'] = ()`.
  warnings.warn(
/home/rbren/.local/share/virtualenvs/opendevin-0fQgowZe/lib/python3.12/site-packages/pydantic/_internal/_fields.py:151: UserWarning: Field "model_id" has conflict with protected namespace "model_".

You may be able to resolve this warning by setting `model_config['protected_namespaces'] = ()`.
  warnings.warn(
INFO:     Started server process [1280354]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
ERROR:    [Errno 98] error while attempting to bind on address ('<IP_ADDRESS>', 3000): address already in use
INFO:     Waiting for application shutdown.
INFO:     Application shutdown complete.

^Cmake: *** [Makefile:128: run] Interrupt

I don't know if it can help .  But when i do Make build
At the end i get :
Installing the current project: opendevin (0.1.0)
Python dependencies installed successfully.
Setting up frontend environment...
Detect Node.js version...
/bin/sh: 1: node: not found
make[1]: *** [Makefile:94: install-frontend-dependencies] Error 127
make: *** [Makefile:26: build] Error 2
After if i Make run,
Running the app...
Starting backend server...
Waiting for the backend to start...
Backend started successfully.
Starting frontend with npm...

<EMAIL_ADDRESS>start
vite --port 3001

'vite' is not recognized as an internal or external command,
operable program or batch file.
make: *** [Makefile:128: run] Error 1
unixjas@DESKTOP-FPD4J66:/mnt/c/Opendevin/OpenDevin$ /home/unixjas/.cache/pypoetry/virtualenvs/opendevin-wWEJnBUH-py3.11/lib/python3.11/site-packages/pydantic/_internal/fields.py:151: UserWarning: Field "model_list" has conflict with protected namespace "model".
You may be able to resolve this warning by setting model_config['protected_namespaces'] = ().
warnings.warn(
/home/unixjas/.cache/pypoetry/virtualenvs/opendevin-wWEJnBUH-py3.11/lib/python3.11/site-packages/pydantic/_internal/fields.py:151: UserWarning: Field "model_name" has conflict with protected namespace "model".
You may be able to resolve this warning by setting model_config['protected_namespaces'] = ().
warnings.warn(
/home/unixjas/.cache/pypoetry/virtualenvs/opendevin-wWEJnBUH-py3.11/lib/python3.11/site-packages/pydantic/_internal/fields.py:151: UserWarning: Field "model_group_alias" has conflict with protected namespace "model".
You may be able to resolve this warning by setting model_config['protected_namespaces'] = ().
warnings.warn(
/home/unixjas/.cache/pypoetry/virtualenvs/opendevin-wWEJnBUH-py3.11/lib/python3.11/site-packages/pydantic/_internal/fields.py:151: UserWarning: Field "model_info" has conflict with protected namespace "model".
You may be able to resolve this warning by setting model_config['protected_namespaces'] = ().
warnings.warn(
/home/unixjas/.cache/pypoetry/virtualenvs/opendevin-wWEJnBUH-py3.11/lib/python3.11/site-packages/pydantic/_internal/fields.py:151: UserWarning: Field "model_id" has conflict with protected namespace "model".
You may be able to resolve this warning by setting model_config['protected_namespaces'] = ().
warnings.warn(
INFO:     Started server process [15254]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
ERROR:    [Errno 98] error while attempting to bind on address ('<IP_ADDRESS>', 3000): address already in use
INFO:     Waiting for application shutdown.
INFO:     Application shutdown complete.

On reddit i followed instruction to installed node
Installing Node.js 20.12.1 with nvm
Install cURL:
sudo apt-get install curl
Download and run the nvm installation script:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
Close and reopen your terminal.
Verify the nvm installation:
command -v nvm
Install Node.js 20.12.1:
nvm install 20.12.1
Set Node.js 20.12.1 as the default version:
nvm alias default 20.12.1
Verify the Node.js and npm versions:
node -v
npm -v
Make build doesnt do the error anymore :
Detect Node.js version...
/bin/sh: 1: node: not found
make[1]: *** [Makefile:94: install-frontend-dependencies] Error 127
make: *** [Makefile:26: build] Error 2
And when i make run,
It does the same error
ERROR: [Errno 98] error while attempting to bind on address ('<IP_ADDRESS>', 3000): address already in use
And on the web page its does the failed connection endlessly.
If it doesnt help, forget about my comment!


Share OBD connection in multiple view controllers

Hi @OverSwift @hellensoloviy @MaxVitruk @sergiyloza  , I'd like to leverage your lib in my app. My concern is:

Share OBD connection in multiple view controllers
Run multiple OBD requests in one view controller
Extend OBD commands, what if I have to support other OBD modes and pids, using swift extension?
Encapsulate request and response into an object, just like obj-java-api

Do you have any suggestion?

Hi. I have more or less the same questions, and as follow-up would like to know

Can the OBD connection be run as a shared instance, or do you have to make your own singleton to reuse it across the entire app?
If you have to run multiple requests, does each request require their own observer e.g. if they are from Mode1?
What is the maximum number of simultaneous requests you can run at a time? I read in the ELM327 documentation that you can chain 6 commands together in one request, but it does not say how much you can request in totalt, only that as long as you are reading the buffer, you should be ok.

Hello @xixinjie & tropicdome.
Share OBD connection in multiple view controllers
Run multiple OBD requests in one view controller
Extend OBD commands, what if I have to support other OBD modes and pids, using swift extension?
Encapsulate request and response into an object, just like obj-java-api
@xixinjie
Its all about your own implementation. Single responsibility - that what a lib does.
To implement shared connection you could create singleton class. Depends on your architecture solution.
Extend OBD commands - You could fork a lib to extend source code at all. Lib core works with a generics so you need just implements few interfaces to create your own command support.
Encapsulate request and response - Swift != Java :)
@tropicdome
run multiple requests - You could turn repeatable for each command. If we are talking about different command - yes, you need request stack. Otherwise parser could not detect command response.
maximum number of simultaneous requests - Just one. We are storing each request in a queue.
Thanks.

Thank you @MaxVitruk .
I'm now using singleton class to share connection. Will try other items then.


Transport security and client authentication for View and Custody services

Currently, we don't have a meaningful transport security or client authentication story for the view or custody services.  This was fine when we were using the view service in-process, or as a local daemon on the same machine for testing, but is not fine as we get closer to the end goal of having the view and custody services act as a "personal RPC".
There are two aspects to this problem, transport security and client authentication:

The transport security problem is to establish a secure channel to the view server, and authenticate the server identity.
The client authentication problem (for the view service) is to have the client demonstrate to the view server that it has the capability to view the data it's requesting.
The client authentication problem (for the custody service) is to have the client demonstrate to the custody service that it has the capability to request authorization of a transaction. [Note that this is weaker than the capability to authorize a transaction, which remains solely in the hands of the custody service].

In the current iteration of the view protocol, we do not attempt to solve transport security at all, and grant access based just on having the client supply the AccountId (a hash of the full viewing key). This isn't a good solution on either front.
Transport Security
Since we're using GRPC, we should solve transport security using TLS.  The only significant design question here is how to authenticate the view server.  There are two options here.
Public certificates: one option is to use a DNS name to obtain a publicly verifiable certificate issued by a certificate authority.
Pinned certificates: another option is to have the view server create its own certificate, and for the client to pin it. Probably the most convenient way to handle this would be similar to the way that Tendermint Node IDs work: we'd hash the view server's certificate to VIEW_SERVER_ID, specify the address the client connects to as<EMAIL_ADDRESS>and have the client validate the server's certificate against the pinned VIEW_SERVER_ID.
In either case, we would require the use of TLS to connect to the view service, and remove the current capability for non-encrypted connections.
Public certificates have the advantage that they can be used from web contexts, where transport security is handled and controlled by the browser. Pinned certificates have the advantage that they don't require a public DNS name, and can be used on local networks.
On the client side, public certificates can be validated in a standard way, while pinned certificates would require hooking into the certificate validation logic of the TLS stack. On the server side, public certificates require management of the entire certificate lifecycle, while pinned certificates just require generating a one-off certificate.
Client Authentication (View Service)
A basic question is whether authentication should be done at the transport level or at the request level. We use TLS certificates to authenticate the view server to the view client, so one possibility would be to use TLS client certs to authenticate the view client at the transport level, and create a bidirectionally authenticated channel. However, this requires that we have control over the transport layer. Since we care about web contexts, where we don't get to control the transport layer, and we only want to have one authentication mechanism, we need to have authentication at the request level.
One idea we'd floated in the past was to try to have a client authenticate to the view service by demonstrating knowledge of some part of the Penumbra key hierarchy (e.g., the FVK, or the AccountId, or whatever).  This isn't a good idea, though, because it means that access to the view service can never be revoked, and means that the client has to have that long-term key material. Instead, we'd like it to be possible to use the view service without having any of the long-term viewing keys.
Another design aspect is that, even though the current implementation of the view server only views a single account, the protocol should allow one view server to support multiple accounts.  To do this, the requests need to somehow be able to identify the account they're requesting data about.  Currently, this is done by including the AccountId (a hash of the FVK) in each request, but this is not a workable auth mechanism for the reason mentioned above.
I'd propose a bearer-token system with the following shape:
package penumbra.view.v1alpha1;

message ViewAuthToken {
  bytes inner = 1;
}

message ViewAuthRequest {
 core.crypto.v1alpha1.FullViewingKey fvk = 1;
}

message ViewAuthResponse {
 ViewAuthToken token = 1;
}

service ViewAuthService {
  rpc ViewAuth(ViewAuthRequest) returns (ViewAuthResponse);
}

// ... in messages for the main view protocol ...

message NotesRequest {
  // Authorizes the request.
  ViewAuthToken token = 1;
  // If set, return spent notes as well as unspent notes.
  bool include_spent = 2;
  // ...
}

The high-level design points here are:

The ViewAuthToken is opaque bytes, so a server implementation can put whatever it wants in it.
The ViewAuthRequest demonstrates viewing authority by sending the full viewing key. This also means that the ViewAuthRequest works as a registration mechanism that tells the view server about viewing keys it should scan.
The ViewAuthService is a separate service from the main ViewProtocolService, so that if a view service implementation wants to do something different, it can do so. For instance, in a browser context where we don't want the web content to have access to the FVK, the browser extension can expose only the ViewProtocolService and provide ViewAuthTokens to web content by another mechanism.

As a basic implementation for pviewd, we could handle ViewAuthRequest by generating 32 random bytes as a token, saving the token to the database, and then checking incoming tokens against the authorized value.
Client Authentication (Custody Service)
The custody protocol allows users to request authorization of a TransactionPlan, and allows the custody service to inspect the complete TransactionPlan to decide whether or not to return the authorization data.
In this context, then, client authentication is about the capability to request authorization, not the capability to perform authorization (which always remains inside the custody service).
There are some cases where this capability is meaningful, and other cases where it isn't. For instance, a custody service provided by a server that operates a hot wallet for trading and applies policy to automatically determine whether a transaction should be approved would benefit from only allowing select entities to make requests. But a custody service backed by a hardware wallet or other mechanism where a human approves the transaction wouldn't.
To handle this, I'd propose augmenting the AuthorizationRequest message to include two additional fields: request_key, holding a 32-byte Ed25519 public key, and request_sig, holding a 64-byte Ed25519 signature over the supplied TransactionPlan. Because these fields are optional, they can be missing or ignored in cases where request authorization is not relevant, but they give a standardized way to include authorization where it is relevant.  Management of the request keys themselves would be left to the specific implementation of the custody service.  Using Ed25519 means we have broader tooling compatibility (since we're just doing plain signatures on binary data, we don't have any special constraints on the construction), and only supporting one good signature scheme makes the ecosystem simpler.

(Replaced the stub issue with a design writeup)

Re: pinned vs public certificates, both use cases seem useful to support. Maybe we start with the pinned use-case, since it requires more customization of the TLS handling and can be used for both public and private access.

The ViewAuthRequest demonstrates viewing authority by sending the full viewing key. This also means that the ViewAuthRequest works as a registration mechanism that tells the view server about viewing keys it should scan.

Is there phishing potential here, where someone could be convinced to configure their pcli to point to a view server owned by an attacker, who would then be able to view the user's FVK?
It seems like we'd want to use the FVK to sign a value, or at least salt + hash it. This has a couple open questions: how does the view server initially register the user's FVK? How do we prevent forwarding attacks where the signed value/hash is sent from the malicious view server to the legitimate one?
I think a challenge/response protocol or something like the OAuth spec's state parameter may be useful here.

Because these fields are optional, they can be missing or ignored in cases where request authorization is not relevant, but they give a standardized way to include authorization where it is relevant. Management of the request keys themselves would be left to the specific implementation of the custody service.

To make sure I understand fully: this would be accomplished by having a configuration in the custody service to enable/disable the requirement for request authorization fields?

Re: pinned vs public certificates, both use cases seem useful to support. Maybe we start with the pinned use-case, since it requires more customization of the TLS handling and can be used for both public and private access.

On the other hand, if public certs require less integration with the TLS stack, it might be easier to support those first?

Pinned certificates seem useful to support for cases where no public DNS record exists (if there is a public DNS record we could use RFC2136 to provide the ACME challenges for the subdomain pointing to the internal host, but this is additional complexity -- requiring a local DNS server, TSIG configuration w/ certbot, and upstream DNS configuration).
The difficulty with pinned certificates is rotation; in the case where they're both running on the same host it's easy, but in the (unlikely) scenario we were to operate a view server at https://testnet.penumbra.zone/ how would we publish changes to the pinned certificate ~if~when it became necessary? Maybe a CRL on a domain with a public certificate? Maybe the nature of the view service makes public access less desirable?

I'm not sure that rotation is super important here; my thought is that it's similar to the situation with Tendermint's P2P keys, where they're pinned once and stay active for the lifetime of the deployment. My assumption is that pinned certs would only be used without DNS records, in which case we're more likely to be in a small-scale, private deployment where cert rotation is less important.

Due to the comparative operational simplicity of publicly accessible certs, maybe they should be the default whenever available, and pinned certificates can fill in the gaps for private networks without public DNS.

Yeah, I think that this should be the default, and I think we could even plan to implement public certs first and leave the pinned certs for later.

Hmm, I think the idea would be that the identity of the view server is assured via TLS, so it reduces to whether or not the view server is actually trusted, which is the inherent phishing problem above.

Since technically designing ourselves out of this seems difficult, maybe we can address this in the client by adding a prompt on first registration explaining that the view server will have access to their viewing key and the user should confirm they trust the view server?

After discussion in the design meeting, we decided:

We'll support only two kinds of endpoints: public DNS names with fully auto-managed certificates, and pinned certificates similar to Tendermint P2P connections (FINGERPRINT@IP_ADDR:PORT).
For all "personal" services (i.e., everything except pd), we always require TLS, even over internal networks.  This way, if someone misconfigures their VPN or something, they don't leak data.  For pd, we'd make an exception to ease load-balanced public deployments that terminate TLS externally.
We'll change the view protocol to add an opaque auth token. A view service implementation is not required to use the suggested auth mechanism that combines registration with authorization.
We'll change the custody protocol to add Ed25519 signing. A custody service implementation is not required to use it.

GRPC already has a bearer token mechanism, we should use it instead of stuffing extra data in request messages:  https://github.com/hyperium/tonic/blob/master/examples/src/authentication/server.rs

The original design turned out to be a bad one. We should not plan to do this, until we have a concrete use case. For now the story is "don't expose to the internet".


[flash_ctrl] ADD TEST FLASH CTRL ERROR PROG WIN

Perform accesses in order to provoke the 'program resolution' error.
Test via the Software interface.
Signed-off-by: TIM EWINS<EMAIL_ADDRESS>

Please do not merge until I push new changes

I have updated the following ....

Simplified the constraints, as suggested
Removed some $urandom expressions and replaced them with class constraints for better seed stability

Ready for Review

Resubmitted

Some checks are failing ... seems a common proble.  Suspect issues outside this PR.

Please can someone retrigger the checkin checks to see if the errors have cleared ?

Rebased and ready for merge
This merge will conflict with #12310
Depending on which is merged first the other will need rebasing

Checks need to be re-ran .. something is failing elsewhere

there is a conflicting file. @TimEwins can you resolve it?

@weicaiyang Rebased and clean ... subject to further PR merges if they occur in the meantime

@weicaiyang Rebased and clean ... subject to further PR merges if they occur in the meantime

yeah, need to rebase again...

@weicaiyang I'll do the rebase now

@weicaiyang Ready for merge


fix: Device Software tab pagination does not work - [merged]

Merges 67-fix-device-software-pagination -> development
:books: Summary

:link: Links / References

#67

:construction_worker: Tasks

[ ] Add your tasks here if required (delete)

[ ] ~"breaking-change" Any Breaking change(s)
Breaking Change must also be notated in the commit that introduces it and in Conventional Commit Format.

[ ] ~Documentation Documentation written
All features to be documented within the correct section(s). Administration, Development and/or User

[ ] Milestone assigned

[ ] Unit Test(s) Written
ensure test coverage delta is not less than zero

mentioned in commit 241ba47c80805dbd648392ef0b6b26793d3f55ff

enabled an automatic merge when all merge checks for 241ba47c80805dbd648392ef0b6b26793d3f55ff pass

mentioned in commit 583e1767a141995108b8b2662db3fe82b2c4f063

added 1 commit
241ba47c - fix(itam): correct device software pagination
Compare with previous version

added 13m of time spent


Add manifest-template for deployment to CF

What? and Why?

What does this pull request change/fix? Why was it necessary? Add manifest-template.yml for deployment to CF via Jenkins.

Checklist

[ ] CHANGELOG.md updated? (if required)

Codecov Report

Merging #70 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #70   +/-   ##
=======================================
  Coverage   85.57%   85.57%
=======================================
  Files           6        6
  Lines         208      208
=======================================
  Hits          178      178
  Misses         30       30

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 75a921f...d6b3009. Read the comment docs.


Hello, how to modify the default api model, such as: gpt-3.5-turbo-0613, both docker and node need to be modified

Hello, how to modify the default api model, such as: gpt-3.5-turbo-0613, both docker and node need to be modified

Can be specified in the environment variable


Upgrade to gradle 6.0

fix deprecations that will be removed in gradle 7

TODO: maven-publish plugin

I did this for Maven publish:
apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.artifactory'

publishing {
	publications {
		mavenJava(MavenPublication) {
			pom {
				afterEvaluate {
					name = project.description
					description = project.description
				}
				url = 'https://github.com/spring-projects/spring-amqp'
				organization {
					name = 'Spring IO'
					url = 'https://spring.io/projects/spring-ampq'
				}
				licenses {
					license {
						name = 'Apache License, Version 2.0'
						url = 'https://www.apache.org/licenses/LICENSE-2.0'
						distribution = 'repo'
					}
				}
				scm {
					url = linkScmUrl
					connection = "scm:git:$linkScmConnection"
					developerConnection = "scm:git:$linkScmDevConnection"
				}
				developers {
					developer {
						id = 'garyrussell'
						name = 'Gary Russell'
						email =<EMAIL_ADDRESS>						roles = ['project lead']
					}
					developer {
						id = 'artembilan'
						name = 'Artem Bilan'
						email =<EMAIL_ADDRESS>					}
					developer {
						id = 'dsyer'
						name = 'Dave Syer'
						email =<EMAIL_ADDRESS>					}
					developer {
						id = 'markfisher'
						name = 'Mark Fisher'
						email =<EMAIL_ADDRESS>					}
					developer {
						id = 'mpollack'
						name = 'Mark Pollack'
						email =<EMAIL_ADDRESS>					}
					developer {
						id = 'jbrisbin'
						name = 'Jon Brisbin'
						email =<EMAIL_ADDRESS>					}
					developer {
						id = 'tomas.lukosius'
						name = 'Tomas Lukosius'
						email =<EMAIL_ADDRESS>					}
				}
				issueManagement {
					system = 'GitHub'
					url = 'https://github.com/spring-projects/spring-amqp/issues'
				}
			}
			versionMapping {
				usage('java-api') {
					fromResolutionResult()
				}
				usage('java-runtime') {
					fromResolutionResult()
				}
			}
		}
	}
}

artifactoryPublish {
	publications(publishing.publications.mavenJava)
}

Plus this one needs to be added into a plugins section:
id 'com.jfrog.artifactory' version '4.9.8' apply false

Now we have a problem with optional in our dependencies.

Not sure how has that worked, but I was able to push to your branch.
Please, take a look into my commit

OK, I have figured out how to have a proper build script for Gradle 6.
See Spring Integration AWS commits down starting with: https://github.com/spring-projects/spring-integration-aws/commit/ad8c47658a2c8377c07e37f82b8c94f169c34d71
Also see CI plan config for that project: https://build.spring.io/browse/INTEXT-AWS
Since we have to use an artifactory plugin in our build directly we need to tweak some CI plan config.
I can help tomorrow to figure out what would be better to do here.

Closed in favor of #1173


SQL Data Warehouse

This applies to SQL Data Warehouse as well but on top it's indicated it's only available in SQL Server.

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

ID: ff9825d0-343d-9a72-342c-3bd8bf7564e0
Version Independent ID: 3b9185e6-d2aa-cfaf-6a0f-4da3d751080c
Content: Use OPENJSON with the Default Schema (SQL Server) - SQL Server
Content Source: docs/relational-databases/json/use-openjson-with-the-default-schema-sql-server.md
Product: sql
GitHub Login: @jovanpop-msft
Microsoft Alias: jovanpop

@arashaga -- thank you for your feedback.
@jovanpop-msft -- please look into this issue 3342.

@WilliamAntonRohm could you please assign this to some author for DW? Someone marked top-level page as supported in DW; however, other pages  are not marked. Not sure is this error or intentional, but this should be checked with DW doc/pm team.

@jovanpop-msft -- thank you, I will.

@julieMSFT -- please look into this issue 3342.

@XiaoyuMSFT Xiaoyu, can you verify this should be marked as supported in SQL DW?

@XiaoyuMSFT Xiaoyu, can you verify this should be marked as supported in SQL DW?

@arashaga Thank you for submitting this issue. I am updating the page to show as supported in Azure Synapse. You will see the update on the docs site tomorrow. I will go ahead and close this issue but if you have further question you can still respond to this issue. Thank you.

#please-close  #https://github.com/MicrosoftDocs/sql-docs-pr/pull/14641


HMR no longer working.

Hi Folks,
I am using the Angular/.NET core VS project template.  Just today, HMR has stopped.  I am not seeing any errors anywhere.
The webpacks are building - see screenshot.   But just not seeing HMR.
How should I kick it to make it start up again?

Check the ASPNETCORE_ENVIROMENT variable. it should be set to Development.

That was it!


Add demo directory to store build artifact

Update the build to copy the output tarball to demo folder. This would
align the behaviour of build script with other components.
Signed-off-by: Behera, Tushar Ranjan<EMAIL_ADDRESS>

Actually, One more change is required :
As we are including the OnPremRV in AIO dependency, we need to clone and build it in build/build.sh along with other components. I will raise a PR for that today.


Fix/contract executions refactor

Description
This PR aims to fix an oversight in our initial PR, where we implemented smart contracts hooks (namely useExecuteContract). We didn't pass the funds and memo params to the execute call, leading to errors in production case where those params are needed.
Checklist

[X] I have made sure the upstream branch for this PR is correct
[X] I have made sure this PR is ready to merge
[X] I have made sure that I have assigned reviewers related to this project

Changes

[X] Added fields to ExecuteContractArgs & ExecuteContractMutationArgs interface, and passed appropriately to execute call
[ ] Changed ...
[ ] Removed ...

Testing
Create an execute msg for the returned executeContract function from the useExecuteContract hook, now with the ability to add "funds" and "memo" fields

Wow. Thank you for such a quick response. Always a pleasure working with you guys @codingki @grikomsn ! 😄

Released in v.0.0.32 🚀 https://github.com/strangelove-ventures/graz/releases/tag/v0.0.32


Setting ref in function (pure) component

Hi guys,
I found Haul as good alternative to RN packager, but I run into:

and here is the component:

Any idea, why this is ok with RN packager but not with Haul?
react-native-cli: 2.0.1
react-native: 0.49.5
yarn: v0.22.0
haul: 1.0.0-beta.7
PS: I'd love to switch to Haul because, you know RN packager is too slow :)

Hey @junkycoder
This is not Haul related, rather React related.
See docs about ref here

@Krizzu Ohh, thanks. I was just curious why this works before i switched to Haul. Now I got it. Thx :)


Use ..= in canvas.rs

I found this project via the not-yet-awesome-rust as decoding/encoding QR codes
in rust seemed a nice way to learn Rust.
I found the TODO item in the canvas.rs about the ..= and realized that it has
already been released as stable for a few minor versions.
Let me know if there is anything else that needs to be done with this.

Thanks!


Camera seems not released correct after scan page is closed

I use ZXingScannerPage in combination with an buildin-scanner.
If the camera starts working the buildin-scanner turns of. And resumes after the video capturing is closed. This works well with the photo app.
But not with the ZXingScannerPage. Why? Where I have to look?

@neolithos can you test this pull request? https://github.com/Redth/ZXing.Net.Mobile/pull/725 It seems related.

I can not build the library:
The assembly 'Cake.Android.SdkManager, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'
is referencing an older version of Cake.Core (0.26.1).
For best compatibility it should target Cake.Core version 0.28.0.
The assembly 'Cake.XCode, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'
is referencing an older version of Cake.Core (0.26.1).
For best compatibility it should target Cake.Core version 0.28.0.
The assembly 'Cake.Xamarin, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'
is referencing an older version of Cake.Core (0.26.1).
For best compatibility it should target Cake.Core version 0.28.0.
The assembly 'Cake.Xamarin.Build, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'
is referencing an older version of Cake.Core (0.26.1).
For best compatibility it should target Cake.Core version 0.28.0.
The assembly 'Cake.SemVer, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'
is referencing an older version of Cake.Core (0.26.1).
For best compatibility it should target Cake.Core version 0.28.0.
The assembly 'Cake.MonoApiTools, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'
is referencing an older version of Cake.Core (0.26.1).
For best compatibility it should target Cake.Core version 0.28.0.
Error: Der Typ "Cake.Core.CakeTaskBuilder`1" in der Assembly "Cake.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null" konnte nicht geladen werden.

Thanks for reporting this issue!  Unforunately it took me way too long to respond 😭.  Sorry, I apologize!  Recently the source code for this project was completely refactored to modernize it.  Many PR's were included in this effort, and many bugs were hopefully fixed.  Please try out the latest 3.x series of NuGet packages (currently in prerelease).  To try and make the project more maintainable in my spare time going forward, I've decided to close all existing issues to start with a clean slate.  If you're still experiencing this issue on the newest version, please open a new issue with as much detail as possible.  Thank you for your patience and understanding!  Happy scanning!


Can't connect to local Mosquitto server

Hello,
The Homekit2MQTT bridge will not connect to my local Mosquitto instance. I can sub and pub using the built-in mosquitto commands, but I cannot see anything coming from the homekit2mqtt bridge. Specified URL is "tcp://localhost:1883" but I have also tried "mqtt://<IP_ADDRESS>". Any help would be appreciated. Thanks.

Please start homekit2mqtt with the -v debug option and paste your command line and the log output here.

jelimoore@Misc:~$ homekit2mqtt -v debug -m /usr/lib/node_modules/homekit2mqtt/homekit2mqtt.json -u "tcp://<IP_ADDRESS>:1883" 2016-10-21 09:07:12.468 <info>  homekit2mqtt 0.4.7 starting 2016-10-21 09:07:12.682 <info>  loading HomeKit to MQTT mapping file /usr/lib/node_modules/homekit2mqtt/homekit2mqtt.json 2016-10-21 09:07:12.683 <info>  mqtt trying to connect tcp://<IP_ADDRESS>:1883 2016-10-21 09:07:12.698 <info>  using hap-nodejs version 0.4.11 *** WARNING *** The program 'nodejs' uses the Apple Bonjour compatibility layer of Avahi. *** WARNING *** Please fix your application to use the native API of Avahi! *** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=nodejs> *** WARNING *** The program 'nodejs' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi. *** WARNING *** Please fix your application to use the native API of Avahi! *** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=nodejs&f=DNSServiceRegister> 2016-10-21 09:07:12.857 <debug> addBridgedAccessory Lightbulb Licht Garten 2016-10-21 09:07:12.861 <debug> mqtt subscribe Lightbulb1/status 2016-10-21 09:07:12.864 <debug> addBridgedAccessory Lightbulb Lightbulb2 2016-10-21 09:07:12.865 <debug> mqtt subscribe Lightbulb2/status 2016-10-21 09:07:12.865 <debug> mqtt subscribe Lightbulb2/status/Brightness 2016-10-21 09:07:12.866 <debug> addBridgedAccessory Lightbulb Lightbulb3 2016-10-21 09:07:12.867 <debug> mqtt subscribe Lightbulb3/status 2016-10-21 09:07:12.867 <debug> mqtt subscribe Lightbulb3/status/Brightness 2016-10-21 09:07:12.867 <debug> mqtt subscribe Lightbulb3/status/Hue 2016-10-21 09:07:12.868 <debug> mqtt subscribe Lightbulb3/status/Saturation 2016-10-21 09:07:12.868 <debug> addBridgedAccessory Switch Steckdose Fernseher 2016-10-21 09:07:12.869 <debug> mqtt subscribe Switch/status
And when I change a value:
2016-10-21 09:08:25.064 <debug> < hap set Steckdose Fernseher On 0 2016-10-21 09:08:25.064 <debug> > mqtt Switch/set 0

hmm strange. and you double checked that your broker is really listening on loopback and port 1883? Can you do a test with telnet <IP_ADDRESS> 1883 and see if this gets a connection? Must admit that I have no clue whats going wrong atm...

I set the homekit MQTT to external IP. Didn't work. Turned on tcpdump on eth0, only came up with MQTT data exchanged between my test device and the server. No server-server communication was shown.

Jelimoore@Misc:~$ telnet <IP_ADDRESS> 1883
Trying <IP_ADDRESS>...
Connected to <IP_ADDRESS>.
Escape character is '^]'.

On Oct 21, 2016, at 10:06 AM, Sebastian Raff<EMAIL_ADDRESS>wrote:
hmm strange. and you double checked that your broker is really listening on loopback and port 1883? Can you do a test with telnet <IP_ADDRESS> 1883 and see if this gets a connection? Must admit that I have no clue whats going wrong atm...
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

I still must admit - I have no clue why it doesn't connect to the broker. I guess my next try would be to create a simple javascript that requires the mqtt.js module and does nothing more then calling connect and console.log on connect error and close event to track down if this is a general or a homekit2mqtt related issue. I never had any problems with mqtt.js connecting to the broker...

feel free to reopen if you want further assistance


Pr/v1.8 backport 2021 02 19

Please ensure your pull request adheres to the following guidelines:
v1.8 backports 2021-02-19

#15008 -- backporting: Add support for forked cilium repositories  (@gandro)
#14902 -- datapath: Do not log when kernel config not found (@brb)
#15012 -- Avoid an empty instanceID on EC2 (@kkourt)

Once this PR is merged, you can update the PR labels via:
$ for pr in 15008 14902 15012; do contrib/backporting/set-labels.py $pr done 1.8; done

@nathanjsweet Please rebase against v1.8 before retesting.

test-backport-1.8

retest-1.18-4.9


added fallback value to bindInput's value field

Fixes #7 by setting undefined model properties to and empty string

Thank you, will release this in the morning!


How to force inclusion of non-exported variables?

[Solved] Please use the typedoc-plugin-not-exported plugin to solve the problem described here.
npm i -D typedoc-plugin-not-exported

Search Terms
force include non exported unexported variable option flag tag mode file exclude
Problem
I can't find any way (either a @ tag in comment or an option / flag) to generate docs for variables that are not exported
Consider
(I don't export the type)
type twoNumbers = [number, number]
export function sum(ns: twoNumbers) {
  return ns[0] + ns[1]
}

or
(I only export the type used directly by the parameter)
type twoNumbers = [number, number]
type threeNumbers = [number, number, number]
export type twoOrThreeNumbers = twoNumbers | threeNumbers;
export function sum2(ns: twoOrThreeNumbers): number {
  return ns.reduce((a, b) => a + b)
}

or even
(I only export the instance of the class but not the class. Because user may use me.method(), I may want to include the methods of the class in my documentation)
class ClassName {
  ...
  method() { ... }
}
export const me = new ClassName()

It seems there used to be a mode: 'file' option, which has been removed in the latest version of typedoc, this option can enable inclusion of everything, including the non exported variables. (but I'm not asking for this option to be re-added, I just want a includeNonExported or similar option)
Suggested Solution
Something like a @includeindoc tag to force inclusion of a specific variable (preferably)
(I don't think @public can be used here, they are not public but I just want them to be included in the doc)
and/or
A global option / flag, that could be named includeNonExported or something, and allows to include all non exported variables.

 That just makes it more annoying for anyone who uses it"
But, having slept on it now, I suppose there is some use for it... I think this can be a plugin, it isn't something I want to encourage. I should have time to at least briefly look into building one this weekend.

 That just makes it more annoying for anyone who uses it"
But, having slept on it now, I suppose there is some use for it... I think this can be a plugin, it isn't something I want to encourage. I should have time to at least briefly look into building one this weekend.

These could be real-world examples:
Even in typedoc's API documentation (generated by typedoc), it is not hard to find non exported types / classes / variables that are not included in the documentation, but are potentially includable.
https://typedoc.org/api/classes/application.html
BaseTheme, AbstractComponent are not publicly exported therefore not included, so, [[]] cannot link to their non-existent pages, but, isn't that ugly to show [[]] in the description? Users could read the pages of Converter and Renderer that are subclasses of AbstractComponent, but I would not be surprised if someone insists on including BaseTheme and AbstractComponent (but tag them @ internal or something) for the the sake of completeness and in order to eliminate the ugly [[]].
https://typedoc.org/api/classes/application.html#listento
What are EventCallback and EventMap types / interfaces? Users could assume EventCallback is () => void but it's technically an assumption, a trial and error, it's not known for sure after reading the documentation. And EventMap is even harder to guess, uses have to explore the source code to understand it's { [name: string]: EventCallback }.

These could be real-world examples:
Even in typedoc's API documentation (generated by typedoc), it is not hard to find non exported types / classes / variables that are not included in the documentation, but are potentially includable.
https://typedoc.org/api/classes/application.html
BaseTheme, AbstractComponent are not publicly exported therefore not included, so, [[]] cannot link to their non-existent pages, but, isn't that ugly to show [[]] in the description? Users could read the pages of Converter and Renderer that are subclasses of AbstractComponent, but I would not be surprised if someone insists on including BaseTheme and AbstractComponent (but tag them @ internal or something) for the the sake of completeness and in order to eliminate the ugly [[]].
https://typedoc.org/api/classes/application.html#listento
What are EventCallback and EventMap types / interfaces? Users could assume EventCallback is () => void but it's technically an assumption, a trial and error, it's not known for sure after reading the documentation. And EventMap is even harder to guess, uses have to explore the source code to understand it's { [name: string]: EventCallback }.

Yeah - TypeDoc could use this right now... but that's a failing on the part of TypeDoc, not an argument for this feature! TypeDoc has historically been really bad about exporting all the necessary classes/functions to create a plugin. It's something that's on my roadmap for 0.21 to fix. Once complete, there should be no (or very few) broken references in the docs.

Yeah - TypeDoc could use this right now... but that's a failing on the part of TypeDoc, not an argument for this feature! TypeDoc has historically been really bad about exporting all the necessary classes/functions to create a plugin. It's something that's on my roadmap for 0.21 to fix. Once complete, there should be no (or very few) broken references in the docs.

That wasn't very painful at all...
I'm not sure I want to maintain this, so here's the source. I disclaim any copyright to it. If you (or anyone) wants to publish it as a plugin, feel free.
typedoc src/index.ts --plugin path/to/plugin.js

This is somewhat limited - it can only know to include something in the documentation if TypeDoc documents a module which declares it... I think that should be good enough for most use cases. If it isn't in scope, then there's not really a good way to go find it.
Plugin source
//@ts-check

const { Converter, TypeScript } = require("typedoc"); // version 0.20.x

const ModuleFlags =
  TypeScript.SymbolFlags.ValueModule | TypeScript.SymbolFlags.NamespaceModule;

/** @param {{ application: import("typedoc").Application }} param0 */
exports.load = function ({ application }) {
  let includeTag = "fakeExport";

  application.options.addDeclaration({
    name: "includeTag",
    help:
      "[typedoc-plugin-not-exported] Specify the tag name for non-exported member to be imported under",
    defaultValue: includeTag,
  });

  application.converter.on(Converter.EVENT_BEGIN, () => {
    includeTag = application.options.getValue("includeTag").toLocaleLowerCase();
  });

  application.converter.on(
    Converter.EVENT_CREATE_DECLARATION,
    lookForFakeExports
  );

  /**
   * @param {import("typedoc/dist/lib/converter/context").Context} context
   * @param {import("typedoc").DeclarationReflection} _reflection
   * @param {TypeScript.Node | undefined} node
   */
  function lookForFakeExports(context, _reflection, node) {
    if (!node) {
      return;
    }

    /** @type {TypeScript.Symbol | undefined} */
    const moduleSymbol =
      context.checker.getSymbolAtLocation(node) ??
      /** @type {any} */ (node).symbol;

    if (!moduleSymbol) {
      // Global file, no point in doing anything here. TypeDoc will already
      // include everything declared in this file.
      return;
    }

    // Make sure we are allowed to call getExportsOfModule
    if ((moduleSymbol.flags & ModuleFlags) === 0) {
      return;
    }

    const exportedSymbols = context.checker.getExportsOfModule(moduleSymbol);

    const symbols = context.checker
      .getSymbolsInScope(node, TypeScript.SymbolFlags.ModuleMember)
      .filter((symbol) => !exportedSymbols.includes(symbol));

    for (const symbol of symbols) {
      if (
        symbol
          .getJsDocTags()
          .some((tag) => tag.name.toLocaleLowerCase() === includeTag)
      ) {
        context.converter.convertSymbol(context, symbol);
      }
    }
  }
};

That wasn't very painful at all...
I'm not sure I want to maintain this, so here's the source. I disclaim any copyright to it. If you (or anyone) wants to publish it as a plugin, feel free.
typedoc src/index.ts --plugin path/to/plugin.js

This is somewhat limited - it can only know to include something in the documentation if TypeDoc documents a module which declares it... I think that should be good enough for most use cases. If it isn't in scope, then there's not really a good way to go find it.
Plugin source
//@ts-check

const { Converter, TypeScript } = require("typedoc"); // version 0.20.x

const ModuleFlags =
  TypeScript.SymbolFlags.ValueModule | TypeScript.SymbolFlags.NamespaceModule;

/** @param {{ application: import("typedoc").Application }} param0 */
exports.load = function ({ application }) {
  let includeTag = "fakeExport";

  application.options.addDeclaration({
    name: "includeTag",
    help:
      "[typedoc-plugin-not-exported] Specify the tag name for non-exported member to be imported under",
    defaultValue: includeTag,
  });

  application.converter.on(Converter.EVENT_BEGIN, () => {
    includeTag = application.options.getValue("includeTag").toLocaleLowerCase();
  });

  application.converter.on(
    Converter.EVENT_CREATE_DECLARATION,
    lookForFakeExports
  );

  /**
   * @param {import("typedoc/dist/lib/converter/context").Context} context
   * @param {import("typedoc").DeclarationReflection} _reflection
   * @param {TypeScript.Node | undefined} node
   */
  function lookForFakeExports(context, _reflection, node) {
    if (!node) {
      return;
    }

    /** @type {TypeScript.Symbol | undefined} */
    const moduleSymbol =
      context.checker.getSymbolAtLocation(node) ??
      /** @type {any} */ (node).symbol;

    if (!moduleSymbol) {
      // Global file, no point in doing anything here. TypeDoc will already
      // include everything declared in this file.
      return;
    }

    // Make sure we are allowed to call getExportsOfModule
    if ((moduleSymbol.flags & ModuleFlags) === 0) {
      return;
    }

    const exportedSymbols = context.checker.getExportsOfModule(moduleSymbol);

    const symbols = context.checker
      .getSymbolsInScope(node, TypeScript.SymbolFlags.ModuleMember)
      .filter((symbol) => !exportedSymbols.includes(symbol));

    for (const symbol of symbols) {
      if (
        symbol
          .getJsDocTags()
          .some((tag) => tag.name.toLocaleLowerCase() === includeTag)
      ) {
        context.converter.convertSymbol(context, symbol);
      }
    }
  }
};

Thanks.
Yeah sure https://github.com/tomchen/typedoc-plugin-not-exported npm i typedoc-plugin-not-exported

Thanks.
Yeah sure https://github.com/tomchen/typedoc-plugin-not-exported npm i typedoc-plugin-not-exported

@Gerrit0

I think this can be a plugin, it isn't something I want to encourage

That is because, it is a bad practice for someone to not export from the entry point all the types needed for documenting the concretions exported from the entry point?

@Gerrit0

I think this can be a plugin, it isn't something I want to encourage

That is because, it is a bad practice for someone to not export from the entry point all the types needed for documenting the concretions exported from the entry point?

I would argue yes - all the types that a library user might need for working with the library should be exported. There are probably some people who will disagree with me on this, but my response is that if it's already exported implicitly, you might as well export it explicitly and make your user's lives easier.
export declare class Foo {
  method(x: SomeNotExporterType): void
}

// If I need this type, I have to do:
type LibIsBad = Parameters<import("lib").Foo["method"]>[0]

I would argue yes - all the types that a library user might need for working with the library should be exported. There are probably some people who will disagree with me on this, but my response is that if it's already exported implicitly, you might as well export it explicitly and make your user's lives easier.
export declare class Foo {
  method(x: SomeNotExporterType): void
}

// If I need this type, I have to do:
type LibIsBad = Parameters<import("lib").Foo["method"]>[0]

@Gerrit0
So lets say I make a node module that uses puppeteer. The exported concretions from the entry point use some types from the puppeteer library in their type signature, like Browser and Page . In that case should I export also the puppeteer types from the entry point of my node module?

@Gerrit0
So lets say I make a node module that uses puppeteer. The exported concretions from the entry point use some types from the puppeteer library in their type signature, like Browser and Page . In that case should I export also the puppeteer types from the entry point of my node module?

As a user of your lib, I would say yes please! Exporting them from your lib means:

I get autocomplete when importing them (TypeScript doesn't look at non-direct dependencies for auto import*)
I can be sure that I'm using the same version of types as your lib.

TypeDoc does this for TypeScript - even though it's a peerDependency, but to keep the size of the docs manageable, we have excludeExternals turned on.
https://github.com/TypeStrong/typedoc/blob/b2a88ba47d2d24f1ca5b47d02883a3bf182af2c4/src/index.ts#L41-42
* this might not necessarily apply if the dependency's types live in an @types package... the rules there have changed a few times, I'm not sure what the current one is.

As a user of your lib, I would say yes please! Exporting them from your lib means:

I get autocomplete when importing them (TypeScript doesn't look at non-direct dependencies for auto import*)
I can be sure that I'm using the same version of types as your lib.

TypeDoc does this for TypeScript - even though it's a peerDependency, but to keep the size of the docs manageable, we have excludeExternals turned on.
https://github.com/TypeStrong/typedoc/blob/b2a88ba47d2d24f1ca5b47d02883a3bf182af2c4/src/index.ts#L41-42
* this might not necessarily apply if the dependency's types live in an @types package... the rules there have changed a few times, I'm not sure what the current one is.

I would add an example where in my opinion it's the correct approach to not export classes. I maintain a small library - ts-opt. Roughly it is a nicer | undefined/| null.
A user is expected to never directly create an instance via new nor use type Some and None.
In case of instantiation, a user is supposed to use opt function (and its variants), sometimes none value, rarely some (it may lead to logical errors when dealing with  half-typed code, e.g. using lodash).
If a user ever references the type directly - Some/None - then it means a user misunderstood how the library works and it is considered an error. Because when you use Some<T>, you should just use T directly. If you use None<T> then it's even worse, because only equivalents are one-value types like null, undefined or similar, so it's useless to have a such type, because regardless where it's used, it means it have to be there and can only ever be one value which is equal to not having it (field or argument) there at all.

Hey my use cause is also similiar to @mnn case. I have been trying to get this work with the aforementioned plugin. But it seems to not support a re-export from a different file.
e.g.
// src/TestClass.ts
/**
 * @notExported
 */
class TestClass {
  public foo(): string {
    return "";
  }
}

export const testClass = new TestClass();

// index.ts
export { testClass } from "./src/TestClass";

The TestClass types are not included in the generated json.
I have tried some debugging myself but unfortunately it seems this is out of my expertise. Is this something that could be fixed in the plugin ? Not sure if I should open the issue at @tomchen repo of the plugin so I am writing here.
Thank you for your work on TypeDoc its an awesome piece of software !

If a user ever references the type directly - Some/None - then it means a user misunderstood how the library works and it is considered an error.

Then why do you want them to show up in your documentation? Aren't they purely implementation details? Shouldn't you be free to replace them with a single class that uses a flag value with no API change?

Is this something that could be fixed in the plugin ?

Hmmm... this is a tricky one. How are we supposed to find this symbol to figure out it should be exported? It isn't in the current scope (re-exporting file), so we somehow magically have to figure out that we need to go look in another file... or pick it up when documenting testClass even though it isn't a child of that scope.
I guess this could be somewhat solved by having the plugin also look for symbols declared in the scope of the symbol being documented parent node, but that would then require some other check to prevent infinite recursion... Not sure of a good solution for this one yet. Might have a better idea tomorrow.
Personally, I wouldn't even use a class here, just a module with functions that deal with module level variables... but that's not really a solution to this issue.


JokeBot

Link to the project:

https://github.com/QGIsK/JokeBot

Link to my personal website / GitHub page (optional):

https://github.com/QGIsK

Is your project explicit or unsafe for minors to view?

[x] Yes, it contains explicit material
[ ] No, it doesn't contain explicit material

Notes:

Was bored so I made a discord bot only ment for jokes, using your api and my wrapper. will prob add a telegram or some other social media platform bot next time I get bored.

Checklist:

[x] I have added my project's name to the title of this issue
[x] I have filled out at least the first URL (second one is optional)
[x] I have specified whether or not my project is explicit

Added to v2.4.0 - if this issue is closed, the changes are live

This is what it looks like. Is it alright?

Yeah looks good! Thanks!


Possibility to mock backstage apis for plugin dev environment

I am exploring the possibility to do cypress testing for backstage plugins. One requirement for it is to be able to mock backstage apis used by the plugin to prevent communication with external servives like OAuth providers. I was trying to run plugin development environment (createDevApp from @backstage/dev-utils) with mocked backstage api's, but from what I see in the code, although there is a possibility to add a new api by DevAppBuilder.registerApi method, it's impossible to change implementation for apis that are already defined in defaultApis export from backstage\packages\core\src\api-wrappers\defaultApis.ts file. I've also tried to wrap my plugin react component for dev environment with ApiProvider component with custom ApiRegistry (i've seen that pattern in jest tests, for example in backstage\plugins\scaffolder\src\components\TemplatePage\TemplatePage.test.tsx):
const apis = ApiRegistry.from([
  [errorApiRef, errorApiMock],
  [catalogApiRef, catalogApiMock],
]);

export const pluginStandalone: BackstagePlugin = createPlugin({
  id: 'firebase-functions',
  register({ router }) {
    router.addRoute(standaloneRootRouteRef, () => (
      <ApiProvider apis={apis}>
        <FirebaseFunctionsPage entity={getEntityMock()} />
      </ApiProvider>
    ));
  },
});

but still without success.
For now I gave up with trying to run the standalone plugin dev environment with mocked backstage apis, but if you know any way to get it working or decide to implement such a possibility, you can let me know.

I think this would also help #2178.

I think this would also help #2178.

So APIs are registered with a certain priority, and you are allowed to override things that aren't of the "static" priority. There are three such APIs in the default app builder: appThemeApiRef, configApiRef, and identityApiRef. Was it one of these that caught you?

No, I wanted to mock GoogleAuthApi and GithubAuthApi. Thanks for the info that it's possible to override it :) When I get back to this I'll try it.

Ok! Let us know how it goes

@mcalus3 Wanted to check in - did you give the mocking a try or any other feedback to your original ticket?

@adamdmharvey no, I haven't been working on it.

@mcalus3 could we close this ticket with the suggestions that already mentioned?

Yes, sure


Subscription Preview method is broken

The Recurly API endpoint PreviewSubscription now returns a child node for invoice which the ReadXml method in Subscription.cs is not set up to handle.
https://github.com/recurly/recurly-client-net/blob/cfff76bbaf35ccfbf7cfe741c0136063e868ec38/Library/Subscription.cs#L427
What's happening is this switch case is correctly reading the State element from the subscription XML, but then the reader starts to traverse the invoice and sees a State element there as well. The issue is that the code is trying to parse the enum for the invoice state which isn't in the SubscriptionType enum.
I believe all that needs to be done is to check for the existence of the invoice and call out to Invoice.cs to read the xml.

Thanks for the detailed post @MuffinMan10110
A PR would be great!

@MuffinMan10110 I'm planning on taking a look at this tonight to see if I can get a patch. Did you start on anything for it?

@bhelx Thanks for following up. I've fixed the client library so it stops breaking in my own local version, but ideally the client library conforms to the new xml schema that is coming back from the API. I need to know if the API endpoint is set in stone or if it might continue to evolve. I see there is a Beta tag in the docs which is why I ask.

Yes, unfortunately the API is already set. But, if your branch fixes the issue that would be good enough for now. I can do a follow up issue to see how we can do a better job of solving it.

If the API is set then that is good news. I will submit a pull request asap.

Thanks @MuffinMan10110 !

@bhelx I just submitted a pull request for this


removed checkov and incremented version

@mayank0202 Also remove this file, please - checkov-problem-matcher-softfail.json