impl DoubleEndedIterator for ScheduleIterator

This PR implements DoubleEndedIterator for ScheduleIterator in order to retrieve previous scheduled times.
My use case is I'm building a CRON scheduler using this crate where each run of a scheduled job will save the last time it was successfully run. This saved time will be used by a service using this scheduler to know on startup, either due to scheduled maintenance, downtime or otherwise, If a scheduled job was missed being run during that downtime and should be run immediately to make up for it.
So this will allow checking the previous scheduled run time against the last time it was run in order to make that determination.
P.S. The function name upcoming used to get a ScheduleIterator does read strange when iterating in reverse over schedule times and perhaps should change with a major version change, but until that time didn't want to make breaking changes.

This is excellent! I always wanted an implementation of this but never got around to writing it. Thanks for putting it together! I agree that this will likely require reconsidering some method names, but we can take care of that in a separate PR.
It'll be a day or two before I have time to read through the diff properly. Could you make sure that there's a test for iterating backwards over a schedule that includes non-existent times? (e.g. Hours that are skipped due to daylight saving time.) Here's the corresponding forward-iteration unit test.

@zslayton I have added the test for non-existent times and fixed a bug causing it to misreport.
let me know if there's anything you need.

I read through it this morning and it looks great. Thanks!
Regarding naming, I think I'd like cron to end up with an API something like this:
// Iterates forwards
schedule.after(datetime)

// Iterates backwards
schedule.before(datetime)

// Double-ended iterator
schedule.range(start, end)

// Equivalent to schedule.after(Tz.now())
schedule.upcoming(Tz)

// Equivalent to schedule.before(Tz.now())
schedule.history(Tz)

I think this makes the iterator behavior associated with each method more obvious. In particular, you only get a double-ended iterator a range that, well, has two ends. I'm not married to any of those names, but that's the gist.
What're your thoughts?

I was thinking of perhaps simplifying the API to something like:
// Returns an iterator without specifying direction, but like most forward by default but can use .rev() to go backwards.
schedule.using(datetime)

This keeps the API surface area tiny and simple.
Here are my thoughts on the proposed:
schedule.after(datetime)
^ implies we can only go forward, which isn't true of the iterator

schedule.before(datetime)
^ implies we can only go backward, which isn't true of the iterator

schedule.range(start, end)
^ not sure why we would need a range as the CRON itself specifies a range or you can limit using .take(n)

schedule.upcoming(Tz)
schedule.history(Tz)
^^ both of these don't seem to be necessary since using a date time or Tz you need chrono as a dependancy in the calling program already. Why not just let people create the date time themselves and eliminate 2 more methods and shrink the API surface.

In a bit of a rush this morning so will give above even more thought later tonight. Hope this doesn't seem too drastic.

schedule.after(datetime)
^ implies we can only go forward, which isn't true of the iterator

Now that we have a complete implementation of both forward and backward iteration, it would be trivial to return a single-direction iterator. My thinking is that there aren't common use cases for switching directions mid-stream (i.e. iterate over several datetimes, then call rev() and process the same datetimes again), so the clearest behavior is to have some convenience methods that only produce a single-direction iterator.

schedule.range(start, end)
^ not sure why we would need a range as the CRON itself specifies a range or you can limit using .take(n)

The cron schedule itself can include a range, but it often doesn't. For example, 0 15 * * * *. When answering queries like "What are my schedule's matching datetimes for the first week of October?", take(n) requires the user to calculate how many datetimes they'll need to take. take_until(|d| d > end) would work, and schedule.range(start, end) would be a convenience method offering that functionality.

// Returns an iterator without specifying direction, but like most forward by default but can use .rev() to go backwards.
schedule.using(datetime)

I agree that this is functionally equivalent, but I find:
schedule.using(datetime).rev()

to be much less self-explanatory than:
schedule.before(datetime)

Maybe there's a clearer name than using that's not occurring to me.

schedule.upcoming(Tz)
schedule.history(Tz)

^^ both of these don't seem to be necessary since using a date time or Tz you need chrono as a dependancy in the calling program already.

I think you're asking why the crate doesn't just require users to do:
schedule.after(Tz.now())

Is that right? If so, I agree that this is a minor convenience.

Why not just let people create the date time themselves and eliminate 2 more methods and shrink the API surface.

Keeping a library's API surface small is wise, but in this case I'm not concerned about the library going from 2 methods to ~5. Most of them would just be convenience methods provided in the interest of code readability.

@zslayton all makes sense to me. Ultimately it's your library and choice so take everything I say/said with a grain of salt :)
I just like keeping the surface as small as possible until I know people actually want/need the convenience abstractions. To me using take and take_until seems more intuitive to me but again that's just me.
I agree using might not be the best name, was just an example name, I had also considered schedule.from(datetime) which is more generic, but indication schedule from this date ....
In any case I think your proposed API is good and think below should still be removed:
schedule.upcoming(Tz)
schedule.history(Tz)

love the library, learning a lot and may take a stab at a CRON parser myself to learn some more too :)

I just like keeping the surface as small as possible until I know people actually want/need the convenience abstractions. To me using take and take_until seems more intuitive to me but again that's just me.

I definitely see the value this approach! I'll try to think of some version of using (maybe iter_from(date)?) to be the primary interface in a v1.0 API so folks can leverage that if they prefer. Then I can implement any convenience functions that seem worth it in terms of iter_from() and rev().

In any case I think your proposed API is good and think below should still be removed:

schedule.upcoming(Tz)
schedule.history(Tz)

Yeah, I think the case for these is the weakest. upcoming(Tz) isn't substantially more obvious than something like after(Tz.now()) or iter_from(Tz.now()).

love the library, learning a lot and may take a stab at a CRON parser myself to learn some more too :)

Thanks! Do check out nom v6+ (reddit discussion), it replaced the macros this library uses (from nom ~4) with a really clever application of generics. I never have as much project time as I'd like, but I've been considering updating cron to take advantage of them.
Thanks again for this (major!) contribution. It's great to finally have this feature.

BTW love item_from(datetime) it's very clear!


Add main practice boolean field

Description
New field added to the Practice property of a person, hovedpractice (main practice).
Add field and map to outgoing model
Additional Information
No response
Tasks
No response

OK!


Modify: Tencent.QQMusic version 19.17

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[ ] Have you tested your manifest locally with winget install --manifest <path>?
[x] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

The "download immediately" link on the PackageUrl page links directly to the current InstallerUrl:

Where can a link to this new InstallerUrl be located? Should the PackageUrl be updated along with this new InstallerUrl?

