JOSS Paper review by Nick

Here are my main suggestions to improve the PyForestScan software paper for JOSS submission.
Summary Section

Clarify Acronym: Before mentioning LiDAR as an acronym, spell it out in full as LIght Detection And Ranging, similar to how you've done for FHD, PAD, and PAI.
Digital Terrain Models: Add the term “models” after "digital terrain."

State of the field

Missing: This section is completely missing from the paper. Here a list of previous work or alternative software should be presented in a way to then reinforce the need for PyForestScan.

Statement of Need

Data Complexity and Size:

Complexity: Please specify the complexities that current methods struggle to address and how PyForestScan aims to solve these issues.
Size: Could you provide more specific details when discussing size? Typically, LiDAR data is processed in tiles. For example, 1km x 1km LiDAR tiles with low average point densities (2-3 pts/m²) are usually around 20-30 MB, which is manageable. However, with higher densities (e.g., UAV LiDAR data at 2000-3000 pts/m²), file sizes can become a limiting factor. Please clarify the specific size challenges.

Last Sentence of First Section - LiDAR-based Analysis:

While “LiDAR-based analysis” is generally understood, it's more precise here to refer to "point-cloud-based analysis" rather than LiDAR-based analysis. LiDAR is the sensor technique that produces point clouds, often discretized into rasters. Since this section discusses LiDAR-derived point-cloud analysis (as mentioned earlier), consider using "point-cloud-based analysis."

Second Section - LiDAR Data:

See the previous point. It seems you are specifically referring to point-cloud data here.

Points Generated from SfM:

How are PAD, PAI, and FHD metrics derived from airborne SfM data, given that aerial SfM typically captures only the canopy top without penetrating vegetation layers? Without integrating terrestrial images or using off-nadir, low-altitude images, SfM can only capture the top layer, making voxel creation impossible. Of course, SfM CAN generate 3D point clouds of trees, but large-scale forest point clouds (with tiepoints derived from several heights along the vegetation profile) from aerial SfM seem not feasible or feasible only with expensive drone swarms flying through the canopy. Please clarify how SfM data can be used in your package to derive these metrics.

Acknowledgment

Test dataset to validate and benchmark PyForestScan:

It is mentioned that a single noise-free classified point cloud has been used for testing and validating the package. It would be valuable to know more about the data used for testing in this paper, without having to find the information in the papers cited in the test_data folder. Please add some information in this paper, such as (1) location, (2) dominant ecosystem/vegetation type/vegetation structure, (3) point cloud density and (4) preprocessing steps if any.

@npucino
Thank you very much for your very detailed review of the paper. I have implemented the suggestions you made, including some requested by the other reviewer, Dr. Wu. These changes were made to better organize the description of the software. This was done to address the comments related to the issues of the missing “state of the field” and the concern for the lack of substantial scholarly effort. These included moving the introduction of existing software to be earlier in the text, and expanding on this to provide a more detailed picture of the state of the field. These also included reorganizations in the text to enhance emphasis on the functions that this library introduces to calculate forest structural metrics in Python, something that prior to this library did not exist, and reducing the emphasis on the contribution of the library in solving “big data” and efficiency problems, as you are correct to point out that I am leveraging pdal to do this. Many of the required changes warranted more explanation and so the revision of the manuscript is considerably longer. Finally, I think that it is important to say that this is the first stable release of the library. I hope and plan to continue to add additional functionality, like the ability to calculate canopy cover, incorporate tree segmentation, and work with waveform lidar – for example modeling point cloud distributions from waveforms. Thank you, again!
Here are my responses to each of your suggestions. We have tried to incorporate these all into the manuscript and repository.

Summary Section
Clarify Acronym: Before mentioning LiDAR as an acronym, spell it out in full as LIght Detection And Ranging, similar to how you've done for FHD, PAD, and PAI.
Digital Terrain Models: Add the term “models” after "digital terrain."

Clarifying the acronyms: "lidar" is spelled out now in full. We also made the spelling and format of "lidar" to be consistent through out the text ("lidar" as opposed to "LiDAR").
Digital Terrain Models: any typo that was here should now be fixed.

State of the field
Missing: This section is completely missing from the paper. Here a list of previous work or alternative software should be presented in a way to then reinforce the need for PyForestScan.

We did not add a separate heading for the paragraph that details the current state of the field, as this is not required by JOSS and we felt that it might detract a little from the organization of the paper. However, we did reorganize the text so that the discussion of existing packages (and the lack of) are mentioned much earlier in the text and is now contained within a single paragraph. This includes a list of previous work and alternative software, and the lack of published libraries in Python to calculate forest sturcutral metrics.

Statement of Need
Data Complexity and Size:
Complexity: Please specify the complexities that current methods struggle to address and how PyForestScan aims to solve these issues.
Size: Could you provide more specific details when discussing size? Typically, LiDAR data is processed in tiles. For example, 1km x 1km LiDAR tiles with low average point densities (2-3 pts/m²) are usually around 20-30 MB, which is manageable. However, with higher densities (e.g., UAV LiDAR data at 2000-3000 pts/m²), file sizes can become a limiting factor. Please clarify the specific size challenges.

We made major revisions to the manuscript here to try to clarify this point. The major complexities are related to size and we have added text to show how our library makes use of the power IO capabilities of PDAL to read data formats like EPT and COPC, which are more efficient and designed towards handling huge datasets. We also try to clarify the types of operations needed, and how our library makes use of existing tools to calculate forest metrics. Our major contribution is code to calculate forest structural metrics, and providing a way to do this efficiently with large datasets.

Last Sentence of First Section - LiDAR-based Analysis:
While “LiDAR-based analysis” is generally understood, it's more precise here to refer to "point-cloud-based analysis" rather than LiDAR-based analysis. LiDAR is the sensor technique that produces point clouds, often discretized into rasters. Since this section discusses LiDAR-derived point-cloud analysis (as mentioned earlier), consider using "point-cloud-based analysis."

Thank you for this suggestion. We have made the change to use "point-cloud-based analysis" throughout the text.

Second Section - LiDAR Data:
See the previous point. It seems you are specifically referring to point-cloud data here.

We have made the change to use "point-cloud-based analysis" throughout the text.

Points Generated from SfM:
How are PAD, PAI, and FHD metrics derived from airborne SfM data, given that aerial SfM typically captures only the canopy top without penetrating vegetation layers? Without integrating terrestrial images or using off-nadir, low-altitude images, SfM can only capture the top layer, making voxel creation impossible. Of course, SfM CAN generate 3D point clouds of trees, but large-scale forest point clouds (with tiepoints derived from several heights along the vegetation profile) from aerial SfM seem not feasible or feasible only with expensive drone swarms flying through the canopy. Please clarify how SfM data can be used in your package to derive these metrics.

This is an important point, and we tried to make this clear in the text that using PyForestScan to calculate metrics in open canopy forest with very dense SfM data can create a point cloud that is detailed enough to calculate these metrics. There are no specific functions (as of yet!) that have been developed for SfM data. That said, we felt it was important to ensure that readers are aware that this is a package primarily for point clouds from airborne sensors, and so however those are generated, so long as the data is captures enough of the forest, the library can calculate the structural metrics.

Acknowledgment
Test dataset to validate and benchmark PyForestScan:
It is mentioned that a single noise-free classified point cloud has been used for testing and validating the package. It would be valuable to know more about the data used for testing in this paper, without having to find the information in the papers cited in the test_data folder. Please add some information in this paper, such as (1) location, (2) dominant ecosystem/vegetation type/vegetation structure, (3) point cloud density and (4) preprocessing steps if any.

We included a small usage section in the text to (1) point readers towards jupyter example notebooks that can be used to help fascilitate usage of the library, (2) the github repository, where all the source code can be found, along with the example data, and (3) basic information on both the point cloud -- including point cloud density (via nominal pulse spacing) and preprocessing steps, as well as information on the forest cover type.
Thank you again for your detailed response. I hope that these address your concerns.

Hi @iosefa,
thanks for taking the time to carefully address each individual comment and improve your work. I am impressed by the quality of your revision and I very much like the way you restructured the paper. Now the importance and scholarly effort of this contribution is way clearer, and I am very happy to accept this submission!
Congrats!
with regards,
Nick


Override the default Django admin app

This replaces the django.contrib.admin app with the reactor.contrib.admin app.
The new app is open for customizing and extending the admin site functionalities shipped with Django.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (6da6dea) 100.00% compared to head (bf01e6f) 100.00%.
Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #12   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            7        11    +4
  Lines           49        58    +9
=========================================
+ Hits            49        58    +9

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Add reporter option

Also add related reporterOutput and absolutePathsForReporter options
to configure the location for generated output and whether it should use
absolute paths rather than relative.
Closes #42.

@jzaefferer Any feedback on my comment and the most recent changes?

I've landed a few other updates, so this needs a rebase as well.

@jawshooah let me know when you updated this, I can review it much more quickly.

@jzaefferer Should be good to go!

Thanks for the update! Just finished another review.

@jzaefferer I've addressed your comments, should be all set!

Great work, thank you a lot for the contributions! I just tagged and published 4.0.0.


Move from Travis CI to GitHub Actions CI

cc: @ablaom @tlienart

Codecov Report

Merging #84 (a4d578d) into dev (f7efd7e) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##              dev      #84   +/-   ##
=======================================
  Coverage   95.61%   95.61%
=======================================
  Files          21       21
  Lines         799      799
=======================================
  Hits          764      764
  Misses         35       35

Continue to review full report at Codecov.

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

@ablaom @tlienart This is ready to merge.

Thanks a lot!


support syncing into redis

Now redis-port only supports syncing redis data into reborndb/qdb using slotrestore, not supporting versa syncing.
Is is necessary to support it, so we can let all redis, qdb, reborndb or others sync mutually.
@ngaut  @qiuyesuifeng

Yes, later

Yeah, exciting


Less build does not add less check in tests

It automatically adds it into the the webpack configs, might want to add to tests by default. Blows up grunt test command.

+1


Bug | Document Submission screen pops up everytime a pending task is closed

https://github.com/user-attachments/assets/b75819a9-20ca-4e99-9c10-ff55c953e6cc

Hi @shambhavigoel1002  Please add the development tasks and estimated effort details to resolve this ticket

HI@Ramu-kandimalla
Seems like this issue is resolved below is reference video
https://beehyv0-my.sharepoint.com/personal/bhuvanyu_guru_beehyv_com/_layouts/15/stream.aspx?id=%2Fpersonal%2Fbhuvanyu_guru_beehyv_com%2FDocuments%2FMicrosoft Teams Chat Files%2Fpending _task-summons_9_sept.webm&referrer=Teams.TEAMS-WEB&referrerScenario=p2p_ns-bim&ga=1

Hi @rajeshcherukumalli  please check and confirm in UAT environment

Hi @devarajd94 , issue is fixed in UAT environement , please find the reference
https://jam.dev/c/52f5d44e-940b-4496-bdd6-56b47c262377


Use \Set with \over

Steps to Reproduce:

Navigate to demo
Enter $\Set{0\over0}$
See the result

Compare with LaTeX:

Please see texlive.net
\documentclass{article}
\usepackage{braket}
\begin{document}

$\Set{0\over0}$

\end{document}

Technical details:

MathJax Version: 3.2

Thanks for the report.  Clearly an error.  I will look into it.

I have made a pull request to resolve the issue.  As a work-around, you could do \Set{{0\over0}} for now.


Provide interfaces related to the abstract cryptographic operation being done

The current PrivKey is a Key that can also sign stuff, so it actually is a SigKey. You could also let MACs implement this interface.

Signatures (SigKey and VerifyKey)
Key Exchange (KXPrivKey.Exchange(KXPubKey)
Symmetric Secrets implementing SignKey and VerifyKey as well as EncryptKey and DecryptKey and AuthEncKey and AuthDecKey (as in golang.org/x/crypto/nacl/secretbox).
Asymmetric Authenticated Encryption, providing defaults by combining Key Exchange + symmetric AE (or just use golang.org/x/crypto/nacl/box).

I'll keep on thinking about this and drop some notes over the day.

Obvious:
type SigKey interface {
Key
Sign(data []byte) (sig []byte)
}

type VerifyKey interface {
Key
Verify(data, sig []byte) bool
}

type KXPrivKey interface {
  Key
  Exchange(KXPubKey) Key
}

type KXPubKey interface {
  Key
  Exchange(KXPrivKey) Key
}

We can now use the resulting Key as input for e.g. SecretboxKey and use it to create secretboxes:
func AsSecretboxKey(k Key) SecretboxKey
type SecretboxKey Key
func (sbk SecretboxKey) Seal(data, nonce []byte) (ciphertext []byte) {...}
func (sbk SecretboxKey) Open(ciphertext, nonce []byte) (data []byte) {...}

Which brings us to the interface for Authenticated Encryption:
type AuthEncSymKey interface {
   Seal(data, nonce []byte) []byte
   Open(ciphertext, nonce []byte) []byte
}

And the asymmetric version would be
type AuthEncPrivKey interface {
  Seal(k AuthEncPubKey, data, nonce []byte) (ciphertext []byte)
  Open(k AuthEncPubKey, ciphertext, nonce []byte) (data []byte)
}

Doing AE with RSA is pretty common nowadays too, so I think this is the right interface. We can should provide EncryptionKey and DecryptionKey interfaces
type EncryptionKey interface {
  Key
  Encrypt([]byte) []byte
}
type DecryptionKey interface {
  Key
  Decrypt([]byte) []byte
}

Then we could provide some default types for NaCl boxes, RSA and Ed25519.

PS: I'd do it.

Warning: doing encryption and signing using same RSA key leaks information and is potentially unsafe.

My primary concern is not the concrete implementations but the interfaces. I don't plan to make changes to the Rsa* types, except maybe changing some type such that it fits the new interfaces.
Looking at the code, currently we seem to allow using the same keys for encryption and signing. We might want to fix that too.

Looking at the interfaces I proposed again, this all feels weird. E.g. the key exchange is not performed by the keys, but it's two communicating entities using the Keys to negotiate a shared secret. The key doesn't sign the data, it's the algorithm using the key. I'll think about interfaces that reflect that.

How about
type Key interface {
  Type() KeyType // e.g. ed25519-pub, rsa-priv, secret
  Purpose() Purpose // eg. Signing, Encryption, Decryption, KeyDerivation, ...
  Bytes() []byte
}

// example
func Sign(k Key, data []byte) ([]byte, error) {
  var sig []byte

  if !k.Purpose() == Signing {
    return WrongPurposeError
  }

  switch k.Type() {
  case ed25519-priv:
    ...
    sig = ...
  case ...
  }

  return sig
}

This way it behaves a bit more like a net.Addr. What do you think about this?


Kogito 2532 - monitoring addon support multiple dmn built in types

Jira: https://issues.redhat.com/browse/KOGITO-2532
This PR adds the support of the remaining dmn built-in types in the prometheus-monitoring-addon.
In particular, the remaining 5 time-based built in types are supported. For all of them, a graph with the quantiles is generated in the grafana dashboards (with different scale and unit measurement):

date and time:

days and time duration:

years and months duration: total number of months (Period - toTotalMonths)

time:

date:

Many thanks for submitting your Pull Request :heart:!
Please make sure that your PR meets the following requirements:

[x] You have read the contributors guide
[x] Pull Request title is properly formatted: KOGITO-XYZ Subject
[ ] Pull Request title contains the target branch if not targeting master: [0.9.x] KOGITO-XYZ Subject
[x] Pull Request contains link to the JIRA issue
[x] Pull Request contains link to any dependent or related Pull Request
[x] Pull Request contains description of the issue
[x] Pull Request does not include fixes for issues other than the main ticket

Hi @danielezonca @jiripetrlik , I think this PR is ready for the first iteration of reviews

jenkins retest this please


Calling Quick Compile & Debug multiple times fails when launching SWF embedded in HTML

When using the Quick Compile & Debug feature I get errors on subsequent runs.
Steps to reproduce are below.

Open Code
Command+Shift+P select Quick Compile & Debug
Project Compiles and Browser Opens
Close the Browser window/tab
Command+Shift+P select Quick Compile & Debug
See the following error message

Close Code & Reopen
Command+Shift+P Choose Quick Compile & Debug
Project Compiles and Browser Opens
Loop back to step 4

This seems to happen every time I follow the above steps.  It appears that it is a problem with the Quick Compile & Debug since when I click the green arrow in the debug dialog a browser window opens every time.
I have the following set in my tasks and launch files.
tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "identifier": "build-debug",
            "type": "actionscript",
            "debug": false,
            "problemMatcher": [
                "$nextgenas_nomatch"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "swf",
            "request": "launch",
            "name": "Launch SWF",
            "program": "bin/manufacturer.html",
            "runtimeExecutable": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
        },
        {
            "type": "swf",
            "request": "attach",
            "name": "Attach SWF"
        }
    ]
}

Thanks! I'm guessing that the green arrow automatically terminates the existing debug session, and Quick Compile & Debug does not yet. Either that, or you need to press stop before VSCode even allows you to start a new session with the green arrow again, which would pretty much have the same effect.

I am not sure if that is the issue or not honestly.  I clicked Debug > Stop Debugging and it didn't say whether it stopped or not.  I then tried the green play button after hitting this issue and it as well showed the same error dialog.  Now when I restart Code it still refuses to debug.

Could it be that the browser is still open at your previous debugging session?

No I close the tab every time I go through those steps but the browser window is open so if Chrome retained anything that could be the cause..  I doubt it though.

I think I see what is happening, you are correct in the fact that your plugin is not stopping the debugging session, it is also not closing down java after the compile.  However our SWF takes several minutes to load everything and I am guessing that Code is waiting for that process.  I say this because after a few minutes when the flex component is loaded in the browser I can close the tab and compile again.

Yeah, that could be what's happening. You could give Firefox or Safari a try instead, to see if it works better. Just make sure that you have the debug version of the Flash Player plugin installed, of course, or VSCode won't be able to connect.
The NPAPI plugin architecture used by Firefox/Safari is different than the PPAPI plugins in Chrome, so any issues that might affect Chrome may not affect other browsers.
Alternatively, you could launch your SWF in the standalone Flash Player instead of a browser. It's probably faster too.

Good Idea I might have to look into launching it into the standalone flash player did not think about that.  Would it work the same way as the launcher for chrome except I specify the path to the player?

Pretty much, yeah. You might not even need to specify the path to Flash Player, if SWF files are already associated with it at the operating system level.

Relevant documentation:
https://github.com/BowlerHatLLC/vscode-nextgenas/wiki/Debug-a-SWF-in-the-standalone-Adobe-Flash-Player-with-Visual-Studio-Code

Actually this may not work, I need access to dev tools to see ajax requests that are being made to our API layer, I do not see the ability for that in flash player.

When running Quick Compile & Debug, I'm now forcing the debugger to stop before it compiles and starts a new session. This should give you the expected behavior. It's already improving my workflow with an AIR app that I don't always remember to close before hitting Ctrl+Enter.
This change will be included in the v0.14 update, which I plan to release within the next week.

Josh,
That is awesome to hear thank you very much it will make working with this plugin so much better!

On Sep 18, 2018, at 11:56 AM, Josh Tynjala<EMAIL_ADDRESS>wrote:
When running Quick Compile & Debug, I'm now forcing the debugger to stop before it compiles and starts a new session. This should give you the expected behavior. It's already improving my workflow with an AIR app that I don't always remember to close before hitting Ctrl+Enter.
This change will be included in the v0.14 update, which I plan to release within the next week.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/BowlerHatLLC/vscode-nextgenas/issues/277#issuecomment-422448597, or mute the thread https://github.com/notifications/unsubscribe-auth/AA1bTX0eKuOeQotMsiiQg3ZjKdtL4B3Cks5ucRfAgaJpZM4WsfSF.


Bypass check-in step when auto-approve is on

Acceptance Criteria:
When the reservations.auto_approve setting is set to true, bypass the tenant registration screen showing the reservation id and password, as well as the check-in step and provide the user with their wallet credentials right away.

Quickly handled with https://github.com/bcgov/traction/pull/606


Pass coverlet codebase in runsettings for inproc data collector initialization

Description
Initilization of inproc coverlet collector today needs passing the datacollector extensibility in TestPluginCache. This enables the InProcDataCollectionExtensionManager to be able to find the datacollector in all datacollector extension paths if inproc datacollector codebase path is not an absolute path.
We should directly add this path in runsettings ideally since vstest.console.exe is aware of all datacollector extension paths.
This will remove unnecessary coverlet specific changes from https://github.com/microsoft/vstest/blob/ca987de449d17284f8c9806df36f42276f13962a/src/Microsoft.TestPlatform.CrossPlatEngine/Client/ProxyExecutionManager.cs#L272 and
https://github.com/microsoft/vstest/blob/master/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DotnetTestHostManager.cs#L321
cc: @AbhitejJohn @MarcoRossignoli

I'm working on this, I'll let you know.

Thanks @MarcoRossignoli 👍


Replace unmaintained HTTP NTLM library with RubyNTLM

The HTTP NTLM library appears dead - almost 10y since an update. RubyNTLM is actually conflicting with the old gem in bundles which end up with both as dependencies when Mechanize is a dependency itself.

https://github.com/sparklemotion/mechanize/issues/436

Seems related: https://github.com/pyu10055/ntlm-http/pull/13

Wow, this is still open...
Pretty sure I've literally reverse engineered ssp3 signing since this was opened. If marking this as a security issue helps move it along, it is one since the lib in use is leveraging old and easy to intercept/reuse ntlm message formats.


No support for FoxPro's .DBF

When trying to read a FoxPro DBF file, I got: "Format dBASE III PLUS does not support field T"
This is not an issue, it just doesn't support it and I thought you might explicitely say so in documentation to avoid confusion.

Please send me example file.
I would be glad if you write the customization on your own and then send me pull request