It was taken from their update API (https://github.com/vedantmgoyal2009/vedantmgoyal2009/blob/main/winget-pkgs-automation/packages/t/tencent.qqmusic.json) where they updated the installer URL yesterday.

stephengillie marked this pull request as draft 8 minutes ago

This was in error, apologies. I was performing this in bulk for Vedant's tickets and accidentally grabbed this as well.


Update operator document about replace with CRW image in devfile.yaml  for Z

/kind documentation

What mistake did you find / what is missing in the documentation?
For JPA part In https://odo.dev/docs/tutorials/deploying-java-app-with-database,
Instead #5071 , we need to update image in devfile: https://github.com/OpenLiberty/application-stack-samples/blob/main/devfiles/maven-image/devfile.yaml, it worked well with latest CRW image on Z, so we want to do the following changes like this(the bold text in step 3 is the changes we add:):
Importing the JPA MicroService
In this example we will use odo to manage a sample Java JPA MicroService application.

Clone the sample application to your system:

git clone https://github.com/OpenLiberty/application-stack-samples.git

Go to the sample JPA app directory:

cd ./application-stack-samples/jpa

3.  In case of IBM Z & Power, CRW images are used in devfiles (Please refer this), Hence for devfile.yaml, replace it with registry.redhat.io/codeready-workspaces/plugin-java11-openj9-rhel8.
sed -i "s/maven:3.6-adoptopenjdk-11-openj9/registry.redhat.io\/codeready-workspaces\/plugin-java11-openj9-rhel8/" ../devfiles/maven-image/devfile.yaml
cp ../devfiles/maven-image/devfile.yaml ./
odo create mysboproj

What is the relevance of it?

/area system-PZ

@scottkurz Hello, I have verified the solution on Z, will create a pull request for it, do you know who can help for this issue? Thanks.

@scottkurz Created a PR https://github.com/openshift/odo/pull/5105.


allow deleting recent notebooks #3855

Done

cool thanks, please make these changes

vertically center the X within the item.
do not underline on mouseover.
do not prompt, just delete.

add a tooltip, if you hover it should say "click to remove from history"

color of x should be #ccc not #333

is it correct colors?


Cant convert xapk to apk if have pairip

Please integrate feature to convert from xapk to apk with pairip like Roblox

Sorry for responding late, I replicate this issue, but only on Roblox, not on other apps with pairip. It just gets stuck after a while, there is no error. It's not xapk compression problem, same happens with apkm or extracted files. Not size issue either I tried with 700MB file. Strangely if you enable sign it works, the only difference there is that the merged APK saved to the cache dir before signing and copying, so for some reason it not saving properly to the output file directly. I still trying to think of a good way to fix this, it is hard to detect because there is no error, and it should not save to the cache dir and copy it for apps that don't need to

Is there a faster way to contact like email or Telegram? I want to talk to you

My telegram is same as github username

It should save properly in latest release


Case insensitive search

Also, searches should be case INsensitive.

https://code.djangoproject.com/ticket/9682
This is a bug in Django, which they don't seem to want to fix, annoyingly.

Right. I changed the collation on the database to a default case insensitive one... I'm not sure if it's actually supposed to be like that by default. It seems to work, but it may cause problems elsewhere... Hmm...


Fix Redox compilation

Redox now compiles with cfg(unix) and fully supports the functions used there. One test was disabled on Redox due to stty not being installed by default.

@a8m is there anything else you need for this?

Thanks for adding this @jackpot51. I missed this PR somehow.

Thanks for merging! Can a new release be made for crates.io?

Done. Thanks!

Cool!


About Z-Stacking Microscopy

Hi Sir,
Z-stacking involves scanning a glass slide at different focal planes along the vertical z-axis and stacking the images on top of each other to produce a composite multiplane image.
Z-stacks can be merged to create a detailed 3 dimensional representation of the sample.
Some WSI scanners that offer z-stacking capability. For example, 3DHistech, Hamamatsu, Leica, etc.
We are not sure if Slim or DICOM microscopy viewer JavaScript library supports Z-stacks display?
If yes, it will be easily used after feeding DICOM into viewer.
If not, any information we need to know from DICOM or scanner manufacturer?
Any help would be sincerely appreciated.
Thanks.

Thank you for creating the issue @DrexlerChao.
The Slim application and the underlying dicom-microscopy-viewer library (see https://github.com/herrmannlab/dicom-microscopy-viewer/issues/80) do currently not support interactive visualization of images with multiple focal planes (z-stacks).
I just tested it in Slim with a 3DHistech image. It resulted in an error message "Images with multiple focal planes are not yet supported." Unfortunately, the error is only printed into the console, but is not reported to the user via the user interface (same issue as #122).
It would not be difficult to extend the viewer to support navigation of z-stacks (switching between different focal planes) but it has not been a priority for us so far and would require some development work.
In the short term, we will improve error handling so that the user knows why the viewer does not display the image. In the mid to long term, we can think about adding support for multiple focal planes.

Hi @hackermd,
Thanks for your clearly explanation.
We are looking forward the Slim application and the dicom-microscopy-viewer library support z-stacks image in the future.
With sincere appreciation.


Report generation fails sometimes/often due to missing  end-pg_stat_user_tables.csv or end-pg_stat_user_indexes.csv

About halt the time, the report generation fails with this error:

FATAL: can't read file  pgcluu_output_dir/./end-pg_stat_user_indexes.csv: No such file or directory

I can create the file with touch and I get then:

FATAL: can't read file pgcluu_output_dir/./end-pg_stat_user_tables.csv: No such file or directory

Another touch and I get my report, of course with 'Tables statistics' and 'Indexes statistics' missing.
I haven't really understood why and how it fails yet, but it's painful. Any idea?

This has been fixed.


[StorageMover] Upgrade to API version 2023-10-01

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

API change check
API changes are not detected in this pull request.


Windows 8.1: "Failed to start language services. Please check if Microsoft Build Tools 2013 are installed"

A student is having this issue, I can't figure out what the problem is. When she opens VS Code in a .fs file, an error message appears:

Failed to start language services. Please check if Microsoft Build Tools 2013 are installed

She has MS Build Tools 2013 and 2015 installed, F# installed, Windows 8.1 and .NET SDK installed (latest version), fsi.exe works. VS Code 1.11.1, ionide-fsharp 2.25.8.
Console output is as follows:

Please check if FSAC files exists (stuff in bin subfolder of extension installation directory) and antivirus software is not going crazy [what sometimes happens]

Hi @Krzysztof-Cieslak , I encountered the same issue here, I run the extension from source code, and I also got MSBuild 13 and 15 installed.

@zjhmale You probably haven't run build.cmd Build so FSAC is not copied before you tried to run plugin from source.

@Krzysztof-Cieslak , I ran build.cmd Build before I run the plugin from source.
This is the result of build.cmd Build

It seems the FSAC project is not build under paket-files directory.

Oh, I think the reason is I can not build FSAC project on my windows virtual machine
The full error log is
Paket failed with:
        Could not run "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\build.cmd LocalRelease".
Error:
C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete>echo off
Checking Paket version (downloading latest stable)...
Copying version 4.5.1 from cache.
Done.
Paket version 4.5.1
Downloading fsharp/FAKE:8a0082b3cea5849e1ba1fbdb014f4197aa62d09a modules/Octokit/Octokit.fsx to C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\paket-files\fsharp\FAKE\modules\Octokit\Octokit.fsx
24 seconds - ready.
Building project with version: LocalBuild
Shortened DependencyGraph for Target LocalRelease:
<== LocalRelease
   <== BuildRelease
      <== AssemblyInfo
      <== SuaveAssemblyInfo

The resulting target order is:
 - AssemblyInfo
 - SuaveAssemblyInfo
 - BuildRelease
 - LocalRelease
Starting Target: AssemblyInfo
Created AssemblyInfo file "src\FsAutoComplete\AssemblyInfo.fs".
Finished Target: AssemblyInfo
Starting Target: SuaveAssemblyInfo
Created AssemblyInfo file "src\FsAutoComplete.Suave\AssemblyInfo.fs".
Finished Target: SuaveAssemblyInfo
Starting Target: BuildRelease (==> AssemblyInfo, SuaveAssemblyInfo)
Building project: ./FsAutoComplete.sln
  C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe  ./FsAutoComplete.sln /t:Build /m      /p:RestorePackages="False" /p:Configuration="Release" /logger:Fake.MsBuildLogger+ErrorLogger,"C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\packages\FAKE\tools\FakeLib.dll"
Microsoft (R) Build Engine version 15.1.1012.6693
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 4/23/2017 11:52:34 AM.
     1>Project "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\FsAutoComplete.sln" on node 1 (Build target(s)).
     1>ValidateSolutionConfiguration:
         Building solution configuration "Release|Any CPU".
     1>Project "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\FsAutoComplete.sln" (1) is building "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete\FsAutoComplete.fsproj" (2) on node 1 (default targets).
     2>C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete\FsAutoComplete.fsproj : error MSB4057: The target "Build" does not exist in the project.
     2>Done Building Project "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete\FsAutoComplete.fsproj" (default targets) -- FAILED.
     1>Project "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\FsAutoComplete.sln" (1) is building "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete.Suave\FsAutoComplete.Suave.fsproj" (3) on node 1 (default targets).
     3>C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete.Suave\FsAutoComplete.Suave.fsproj(73,3): error MSB4102: The value "" of the "Project" attribute in element <Import> is invalid. Parameter "path" cannot have zero length.
     3>Done Building Project "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete.Suave\FsAutoComplete.Suave.fsproj" (default targets) -- FAILED.
     1>Project "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\FsAutoComplete.sln" (1) is building "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\test\FsAutoComplete.Tests\FsAutoComplete.Tests.fsproj" (4) on node 1 (default targets).
     4>C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\test\FsAutoComplete.Tests\FsAutoComplete.Tests.fsproj : error MSB4057: The target "Build" does not exist in the project.
     4>Done Building Project "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\test\FsAutoComplete.Tests\FsAutoComplete.Tests.fsproj" (default targets) -- FAILED.
     1>Project "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\FsAutoComplete.sln" (1) is building "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete.Core\FsAutoComplete.Core.fsproj" (5) on node 2 (default targets).
     5>C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete.Core\FsAutoComplete.Core.fsproj(77,3): error MSB4102: The value "" of the "Project" attribute in element <Import> is invalid. Parameter "path" cannot have zero length.
     5>Done Building Project "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete.Core\FsAutoComplete.Core.fsproj" (default targets) -- FAILED.
     1>Done Building Project "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\FsAutoComplete.sln" (Build target(s)) -- FAILED.

Build FAILED.

       "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\FsAutoComplete.sln" (Build target) (1) ->
       "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete\FsAutoComplete.fsproj" (default target) (2) ->
         C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete\FsAutoComplete.fsproj : error MSB4057: The target "Build" does not exist in the project.

       "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\FsAutoComplete.sln" (Build target) (1) ->
       "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete.Suave\FsAutoComplete.Suave.fsproj" (default target) (3) ->
         C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete.Suave\FsAutoComplete.Suave.fsproj(73,3): error MSB4102: The value "" of the "Project" attribute in element <Import> is invalid. Parameter "path" cannot have zero length.

       "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\FsAutoComplete.sln" (Build target) (1) ->
       "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\test\FsAutoComplete.Tests\FsAutoComplete.Tests.fsproj" (default target) (4) ->
         C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\test\FsAutoComplete.Tests\FsAutoComplete.Tests.fsproj : error MSB4057: The target "Build" does not exist in the project.

       "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\FsAutoComplete.sln" (Build target) (1) ->
       "C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete.Core\FsAutoComplete.Core.fsproj" (default target) (5) ->
         C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete.Core\FsAutoComplete.Core.fsproj(77,3): error MSB4102: The value "" of the "Project" attribute in element <Import> is invalid. Parameter "path" cannot have zero length.

    0 Warning(s)
    4 Error(s)

Time Elapsed 00:00:02.67

---------------------------------------------------------------------
Build Time Report
---------------------------------------------------------------------
Target              Duration
------              --------
AssemblyInfo        00:00:00.0194096
SuaveAssemblyInfo   00:00:00.0079576
Total:              00:00:04.7735900
---------------------------------------------------------------------
---------------------------------------------------------------------
Running build failed.
Error:
Building ./FsAutoComplete.sln failed with exitcode 1.
Status:             Failure
  1) Building ./FsAutoComplete.sln failed with exitcode 1.
  2) MSB4057: C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete\FsAutoComplete.fsproj(0,0): The target "Build" does not exist in the project.
  3) MSB4102: C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete.Suave\FsAutoComplete.Suave.fsproj(73,3): The value "" of the "Project" attribute in element <Import> is invalid. Parameter "path" cannot have zero length.
  4) MSB4057: C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\test\FsAutoComplete.Tests\FsAutoComplete.Tests.fsproj(0,0): The target "Build" does not exist in the project.
  5) MSB4102: C:\Users\IEUser\Downloads\ionide-vscode-fsharp\paket-files\github.com\ionide\FsAutoComplete\src\FsAutoComplete.Core\FsAutoComplete.Core.fsproj(77,3): The value "" of the "Project" attribute in element <Import> is invalid. Parameter "path" cannot have zero length

I tried to build FSAC standalone, and when I run build.cmd LocalRelease, it produced the same issue that The target "Build" does not exist in the project.

@zjhmale: Looks like it's problem with importing F# .target file. Do you have F# 4.0 installed?

@Krzysztof-Cieslak Yes, I installed F# 4.0 following the instructions in README.

Try building https://github.com/fsharp/FsAutoComplete from source, if there are any problems with it report issue over there.

@Krzysztof-Cieslak OK, thanks!


COMP: Use and move ITK_DISALLOW_COPY_AND_MOVE calls to public section

Use the ITK_DISALLOW_COPY_AND_MOVE macro in the Watersheds module to
enhance consistency across the toolkit when disallowing the copy
constructor and the assign operator.
Move the ITK_DISALLOW_COPY_AND_MOVE calls to public section following
the discussion in
https://discourse.itk.org/t/noncopyable
Following the changes:
https://github.com/InsightSoftwareConsortium/ITK/commit/b0f183b04fd78062afafea26636b4dc597651b88
https://github.com/InsightSoftwareConsortium/ITK/commit/10429ae6b86c8d1f1578fe32c25180425f14a95d
https://github.com/InsightSoftwareConsortium/ITK/commit/7d177ca0c77aedb38cc8cf5561b785317617c315
PR Checklist

[X] No API changes were made (or the changes have been approved)
[X] No major design changes were made (or the changes have been approved)

@hjmjohnson @N-Dekker not sure if these were left behind on purpose, and thus if the PR should be discarded.

Honestly it is not entirely obvious to me that the original intention was to entirely disallow copy and move, in these five cases. As in these cases, those copy constructors and assignment operators were declared protected (rather than private, which was the old C++98/C++03 way to prevent copying), and they were actually implemented (however, each of them by an empty function body).

Thanks for the insight @N-Dekker :100: !


Testing the gradle plugin

@ABHAY0O7 can you implement a test harness for the gralde plugin, using the small gradle projects that you initiated with issue #91?

@ABHAY0O7 can you implement a test harness for the gralde plugin, using the small gradle projects that you initiated with issue #91?

@bbaudry @tdurieux
Yes, I can implement this.
But, there are few things that I want to convey to you :

Firstly, the code that I have written until now  (#89 ) is at this stage: -

It analyzes the Gradle project (with its sub-projects if any) and divides the dependencies into three different categories usedDirectArtifacts, usedTransitiveArtifacts, and unusedDirectArtifacts.

Now, to test the above-mentioned part, first, I need to implement the required (or say must) plugin and the task class like mojo in maven. (Just for testing purposes on a local system) (require at least half or 1 week time from now).

Next, If the results of the tests are not in favor then I have to debug it and make it do work, which I wanted.

After this, I will move forward to divide the dependencies from 3 to 6 categories (required goal) and testing them.

After successfully testing the above tasks, I will try to make the plugin highly configurable like ignoring scopes or ignoring a particular dependency.

After successfully completing the plugin implementation, I will give it a finishing touch with some tests and documentation and will move to my next GSoC task (multi-module support for the maven plugin).

Also, if you allow me, then I want to update my timeline here ie. I will start working on the Gradle plugin from now and only after successfully completing this task, I will discuss with you my approach to the next GSoC task.
So this is my documented plan for the plugin task (as I mentioned in my proposal).
If require any amendments, then I welcome you otherwise I can start my work.
Thank you.
Abhay

Hello, could you try to explain by message first? I am a busy week I am not sure that we will find a time for a meeting.

Hello, could you try to explain by message first? I am a busy week I am not sure that we will find a time for a meeting.

Ok, no problem,
I will mention my issue in this thread by tomorrow.

Hello @bbaudry @tdurieux
Earlier I was facing 3 problems, but now, I have solved two of them.
I am currently working on the third problem and I may solve this one too.
If I solve this one, then I will push these commits on my current open PR, and if not then I will convey it to you.(max 2 days)
Thank you

Perfect!

Hello @bbaudry @tdurieux
These are the things that I have done in my recent commits on #93
What new :

Removed configuration manual settings (configure it directly from code)
Added test for the empty project.
Include an extra portion of Unresolved dependencies (this will work only when Gradle is unable to resolve a dependency to get its transitive artifacts.)

Problem:

Unable to automate task copy dependencies locally.

What I tried to solve this problem:

I write the task in the build.gradle using BufferedWriter and then build the project again. With the help of this I am able to add a task in the project that will copy the dependencies locally but when I use this task through code , then it behaves abnormally.
The (may)cause for this abnormality is that the build process of a project takes time at least 5 sec or depends on project size and your PC too, but the code execution that is running simultaneously is very fast, so it crosses that part of the code where I used the task command, well before the build finishes and add the required task to the project.

If you got the problem then please suggest to me some solutions regarding this.
If you not then I can only explain it in a meet via screen sharing.
NOTE: To test the plugin results again use the method that I mentioned in my PR #93
Thank you

From what I understand copyDependenciesLocally take the classpath and copy all the jar into a specific folder. It does not seem to be something that is hard to recreate. You can already get the classpath and then you can just copy everything that is in the classpath into a specific folder.
Is there a reason why you could not do this?

Is there a reason why you could not do this?

The only reason behind this was, I didn't know that it takes classpath.
But, thanks for your valuable help, now the plugin is executing correctly.
I have implemented the proposed way of copy dependencies, I will push my recent commits with some tests in a day or two.
And then I will proceed to make it highly configurable.
Thank you

Hello, @tdurieux @bbaudry,
For the last two days, my laptop's battery got damaged, so I was unable to work on the project.
I don't even have a phone, so I was unable to inform you as my ID is only open on my laptop.
But, now everything is OK, and soon I will push my recent work on the open PR.
Thank you

No worry, I hope that the damage was not too big. Ping me when you think that your PR is ready.

Hello @tdurieux
I have recently pushed a commit on the open PR
What new:

Automated task copyDependenciesLocally with the help of the existing code more specific JarUtils, also reduces the task execution time.
Added 3 more tests.
Some refactoring in GradleProjectDependencyAnalysis.

I think up to now the plugin is working fine and I think now I should move forward to make it configurable.
Waiting for your feedback...
Thank you

Hello @tdurieux @bbaudry
I need some help...
Currently, I am stuck, I am not getting a way so that I can make the plugin configurable.
I know what to do but I am not getting a way of doing it correctly.
I have searched on the internet about it, but I am unable to find anything solid.
Could you please help me in getting out of this situation by referencing some blogs or articles or anything else that can demonstrate how to add extra parameters to a task using Gradle API?
Thank you

Are you trying to do be able to add optional properties to the plugin, like: https://github.com/riiid/gradle-github-plugin/tree/63be285ea8de3be6d65d86462c5e1ed09ea1a1e1?
This project is relatively simple you can follow what they are doing, the properties are registered here: https://github.com/riiid/gradle-github-plugin/blob/63be285ea8de3be6d65d86462c5e1ed09ea1a1e1/src/main/groovy/co/riiid/gradle/GithubPlugin.groovy#L11  and defined here: https://github.com/riiid/gradle-github-plugin/blob/63be285ea8de3be6d65d86462c5e1ed09ea1a1e1/src/main/groovy/co/riiid/gradle/GithubExtension.groovy
Does it help you?

Side note: when I am struggling with a specific task that I expect someone already did, I look on github for projects or API usage. Generally, it helps me to solve my problem.

This side note helps me a lot.
I looked over some other projects and finally found the correct solution of my problem.
I have successfully configured the isIgnoreTest parameter.
Now I am moving to add some more parameters.
Soon, I will update my work with some new tests.
Thank you
Abhay

Hii @tdurieux @bbaudry
In the previous comment, I claimed that I have successfully configured the parameter isIgnoreTest, but that was a misconception from my side. When I was using that parameter to test the plugin, I commented out all the existing test code written for the project, and in the result, the plugin shows all the direct test dependency as UNUSED DIRECT and I thought that it is because of the parameter isIgnoreTest, but these dependencies are actually not used in our project. So, that's was a very poor misconception from me and I really apologize for that.
But, now I have tried so many different different ways to add parameters, but nothing has worked as I expected.
Also, I tried the way that followed in your reference, but I think here groovy and java is making some difference i.e. the code which is written in the reference can not be written in java.
So, please suggest to me something that I can do here.
Thank you

I am not sure to understand what is exactly the problem:
if you setup your class depcleanGradleTask like this:
package se.kth.depclean;

import java.util.Locale;

import org.gradle.api.Action;
import org.gradle.api.DefaultTask;
import org.gradle.api.Project;
import org.gradle.api.tasks.TaskAction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class depcleanGradleTask extends DefaultTask {

    public static final Logger log = LoggerFactory.getLogger(depcleanGradleTask.class);

    boolean isIgnoreTest = false;

    @TaskAction
    public void printDependencies() {
        System.out.println("isIgnoreTest: " + isIgnoreTest);
        log.info("Debloating starts...".toUpperCase(Locale.ROOT));

        Action<Project> defaultAction = new depcleanGradleAction();
        getProject().allprojects(defaultAction);

        log.info("Debloating ends.".toUpperCase(Locale.ROOT));
    }

}

and in depclean-gradle-plugin/src/Test/resources/all_dependencies_unused/build.gradle you have
buildscript{
  repositories {
      mavenLocal()
      repositories { flatDir name: 'libs', dirs: "../../../../build/libs" }
      dependencies{
        classpath 'se.kth.castor:depclean-gradle-plugin:1.0-SNAPSHOT'
      }
  }
}

plugins {
    id 'java'
    id 'maven-publish'
}
apply plugin: 'se.kth.castor.depclean-gradle-plugin'
debloat.isIgnoreTest = true

repositories {
    mavenCentral()
    mavenLocal()
    jcenter()
}

dependencies {
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.2'
}

group = 'org.foo.bar'
version = '1.0.0-SNAPSHOT'
description = 'foobar'
//java.sourceCompatibility = JavaVersion.VERSION_1_8

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

and you execute the debloat plugin on depclean-gradle-plugin/src/Test/resources/all_dependencies_unused you will see that isIgnoreTest: trueis printed.
Does it help you?

Hii @tdurieux
I got the concept you explained above.
Previously I was using @Input & @Optional annotations which was creating some kind of unstability.
But now, I also found a way of adding extra configuration to the task.

I created a class named DepcleanGradlePluginExtension to add extra configuration directly to the project.

package se.kth.depclean;

public class DepcleanGradlePluginExtension {

    public boolean isIgnoreTest = false;

    public boolean isIgnoreTest() {
        return isIgnoreTest;
    }

    public boolean skipDepclean = false;

    public boolean isSkipDepclean() {
        return skipDepclean;
    }

}

Add it to the project's configuration.

package se.kth.depclean;

import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.jetbrains.annotations.NotNull;

public class depcleanGradlePlugin implements Plugin<Project> {

    String taskName = "debloat";

    @Override
    public void apply(@NotNull Project project) {

        project.getExtensions().create("depclean", DepcleanGradlePluginExtension.class);
        createTask(project);
    }

    public void createTask(Project project) {
        depcleanGradleTask task = project.getTasks().create(taskName, depcleanGradleTask.class);
        task.setGroup("group");
        task.setDescription("Print outcome.");
    }
}

Using it in the depcleanGradleAction by creating an extension object. Just add these lines of code at the beginning of the execute() method of depcleanGradleAction.

        DepcleanGradlePluginExtension extension = project.getExtensions().getByType(DepcleanGradlePluginExtension.class);
        boolean isIgnoreTest = extension.isIgnoreTest();
        boolean skipDepClean = extension.isSkipDepclean();

        if (skipDepClean) {
            printString("Skipping DepClean plugin execution");
            return;
        }

Now use it from your build.gradle directly. i.e. just include this extra section in your build.gradle

depclean {
    skipDepclean = true
}

And this is the result exactly as I expected.

> Task :debloat
Skipping DepClean plugin execution

BUILD SUCCESSFUL in 2s
1 actionable task: 1 executed

I have seen some projects on Github which use both ways.
Now, please can you suggest to me which method I should prefer?
Also, it will be helpful for me if you can also elaborate that what is the exact difference between these two methods? 😄
Thank you
Abhay

It looks perfectly fine to me to use the way you described.

Hello @tdurieux @bbaudry
I have recently pushed a commit that marks the completion of 95% of the plugin deployment.
What's new

Added extra configuration to the plugin like ignoreTest to make it flexible.
Fix the logging messages.

Also since I am heading towards the end of this task, I want to end it professionally, so please suggest to me the default task name that I should use for the plugin like in maven we use this long command se.kth.castor:depclean-maven-plugin:2.0.2-SNAPSHOT:depclean, Also when you will be reviewing then I will be glad if you suggest me some changes in the plugin, classes, method or field names.
One more thing, I have not implemented some extra configuration similar to createPomDebloated or createResultJson, the reason behind this is that if we include these parameters in our configuration then the plugin will take lots of time to generate them. See a report here #79, it shows all. So, a developer will rarely like to generate a new debloated file by giving a lot of time, rather than this he will prefer manual removing of debloated dependencies which takes a little bit of time after analyzing the report. I also want your and the community's feedback regarding this.
PR #93  is completely open for review.
Please update me soon with some feedback or suggestions.
Until then I will continue with some documentation and refactoring.
Thank you
Abhay

creating the pom should be extremely fast, I don't see a reason why it would be slow, for the JSON, it depends of the size of the project. it can potentially take a lot of time for big projects.

Then for now should I add a parameter for debloated-build.gradle or not?
And also for .json?

Yes please add a parameter for debloat the Gradle build file and one to generate the Json file.
On Jul 10, 2021 07:45, ABHAY SINGH @.***> wrote:
Then for now should I add a parameter for debloated-build.gradle or not?
And also for .json?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/castor-software/depclean/issues/92#issuecomment-877573120, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABKRWYCSY7V3OFKLR2SEABTTW7M6VANCNFSM45RS6PPQ.

Hii @tdurieux
Sorry for not responsive for the last 4 days, I was a little bit busy in my college vivas and also was trying to configure out how can I implement the createDebloatedBuild parameter.
I searched over the internet for how to use model and any Writer object in Gradle to write a new build.gradle file, and sadly I didn't find anything that could help me.
But now I have an idea for this which is:
We know that the difference between the debloated build.gradle and the existing build.gradle file is only inside the dependencies portion i.e.
dependencies {
       // project's dependencies
}

So what we can do is that instead of creating a whole new build.gradle file, we can just create a debloated-dependencies.gradle file using BufferedWriter & Reader and if one wants to use it then (s)he can specify this file in its original build.gradle file to apply the project's dependencies.
Example: https://github.com/yoomoney-gradle-plugins/check-dependencies-plugin/blob/d2186b1244d2ffbecf19f2a45ecfe8ff50bd4601/build.gradle#L7
Also, its generation will be very fast as we will be dealing only with the dependencies section of the project.
I am not sure that whether this will gonna work, because there are some problems regarding this like,
Recently, in Gradle 7.0.0 and above there are some configurations (scopes) removed by Gradle (See here) but when we use the getConfiguration method on any artifact then it may return those removed configurations, so I have to deal with them i.e. mentioning the dependencies in its right configuration.
If I will able to conquer all the problems then this way of creating this parameter will definitely work.
Also, I want to know your thoughts about this too.
If there are any mistakes or any other way of doing this in a more perfect way then please guide me through it.
Thank you
Abhay

Hii @tdurieux @bbaudry,
I have now successfully implemented the createBuildDebloated parameter and wrote a proper functional test that ensures its proper working.
I used BufferWriter & PrintWriter to write debloated-dependencies.gradle file with some new programming logic, which if anyone wants can directly use from his build.gradle file as I mentioned earlier in the previous comment.
Now, you can review it and if there are any problems then let me know.
Also after your review, if all goes well, then I want to discuss the remaining parameter and tasks.
Thank you

What are you trying to achieve with gradle dependency?

What are you trying to achieve with gradle dependency since you already get the list of dependencies programmatically?

I want to generate the complete dependency tree of the project which can be done using the cmd gradle dependencies and also want the result of this task to a file because later It will be used in getting nodes from the tree.

Hello @tdurieux @bbaudry
I apologize for this delay in the completion of this task, this week was quite busy for me. I was learning about Github Actions, was giving my end semester exams, and was also finding a correct way to add the test to Github Actions, but since the project is now a multi-build project so, it was quite hard to set up continuous integration to a module instead of project.
But finally, with the help of one of my friends, we found a way to add module tests to CI.
But now, when I set up the stable CI, Github actions are failing the tests. 😞
This is because there was a bug in my already written tests, the bug is quite difficult to explain in the comments, but I am finding a way to debug them. So, it will take around 1 more day.
Also, I want to update you that my final semester exams are over (22 - 25) and I am getting a 10 day leave from college, so I will be providing as maximum as possible hours to the project. 😄 👍🏽
Best Abhay

Hii @tdurieux @bbaudry
I have successfully debugged the test and they are working fine now.
I have also included the Gradle build in the CI, but I excluded the test for now as they are failing on Github actions but they are running successfully on the local system. This is because I implemented functional tests using Gradle runner, which is not supported by Github actions, see here. This is a bug that is still open to be debugged, so we have to wait to add tests to CI until Gradle doesn't get rid of this bug.
You can review the modified tests and workflow files.
Thank you

Hii @bbaudry @tdurieux
It's been a long time since I made the last PR, but the debugging was very difficult for me this time.
As you advised that these files can be very useful sometimes in data analysis, so finally, I found a way to generate a proper JSON and CSV file. 😄
Also, the time in producing these files is not that much which I thought, it is approx one minute. 🚀
I also added a test for the JSON parameter, now you can review the PR (#100) and can merge all the PRs according to their numbers.
Also, while merging there may be some merge conflicts, so just ping me if there are any.
Until then I will be carrying on with some more debugging and testing. 😃
Best,
Abhay

Hello everyone , I am Amisha pursuing Btech in computer Science I am looking to work on this project can anyone tell me how to start ? @ABHAY0O7  can you please guide me?

Hello @tdurieux @bbaudry
I hope you are having a nice time.
As my first task of creating depclean-gradle-plugin is already completed, so I moved to the second one, and I had implemented support for multi-module-analysis.
It is not so perfect but still, it will prevent the failure of building the project.
What I have implemented :

Suppose this maven-based java project to be the targeted one (link), it has three modules in which module-3 depends on module-2.
Now the thing is that the dependencies commons-codec:commons-codec:1.15 & com.jcabi:jcabi-manifests:1.1 are declared in module-2 but are not used in module-2, so depclean (old version) report these dependencies bloated.
But in module module-3 which depends on module-2 uses its dependencies commons-codec:commons-codec:1.15 & com.jcabi:jcabi-manifests:1.1 and the depclean (old version) will report these two dependencies as debloated.
See this whole report generated by depclean for this project.

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] abhayPlugin                                                        [pom]
[INFO] abhay-module-1                                                     [jar]
[INFO] abhay-module-2                                                     [jar]
[INFO] abhay-module-3                                                     [jar]
[INFO]
[INFO] -----------------------< org.abhay:abhayPlugin >------------------------
[INFO] Building abhayPlugin 1.0-SNAPSHOT                                  [1/4]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] --- depclean-maven-plugin:2.0.2-SNAPSHOT:depclean (default-cli) @ abhayPlugin ---
-------------------------------------------------------
[INFO] Starting DepClean dependency analysis
[INFO] Skipping because packaging type pom.
  SUCCESS [  1.166 s]