Add new Field in src/fields
Register new field in Field::create and Field::getTypes. Do not forget to add Field::TYPE_ constant
Add FoxitPro DBase II format in src/formats. Do not forget to add new field as supported fields in the format. In Format::createHeader you can check if the field was actually FoxPro format - throw exception if not
Register new format in FormatFactory::initializeFormats. Add new registerFormat call similar to Format::DBASE3

If possible write unit tests for new code
During the time your PR is not yet merged you can use your own fork in your project

Add you fork as repository to your compose.json https://getcomposer.org/doc/05-repositories.md#vcs

Change package version to dev-master ("org.majkel/dbase": "dev-master")

https://github.com/luads/php-xbase
Use this one support much more types ! (date/timestamp/integer , ....)


Async options can't be selected inside bootstrap modal

https://github.com/josefarias/hotwire_combobox/discussions/84

See https://github.com/josefarias/hotwire_combobox/discussions/84#discussioncomment-8753409


Reconcile logs for deleted records

JIRA issue created by: rcook
Originally opened: 2012-05-02 12:36 PM
Issue body:
Trying to reconcile 6 deleted records between MST and Drupal.    MST reports these 6 holdings records as updated deleted, not new deleted records.  Peter says these records were never harvested, or seen by Drupal before.  See screen shots.
http://<IP_ADDRESS>/xc-1.3-test/?q=admin/xc/harvester/schedule/5/batch/6
http://<IP_ADDRESS>:8080/MetadataServicesToolkit/st/serviceLog.action
[~jbrand] and [~mwesley] and [~cdelis]
This issue has attachments associated with it (external link):
6deleted.png
6deleted2.png
6deleted3.png

JIRA Comment by user: rcook
JIRA Timestamp: 2012-05-02 12:50 PM
Comment body:
I think maybe not an issue.  This was 6 deleted holdings that were previously held.  So that is why they appear the way they do, I think.

JIRA Comment by user: pkiraly
JIRA Timestamp: 2012-05-02 12:51 PM
Comment body:
I'd like to make it more precise. In Drupal we actually delete records, do not just flag to be deleted. So I don't know actually whether these records were deleted previously, or never been harvested at all. Both are possible.

JIRA Comment by user: pkiraly
JIRA Timestamp: 2012-05-02 12:54 PM
Comment body:
Can you clarify what does "held" means? It is flagged for deleted in MST? Since the OAI-PMH protocol only sends an ID of the record (for deleted ones), we can not know more about this record if we doesn't have this record inside Drupal. I prefer not to harvest "ghost" records, or records which is known that were previously already deleted.

JIRA Comment by user: rcook
JIRA Timestamp: 2012-05-02 12:55 PM
Comment body:
Actually, thinking about this more.  If these are held holdings, then they have never been served up for harvesting.  If we later delete the record, going from held holding to deleted holding, should these get served up?

JIRA Comment by user: jbrand
JIRA Timestamp: 2012-05-02 01:18 PM
Comment body:
I think you have it right Randy - does that mst log fragment show all we know?  Or is there an additional counter showing breakout of type of record deleted record was before in the mst? (ideally, upd_del_prev_held_cnt?)

JIRA Comment by user: jbrand
JIRA Timestamp: 2012-05-02 01:21 PM
Comment body:
BTW, getting used to jira, my reply was directed at Randy's 1st comment, not his last comment.  Currently, we serve up deleted records (header only) and active records but not held records.  What we 'should' do may be changing, i.e. not serve up 'any' deleted record if 'from' is empty.

JIRA Comment by user: rcook
JIRA Timestamp: 2012-05-02 02:03 PM
Comment body:
John, yes, that is why I made my comment and have not put the screen shot in.
Also to clarify, this is a subsequent harvest, so the from param is not  empty, it would have a from and an until, but MST nonetheless, has served up a deleted record that had never been harvested.
[~David Lindahl] adding Dave as a notify.

JIRA Comment by user: jbrand
JIRA Timestamp: 2012-05-02 02:13 PM
Comment body:
re;  'so the from param is not empty, it would have a from and an until, MST nonetheless, has served up a deleted record that had never been harvested.'
Some comments, not solutions:

I can see how this record may never have been harvestable.   In which case we ideally should not serve it.  With our current design we don't know that though. We only save the last state of the record (prev_state) and the current state.
We don't know who has harvested from us.  I don't think we could track it if we wanted to given our design.

JIRA Comment by user: mwesley
JIRA Timestamp: 2012-07-30 04:55 AM
Comment body:
I think this issue is resolved. Drupal handles statistics in a slightly different way than the MST, because it does not keep deleted or held records. To do a calculation, you need to combine the following.
Drupal New = new_act_cnt + upd_act_prev_held_cnt + upd_act_prev_del_cnt
Drupal Updated = upd_act_prev_act_cnt
Drupal Deleted = upd_del_prev_act_cnt
Drupal Deleted Unknown = upd_del_prev_held_cnt + upd_del_prev_del_cnt
Drupal doesn't deal with "currently" held records at all, so the following counts in the MST logs cannot be used to compare with Drupal:
new_held_cnt
upd_held_cnt
upd_held_prev_held_cnt
upd_held_prev_del_cnt
upd_held_prev_act_cnt (although I have no idea how this change would be handled by Drupal, since there is no way Drupal would know that the record is being held)
The following counts cannot be used to compare the MST with Drupal because they sum other counts, some of which are not used by Drupal, and are therefore confusing:
new_del_cnt
upd_del_cnt
upd_act_cnt
This should help in calculating the difference between MST logs and Drupal logs and checking for problems during harvesting.

As for the reconciliation, I'm moving everything to a single issue: Harvested records match MST at #DRUPAL-98 – from months of testing, I've concluded that the problem is with the harvested deletes of manifestation records not being deleted in Drupal after the harvest – although they are clearly marked for deletion. A fix is in the works.

Issue resolved: 2012-07-30 04:55 AM


Key not found in database

I've got a couples of errors wichi i can't fix:

The "const ipfs = new IPFS (ipfsOptions) thorw me MaxListenersExceededWarning: Possible EventEmitter memory leak detecte.
After runing the code below, I try from the terminal to get info about the db with the "orbitdb info address" command but i recive: Error: Key not found in database [...]