[INFO] abhay-module-1 ..................................... SUCCESS [  2.797 s]
[INFO] abhay-module-2 ..................................... SUCCESS [  1.459 s]
[INFO] abhay-module-3 ..................................... SUCCESS [  1.377 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  6.910 s
[INFO] Finished at: 2021-08-12T01:26:25+05:30
[INFO] ------------------------------------------------------------------------

Now what will happen, after seeing that the dependencies  commons-codec:commons-codec:1.15 & com.jcabi:jcabi-manifests:1.1 are not used in module-2, so he will remove them from it which will result in project builds failure as module-3 which requires these two dependencies, will not find these dependencies in module-2.
So, I propose (implemented) an extra section for these kinds of dependencies whose debloat status depends on other modules.  Look in this report, how I implemented that.
Depclean report (new version)

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] abhayPlugin                                                        [pom]
[INFO] abhay-module-1                                                     [jar]
[INFO] abhay-module-2                                                     [jar]
[INFO] abhay-module-3                                                     [jar]
[INFO]
[INFO] -----------------------< org.abhay:abhayPlugin >------------------------
[INFO] Building abhayPlugin 1.0-SNAPSHOT                                  [1/4]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] --- depclean-maven-plugin:2.0.2-SNAPSHOT:depclean (default-cli) @ abhayPlugin ---
-------------------------------------------------------
[INFO] Starting DepClean dependency analysis
[INFO] Skipping because packaging type pom.
 Original error: Could not transfer metadata org.abhay:abhay-module-2:1.0-SNAPSHOT/maven-metadata.xml from/to example-repo (C:\Users\ABHAY SINGH/.m2/repository): Cannot access C:\Users\ABHAY SINGH/.m2/repository with type default using the available connector factories: BasicRepositoryConnectorFactory
[INFO]
[INFO] --- depclean-maven-plugin:2.0.2-SNAPSHOT:depclean (default-cli) @ abhay-module-3 ---
-------------------------------------------------------
[INFO] Starting DepClean dependency analysis
[WARNING] Dependencies where not copied locally
-------------------------------------------------------
 D E P C L E A N   A N A L Y S I S   R E S U L T S