Any tip or solution?
Thanks!
const IPFS = require('ipfs')
const OrbitDB = require('orbit-db')
const ipfsOptions = {
EXPERIMENTAL: {
pubsub: true
}
}
const ipfs = new IPFS(ipfsOptions)
ipfs.on('error', (e) => console.error(e))
ipfs.on('ready', async () => {
const orbitdb = new OrbitDB(ipfs)
const db = await orbitdb.feed('database')
await db.load()
console.log(db1.address.toString())
const hash= await db.add('name')
const value = db.get(hash)
console.log(value)

Thanks for opening the issue!
We just released the 0.20.0-rc1 (as yet formally unannounced).
Please try `npm install orbit-db@rc1 --save

Your code looks correct @foll27! Are you able to successfully run it with the latest version of OrbitDB? You no longer need to add the EXPERIMENTAL flag if you are using ipfs v0.38.0 or later

This could be an underlying IPFS issue. Try running with latest version of OrbitDB. If the problem persists, please feel free to reopen.


table.put ignores changed date values

Hi,
when using table.put to update an existing object, date properties are ignored, if their value is changed (old + new have a value).
I.e. person with a birthdate and you would like to change the value from one value to another.
As far as I can see the reason for this is "getObjectDiff" doesn't handle dates correctly.

I tried to repro this, see https://github.com/dfahlander/Dexie.js/commit/fdf9193cbcb13d854655e967f35eaa1029b557b5 but the test pass. Could you try to do a repro of this similar to mine. Even better if you could clone my branch for this issue (issue-841-table-put-ignores-dates) and do a PR that updates the unit test to trigger the issue?

What version of Dexie are you using?

I'm using 2.0.4, but the problem exists also in the current alpha of version 3.
When creating the test I saw, that the cause is a bit more complicated than I wrote (sorry for that). The put works as excepted, the problem is the hook("updating"). The "modifications" parameter misses all date value changes.
Please see committed PR.
off-topic: would you already recommend using the current alpha for production?

Thanks for the explanation and the PR! Yes, I would recommend current alpha for production, actually. The issue is mainly only backward compability for typescript users.


pyarrow csv does not work with a cedilla delimiter

Describe the bug, including details regarding any error messages, version, and platform.
we are trying to parse a CSV file that has a cedilla \x03 delimiter. When passing this to pyarrow.csv.read_csv, the parse complains that the delimiter \x03 is not a valid ascii. Is there a way around this issue ?
ile ~/miniconda3/envs/sandbox/lib/python3.11/site-packages/pyarrow/_csv.pyx:422, in pyarrow._csv.ParseOptions.init()
File ~/miniconda3/envs/sandbox/lib/python3.11/site-packages/pyarrow/_csv.pyx:445, in pyarrow._csv.ParseOptions.delimiter.set()
File ~/miniconda3/envs/sandbox/lib/python3.11/site-packages/pyarrow/_csv.pyx:46, in pyarrow._csv._single_char()
ValueError: Expecting an ASCII character
i  get the above error if i use the character as delim "Ç"
but if i use \x03 , the data is read, but it is not parsed into columns.
i also tried "Ç".encode(ascii) and i get an error that the ascii code \xc7 is not valid. I tried chr(199). Nothing worked. Could anybody guide me in the right direction here. Dont want to use pandas
Component(s)
Python

I think the issue here is that letter C with cedilla is not included in the main ASCII Table and I am not sure how to work around it.
I am not sure pandas will work here either.

@AlenkaF It works with pandas if we use the unicode value \x03 for the cedilla as our seperator.

There is currently no way around this: arrow only supports single ASCII characters as separator at the moment.
Related issues: https://github.com/apache/arrow/issues/32432, https://github.com/apache/arrow/issues/26411
Going to close this as duplicate of those other issues.


[top_darjeeling] ROM patching discussion

[ ] Add examples to why the 2nd partition ROM is useful. For example, it is useful to separate soc specific power management / boot medium data path from the baseline ROM; it is useful to allow different flash layout interpretation based on integration
[ ] If a patch revision is no longer desired for some reason (vulnerable / broken), we need some agreed upon mechanism to invalidate this patch.
[ ] If there are multiple patches, we need some agreed upon mechanism on whether a failure of the highest revision patch means we should fail over to a lower revision, or that should not be possible at all.
[ ] Discuss how the patched ROM's contents should be handled as part of cryptographic identity. Key manager today already supports the idea of "sealing" and "attestation" identities, we may need to extend further upon this idea.
[ ] If the patch re-direct mechanism creates timing issues, we need to consider how we may split the paths such that patching latency does not impact the rest of the system.

@neeraj-rv


Add attribution for Font Awesome v5 icons

As per https://fontawesome.com/license/free:

Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font Awesome Free files already contain embedded comments with sufficient attribution, so you shouldn't need to do anything additional when using these files normally.

It looks like these comments are only present in the .svg files in the full Font Awesome package and not when downloading them individually from the Font Awesome site, which probably explains why we're missing them.
For Font Awesome v3 and v4, attribution was not required "but much appreciated" - which is just as well, because icomoon didn't preserve metadata about where they came from, and it doesn't seem to be the case that they all came from Font Awesome (e.g. the lock icon doesn't seem to match anything in any version of FA). With that in mind, I've gone through all icons added after 30 Jan 2018 (the first public release of FA5) and added the attribution where I've found a definite match in Font Awesome 5.
The ones where I didn't find a match are:
superscript, subscript, strikethrough - similar but not identical to ones that existed in Font Awesome 3
draft, resubmit - look like edited versions of existing icons from pre v5

Looks good to me, thanks!


[PUI] Part Stocktake Panel

Follow up to https://github.com/inventree/InvenTree/pull/6985
Now that we have a good basis for drawing charts, the "stocktake" part panel can be implemented in PUI.
Additionally, the "admin center" interface for stocktake data should be implemented too.

Tagging for 0.17.x


Use system independent path separator, handle path quoting, fixes #1

Thx @BrightSoul for your pr!


added cli tests for all commands

tests check if process run for each command finishes with exit code 0

For issue #36 Tests for CLI


⚠ Panoramas has degraded performance

In 0f1505b, Panoramas ($SITE_URL_PANORAMAS) experienced degraded performance:

HTTP code: 200
Response time: 8969 ms

Resolved: Panoramas performance has improved in 5d82a12 after 8 minutes.


Aria Attributes should be usable from SVG too, not just HTML

See also: https://github.com/raquo/scala-dom-types/issues/71

Note: include the role Aria attribute – which is not under the aria namespace.

This is actually out of scope now since SDT does not provide concrete types for attributes anymore.


Cache issue with updated maps

Hello,
When a map has been opened via the TMX menu ingame, then if the map file is updated on TMX, it's impossible to open the new version ingame. It seems that the map is cached locally, and is never updated.
Steps to reproduce:

Create a new map and upload it on TMX.
Search the map via the TMX menu ingame, and click on Play map.
Go back to the editor, modify the map, then upload the new version on TMX (in the same TMX entry).
Search the map again via the TMX menu, and click on Play map.
The old version of the map is loaded instead of the new one.

The only way I found to get the latest version of the map is to manually delete the game cache files, which is very inconvenient as it requires to restart the game.

tbf this isn't a bug in the plugin since it's the game cache's fault. I need to find a way to delete the map file from the game cache then the game can download the newest version of the map

Found out that I also need to do some modifications on a cache file (checksum.txt) that lists all user and shared data (like local maps, downloaded skins, map mods etc...) with their checksums.
Since that file is in XML format and Openplanet can't do XML serialization at the moment, we might need to wait a bit.
I already opened a issue on Openplanet more than 2 years ago about this https://github.com/openplanet-nl/issues/issues/110

Hey thanks for your feedback.
However, I finally took the time to dig in the code, and I wonder if we can solve the problem with a very simple trick. I can't access the code of Openplanet, but I assume (from experience) that the function ManiaTitleControlScriptAPI.PlayMap do use the URL of the map as cache key. So, we just need to modify the URL.
The trick is to add a URL parameter which is meaningless for TMX, but will change the URL from Openplanet's point of view. For example:
app.ManiaTitleControlScriptAPI.PlayMap("https://"+MXURL+"/maps/download/"+mapId+"?t="+mapUpdatedAt, Mode, "");

I haven't tested it, so maybe my guess about the cache key is wrong. But if you can give it a try, let me know if it works :)

Ah! I did some tests with your other plugin Load Map with URL, and it works like a charm. Here is the content of checksum.txt, we can see there are two cache entries for the same map, because the URL is different:


Feat: cw dex bindings

The aim of the PR is to implement binding cosmwasm interface for dex module messages and queries.
I've implemented binding adapters https://github.com/neutron-org/neutron/blob/feat/cw-dex-bindings/x/dex/types/wasm.go. The purpose of the adapters to update original dex types: expiration_time changed from Timetamp to u64 unixtime, some field names converted to snake_case.
related PRs:
https://github.com/neutron-org/neutron-sdk/pull/120
https://github.com/neutron-org/neutron-dev-contracts/pull/34
https://github.com/neutron-org/neutron-integration-tests/pull/240
https://github.com/neutron-org/neutronjsplus/pull/24

guys please update the PR's description with some explanation and links to related PRs

I can't approve the PR since explicitly, since i opened it, but it's approved


Privacy policy

See https://twitter.com/alisaesage/status/430938106376626177

A privacy policy page exists at http://www.tomato.es/pages/privacy.


Add descriptive text and links to UBKG download

For both logged in and logged out views: Add text explaining why we require a UMLS key for download and link to the page describing UMLS API Licensing: https://www.nlm.nih.gov/databases/umls.html.  The licensing issue arises because we include the UMLS inside of the UBKG database, which needs to be licensed.
For the logged out view- Add "To obtain a UMLS API License Key see: <umls api license page>"

License requirements
The Unified Biomedical Knowledge Graph (UBKG) includes content from biomedical vocabularies that are maintained by the National Library of Medicine. The use of content from the UMLS is governed by the UMLS License Agreement.
Use of the UMLS content in the UBKG requires two licenses:

The University of Pittsburgh distributes content originating from the UMLS by means of a distributor license.
Consumers of the UBKG have access to UMLS content through the license that is part of their UMLS Technology Services (UTS) accounts.

This site combines the API key from the University of Pittsburgh with the API key from a user to authenticate a user's request to download the UBKG. The user must provide the API for their UTS account to the UBKG Download site.
To obtain a UTS API key

Create a UTS user profile
Generate an API key.


Panic when serving response

Hi,
I'm facing an issue again. I tested the setup with Firefox to see if the repsonder works properly with browser requests as well. Unfortunately it does not. Requests comming from Firefox result in:
http: panic serving <IP_ADDRESS>:1234: runtime error: invalid memory address or nil pointer dereference
Here is a trace from the log file:
2017/03/03 14:03:02 Got POST request from <IP_ADDRESS>:1234
2017/03/03 14:03:02 Looking for serial ...
2017/03/03 14:03:02 Found entry &{...}
2017/03/03 14:03:02 This certificate is valid
2017/03/03 14:03:02 http: panic serving <IP_ADDRESS>:1234: runtime error: invalid memory address or nil pointer dereference
goroutine XX [running]:
net/http.(*conn).serve.func1(...)
        /path/to/go/src/net/http/server.go:1721 ...
panic(...)
        /path/to/go/src/runtime/panic.go:489 ...
gocsp-responder/responder.(*OCSPResponder).verify(...)
        /path/to/gocsp-responder/responder/responder.go:307 ...
gocsp-responder/responder.(*OCSPResponder).makeHandler.func1(...)
        /path/to/gocsp-responder/responder/responder.go:100 ...
net/http.HandlerFunc.ServeHTTP(...)
        /path/to/go/src/net/http/server.go:1942 ...
net/http.(*ServeMux).ServeHTTP(...)
        /path/to/go/src/net/http/server.go:2238 ...
net/http.serverHandler.ServeHTTP(...)
        /path/to/go/src/net/http/server.go:2568 ...
net/http.(*conn).serve(...)
        /path/to/go/src/net/http/server.go:1825 ...
created by net/http.(*Server).Serve
        /path/to/go/src/net/http/server.go:2668 ...

The same happens with GET requests comming from Microsoft CryptoAPI.
Please let me know if you need any further information.
Thanks!

Looks like when I added nonce list checking I put the null check too low. It should be ok now.

Working now on my end :)
Let me know if that fixes the issue for you.
That was the last thing I added to the code. It worked with openssl ocsp because it includes the nonce. Most browsers do not.

Working for me as well 👍
Everything looking good so far. Even GET requests by the MS CryptoAPI appear to be working fine now.
Thanks for the quick bugfix!


URL field disappears after code generation

There is no obvious way to convert more samples after one conversion because the URL field disappears until the user clicks 'code' or 'upload' and then back to 'url'.

Moving to the docs repo as this sounds like it's an issue in the website, not in the tf2pulumi tool/library itself.


Revert "Add Linux/arm32 (e.g. raspberry pi) back into openjdk10 pipel…

This is hopelessly slow so removing it to avoid clogging up pipelines which is holding up getting an AO10 build released. Will reinstate once I get a JITted bootstrap VM in place

Unless anyone reviews in the next 5 minutes before the checks complete I'm going to push this straight through as it's a low risk change


Visualize primitives nested under list of EmbeddedDocuments

What changes are proposed in this pull request?

Primitives under a list of dynamic documents were not rendering because we are filtering everything out.
[x] Fix is to be more selective when filtering in getFieldAndValue() and allow primitives to go through
[x] unit test getFieldAndValue -> new logic

How is this patch tested? If it is not, please explain why.
(Details)
Release Notes
Is this a user-facing change that should be mentioned in the release notes?

[ ] No. You can skip the rest of this section.
[ ] Yes. Give a description of this change to be included in the release
notes for FiftyOne users.

(Details in 1-2 sentences. You can just refer to another PR with a description
if this PR is part of a larger change.)
What areas of FiftyOne does this PR affect?

[ ] App: FiftyOne application changes
[ ] Build: Build and test infrastructure changes
[ ] Core: Core fiftyone Python library changes
[ ] Documentation: FiftyOne documentation changes
[ ] Other

I tried this branch, I'm still not able to visualize a nested list of primitives in the grid:
import fiftyone.zoo as foz
import fiftyone as fo
import fiftyone.core.odm as foo

dataset = foz.load_zoo_dataset("quickstart", max_samples=1).clone()

dataset.add_sample_field(
    "test",
    fo.ListField,
    subfield=fo.EmbeddedDocumentField,
    embedded_doc_type=fo.DynamicEmbeddedDocument,
)

sample = dataset.first()
sample['test'] = [
    foo.DynamicEmbeddedDocument(
        int_field=1,
        int_list_field=[1],
        float_field=0.1,
        float_list_field=[0.1],
        str_field="test",
        str_list_field=["test"],
    )
]
sample["float_field"] = [0.1,0.2]
sample.save()
dataset.add_dynamic_sample_fields()

session = fo.launch_app(dataset)

The float_field is visualizable in the grid in the app, but not the test.float_list_field

Is this expected?

float_field

good point! it is expected. We have basically done 50% of the work. the float_field wasn't visualizable before since it is nested under. a list -> embedded document.
I'll try to add the list of primitives within list of embedded in a separate PR. How does that sound @ehofesmann ?

Oh sweet! Thanks @manivoxel51 it's working for me :rocket:


crashes on luanch

heres the crash report
please fix it i NEED this mod
Uncaught exception in thread "main"
java.lang.RuntimeException: Error creating Mixin config blocksmined.client.mixins.json for mod blocksmined
at net.fabricmc.loader.impl.launch.FabricMixinBootstrap.init(FabricMixinBootstrap.java:96)
at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:151)
at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:68)
at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
Caused by: org.spongepowered.asm.launch.MixinInitialisationError: Error initialising mixin config blocksmined.client.mixins.json
at org.spongepowered.asm.mixin.transformer.Config.create(Config.java:168)
at org.spongepowered.asm.mixin.Mixins.createConfiguration(Mixins.java:121)
at org.spongepowered.asm.mixin.Mixins.addConfiguration(Mixins.java:108)
at org.spongepowered.asm.mixin.Mixins.addConfiguration(Mixins.java:98)
at net.fabricmc.loader.impl.launch.FabricMixinBootstrap.init(FabricMixinBootstrap.java:94)
... 3 more
Caused by: java.lang.IllegalArgumentException: The specified resource 'blocksmined.client.mixins.json' was invalid or could not be read
at org.spongepowered.asm.mixin.transformer.MixinConfig.create(MixinConfig.java:1395)
at org.spongepowered.asm.mixin.transformer.Config.create(Config.java:163)
... 7 more

I'll try to see what I can do about it when I get back home, so it may take
a while (a couple of days)

kay thanks

i tried to fix it with the source code... but i dont know java

Sorry for making you wait, this should be fixed now. I uploaded a new 1.1.0 version to Modrinth.


Missing examples

The following example illustrates an XML element that has the ExtendedFormat set to false: The following example illustrates the same XML with the ExtendedFormat set to true:
There are no examples.

Hello, can you please add information about the topic that this issue is filed for - that seems to have disappeared. Thanks.

Closing this issue.


bug with mpd player: playernext works from web app but not with RFID chip

Hi @zxa
I need some help here. Testing the mpd version, I am running into a strange problem. Using the web app, I can skip forward and backward in the playlist, no problem. When trying the same with the RFID chip, skipping to the next track plays approx. half a second of the next track, then the playout stops.
To narrow down the problem, I tried to trigger the process from the command line.   This is when it's getting weird. The resulting behaviour:

sleep 3: before the skip, there is an expected 3 second delay

mpc next: throws the same information as if I call ./playout_controls.sh -c=playernext which is desired behaviour

sleep 3: another three seconds pass and then...

... the additional line comes up and the playout stops.

Can you reproduce this error?

Ah, found it. Towards the end of rfid_trigger_play.sh come the commands

    # Save position (to catch playing and paused audio) for resume and clear the playlist -> audio off
    # Is has to be sudo as daemon_rfid_reader.py doesn't call this script with sudo
    # and this produces an error while saving lastplayed.dat

    sudo $PATHDATA/playout_controls.sh -c=playlistclear

    # Before we create a new playlist, we remove the old one from the folder.
    # It's a workaround for resume playing as mpd doesn't know how its current playlist is named,
    # so we only want the current playlist in the "mpc lsplaylists" output.

    mpc lsplaylists | \
    while read i
    do
        mpc rm "$i"
    done

they need to be inside the if [ "$FOLDERNAME" ]; then check. Fixed it.

Yes, i've never used a special card. The code could be even in the next "if" block starting with
if [ -d "$PATHDATA/../shared/audiofolders/$FOLDERNAME" ]
I feared it's something weird, like the playlist sorting (aka battle of the birds):
Web app puts "Alle meine Entchen" at the first position in the playlist, if i trigger the same folder with RFID-card, number one goes to "Alle Vöglein sind schon da".


Unused import messages for ImportFrom statements are wonky

Example:
resources/test/fixtures/F401.py:29:5: F401 `from models import Fruit, Nut, Vegetable.Vegetable, from models import Fruit, Nut, Vegetable.Nut, from models import Fruit, Nut, Vegetable.Fruit` imported but unused

Wait, nevermind, this was a bug on my tree-sitter branch :)

I did improve this a bit in #346 though.


SQL: Remove @Schema and @Table annotations

@Schema and @Table annotations are about to be removed from Querydsl SQL. The reasons are

having them as constructor parameters in RelationalPath implementations puts them in the right place and makes dynamic RelationalPath usage easier
as @Column annotations in Bean types are now also optional, Bean types become now annotationless (clean)
it separates metadata in RelationalPath cleanly from the Bean projection types

I never really used them... :)

Will this be in 2.2.6?

Released in 2.3.0


feat: Create initial UNet++ model

Features

UNet++ Model: Implemented the UNetPlusPlus model as outlined in the UNet++ paper and the original Unet paper, including custom methods like _conv_block and _upconv for cleaner architecture.
TODOs for Future Enhancements: Added various TODOs as placeholders for discussions on improving and extending the model.

Chores

Environment Setup: Added environment.yml for setting up the development environment using conda env create -f environment.yml.

You can check this if the architecture isn't clear after reading the papers above.


support for rowspan | question

Is there any support for rowspan?
Thank you

Both those links are broken, is there a working demo of this available please?

Those examples are gone because codesandbox has a limit on how many free sandboxes can exist.
I also don't have any time available to recreate them.

Ah ok, no worries! I've found a way round it :)

@seeden @lmannering Pls help me with this issue


prior_box size is not ok

In my view, the vision of  SSD512 is not the ok, becase thare are some errors in size between prior_box and loc, conf. Maybe you miss the layers in multibox ?

Old iron， attention：
extras = {
'300': [256, 'S', 512, 128, 'S', 256, 128, 256, 128, 256],
'512': [256, 'S', 512, 128, 'S', 256, 128, 'S', 256, 128, 'S', 256, 128, 'S', 256],
}


New version: M2Team.NanaZip version 3.0.1000.0

Checklist for Pull Requests

[X] Have you signed the Contributor License Agreement?
[ ] Is there a linked Issue?

Manifests

[X] Have you checked that there aren't other open pull requests for the same manifest update/change?

[X] Does your manifest conform to the 1.6 schema?

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

Microsoft Reviewers: Open in CodeFlow

@wingetbot run

/azp run

It installs fine for me:
2024-07-07 23:49:56.114 [CORE] WinGet, version [1.9.1792-preview], activity [{0C23F350-6213-4464-B28A-4F902F16E3DB}]
2024-07-07 23:49:56.115 [CORE] OS: Windows.Desktop v10.0.22635.3858
2024-07-07 23:49:56.115 [CORE] Command line Args: "C:\Users\Anthony\AppData\Local\Microsoft\WindowsApps\winget.exe" install --manifest E:\winget-pkgs\manifests\m\M2Team\NanaZip\3.0.1000.0\
2024-07-07 23:49:56.115 [CORE] Package: Microsoft.DesktopAppInstaller v1.24.1792.0
2024-07-07 23:49:56.115 [CORE] IsCOMCall:0; Caller: winget-cli
2024-07-07 23:49:56.125 [CLI ] WinGet invoked with arguments: 'install' '--manifest' 'E:\winget-pkgs\manifests\m\M2Team\NanaZip\3.0.1000.0\'
2024-07-07 23:49:56.125 [CLI ] Found subcommand: install
2024-07-07 23:49:56.125 [CLI ] Leaf command to execute: root:install
2024-07-07 23:49:56.129 [CLI ] Executing command: install
2024-07-07 23:49:56.131 [CLI ] Manifest fields: Name [NanaZip], Version [3.0.1000.0]
2024-07-07 23:49:56.166 [CORE] Default proxy is not set
2024-07-07 23:49:56.894 [CLI ] Installer hash verified
2024-07-07 23:49:57.194 [CORE] Starting StagePackageAsync operation #0: https://github.com/M2Team/NanaZip/releases/download/3.0.1000.0/NanaZip_3.0.1000.0.msixbundle Options:  { SkipReputationCheck = 0, ExpectedDigests = { { URI = https://github.com/M2Team/NanaZip/releases/download/3.0.1000.0/NanaZip_3.0.1000.0.msixbundle, Digest = AzVK3PpRyXmjygXKVcr08Tdv5ZwNXdb+ie0DNy28Nug= } } }
2024-07-07 23:49:57.250 [CORE] Begin waiting for operation #0
2024-07-07 23:49:57.250 [CORE] Begin blocking for operation #0
2024-07-07 23:50:15.915 [CORE] Successfully completed #0
2024-07-07 23:50:15.915 [CORE] Starting RegisterPackageByFullNameAsync operation #1: 40174MouriNaruto.NanaZip_3.0.1000.0_neutral_~_gnj4mf6z9tkrc
2024-07-07 23:50:15.926 [CORE] Begin waiting for operation #1
2024-07-07 23:50:15.926 [CORE] Begin blocking for operation #1
2024-07-07 23:50:16.486 [CORE] Successfully completed #1
2024-07-07 23:50:16.495 [CLI ] Leaf command succeeded: root:install

Automatic Validation ended with:

Installation failed with exit code -2147009295
2024-07-09 03:40:28.261 [FAIL] D:\a_work\1\s\external\pkg\src\AppInstallerCommonCore\Deployment.cpp(161)\WindowsPackageManager.dll!5609E94A: (caller: 560097A7) Exception(1) tid(808) 80073CF1 Package was not found.
2024-07-09 03:40:28.354 [FAIL] D:\a_work\1\s\external\pkg\src\AppInstallerCommonCore\Deployment.cpp(54)\WindowsPackageManager.dll!5609D7AF: (caller: 5609ED72) Exception(2) tid(808) 80073CF1 Package was not found.
2024-07-09 03:40:28.354 [FAIL] D:\a_work\1\s\external\pkg\src\AppInstallerCommonCore\Deployment.cpp(126)\WindowsPackageManager.dll!5609EA29: (caller: 5609FBF8) LogHr(1) tid(808) 80073CF1 Package was not found.
Msg:[D:\a_work\1\s\external\pkg\src\AppInstallerCommonCore\Deployment.cpp(54)\WindowsPackageManager.dll!5609D7AF: (caller: 5609ED72) Exception(2) tid(808) 80073CF1 Package was not found.
2024-07-09 03:40:28.363 [CLI ] MSIX installer failed:<PHONE_NUMBER>

(Automated response - build 886.)

I also found this, which might be relevant:

2024-07-09 03:40:28.260 [CORE] Deployment operation #0: Unable to install bundle https://github.com/M2Team/NanaZip/releases/download/3.0.1000.0/NanaZip_3.0.1000.0.msixbundle because it does not have an appropriate application package for x86 architecture.

Yes, thank you for that info. That was the issue. I found this to confirm:

The 32-bit x86 support for NanaZip packaged version is removed because supported 32-bit x86 Windows versions don't support running on 32-bit only x86 processors.

From NanaZip 3.0 (3.0.996.0) Release Notes

https://github.com/microsoft/winget-pkgs/issues/142854

https://github.com/microsoft/winget-pkgs/issues/142854


Incorrect hyperlink for az network vnet-gateway create on create-routebased-vpn-gateway-cli.md

Line 73 on the document is the following:

Create the VPN gateway using the az network vnet-gateway create command.

I would expect to be linked to a section like this instead.

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

ID: 4b0f53cd-ceeb-d044-4fbe-745f4b3f8340
Version Independent ID: 59ed4585-89c5-04f9-a45c-7673d8ffaf85
Content: Create a route-based Azure VPN Gateway: CLI
Content Source: articles/vpn-gateway/create-routebased-vpn-gateway-cli.md
Service: vpn-gateway
GitHub Login: @cherylmc
Microsoft Alias: cherylmc

@brcarpio Thanks for your feedback. We will review the issue and get back to you shortly.

@brcarpio, Appreciate your patience. The doc has been edited accordingly and it would take some time for the changes to get reflect over the doc.
We are closing this issue for now. If there are further questions regarding this matter, please reply and we will gladly continue the discussion.


[React] asEffect and asLayoutEffect are not re-exported

Description
According to @xstate/react docs, it should be possible to import asEffect and asLayoutEffect functions. However, they are not available for import.
import { asEffect, asLayoutEffect } from '@xstate/react'

Expected Result
typeof asEffect === 'function' // true
typeof asLayoutEffect === 'function' // true

Actual Result
typeof asEffect === 'undefined' // true
typeof asLayoutEffect === 'undefined' // true

Reproduction
https://codesandbox.io/s/aged-worker-yjb6i?file=/src/index.js
Additional context
Versions:
<EMAIL_ADDRESS><EMAIL_ADDRESS>

When is this fix going to be released?

When is this fix going to be released?

Soon!


[WFLY-9942] Remove hornetq-journal and hornetq-native dependencies

hornetq-core-client has a compile dependency to hornetq-journal to
access String constants in JournalConstants.
hornetq-native dependency is a dependency from hornet-journal.
Since the constants from JournalConstants are inlined at compile time in
hornetq-core-client, we can remove these dependencies as the
hornetq-journal jar is not required to run code using the
hornetq-core-client.
JIRA: https://issues.jboss.org/browse/WFLY-9942

note that these hornetq-native and hornetq-journal are not referenced by any module.xml so this PR has no impact on our runtime.


Spread / Flatten Types

Search Terms

spread types
flatten types

Suggestion
Allow known nested object types to be spread & merged.
If you have a type that meets the condition (or something similar) T extends { [P in keyof T]: object } I want to be able to flatten it like so ...T which merges all sub-object types into one type.
Use Cases
What do you want to use this for?
To create better types for popular libraries (namely Vuex at the moment). This would also help make typesafe many utility functions which perform this same function of flattening objects.
What shortcomings exist with current approaches?
I don't think it's possible at the moment.
Examples
// simple
type SimpleFlatten<T> = T extends { [P in keyof T]: object } ? ...T : never;
interface SimpleFlattenTest {
  a: { b: string, c: number },
  meow: { b: number, d: boolean }
}
SimpleFlatten<SimpleFlattenTest>; // { b: string | number, c: number, d: boolean }
SimpleFlatten<{}>; // {}
SimpleFlatten<boolean>; // never
SimpleFlatten<{a:string}>; // never

// advanced, might not be possible (ideally it would be...)
type NestedFlatten<T> = T extends { [P in keyof T]: object }
  ? ...{ [A in keyof T]: NestedFlatten<T[A]> }
  : T;

interface NestedFlattenTest {
  a: { b: string, c: number },
  meow: { b: number, d: boolean },
  nested: {
    ignored: { d: string },
    taco: { c: string }
  }
}

NestedFlatten<NestedFlattenTest>; // { b: string | number, c: number | string, d: boolean | string }
NestedFlatten<{}>; // {}
NestedFlatten<boolean>; // boolean
NestedFlatten<{a:string}>; // {a: string}

Checklist
My suggestion meets these guidelines:

[x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
[x] This feature would agree with the rest of TypeScript's Design Goals.

This isn't precisely what you're asking for, but it's as close as I could come:
type ObjKeyof<T> = T extends object ? keyof T : never
type KeyofKeyof<T> = ObjKeyof<T> | { [K in keyof T]: ObjKeyof<T[K]> }[keyof T]
type StripNever<T> = Pick<T, { [K in keyof T]: [T[K]] extends [never] ? never : K }[keyof T]>;
type Lookup<T, K> = T extends any ? K extends keyof T ? T[K] : never : never
type SimpleFlatten<T> = T extends object ? StripNever<{ [K in KeyofKeyof<T>]:
  Exclude<K extends keyof T ? T[K] : never, object> |
  { [P in keyof T]: Lookup<T[P], K> }[keyof T]
}> : T
type NestedFlatten<T> = SimpleFlatten<SimpleFlatten<
  SimpleFlatten<SimpleFlatten<SimpleFlatten<T>>>>>;

interface SimpleFlattenTest {
  a: { b: string, c: number },
  meow: { b: number, d: boolean }
}

type S1 = SimpleFlatten<SimpleFlattenTest>; // { b: string | number, c: number, d: boolean }
type S2 = SimpleFlatten<{}>; // {}

// differs here:
type S3 = SimpleFlatten<boolean>; // boolean, not never
// differs here:
type S4 = SimpleFlatten<{ a: string }>; // {a: string}, not never

interface NestedFlattenTest {
  a: { b: string, c: number },
  meow: { b: number, d: boolean },
  nested: {
    ignored: { d: string },
    taco: { c: string }
  }
}

type N1 = NestedFlatten<NestedFlattenTest>; // {
// b: string | number, c: number | string, d: boolean | string }
type N2 = NestedFlatten<{}>; // {}
type N3 = NestedFlatten<boolean>; // boolean
type N4 = NestedFlatten<{ a: string }>; // {a: string}

There are big caveats:

The possible edge cases boggle my mind, so who knows what will happen if you poke at this with recursive/optional/other properties or types.
The "nested" case is not truly nested but only goes down five or so levels.  Recursive/circular types where the recursion is not hidden by property accesses are not supported.  There have been tricks that fool the compiler into trying to evaluate them (mostly by pretending that the type is one of these supported tree-like types and then indexing into them) but they scare me and are not recommended.
Even the five or so levels of this stuff involves a lot of compiler processing.  It's a bunch of work to drill down into two layers of objects and pull everything from level 2 up into level 1 in the appropriate way.  And the extra work to keep applying is probably exponential in the depth of the tree (at least the way I've got it implemented above), so I'd stay away from it even though it's a finite depth.

Proceed with caution, I guess.

That solves my particular problem... I'll be careful and hope my users share the same precautions.
Just when you think you understand how to Typescript...

@jcalz I've ran into another problem, and your solution above doesn't really address. Maybe I'm missing something? If I'm not, maybe there is some utility in this feature suggestion.
I have the following type:
type Funcs = {
  a: () => void;
  v: (text: string) => number;
}

And if I flatten/spread it, I would expect the following:
type FlattenOutput = {
  () => void;
  (text: string) => number;
};

Any pointers would be greatly appreciated, I understand about 80% of your types above... so if this sort of flattening is possible like above I'm failing at figuring it out.

Essentially the spread/flatten operator would take an object and for each property apply & to each one.

That is a different operation from what you were describing before, but here:
type IntersectProperties<T> = T extends object
  ? { [K in keyof T]: (arg: T[K]) => void } extends Record<
      keyof T,
      (arg: infer A) => void
    >
    ? A
    : never
  : T;

type Funcs = {
  a: () => void;
  v: (text: string) => number;
};
type IPFuncs = IntersectProperties<Funcs>;
// type IPFuncs = (() => void) & ((text: string) => number) 👍

type Foo = { a: string; b: number };
type Bar = IntersectProperties<Foo>;
// type Bar = string & number 😕

Note how that does bizarre things to non-function properties, so you'd have to combine this with the other type functions somehow.

I am deeply skeptical that you could actually implement a function that turns a general object with function-valued properties into a single overloaded function, though.   How do you select which function to call at runtime?
declare function magic<F extends Record<keyof F, Function>>(
  funcs: F
): IntersectProperties<F>;
// how do you implement this

interface Funky {
  a: (a: string) => number;
  b: (b: number) => string;
}
const funky: Funky = {
  a: s => s.length,
  b: n => n + "!"
};

const hmm = magic(funky);
hmm(1); // "1!"
hmm("a"); // 1

You'd probably have to pass argument type guard functions along with your function object in order for that to work.  So, uh, yeah.
Anyway, I don't think this discussion is best had here, since you'd first want to demonstrate that the feature you want is not implementable without a change to the language (and that your use case is compelling enough that it's worth doing).   Questions about how to implement particular type functions probably belong on Stack Overflow.

Thanks.
Your code above led me to type Intersect<T> = T extends { [K in keyof T]: infer E } ?  E : T; which essentially does the same thing as I wanted, except with the | operator.
It would be nice if it were possible with the & operator at some point, but your solutions address my immediate need.

@jcalz your code for IntersectProperties above is exactly what I was looking for, so thank you!
I think this should totally be on the "Advanced Types" section of the guide (along with the Intersect above too as a stepping stone, but with a different name).
I say that not only because of its value in utility, but also because of its instructional value if it also comes with:

an explanation of how it works
the mindset involved for constructing it out of its building blocks


Connector edit

Closes #
Verification Steps

Do x
Do y

Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation change
[ ] Other (please specify)

still not done, maybe if you can give it some testing @wtrocki

I see numerous ways of handing updates but this PR doesn't seem to handle well some very basic use cases.
As we discussed update command can be have exactly as update command - asking users every question. However this would not be great experience.
We can let users to send patch requests for things they want to change - however this would imply some challenging interface/validation for patch changes.
Another option which I have suggested would be to fetch connector file and give user ability to edit it with OpenEditor - that seems trivial and would give users the best experience IMHO.

See: https://github.com/redhat-developer/app-services-cli/pull/1713

This looks really good. It will enable us to release that command instantly.

Verified


MUMUP-2357 : Add in optional background of whiteness

Add in white-background boolean to frame-page directive
Use said background in various pages in uw-frame
document said feature

Before
Predev was down during the creation of this PR, but just imagine yucky grey background
After

:+1:


Build glog from source in setup-ubuntu.sh

This is like the installation of glog in setup-centos9.sh. Then, no need to install libunwind-dev on ubuntu.

@majetideepak, this is a small patch, could you take a look?

Friendly ping @majetideepak. cc @assignUser

@PHILO-HE can you rebase to fix linux ci?

@PHILO-HE can you rebase to fix linux ci?

@assignUser, just updated.

Something weird was going on with CI, I pushed an empty commit to trigger it again.

Looking in detail this will actually break the build when only apt deps are installed as we force glog to use the same source as gflags. But there will be no system glog.
So we would need to also move gflags to build from source and in my opinion that doesn't really make sense? Could you explain what is so bad about installing libunwind-dev?

Hi @assignUser, thanks so much for your investigation!
In our Gluten project, JVM can handle exception thrown from Velox. We found libunwind-dev can cause JVM process crashes when certain exception happens (only found on Ubuntu 20.04). If we uninstall libunwind-dev and re-build Gluten/Velox, such issue will disappear. I guess there is some incompatibility on exception signal handling between JVM and libunwind-dev (maybe only certain versions of libunwind). Then, somehow causes JVM crash. So this is just a workaround to fix this issue.
@assignUser, do you have any suggestion?

Here is the relevant Gluten issue for reference https://github.com/facebookincubator/velox/issues/7751
Looks like glog library recommends the installation of libunwind https://github.com/google/glog/blob/master/docs/unwinder.md?plain=1#L17
@PHILO-HE can we solve this on the Gluten end by removing/uninstalling libunwind after building Velox?

Since the issue is also during runtime, you could create a runtime image with only the required dynamic libraries + Velox.

can we solve this on the Gluten end

Yeah I would agree, this is a Gluten issue, not a Velox one. Libunwind is used by glog and folly for better stack traces and error messages (right @kgpai?) so removing it for the benefit of Gluten doesn't really make sense imo.
You can of course also create your own setup script for Gluten without libunwind if you don't care for the benefits.

@majetideepak, @assignUser, thanks so much for your suggestion! I previously thought libunwind is not required by Velox, so I did this change.
I note libunwind is disabled in glog.cmake. Do you know the reason?
https://github.com/facebookincubator/velox/blob/main/CMake/resolve_dependency_modules/glog.cmake#L34

I note libunwind is disabled in glog.cmake. Do you know the reason?

Likely an oversight that it is disabled when bundled and also not installed in the centos9 script.
In my opinion, it should not be a hard requirement to require libunwind for Velox as it is a library.
We can consider adding an environment variable for the setup scripts to make libunwind optional.
But on Ubuntu, we will need this PR where we install glog from source. The apt install of glog includes libunwind as well.
@assignUser what do you think?
I also did not follow your comment https://github.com/facebookincubator/velox/pull/10432#pullrequestreview-2190379339 on why this PR would break the build. Where do we force glog to use the same source as gflags?

@majetideepak IIRC libunwind is disabled to avoid adding it to resolve_dependency , not entirely sure anymore.
Regarding the glog <> gflags connection:
if(${gflags_SOURCE} STREQUAL "BUNDLED")
  # we force glog from source to avoid issues with a system version built
  # against another gflags version (which is likely)
  set(glog_SOURCE BUNDLED)
else()
  set(glog_SOURCE SYSTEM)
endif()

So if we have system gflags but not system glog the build will fail.


java/info/blockchain/api/wallet/Wallet.java class

we are retrieving the first value in the sender.https://github.com/blockchain/api-v1-client-java/blob/master/src/main/java/info/blockchain/api/wallet/Wallet.java#L105 What if there are more values?
else also means size = 0. Is this ok? https://github.com/blockchain/api-v1-client-java/blob/master/src/main/java/info/blockchain/api/wallet/Wallet.java#L108
line too long and 'a' renaming https://github.com/blockchain/api-v1-client-java/blob/master/src/main/java/info/blockchain/api/wallet/Wallet.java#L161

By definition of the if branch, there is only one receiver, so just grabbing the first one should be okay.

Good call, we should probably add Preconditions to most of these calls

Great, added Guava dependency in order to use the Preconditions class https://github.com/blockchain/api-v1-client-java/commit/1fb2c4cbfedcbc678aff528e5cd60fd6c560ffd5


List Commands.command_aliases in Commands#help output, if CommandKit::Commands::AutoLoad is being used

The aliases should also be printed along side the command names:
list, ls
remove, rm

This problem only happens when CommandKit::Commands::AutoLoad is included, which uses CommandKit::Commands::AutoLoad::Subcommand. It appears that we are not printing out the command_aliases, but the Subcommand#aliases for each sub-command.

Note that be6e8e8697649fb215c424cf29c5fe7b8fe4df7b also fixes the edge case where command aliases are explicitly defined after the fact via command_aliases['rm'] = 'remove'.


chore: add initial github cd workflow

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Reduce compression memory use with map[string]uint16

This PR switches the packing code to use a map[string]uint16 for storing compression pointers while keeping support for external callers who pass in a map[string]int. This reduces the per-entry memory consumption of the compression map by 25%. ((16+2)/(16+8) = 0.75).
compressionMap is passed quite specifically as a value rather than a pointer because RR.pack is an interface method call which would cause it to escape and be heap allocated if it were to be a pointer. As maps are internally represented by a pointer to the runtime's hmap struct, the size of compressionMap is only 16-bytes anyway.
The benchmarks show a notable improvement in both memory use (alloc/op) and performance (time/op) for packing messages where multiple records are present.
name                    old time/op    new time/op    delta
MsgLengthPack-12          1.41µs ± 9%    1.46µs ±10%     ~     (p=0.353 n=10+10)
PackDomainName-12          128ns ± 0%     137ns ± 1%   +6.72%  (p=0.000 n=6+10)
PackA-12                  39.0ns ± 1%    40.1ns ± 1%   +2.69%  (p=0.000 n=8+8)
PackMX-12                 69.6ns ± 1%    72.4ns ± 1%   +4.05%  (p=0.000 n=10+9)
PackAAAAA-12              37.9ns ± 1%    40.0ns ± 1%   +5.68%  (p=0.000 n=10+9)
PackMsg-12                1.01µs ± 5%    0.95µs ± 1%   -5.85%  (p=0.000 n=10+10)
PackMsgOnlyQuestion-12     168ns ± 0%     176ns ± 1%   +4.94%  (p=0.000 n=6+10)
PackMsgMassive-12         67.8µs ±10%    55.1µs ±10%  -18.70%  (p=0.000 n=10+10)

name                    old alloc/op   new alloc/op   delta
MsgLengthPack-12            576B ± 0%      528B ± 0%   -8.33%  (p=0.000 n=10+10)
PackDomainName-12          0.00B          0.00B          ~     (all equal)
PackA-12                   0.00B          0.00B          ~     (all equal)
PackMX-12                  0.00B          0.00B          ~     (all equal)
PackAAAAA-12               0.00B          0.00B          ~     (all equal)
PackMsg-12                  256B ± 0%      208B ± 0%  -18.75%  (p=0.000 n=10+10)
PackMsgOnlyQuestion-12     0.00B          0.00B          ~     (all equal)
PackMsgMassive-12         23.1kB ± 0%    19.0kB ± 0%  -17.88%  (p=0.000 n=10+10)

name                    old allocs/op  new allocs/op  delta
MsgLengthPack-12            3.00 ± 0%      3.00 ± 0%     ~     (all equal)
PackDomainName-12           0.00           0.00          ~     (all equal)
PackA-12                    0.00           0.00          ~     (all equal)
PackMX-12                   0.00           0.00          ~     (all equal)
PackAAAAA-12                0.00           0.00          ~     (all equal)
PackMsg-12                  2.00 ± 0%      2.00 ± 0%     ~     (all equal)
PackMsgOnlyQuestion-12      0.00           0.00          ~     (all equal)
PackMsgMassive-12           12.0 ± 0%      12.0 ± 0%     ~     (all equal)

Updates #652 (see https://github.com/miekg/dns/issues/652#issuecomment-443200551).
Edit: This is similar to #820 but for packing.

Codecov Report

Merging #852 into master will increase coverage by 0.08%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #852      +/-   ##
==========================================
+ Coverage   57.96%   58.05%   +0.08%
==========================================
  Files          42       42
  Lines       10675    10690      +15
==========================================
+ Hits         6188     6206      +18
+ Misses       3398     3396       -2
+ Partials     1089     1088       -1

Impacted Files
Coverage Δ

dns.go
62.5% <ø> (ø)
:arrow_up:

zmsg.go
50.75% <100%> (ø)
:arrow_up:

msg_helpers.go
56.93% <100%> (ø)
:arrow_up:

defaults.go
66.21% <100%> (ø)
:arrow_up:

msg.go
79.2% <100%> (+1.21%)
:arrow_up:

privaterr.go
67.56% <100%> (ø)
:arrow_up:

server.go
65.96% <0%> (-0.24%)
:arrow_down:

Continue to review full report at Codecov.

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

[ Quoting<EMAIL_ADDRESS>in "[miekg/dns] Reduce compression memo..." ]

This PR switches the packing code to use a map[string]uint16 for storing compression pointers while keeping support for external callers who pass in a map[string]int. This reduces the per-entry memory consumption of the compression map by 25%. ((16+2)/(16+8) = 0.75).
compressionMap is passed quite specifically as a value rather than a pointer because RR.pack is an interface method call which would cause it to escape and be heap allocated if it were a pointer. As maps are internally represented by a pointer to the runtime's hmap struct, the size of compressionMap is just 16-bytes anyway.
The benchmarks show a notable improvement in both memory use (alloc/op) and performance (time/op) for packing messages where multiple records are present.
name                    old time/op    new time/op    delta
MsgLengthPack-12          1.41µs ± 9%    1.46µs ±10%     ~     (p=0.353 n=10+10)
PackDomainName-12          128ns ± 0%     137ns ± 1%   +6.72%  (p=0.000 n=6+10)
PackA-12                  39.0ns ± 1%    40.1ns ± 1%   +2.69%  (p=0.000 n=8+8)
PackMX-12                 69.6ns ± 1%    72.4ns ± 1%   +4.05%  (p=0.000 n=10+9)
PackAAAAA-12              37.9ns ± 1%    40.0ns ± 1%   +5.68%  (p=0.000 n=10+9)
PackMsg-12                1.01µs ± 5%    0.95µs ± 1%   -5.85%  (p=0.000 n=10+10)
PackMsgOnlyQuestion-12     168ns ± 0%     176ns ± 1%   +4.94%  (p=0.000 n=6+10)
PackMsgMassive-12         67.8µs ±10%    55.1µs ±10%  -18.70%  (p=0.000 n=10+10)

name                    old alloc/op   new alloc/op   delta
MsgLengthPack-12            576B ± 0%      528B ± 0%   -8.33%  (p=0.000 n=10+10)
PackDomainName-12          0.00B          0.00B          ~     (all equal)
PackA-12                   0.00B          0.00B          ~     (all equal)
PackMX-12                  0.00B          0.00B          ~     (all equal)
PackAAAAA-12               0.00B          0.00B          ~     (all equal)
PackMsg-12                  256B ± 0%      208B ± 0%  -18.75%  (p=0.000 n=10+10)
PackMsgOnlyQuestion-12     0.00B          0.00B          ~     (all equal)
PackMsgMassive-12         23.1kB ± 0%    19.0kB ± 0%  -17.88%  (p=0.000 n=10+10)

name                    old allocs/op  new allocs/op  delta
MsgLengthPack-12            3.00 ± 0%      3.00 ± 0%     ~     (all equal)
PackDomainName-12           0.00           0.00          ~     (all equal)
PackA-12                    0.00           0.00          ~     (all equal)
PackMX-12                   0.00           0.00          ~     (all equal)
PackAAAAA-12                0.00           0.00          ~     (all equal)
PackMsg-12                  2.00 ± 0%      2.00 ± 0%     ~     (all equal)
PackMsgOnlyQuestion-12      0.00           0.00          ~     (all equal)
PackMsgMassive-12           12.0 ± 0%      12.0 ± 0%     ~     (all equal)

Looking at these benchmarks are the skewed to larger messages? 'Cause most DNS
message are still small (less than 10 RRs)

Only PackMsgMassive really exercises the compression code that well. The other benchmarks usually only include a single name with three labels multiple times, meaning the compression map has only three entries and it barely has any effect on the overall performance. I think real world results would be more positive than anything but PackMsgMassive.
If you look at the benchmarks, the increases are on the order of a few nanoseconds (and I believe come solely down to an extra few nil checks), while PackMsgMassive shows an improvement of over ten microseconds. I think something like Consul(?) would see a strong improvement here.


feat: add keymaps

This pull request includes:

Removing vim-unpaired keymaps override for moving lines and use commands for it
Add keymap for moving around multiple windows

Conflicts in README after I merged #4 , sorry bout that :stuck_out_tongue_closed_eyes:


Change background&text color and an optional seperator.

Let's say I want the banner background color to be similar to my app's scaffold bg color. Now the color is fixed. I realize that changing the bg color also means the texts might not be visible on same color bg. So I am open to suggestions. Maybe textColor as well? :)
Lastly, being able to optionally render a thin divider/separator at the top/bottom according to the position of the banner can be nice. What do you think?

Currently the banner style is opiniated, I wanted to have a design similar to the one from the react-smartbanner package (live demo).
Now, of course I'm planning to have much more customizations for the v1 but this will require to rework a bit the current styling system and I cannot give any release date as I'm not working full-time on this package (but any PR is welcome if you want to work on this 🙂).

I've made some progress for the custom styling and would love to have your opinion on the new API that will be provided by the package.
I've added a themeBuilder and bannerBuilder parameters to be able to override the default SmartBannerThemeData and replace the "opiniated" banner design by any custom widgets. You can try those "in progress" features by pointing to the GitHub repository from your pubspec.yaml:
dependencies:
  smart_banner:
    git:
      url: https://github.com/TesteurManiak/smart_banner
      ref: feat/#5_custom-styling


Implement aiohttp.web executable helper

python -m aiohttp.web HOST PORT pkg.module.main [ARGS]
See #690 for details

Questions:

How to support SSL context, do we need it at all?
How to skip HOST PORT parameters and use localhost 8080?
What pkg.module.main should be? I think it is either a regular function or await-able object (a coroutine or a Future) accepting ARGS. BTW I suggest pkg.module:main syntax to split import path and name inside imported module.
Do we want support path-to-file instead of import-path-to-module?
What's [ARGS] syntax? Is it just str params split by spaces or we want to use named parameters and apply type checking/conversions to ones?

Leave SSL out for now -- could always add a --ssl option later on.
argparse.ArgumentParser supports optional positional arguments. Might have to move pkg.module.main argument first though. ArgumentParser.parse_known_args might also be of use to avoid parsing [ARGS].
An async function that returns an web.Application instance.
?
Use the leftover list of args returned by ArgumentParser.parse_known_args. The user can take care of the parsing in their main(args) implementation, if they need to.

Perhaps do HOST PORT optional keyword arguments?

python -m aiohttp.web [--host HOST] [--port PORT] pkg.module.main [ARGS]

Looks good.
Any volunteer?
The PR should use already merged web.run_app().

I'll volunteer.

@jashandeep-sohi thank you too much. It will be significant addition, especially for newcomers.
I want to make aiohttp 0.21 release close to the end of January.
If you will not end the PR up to the date -- that's also fine, no rush. Looks like we have new release every month, 0.22 is expected in between of February last week end and March.
But, please, document the issue in PR.
You have much fluent English than me :)

Fixed by #740


Deprecate Nested RecordSets in favor of repeated subField

The Croissant Spec allows nesting RecordSets inside RecordSets, by using a field with dataType="cr:RecordSet"
https://docs.mlcommons.org/croissant/docs/croissant-spec.html#nested-records
This mechanism has not been used much, is not supported in the mlcroissant library, and adds unneeded complexity.
Instead, we propose using the existing subField mechanism, and specifying repeated=true to represent multiple records.
Here is an example based on the one in the above documentation:
{
  "@type": "cr:RecordSet",
  "@id": "movies_with_ratings",
  "key": { "@id": "movies_with_ratings/movie_id" },
  "field": [
    {
      "@type": "cr:Field",
      "@id": "movies_with_ratings/movie_id",
      "source": { "@id": "movies/movie_id" }
      "references" :  { "@id": "ratings/movie_id" }
    },
    {
      "@type": "cr:Field",
      "@id": "movies_with_ratings/movie_title",
      "source": { "@id": "movies/title" }
    },
    {
      "@type": "cr:Field",
      "@id": "movies_with_ratings/ratings",
      "repeated": "true",
      "subField": [
        {
          "@type": "cr:Field",
          "@id": "movies_with_ratings/ratings/user_id",
          "source": { "@id": "ratings/user_id" }
        },
        {
          "@type": "cr:Field",
          "@id": "movies_with_ratings/ratings/rating",
          "source": { "@id": "ratings/rating" }
        },
        {
          "@type": "cr:Field",
          "@id": "movies_with_ratings/ratings/timestamp",
          "source": { "@id": "ratings/timestamp" }
        }
      ]
    }
  ]
}

Note that using a repeated field with subFields also enables us to get rid of the cumbersome "parentField" property in the previous syntax. Instead, the join with the underlying ratings table is specified on the "movie_id" property.

This is a common representation for trees generally.  Instead of actually nesting the data structure, maintain a flat data structure of all nodes, and have each node point to its immediate children.  e.g.
  tree = {
    root: [1,2],
    1: [3,4],
    2: [5,6],
    3: [7]
  }

This mechanism is used by, for example, the GraphQL schema.  GraphQL uses this mechanism because it actually empowers defining possibly infinite trees, where a subType for a type can be the type itself.  IMHO, the GraphQL type system is pretty intelligent, and we could learn a lot from the setup there.


account-settings: Pass page_param values to dialog widgets for change email and password.

Updates the change password and change email modals so that any page_params values referenced in the handlebars template are passed to the html parameter in dialog_widget.launch. Otherwise the template does not have access to those values.
Notes:

Change password:

The values that were not getting set were for the password quality bar: password_min_length and password_min_guesses.
The issue was noted here on CZO.

Change email:

When I did a git-grep search for other instances of page_params in web/templates, the only other dialog widget modal came up was change_email_modal.hbs.
This was not noted because the post_render callback resets the value of the input to be the same delivery email, but uses the value button text.

I looked back through the project history and as far as I can tell this has always been the case (setting the value twice; once in the HTML and again in the modal launch).
I did not remove the post_render callback in these changes, but it does seem redundant to me if we're also setting the initial value in the handlebars template.

Alternatively, we could intentionally set the handelbars template to be an initial empty string value and continue setting it in the post_render callback, which we've been doing unintentionally since migrating to use the modal.

I'll note that on my computer in both Chrome and Firefox, this ends up with the cursor at the end of the email value when the form launches and is focused on the input field.
When it's set initially, the cursor is at the start of the email value.

git-grep after these changes
$ git grep page_params web/templates/
web/templates/settings/account_settings.hbs:                                {{page_params.delivery_email}}
web/templates/settings/account_settings.hbs:                {{#if page_params.two_fa_enabled }}
web/templates/settings/account_settings.hbs:                    {{t "Two factor authentication" }}: {{#if page_params.two_fa_enabled_user }}{{t "Enabled" }}{{else}}{{t "Disabled" }}{{/if}}
web/templates/settings/account_settings.hbs:                    {{#if page_params.realm_email_auth_enabled}}
web/templates/settings/account_settings.hbs:                {{#if page_params.development_environment }}
web/templates/settings/account_settings.hbs:                  hide_tooltip=page_params.realm_enable_read_receipts
web/templates/settings/bot_settings.hbs:        {{#unless page_params.is_guest}}
web/templates/settings/profile_settings.hbs:                                <input id="full_name" name="full_name" type="text" value="{{ page_params.full_name }}" {{#unless user_can_change_name}}disabled="disabled"{{/unless}} maxlength="60" />
web/templates/settings/profile_settings.hbs:                  image = page_params.avatar_url_medium}}

Screenshots and screen captures:

Email change
Current main - empty string set

After changes - email set

Password change
Current main - nothing set for data-min-length or data-min-guesses

After changes - Defaults set for data-min-length or data-min-guesses

Screencast of setting new password
Screencast from 21-03-23 17:06:09.webm

Self-review checklist

[ ] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[ ] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[ ] Each commit is a coherent idea.
[ ] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[ ] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

I'm not sure why the Read the Docs build failed, but I don't believe it relates to the changes in the PR.

I did not remove the post_render callback in these changes, but it does seem redundant to me if we're also setting the initial value in the handlebars template.

Yeah, probably we can remove the post_render callback. I think we might have needed it in some past world where the modal was rendered in the DOM when loading the page, to ensure the default value was up-to-date if you changed the email address in another browser or something, but I think it's not required.
Otherwise this lgtm, leaving this open so you can address that in this PR rather than making another one.

Updates:

Removed the post_render callback in the change email dialog widget modal.

Merged, thanks @laurynmm! @andersk FYI -- this may replace a hunk of #24810.


Correction for raw affiliation IPSiM, Univ Montpellier, CNRS, INRAE, Institut Agro

Correction needed for raw affiliation IPSiM, Univ Montpellier, CNRS, INRAE, Institut Agro
raw_affiliation_name: IPSiM, Univ Montpellier, CNRS, INRAE, Institut Agro
new_rors: 003vg9w96;051escj72;02feahw73;03rnk6m14;05r332y60
previous_rors: 003vg9w96;051escj72;02feahw73;03rnk6m14
works_examples: W4396708488
contact: 4269e6c3ccc2f2c8c53bdae38e5bbf99:10878655e7353d70c603128da90d55df1aa4 @ inrae.fr

This issue was accepted and ingested by the OpenAlex team on 2024-11-18. The new affiliations should be visible within the next 7 days.


Add algorithm that finds complement graph

Moved it to samples https://github.com/Kemsekov/GraphSharp.Samples


Appsec action 6.5: HSTS is Enabled, but Secure Flag is Missing on Cookies (low)

The application is configured with HTTP Strict Transport Security (HSTS), which is a robust security measure designed to enforce the use of HTTPS and protect against man-in-the-middle attacks. However, it has been identified that some cookies set by the application are missing the Secure flag.
The Secure flag is essential to ensure that cookies are only transmitted over secure HTTPS connections. Without this flag, cookies could be inadvertently transmitted over insecure HTTP connections during the initial visit or in the event of a downgrade attack, potentially exposing sensitive information such as session IDs to interception.
If a user's initial connection to the site occurs over HTTP (before HSTS is enforced), cookies without the Secure flag may be sent over an insecure connection, making them vulnerable to interception by attackers. The absence of the Secure flag undermines the security benefits provided by HSTS, leaving a potential gap where sensitive data could be exposed.
Below are the response headers showing the set-cookie attributes missing the secure flag.

Remediation:
Ensure that all cookies, especially those containing sensitive information such as session cookies, are configured with the Secure flag. This will restrict cookies to HTTPS connections only, preventing them from being sent over potentially insecure HTTP connections.

Action - enable this in Django config


Dust limit issue

Dust limit keeps varying.I have seen this message before, but have easily been able create gifts of 1500 sats.
Tried sending 5k out of 5.5k and it did not go. Sent 2k and it went.
The dust limit is not the problem, the message is incorrect for sure.It should say reduce the amount and try as fee needs to be higher

Here: change UTXO is invalid atm(< dust limit). We might wanna include the change in the fee and get the tx going.
This is happening because the fee is getting statically included thereby not allowing the coinselection to expand fee to include the otherwise invalid dusty change into the fee.

Verified this issue on dev app v2.0.66(402)