-------------------------------------------------------
USED DIRECT DEPENDENCIES [1]:
	org.abhay:abhay-module-2:1.0-SNAPSHOT:compile (size unknown)
USED INHERITED DEPENDENCIES [0]:
USED TRANSITIVE DEPENDENCIES [2]:
	commons-codec:commons-codec:1.15:compile (size unknown)
	com.jcabi:jcabi-manifests:1.1:compile (size unknown)
POTENTIALLY UNUSED DIRECT DEPENDENCIES [0]:
POTENTIALLY UNUSED INHERITED DEPENDENCIES [0]:
POTENTIALLY UNUSED TRANSITIVE DEPENDENCIES [4]:
	org.slf4j:slf4j-api:1.7.5:compile (size unknown)
	com.jcabi:jcabi-log:0.14:compile (size unknown)
	com.fasterxml.jackson.core:jackson-core:2.12.2:compile (size unknown)
	commons-io:commons-io:2.8.0:compile (size unknown)

-------------------------------------------------------
[INFO] DEPENDENT MODULES FOUND
Due to dependent modules, the debloated result of some dependencies from previous modules has been changed now.
The dependency-module details of such dependencies with the new results are as follows :
	1) ModuleCoordinates : org.abhay:abhay-module-2:1.0-SNAPSHOT
	   DependencyCoordinates : commons-codec:commons-codec:1.15:compile
	   OldType : unusedDirect
	   NewType : usedDirect

	2) ModuleCoordinates : org.abhay:abhay-module-2:1.0-SNAPSHOT
	   DependencyCoordinates : com.jcabi:jcabi-manifests:1.1:compile
	   OldType : unusedDirect
	   NewType : usedDirect

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for abhayPlugin 1.0-SNAPSHOT:
[INFO]
[INFO] abhayPlugin ........................................ SUCCESS [  1.166 s]
[INFO] abhay-module-1 ..................................... SUCCESS [  2.797 s]
[INFO] abhay-module-2 ..................................... SUCCESS [  1.459 s]
[INFO] abhay-module-3 ..................................... SUCCESS [  1.377 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  6.910 s
[INFO] Finished at: 2021-08-12T01:26:25+05:30
[INFO] ------------------------------------------------------------------------

Now, in the new feature, after the analysis of module-3 there is an extra section for dependencies whose debloated status has been changed. This will tell the user, not to exclude these dependencies from their respective pom.xml, which will prevent build failures.
This feature does not analyze the bulk of data to generate a report (maybe a better way), but it serves the purpose which was required.

The implementation of the above feature is here . You can review it and provide me the feedback as soon as possible.
Thank you

Nice idea.
Do you think it is possible to add a summary report at the end of the built of the three modules?
And this summary could also contain the information from (DEPENDENT MODULES FOUND)

Do you think it is possible to add a summary report at the end of the built of the three modules?

Sorry to say, but to my knowledge, this is not possible and actually, this was the whole problem for me, just think, if I have a way of adding the summary report at the end of the build, then instead of the summary report, I will prefer the bulk analysis of the result of all modules generated by depclean and then the problem of multi-module analysis would never arrive, but the things didn't work this way. I had already spent a lot of time researching this.
How do they work?
The mojo considers every module as an individual project, so whatever we write inside the execute() method, will be executed by every module in the order provided by the maven reactor. So, we can collect the data from every module and can manipulate it at the end of every module which I already did here #101, but not at the end of the whole project. 😢
Also, I think the only solution to it is inside the maven reactor codebase because the work performed by the reactor can only be possible by the bulk analysis of modules, not individual analysis. Unfortunately, I didn't find the codebase and logic behind the working of the maven reactor, but I am researching this, and maybe in the future I will be able to implement this summary report too. 😄
Until then I will try to add some new tests. 👨🏽💻
Thank you
Abhay

Hello everyone, I am Amisha pursuing Btech in Computer Science I am looking to work on this project can anyone tell me how to start? @ABHAY0O7 can you please guide me?

And if you don't mind, please answer her too.
And If you are busy, then provide me this wonderful opportunity of guiding new contributors. 😃

Hello @tdurieux @bbaudry
Since today is the last day of the GSoC coding period, I want you to review and merge all of my pending PRs so that I can include them in my final report.
Also, if possible I will be sending more PRs of some new tests or updates in README, so please try to review and merge them too before the deadline. 😅
Thank you
Abhay

Hello everyone, I am Amisha pursuing Btech in Computer Science I am looking to work on this project can anyone tell me how to start? @ABHAY0O7 can you please guide me?

And if you don't mind, please answer her too.
And If you are busy, then provide me this wonderful opportunity of guiding new contributors. 😃

Hello @tdurieux @bbaudry
Since today is the last day of the GSoC coding period, I want you to review and merge all of my pending PRs so that I can include them in my final report.
Also, if possible I will be sending more PRs of some new tests or updates in README, so please try to review and merge them too before the deadline. 😅
Thank you
Abhay

It would be great if you help me .

Hello @tdurieux @bbaudry
Since today is the last day of the GSoC coding period, I want you to review and merge all of my pending PRs so that I can include them in my final report.
Also, if possible I will be sending more PRs of some new tests or updates in README, so please try to review and merge them too before the deadline. 😅
Thank you
Abhay

Sorry @ABHAY0O7, I was on holiday without my laptop. I am reviewing and merging your PRs.


Updating qual tool speedup factors from latest CSP benchmarks

Signed-off-by: mattahrens<EMAIL_ADDRESS>Closed #6529
Speedup factors for qualification tool estimations are updated with latest benchmarks on CSP.

build

build

I am not really excited that we have 2 different Scala files with hardcoded speedups like: TypeChecks.scala

One of these is spark2 code which you don't really need to update.  This is done by me at the end of a release and this is not a big deal to me as the entire spark2 code base is much copied for now until we decide we want to spend time on it


noqa: E402 not detected

print(1)
from very_long_module\
    import nothing  # noqa: E402,F401

doesn't detect E402

similar (but I think another issue exists for it already):
F811 is not ignored.
from typing import (  # noqa: F401,F811
    overload,
)

See also #2253

Similar issue:
This noqa is valid in flake8 but not detected by ruff:
        is_to_run = (
            lambda x: 1  # type: ignore[assignment,misc] # pylint: disable=unnecessary-lambda-assignment
        )  # noqa: E731 We're going to throw all this anyway

(While this one work for both:)
        is_to_run = (  # noqa: E731, We're going to throw all this anyway
            lambda x: 1  # type: ignore[assignment,misc] # pylint: disable=unnecessary-lambda-assignment
        )


Update GitHub Actions checkout to v3

Codecov Report

Merging #168 (c1843ef) into master (5ad316f) will increase coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #168      +/-   ##
==========================================
+ Coverage   97.22%   97.24%   +0.02%
==========================================
  Files          38       39       +1
  Lines        2056     2072      +16
==========================================
+ Hits         1999     2015      +16
  Misses         57       57

Impacted Files
Coverage Δ

source/gc_example.d
100.00% <0.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Customize operation sequencing via sorunlib config file

Depending on the cryostat a set of pysmurf-controllers is connected to we might want to run multi-slot commands differently, and with different times between operations. The choice being whether we run all SMuRF commands in parallel or in serial, and how long we wait for the cryostat to cool again between operations.
The command ordering is especially important for:

smurf.bias_step()
smurf.iv_curve()
smurf.bias_dets()
smurf.take_bgmap()

We want to avoid having to set all of that when calling individual functions in sorunlib (else the scheduler would need to know about what cryostat the schedule its for). This leads us to the need for an sorunlib configuration file, to customize aspects of operation for a given cryostat. As there is an sorunlib/nextline instance per platform, this seems like a good solution. Perhaps eventually we find the cryostats run similarly in the future (i.e. certain SMuRF operations always in parallel/serial) but wait times for cooling will probably still differ especially between LAT and SAT.
Selection of the configuration file should probably be done on the backend somehow, when setting up the so-daq-sequencer-docker container.

(Just trying to capture some discussion on this.)
@guanyilun points out that this presents a problem with statically generated schedules, as the scheduler then needs to know these parameters as well in order to get the timing right for when to point where on the sky.
After some discussion on Slack the current stance is maybe it's best to do this configuration on the scheduler end, and allow for more customization via kwargs in sorunlib.

Closing as unplanned. Feel free to reopen if this becomes needed in the future.


java.lang.Runtime.availableProcessors() method returning incorrect result on computers with multiple CPU sockets

Platform and architecture (e.g. Linux/x64:
Instance Type: Amazon c5.24xlarge
Number of vCPUs: 96
Sockets: 2
Windows Server 2019 Datacenter
Processor: Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz (2 processors)
System type: 64-bit Operating System , x64-based processor

Java version (from "java --version") e.g. 1.8.0_181, 11.0.4+11 etc.:
openjdk 11.0.4 2019-07-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.4+11, mixed mode)

Variant e.g. HotSpot or OpenJ9:

Have you tested it with other vendors' java:
No

Steps to reproduce:
Execute - Runtime.getRuntime().availableProcessors()
public class TestGetAvailableProcessors {
public static void main(String[] args) {
System.out.println(Runtime.getRuntime().availableProcessors());
}
}

Error messsage and/or description of what is not working as expected:
Actual Result:
Runtime.getRuntime().availableProcessors() returns 48
Expected Result:
As there are two sockets on this VM with 48 processors each, expecting Runtime.getRuntime().availableProcessors() to return 96 instead of 48
What is not working as expected:
Results pertaining to only one socket are returned instead of all sockets.

Kindly let me know if I can provide any additional details.

@pDarbhamulla Can you try with 11.0.6?

@karianna
Thanks for looking into this. I tried on 11.06, still getting the same result - only one CPU socket is used.
openjdk 11.0.6 2020-01-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.6+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.6+10, mixed mode)

I cannot reproduce the behaviour on a bare metal machine.
PS C:\Users\Administrator> wmic cpu get NumberOfLogicalProcessors
NumberOfLogicalProcessors
12
12

AdoptOpenJDK with the test program mentioned above reports 24 available processors which is the expected answer.
Please check if the number Windows reports is different than the number that AdoptOpenJDK reports.

@pDarbhamulla @aahlenst I doubt this is adopopenjdk bug, we do not change source code of openjdk.
Things to check :

how java get's number of processors on windows
check how many processors used method returns when invoked (for example from C++ code)

as an workaround you might try to use (https://docs.oracle.com/en/java/javase/11/tools/java.html#GUID-3B1CE181-CD30-4178-9602-230B800D4FAE) explicitly set this number (via -XX:ActiveProcessorCount=xx)

if there is indeed error how java gets this number, I would suggest to report it on. To confirm that, would be useful to test using other vendor.
Would also point to https://bugs.openjdk.java.net/browse/JDK-5048379 .

wmic cpu get NumberOfLogicalProcessors

@aahlenst
I ran wmic command and Windows reports the correct number of available processors and this is different than the number that AdoptOpenJDK reports

I launched one of these instances myself. The Red Hat build of 11.0.6 as well as JDK 14 EA build 36 show the same problem.
I guess this one should be reported to the OpenJDK project.

This is the impl of os::active_processor_count() on windows:
http://hg.openjdk.java.net/jdk-updates/jdk11u/file/f7b46111931c/src/hotspot/os/windows/os_windows.cpp#l761
processor_count() is set here:
http://hg.openjdk.java.net/jdk-updates/jdk11u/file/f7b46111931c/src/hotspot/os/windows/os_windows.cpp#l3727
If you think there is a bug in this impl, I'd be happy to report it upstream.

I did some more digging...
The c5.24xlarge has 96 vCPUs. The CPU is a Intel Xeon 8275CL (didn't found the specs on the Intel website) which has 24 cores and can do 48 threads. Two of those are in a c5.24xlarge which makes 48 cores and 96 threads.
OpenJDK uses GetSystemInfo() to query the number of available processors, which returns SYSTEM_INFO. It uses the field dwNumberOfProcessors of the SYSTEM_INFO struct. According to the linked Microsoft docs, this is:

The number of logical processors in the current group.

What processor groups are is explained on https://docs.microsoft.com/windows/win32/procthread/processor-groups:

Support for systems that have more than 64 logical processors is based on the concept of a processor group, which is a static set of up to 64 logical processors that is treated as a single scheduling entity. Processor groups are numbered starting with 0. Systems with fewer than 64 logical processors always have a single group, Group 0.

This means, with 96 logical processors there must be at least two groups. This indicates that dwNumberOfProcessors is insufficient because it only returns the number of logical processors in the current group.
But there's more, again quoting https://docs.microsoft.com/windows/win32/procthread/processor-groups:

By default, an application is constrained to a single group, which should provide ample processing capability for the typical application. The operating system initially assigns each process to a single group in a round-robin manner across the groups in the system. A process begins its execution assigned to one group. The first thread of a process initially runs in the group to which the process is assigned. Each newly created thread is assigned to the same group as the thread that created it.

So if the JVM is constrained to a single group, 48 is the right answer. The remaining question to be answered: Does OpenJDK support multiple processor groups? JBS has the answer in Hotspot should be able to use more than 64 logical processors on Windows: No, and it won't be added. The right approach is to use multiple JVMs on big hardware.
Conclusion: Works as designed.

For the curious - my OpenJDK group at Microsoft is looking to work with the Windows team to potentially change this.  But these sorts of things take a long timeframe.


Extend fiberplane-charts with theme prop

Description
Introduces a chartTheme prop to the MetricsCard component. It exposes a theme type with optional parameters which, when set, override the default theme set in fiberplane-charts.
As we initially extend styled-component's DefaultTheme prop any consumer of the library using Styled Components will have their default theme extended, which is unwanted behavior.
TODO:

[x] set values for the default theme
[x] add additional annotations to theme values

Fixes FP-(issue)
Checklist

- [ ] The changes have been tested to be backwards compatible.
- [ ] The OpenAPI schema and generated client have been updated.
- [ ] New models module has been added to api generator xtask

[x] New types/fields are well-documented and annotated.
[x] The CHANGELOG is updated.

Please link any related PRs in other repositories that depend on this:

After merging, please merge related PRs ASAP, so others don't get blocked.

hey, i started work on the studio side, for when you can review: https://github.com/fiberplane/monofiber/pull/70
feel free to push changes directly to that branch!

nice. this is a big improvement to the stylez plumbing inside charts, and resolves some previous hacks


Add violet300 to brand colors for sepolia network

Description
Add violet/violet300 to brand colors for the Sepolia network. It's already on the develop branch should be able to pull and add through Figma tokens
Technical Details

Add violet/violet300 to brand color figma library
Add documentation and swatch
Publish library
Release notification on appropriate Slack channels

Acceptance Criteria

violet/violet300 is available in Figma

References

Related code PR https://github.com/MetaMask/design-tokens/pull/243

This is complete


Allow terminal-notifier syntax to work with notify-send

This will allow a sort of unified syntax.

Thanks. I try to patch the differences, so this helps that

No problem. Glad I could help.


fix: jobAttributes interface to use generic type T in data property

:tada: This PR is included in version 1.1.9 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Dx12 base

Can you please elaborate on what is this pull request about? I don't understand it.

Can you please elaborate on what is this pull request about? I don't understand it.

I'm sorry I have no idea what I am doing lol. I wanted to learn the amd open GPU for getting better performance gaming and kinda lost...


isolate and simplify the creation of the options object

I've created a makeConfig function to try and simplify the creation of the various options.
I've isolated this to make testing easier.
I've added tests and I think it is more readable but please feel free to disagree.
This is your baby, you can outright refuse if  you want.

We need to make a chat somewhere lol. I wish you had known about my branch that has a ton of changes it just has 1 failing test

Should we set up a gitter or a spectrum

I should have communicated that I was going to do a PR.  My life is fairly hectic at the moment but I had a spare hour earlier with nothing to do so I thought I'd.....
Setting up a gitter or a spectrum sounds fun.
I'm training for an MMA fight at the moment and don't have much freetime but I'll hop on when I can.
If you are Ok setting it up?  Go with anyone you know.  Never heard of spectrum

Yeah I just saw that nextjs was using spectrum so

As soon as you make those invariant changes I'll merge this

actually, I'm just gonna merge this for now. We can come back and cleanup. I wanna just keep moving


⚠ Bofrost.es has degraded performance

In cc5668e, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1499 ms

Resolved: Bofrost.es performance has improved in ee99d83 after 6 minutes.


New Tag?

A tag hasn't been made since March, I was wondering if a new tag could be made & update to package.json for the NPM users?

https://github.com/jhudson8/react-chartjs/commit/c7edab0d54496af3695addd75d4d1c428d5e07b6


Support deep linking

It would be great to be able to link to a schema or even to a schema element, for example /[schema]/[root element]/[focus element]?schema_url=data:...

@tuukka Great idea 👍
We just need to figure our how to reference custom schemas inside URLs.
So definitely implement this but after #10


docker compose file / portainer

Hardware (please complete the following information):

Deye 800 and 1600:

Software (please complete the following information):

logger version: actual
deye-inverter-mqtt version: actual
compose file:
version: "3"

services:
deye-mqtt:
container_name: deye
image: ghcr.io/kbialek/deye-inverter-mqtt:latest
volumes:
- /volume1/docker/deyemqtt/config.env:config.env
env_file:
- config.env
network_mode: host
restart: unless-stopped
environment:
- TZ=Europe/Amsterdam
Hello, I would like to create the container with portainer but the config.env file is not existing, it is named config.env.example.
The container will not be created, so I can not rename this file.
Can I do a correct file mapping to my NAS-drive with the volumes: option? What is the correct source path for the expected  config.env.
Thank you for a not in to deep user
Gerhard

The Docker container completely disregards the config.env file. This file is intended to define environment variables, which the Docker engine sets for the container upon startup.
Maybe this article will help you https://www.portainer.io/blog/using-env-files-in-stacks-with-portainer

Fantastic, it works Great!!!


display image to researcher

Display the image from the probate book to the researcher when they are viewing a record detail screen.

Options
(a) cropped portion
(b) full page
(c) hybrid, full page with cropped portion clear, but remaining part of page greyed


Fix reference to docker image for CI

Ugh. I'm hoping this finally gets it green.

Well I had to go back to the circleci docker images, but at least it's green now 😆

Great thanks!


ATS entries are misnamed

The ATS entries have names like /extensions/elevation/table_def/gpkg_2d_gridded_coverage_ancillary
"elevation" is wrong, should be something like coverage.

https://github.com/opengeospatial/ets-gpkg12/pull/55

migrating to https://github.com/opengeospatial/geopackage/issues/557

migrating to https://github.com/opengeospatial/geopackage/issues/557


SFDX Source Pull can't retrieve picklist values

Summary
We can’t retrieve the specified metadata object: PicklistValue. Certain metadata types, like PicklistValue1 are not currently supported by the CLI.
File a bug here: https://github.com/forcedotcom/cli/issues and provide the name of the unsupported metadata type
We can’t retrieve the specified metadata object: PicklistValue. Certain metadata types, like PicklistValue2 are not currently supported by the CLI.
File a bug here: https://github.com/forcedotcom/cli/issues and provide the name of the unsupported metadata type
Steps To Reproduce:
Repository to reproduce: dreamhouse-lwc
Update picklist values , try to perform sfdx force:source:pull
NOTE: If your issue is not reproducable by dreamhouse-lwc, i.e. requires specific metadata or files, we require a link to a simple Salesforce project repository with a script to setup a scratch org that reproduces your problem.

This is step 1.
This is step 2. All steps should start with '1.'

Expected result
Expect picklist values to be pulled
Actual result
Some error saying picklist values are not supported
System Information
{
"cliVersion": "sfdx-cli/7.123.0",
"architecture": "darwin-x64",
"nodeVersion": "node-v14.18.1",
"pluginVersions": [
"@oclif/plugin-autocomplete 0.3.0 (core)",
"@oclif/plugin-commands 1.3.0 (core)",
"@oclif/plugin-help 3.2.3 (core)",
"@oclif/plugin-not-found 1.2.4 (core)",
"@oclif/plugin-plugins 1.10.1 (core)",
"@oclif/plugin-update 1.5.0 (core)",
"@oclif/plugin-warn-if-update-available 1.7.0 (core)",
"@oclif/plugin-which 1.0.3 (core)",
"@salesforce/sfdx-plugin-lwc-test 0.1.7 (core)",
"alias 1.1.22 (core)",
"apex 0.3.0 (core)",
"auth 1.7.3 (core)",
"config 1.2.41 (core)",
"custom-metadata 1.0.12 (core)",
"data 0.6.3 (core)",
"evergreen 0.34.0",
"└─ evergreen-build 0.20.2",
"generator 1.2.0 (core)",
"limits 1.2.2 (core)",
"org 1.8.3 (core)",
"salesforce-alm 53.0.0 (core)",
"schema 1.0.10 (core)",
"sfdx-cli 7.123.0 (core)",
"shane-sfdx-plugins 4.43.0",
"├─ @mshanemc/plugin-streaming 1.1.7",
"└─ @mshanemc/sfdx-sosl 1.1.0",
"source 1.2.4 (core)",
"telemetry 1.2.8 (core)",
"templates 52.4.0 (core)",
"trust 1.0.8 (core)",
"user 1.5.2 (core)"
],
"osVersion": "Darwin 20.5.0"
}

If you are using sfdx

Run sfdx version --verbose --json

If you are using sf

Run sf version AND sf plugins --core

Paste the output here

Additional information
Feel free to attach a screenshot.

The PickList metadata is actually stored as a StandardValueSet. Using dreamhouse-lwc I was able to force:source:pull that metadata type
 ➜  sfdx force:source:pull
=== Pulled Source
STATE  FULL NAME          TYPE              PROJECT PATH
─────  ─────────────────  ────────────────  ─────────────────────────────────────────────────────────────────────────────
Add    test               GlobalValueSet    force-app/main/default/globalValueSets/test.globalValueSet-meta.xml
Add    LeadSource         StandardValueSet  force-app/main/default/standardValueSets/LeadSource.standardValueSet-meta.xml

could you please provide more detailed steps to reproduce it, or you can try using the source:beta:* commands available in 7.125.0

I think the issue reproduces when you create picklist first, then you pull, then you add more picklist values or activate picklist values from the list and pull again. The second pull fails

could you try using the new source:beta:pull command? This bug might already be fixed in there, and if it isn't we'll fix it in there.

could you try using the new source:beta:pull command? This bug might already be fixed in there, and if it isn't we'll fix it in there.

Interesting idea, is that available in my sfdx?

Warning: source:beta:pull is not a sfdx command.

sorry @bdovh - it's available in latest-rc: 7.125.0 it will be available in 7.125.0 as latest later today

why this issue is closed?

this works in the new beta:pull.

closed with new commands GA


Camel-Kafka: Added missing imports in integration test

Description

Target

[x] I checked that the commit is targeting the correct branch (note that Camel 3 uses camel-3.x, whereas Camel 4 uses the main branch)

Tracking

[ ] If this is a large change, bug fix, or code improvement, I checked there is a JIRA issue filed for the change (usually before you start working on it).

Apache Camel coding standards and style

[x] I checked that each commit in the pull request has a meaningful subject line and body.

[x] I have run mvn clean install -DskipTests locally and I have committed all auto-generated changes

/component-test kafka

I'm going to regen and push.


My code worked perfect, but the program refused to accept one of the results. I reproduced what it wanted me to make and it worked everytime, definitely a bug.

Challenge Find the Longest Word in a String has an issue.
User Agent is: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0.
Please describe how to reproduce this issue, and include links to screenshots if possible.
My code:
var arr = [];
var i = 0;
var lengthArray = [];

function findLongestWord(str) {
  arr = str.split(' ');

  for (i = 0; i < 10; i++) {
    if (arr[i]) {
      lengthArray.push(arr[i].length);
    }
  }
  lengthArray.sort(function(a,b) {
  return b - a;
});
  return lengthArray[0];
}

findLongestWord("May the force be with you");

@graalcloud thanks for the issue. This is a feature on how the tests work. They work by calling the function findLongestWord() over and over. All global variables are changed likewise. This is a duplicate of https://github.com/FreeCodeCamp/FreeCodeCamp/issues/9199. There's already been a call for adding some text about this "feature" in the curriculum somewhere https://github.com/FreeCodeCamp/FreeCodeCamp/issues/9063.
If you get stuck or have questions with a challenge in the future, please first ask questions to the Help Room. Happy coding!

Put the "lengthArray" definition inside the function, a global shouldn't be used, cause multiple function call may pollute this array when it's global.
For example, when it's first called...
findLongestWord("The quick brown fox jumped over the lazy dog"); // lengthArray now is [6, 5, 5, 4, 4, 3, 3, 3, 3]
And the second time the function is called
findLongestWord("May the force be with you"); // lengthArray now is [6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2]
The answer now is '6' instead of '5' which you expect.
So you may need to modify it to ...
function findLongestWord(str) {       var lengthArray = [];  // The definition should be here.       ......       ..... }


experimental: add data collection only decorator supporting mpi

For example,
import numpy as np
from galilei.sampling import build_samples
from galilei.experimental import collect

@collect(samples=build_samples(
    {'a': [0, 2], 'b': [0, 2]}, 100000
), save="test.pkl", mpi=True)
def test_em(a, b):
    x = np.linspace(0, 10, 100)
    return np.sin(a*x) + np.sin(b*x)

and suppose this script is called test.py. One could run it with
mpirun -n 10 python test.py

to perform parallel collection. Note that this requires mpi4py which will not be installed by default.

Codecov Report
Patch coverage has no change and project coverage change: -1.02 :warning:

Comparison is base (0308bfb) 12.26% compared to head (2e7baa6) 11.24%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff             @@
##           master      #13      +/-   ##
==========================================
- Coverage   12.26%   11.24%   -1.02%
==========================================
  Files           8        9       +1
  Lines         375      409      +34
==========================================
  Hits           46       46
- Misses        329      363      +34

Impacted Files
Coverage Δ

galilei/experimental.py
0.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


JS error when trying to load the field through a tool

I'm working on a tool page that accepts a dynamic set of field items (much like how Nova does it on resource pages) however when trying to load the FilePond field I am met with the field not rendering and an error message as shown in the screenshot.

Not sure if it is related but when looking at the issue through the inspector, the instance variable is undefined.

I can see that loading this using a resource is working as expected. I'll try to put together an example repository with my tool to assist in the debugging process.
Thanks

Does your tool use the detail or form version of this component?
https://github.com/dcasia/nova-filepond/blob/41fa1004de9074a7ebc63909e220e53d55b12161/resources/js/field.js#L5-L6

You could manually resolve the field before returning it from your tool. You need to resolve it from the backend to ensure that a value is set on it during the page load so it can remember what you uploaded previously. Otherwise, the field resets to null every time you submit the form. You don't need a real resource to resolve the field; you can do something similar to what I've done with this other package:
https://github.com/dcasia/table-widget/blob/630b78e006bb4927261f7afd79fecdf655c7eafc/src/TableWidget.php#L31-L33

Good call, that makes sense. So what I'm tempted to do is in my tool extend the Filepond field, then add a resolveValue function onto it and ensure it applies an empty array. My tool doesn't need to retrieve data back out again as it just serves as a way of creating models in bulk based on the file uploads. I have a resource and model to pull the data back out and handle edits.
I'll give that a go, thanks for your help!

Turns out I've overcomplicated this, only been using Nova for a week. Turns out what I want to achieve can easily be done via an action 🤦 .
I'm closing this for now but thank you again for all your help.


Link to preview sign-up doesn't work

In the section about "All Versions and Deletes Mode" the text says to click on the link to learn how to sign up for the preview, but the link just links back to this page. e.g.

Learn more about how to sign up for the preview.

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

ID: 86445fda-42db-f5e0-0204-3f90b80658b2
Version Independent ID: f0f3c780-e90f-6a68-b78c-68d3a25a304b
Content: Change feed modes in Azure Cosmos DB
Content Source: articles/cosmos-db/nosql/change-feed-modes.md
Service: cosmos-db
GitHub Login: @jcocchi
Microsoft Alias: jucocchi

Sorry, I get it now - it's supposed to take you down to the section further down the page where the sign up instructions are, but on my browser it just loads the page and doesn't take you to the relevant section.

@dgpoulet Thank you for your feedback. We will review and make an update if appropriate.

@dgpoulet Thank you for letting us know.

@dgpoulet this happened because the hyperlink depends on the correct tab being selected. I just submitted an update for this doc and it should publish later today. Thanks for the feedback!


Eager mode / AutoGraph control dependencies

In the current main examples of autograph which uses eager mode when calling opt.minimize there is this comment:
  # Autograph automatically adds the necessary `tf.control_dependencies` here.
  # (Without them nothing depends on `opt.minimize`, so it doesn't run.)
  # This makes it much more like eager-code.

So my question is could you clarify how this magic is happening behind the scenes (e.g. what are the conditions for which autograph creates these dependencies and if one wants to somehow force in eager mode some form of dependencies, how to achieve it. For instance consider the following "python" code:
def some_fn(x, m, t):
   if t % 100 == 0:
       m = m * 0.9 + x ** 2 * 0.1
   return x / tf.sqrt(m)

Here we want the final value ofto always be either the input or the updated value dependable ont`. How can we force this control dependency?

Note that TF 2.0 includes an automatic control dependencies mechanism that is better than autograph's explicit tf.control_dependencies. So if at all possible we recommend using tf.function (tf.function also uses autograph) which ensures the stateful ops in the graph are sequenced in the order in which they were created (that is, program order). We'll update autograph to use this new system soon as well.
I'll describe the old mechanism below, for completeness. Then at the end I'll describe what happens in the case of the if statement, which doesn't need control dependencies at all.
The old mechanism for control dependencies:
In the case of opt.minimize, we used tf.control_dependencies. There are a few heuristics, the most important being that a function whose value is not used will be sequenced before all the statement that follow it. For example:
opt.minimize(...)
... other computations ...

is transformed into:
with tf.control_dependencies([opt.minimize(...)]):
  ... other computations ...

Data dependencies due to if statements
In the case of the example you listed:
   if t % 100 == 0:
       m = m * 0.9 + x ** 2 * 0.1
   return x / tf.sqrt(m)

the code is transformed into:
  m = tf.cond(
    t % 100 == 0,
    lambda: m * 0.9 + x ** 2 * 0.1,
    lambda: m)
  return x / tf.sqrt(m)

The functional form of TensorFlow's conditionals hopefully makes it more obvious that the modified variable has an explicit data dependency to the conditional that precedes it. So m will always have the correct value.
Let me know if anything else is unclear.

Perhaps the document is also useful for understanding:
https://github.com/tensorflow/community/pull/20/files#diff-d5334516fd698a57cc5641aed4068e7fR166


Get and pass up feature to update higher caches

If higher level caches don't have a key, they will be given it if it exists in a lower level.

Coverage decreased (-0.63%) when pulling 2cb74a032dc089ff86fd5fe7353db91721a85fbe on raadad:feature/update_higher_caches into 192e11307bd51f9e3c044c7425295510276db782 on BryanDonovan:master.

Coverage decreased (-0.63%) when pulling 2cb74a032dc089ff86fd5fe7353db91721a85fbe on raadad:feature/update_higher_caches into 192e11307bd51f9e3c044c7425295510276db782 on BryanDonovan:master.

Thanks for this pull request.  Can you please add tests like:
            context("when value is not found in any cache", function() {
                var response;

                beforeEach(function(done) {
                    key = support.random.string(10);
                    sinon.spy(memory_cache, 'set');
                    sinon.spy(memory_cache2, 'set');
                    sinon.spy(memory_cache3, 'set');

                    multi_cache.get_and_pass_up(key, function (err, result) {
                        check_err(err);
                        response = result;
                        done();
                    });
                });

                afterEach(function() {
                    memory_cache.set.restore();
                    memory_cache2.set.restore();
                    memory_cache3.set.restore();
                });

                it("calls back with null", function() {
                    assert.strictEqual(response, null);
                });

                it("does not set anything in caches", function(done) {
                    process.nextTick(function () {
                        assert.ok(memory_cache.set.notCalled);
                        assert.ok(memory_cache2.set.notCalled);
                        assert.ok(memory_cache3.set.notCalled);
                        done();
                    });
                });
            });

The second test passes now, which is great.  I just want to prevent a future bug there.  The first test fails though.  I don't think it should be setting the result to {} when nothing is returned.

Coverage decreased (-0.63%) when pulling 9bca5e674a6cc5e945a6be2a2a5bf42676ba60bf on raadad:feature/update_higher_caches into 192e11307bd51f9e3c044c7425295510276db782 on BryanDonovan:master.

I'll get this in a release ASAP.

This is in release 0.16.0.  Thanks again for the pull request!

@raadad - I'm doing some refactoring of the library and noticed that you're passing result.ttl to cache.set() inside get_and_pass_up().  Are you depending on result.ttl existing?  I'd like to remove that since there's no guarantee that the result object will have a ttl property.  I was thinking we could pass an options object into get_and_pass_up() if there's a need to specify a ttl in that function.
async.each(cachesToUpdate, function(cache, next) {
    cache.set(key, result, result.ttl, next);
});

Let me know what you think.

@BryanDonovan the interface for cache.set is (key, value, ttl, cb)  - although this is ignored in memory.js it is not in redis_store.js.  I think changing ttl to options is a good idea , however all implementations of cache  will need to be refactored aswell, which will create a backwards incompatibility for custom implementations (not a big change though)

I mean the result object does not have a ttl property.

Oh, sorry for misunderstanding, yes, you are right.


Need Documentation

Hi guys,
Can you tell if it is possible to repack+compile , but specify a php.ini to microsfx ?
Thanks

While it's possible, this functionality isn't currently supported. We have two potential options to implement it IMO:
We could introduce new options in the Compile command that accept a filepath to an .ini file. This file would be parsed to generate the appropriate -I key=value PHP ini SPC build options.
Alternatively, we could accept a list of -I options directly, similar to how SPC does, and simply proxy these to the SPC build command.
If you're interested in seeing this feature implemented, feel free to submit a PR😉

I opened a PR for this 👍🏼


[PF-217] Few improvements in test to reduce test time

BEFORE_EACH_TEST_METHOD should be AFTER, as we want to mark the ApplicationContext dirty after test.
Reduce polling period and increase polling number
Duration.plus returns a copy of the duraion, so we need to use the new copy:
waited = waited.plus(Duration.ofMillis(poll.toMillis()));
Reduce flight-submission-period in test

How much does this help?

Reduced ~3 minutes. Not too much, but it does fixed some issues


Godot 4 alpha 9 regression: hint_color shows a shader compilation error.

Godot version
4.0 Alpha 9
System information
Windows 10
Issue description
"hint_color" keyword is shown as an error in spatial shaders.
Steps to reproduce
Make a spatial shader using the hint_color keyword. E.g, "uniform vec4 albedo_color : hint_color;"
Minimal reproduction project
No response

hint_color is now source_color.


Server Not connecting

Hi my wallet is not connecting to server. It just suddenly stopped working after a transection.
I  re-downloaded the wallet but still it's not connecting.

This isn't an issue with the electrum-raven client itself but is caused by a lack of public servers. I'd recommend using EPS instead for your server https://github.com/standard-error/electrum-personal-server as this is far better for privacy and other reasons


Add location to iceberg table

@electrum in order to squash the commits i just moved the changes to another branch and closed
https://github.com/prestosql/presto/pull/2521
per your request i renamed external location to just location

@electrum , as per your request - we sqaushed the commits and created a new PR

Merged, thanks!


Component inspector wrongly trigger

When I use copy/past command on Mac on my website with DevTools enable (enable in Vite)
I triggered the Component inspector, who open my VS Code
So I had to totally disable it.

Do you use cmd + c / cmd + v?

Yes, nothing custom

Sorry, I can't reproduce it, could you provide a reproduction?


added enroll button able to update feature

Description
FEATURE CHECKS ENROLLED STATUS OF A USER FOR COURSE AND RENDERS APPROPRIATE BUTTON MESSAGE FOR AN UNLOGGED IN USER, A LOGGED IN BUT UNEROLLED USER AND AN ENROLLED IN USER
How Has This Been Tested?
TESTED WITH BACK END AND RENDERS PROPERLY FOR ALL CASE SCENARIOS
Screenshots (if applicable, else remove this line / section)
Checklist:

[X ] My code follows the style guidelines of this project
[X ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have added necessary inline code documentation
[ ] I have added tests that prove my fix is effective and that this feature works
[ ] New and existing unit tests pass locally with my changes

great work Fidel, though a few points to note:
1.If I am not logged in, the Login to Enroll button does not redirect to the login page
2.If I am logged in, the resume course button is not functioning
3.The second button still displays Enroll Coursedespite having enrolled
Please check these out...


Replacing minecraft:air doesn't apply

Describe the bug
The 'minecraft:air' or 'air' block is not replaced by the desired blocks but with other blocks it works. I want to replace the wood blocks and leaves of all the trees with air.
Logs/Screenshots/Videos
Crash-Report:https://pastebin.com/rK9Hg83Y
[17:15:38] [Server thread/WARN] [FML]: Mod wgblockreplacer is missing the required element 'version' and a version.properties file could not be found. Falling back to metadata version 2.2.0
https://pastebin.com/WshYqArg
**Versions:

Minecraft: 1.12.2
Mod Version: 1.12.2-2.2.0.
Forge MC 1.12.2 <IP_ADDRESS>38
Sponge Forge 1.12.2-2838-7.2.2
SpongeAPI 7.2.0-d871149cb

In your config, dimension_list and biome_filter should not be empty. Is that the full crash report?

https://pastebin.com/CgjuVH4f
There's no crash, it just doesn't work. Could it be because the wood of the trees is not defined as a "land" block and therefore nothing changes?

Try this:
S:biomefilter <
        minecraft:forest
        minecraft:plains
     >

Oh! Also, set lateReplacement to something higher, like 3.

https://pastebin.com/UKayQfDe

https://pastebin.com/AVffWzvY

Scratch that, you had biomefilter correct. Late Replacement should fix your issue.

I'll try.

It doesn't work for me... I don't know how to fix it.

It's probably related to #19, I'll take a look at some point and see if I can fix it


Added Server-side example of Ruby

Added simple server-side example of ruby(sinatra).
Thank you for a wonderful product.

Thank you for your contribution. I hope it will be helpful for ruby community.


Can't readily repick Ancestry, Class, Heritage or Background once chosen.

In the character builder you can't repick these items once chose.  You have to go over to the compendium to find the list, open it, and drag and drop from there.
Seems you could leave the + icon on each of those items to resolve this.

Duplicate of #5850


Elias-Fano Coding

One idea is run-length encoding offsets https://github.com/tinygraph/tinygraph/issues/12 - which will probably work quite well with very sparse graphs like road networks.
Another idea is Elias-Fano coding, since offsets are monotonically increasing numbers. Investigate.

Partitioned Elias-Fano Indexes looks interesting

Here is a good description of how Elias-Fano Gamma and Delta coding works.

We have Elias-Gamma and Elias-Delta coding now; next is Elias-Fano coding for sorted list of ints.


Implement the attributes view into the adjacency matrix

Closes #16

@waxlamp, this is sufficiently far to be tested locally. Let me know what you think of the styling and if you have any recommendations for dealing with the attribute label length

@waxlamp This is now rendering numeric and categorical data and has tooltips, etc. Let me know how you like it so far. There is a bit of work still to be done regarding enter, exit, merge with the D3; I've kind of just hacked that together for now. I wanted to get some feedback before I focus on that though.

This is looking great. When I load up the les mis data, I see that the attributes view overplots a bit on the last column from the matrix view (or maybe not the very last column; hard to tell which columns are obscured just by looking).
There is probably a bit of design help this could use, and I can loop in @jtomeck if you like to take a look.

@waxlamp I just fixed up that slight issue with the extra row. It was a problem with the margin calculation. I'm happy to loop Jared in but maybe we should do that as a separate PR since I'm sure that will give yield substantial changes


Added override minimum starting year for contributions

Description
Added argument for override minimum year in API request
Added parameter (default as null) to override the minimum year where contributions should count from
Fixes #
#503
Type of change

[ ] New feature (added a non-breaking change which adds functionality)

How Has This Been Tested?

[ ] Tested locally with a valid username
[ ] Tested locally with an invalid username
[ ] Ran tests with composer test

Checklist:

[ ] I have checked to make sure no other pull requests are open for this issue
[ ] The code is properly formatted and is consistent with the existing code style
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings

Hey @DenverCoder1 , I think that little addition is working just fine :)
Tested locally with my account for the new feature.

Thanks for the feedback @DenverCoder1 , I applied the changes you suggested :)