bump: [#4684] Upgrade d3-format using import-sync for esm-only package

Addresses #4684
#minor
Description
This PR updates the d3-format package to its latest version 3.1.0. Starting on version 3.x, this package is ESM-only, so we used import-sync to be able to use this version.
Specific Changes

Updated d3-format from 2.0.0 to 3.1.0 in adaptive-expressions library.
Added import-sync as a dependency in adaptive-expressions.
Added d3-format to the depcheck ignore list as it threw a false positive on unused dependency.
Updated the formatNumbers and string classes to import the package d3-format using the importSync function.

Testing
The following images show the installed version and the unit tests passing after the changes.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>6
Details

4 of 4 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.3%) to 84.356%

Totals

Change from base Build<PHONE_NUMBER>9:
-0.3%

Covered Lines:
20435

Relevant Lines:
23066

💛  - Coveralls

We need to replace import-sync as it won't work on Node 22.


Parser serialized diagnostic file instead of scraping diagnostics from the build log

Instead of scraping the build log for errors/warnings/notes using a regex, it would be cleaner if the VS Code extension would read the diagnostic file emitted by -serialize-diagnostics-path. That way VS Code could also show notes that are attached to errors as their children, instead of displaying them as a top level problem.

When did this go in? I know it was being planned but didn't know what state it was in.

What do you mean by “this“? AFAIK the Swift compiler has been able to emit serialized diagnostic files for quite a while, possibly forever.

Ok I didn't know about it.
Anyway VSCode expects extensions to be parsing compiler output to produce the output of the problems pane. It doesn't really have an interface for extensions to add problems, well at least not a publicly advertised one. What you are suggesting kinda goes against what VSCode expects of extensions. I'll leave this open , as there might be a way, but can't guarantee anything.

Oh, interesting. I would have expected that other languages also used serialized diagnostics to produce structured diagnostics.

happy to grab this one


AIVs have limited amount of raid catapults

I just observed that every AIV after the latest patch won't spam the catapults or fire ballistas with the exact same amount he can do from the start of the match  : here's an example :-
  This is The Wazir  As you can see he recruited 8 FireBallistas at one,,, but after a while he will start to reduce the numbers until it reaches ZERO , Yes after a while he will really stop making them at all and that also applies to all the Characters , any suggestions to solve this?

That's not caused by the patch but actually a vanilla bug. I think in theory it happens when the AI builds something (like another siege tent) on top of the engines. This makes the siege engine vanish, while the AI still thinks it is there, stopping it from rebuilding it.

Yeah about 70% of the time the AI will keep placing tents on top of harassing siege engines before said engine can move out of the way. I'm trying to figure out if there's some sort of delay field that determines the speed of which the tents are placed.

Idk if this is really the issue , In the screen shot above it shows he managed to recruit all of the 8 ballistas but after a while this number will reduce to 6 then 2 then 1 and then disappear , meaning he only made a total of 30 ballistas or so

We just need a tool or a program to extract files from older versions of stronghold crusader

That's not caused by the patch but actually a vanilla bug. I think in theory it happens when the AI builds something (like another siege tent) on top of the engines. This makes the siege engine vanish, while the AI still thinks it is there, stopping it from rebuilding it.

So could it be possible to stop that? At the moment, AI also doesn't build its buildings on players troops so maybe there could be an exception for their siege engines?

To be honest, I kinda doubt that "building stuff over siege engines" is the (full/only) reason. I've already had matches where Saladin (vanilla, i.e. maximum of 5 concurrent harassment catapults) built tents over his harassment catapults dozens of times and still built more... so I think there must be something else at work (additionally).

The best thing would be: The KI cant "overbuild" units or trees like a Real Player. That would solve many Problems. I cant forget the Image of Marschall deleting his Knights because of a Dairy Farm :D

The best thing would be: The KI cant "overbuild" units or trees like a Real Player. That would solve many Problems. I cant forget the Image of Marschall deleting his Knights because of a Dairy Farm :D

That's a really bad idea in my eyes. Because if a tower/gatehouse is manned and destroyed (without the ruins) the troops also still alive with half HP. If the AI can't build over those troops he can't rebuild his lost towers/gates until all his defensive troops on that stop are dead.

Is this problem still being worked on? I can approve that the AI can overbuild more than 8 single harrass siege engines and still continious to build them. But outside of that I'd still love to have the problem solved so that the AI doesn't spend thousands on gold for overbuilding their fkn siege engines.

Is this problem still being worked on? I can approve that the AI can overbuild more than 8 single harrass siege engines and still continious to build them. But outside of that I'd still love to have the problem solved so that the AI doesn't spend thousands on gold for overbuilding their fkn siege engines.

For some reason AIs in my game wont continue to build those siege engines untill all engineers are killed!! Hope for a solution as this is one of the biggest weakpoints for AIs


Sort order on host page is by id not host name

Version - master 2/3
Comment:
The sort order on the host page used to be by host name.  Now it's on id (order in which they were added).  I like the host name order better.  It's easier to find a specific host that way.

Needed to use the displayName (name or hostname or id) here for sorting..

Version - master UI 2/4
Verified fixed


Falcon : Private compare

Description
Implements the Falcon Private Compare Functionality. fixes #148
How has this been tested?
Added tests for the same.
Checklist

[x] I have followed the Contribution Guidelines and Code of Conduct
[x] I have commented my code following the OpenMined Styleguide
[x] I have labeled this PR with the relevant Type labels
[x] My changes are covered by tests

Have a high-level interface for MPCTensor to allow users to perform MPC_Tensor_X>MPC_Tensor_Y or any such comparison operation. Similar to current FSS implementation. Basically, add this to le and gt operation function.

Falcon private compare is specific for comparing with public value, We could make it works for mpc tensors also, we have to change the building of blocks of Private Compare.I thought not to expose at mpc tensor level for now. Maybe when we modify the algorithm, we could include at MPCTensor level ?


add tests to on-tftp

https://github.com/RackHD/on-tftp is really quite a light wrapper around the node-tftp library, but it could still use some tests to exercise that wrapper and some of the light logic we put around it (logging errors, and info).
The tests within on-syslog (https://github.com/RackHD/on-syslog/tree/master/spec) makes a good baseline pattern for someone to follow if they were looking for an example...

@heckj I have already started working on this in my own fork https://github.com/DavidjohnBlodgett/on-tftp/tree/unitTests just a heads up, just have afew more tests to add once it's inside the request blocks... and I kinda side tracked finishing it because I started using the branch to do some exploratory testing of mocking~ I will try to post a cleaned up PR next week.

resolved in https://github.com/RackHD/on-tftp/pull/26


Fixed mesh data regression

I've gotten pretty confused working with all these different branches of Liblava! After updating my FBX project to latest Liblava, I realized that mesh_data had broken (it currently isn't tested by any samples here). Then I somehow changed branches by accident and thought it was working. Then I realized it definitely wasn't working.
Anyways, this PR fixes the mesh_data compilation errors on my project that implemented it before I refactored generic meshes.

Thank you


Report the real line with lint for LineLength

When we refactored the LineLength linter to be disableable, we missed
a corner case for multi-line nodes. These nodes were being reported at
line zero because the "find node for line" ability was ignoring the
presence of multiline nodes.
This fixes the ability to find lines within multiline nodes and ensures
the correct line is reported for the LineLength linter.
Closes #196

Thanks!

Thanks!

@trotzig Can you create a new release?

@nijikon released as 0.23.2!

@trotzig Thanks!


Unified the introduction

Modify :
ElasticJob is a distributed scheduled job solution. It is composited from 2 independent sub projects: ElasticJob Lite and ElasticJob Cloud.

ElasticJob Lite is a centre-less solution, use lightweight jar to coordinate distributed jobs.

To:
ElasticJob is a distributed scheduling solution consisting of two separate projects, Lite and Cloud.

ElasticJob Lite is a lightweight, decentralized solution that provides distributed task sharding services;

I am doing this task now


Support HTTPS for model downloading

Might be worth upstreaming this KFServing PR here: https://github.com/kubeflow/kfserving/pull/979

Hey @ellistarn @tduffy000 ,
Thanks for opening up this issue!
I've been thinking lately about this particular point. Should the storage / downloading logic live within the inference server?  Currently, on both Seldon Core and KFServing, we perform the download on the init container. Thus, the logic is contained completely outside of the server itself. This becomes extra relevant with multi-model serving where it seems there will be some sort of "puller" doing the download across models.
Recently, in Seldon Core, we also decided to remove the cloud storage logic out of the Python wrapper to reduce the number of dependencies of the seldon_core package (https://github.com/SeldonIO/seldon-core/pull/2310). Instead, we just use the same image as KFServing for the model initialiser.
It would be great to get your thoughts on this! We should also bring this topic to the next WG meeting.

This is actually a great point. This logic should probably live in Bloomberg's model puller. Let's discuss at WG.

Closing this one as this is already supported in KFServing's agent.


Path parameters should be able to use snake_case

We need to allow underscores in path parameters:
./linter.py ../connexion-example/swagger.yaml
paths/"/pets/{pet_id}":
    Must: Use lowercase separate words with hyphens for Path Segments

    http://zalando.github.io/restful-api-guidelines/naming/Naming.html#must-use-lowercase-separate-words-with-hyphens-for-path-segments

Fixed in https://github.com/zalando-incubator/restful-api-guidelines-linter/commit/e1dc30d70ff6dc67e665036c64c261f4f48c2853


Select dropdown pushes to make space for itself

I'm using v1 of materializecss and I encountered this problem where my select tag is in a cramped space. When I click on the tag, the options pushes to expand the container to make  space for itself.
I believe this video would be much better in explaining what I mean.
As you can see, for the dropdown alongside it, I used the container option to provide it with $('body') and it works as intended, overlapping the other content but such an option is not abvailable with select. How do I get around it?

in v1, Select has an option called dropdownOptions which you can pass an object of options for the underlying dropdown. If the container option fixes your issue you can try doing this for select as well.

It worked. Thanks. How did I not notice that option there :p
$('select').formSelect({
	dropdownOptions: {
		container: $('body')
	}
});


[Bug] Next/previous is clickable on Table pagination after enabling server side pagination from property pane

Steps to reproduce the behaviour:

Drag and drop table widget
Query a table data with multiple pages
From property pane enable server side pagination
Observe that Next/Previous page is still clickable on table

Important Details

Environment : Prod
OS: MacOSX
Browser chrome

Closing this in favour of #1578 & #2230

Issues still exist thus reopening it.

@vivekverma2312 the pagination is not configured in the above example and the behaviour is appropriate. Once we add the pageSize and offset to the query you will see pagination work better, We also have the total record count now to disable pagination. When its not set the pagination control will remain as it is. The onus here is on the end user

@somangshu When the issue was raised the pageSize and offset to the query options were not available. Now after applying pageSize and offset to the query the infinite scroll do not work. After adding pageSize and offset to the query also the next/previous button button is available. Can you please suggest if we can link the issue to any epic or reopen this?


README

README
User Story
As a boot camp student,
I want the prework notes to be structured on a webpage,
So that I can easily find and read the information.
Acceptance Criteria
GIVEN the prework project repository,
WHEN I view the README for the repository,
THEN I can see a professional REDME that provides information on the project and how to use it

Updated README file and merged to main branch


Add some traits of S18 (fixed)

Fixes #1151 by @Moniker1998
Closes #1151

One things noticeable is that, we can check all the theorems and strengthen it to the version that could be pass Kolmogorov quotient, that will be good for spaces like S18 whose Kolmogorov quotient has more property can be deduced.
For example, clearly $T_1$ in T381 can be weaken to $R_0$ and thus we would know {S18|¬P158}, etc.
Maybe it can be proposed in a separated issue/PR. Maybe a huge work.


Error on slidev --open

Describe the bug
npm run dev throws error after I update<EMAIL_ADDRESS>To Reproduce
Steps to reproduce the behavior:

init a new project npm init slidev or update<EMAIL_ADDRESS>for existing project.
run npm run dev then get error.

npm run dev

> dev
> slidev --open

 > node_modules/@slidev/parser/dist/chunk-YMAA333D.mjs:79:9: error: No matching export in "browser-external:url" for import "fileURLToPath"
    79 │ import { fileURLToPath } from "url";
       ╵          ~~~~~~~~~~~~~

(node:24816) UnhandledPromiseRejectionWarning: Error: Build failed with 1 error:
node_modules/@slidev/parser/dist/chunk-YMAA333D.mjs:79:9: error: No matching export in "browser-external:url" for import "fileURLToPath"
...

I downgraded slidev to 0.28.2 then run npm run dev, it works.
Desktop (please complete the following information):

OS: Ubuntu 18.0.4
Browser: Chorome
Slidev version: 0.28.3
Node.js version: 14.17.0 and 16.10.0

@antfu f4142dd0d550ca042536ee07e18f9e4d115a04ec seems to have introduced a regression.

@antfu It looks like it doesn't solve the issue.

I confirm, I still have an issue running slidev in 0.28.3 or 0.28.4

Last 0.28.5 version fixes the issue :)


% problem

if i add a 50% and 70% ,it has bug can not sort

no , no not %'s problem

it's the  colspan rowpan response

Closing. Needs more specific information.


Clipped VectorTile rendering with renderMode: 'image' when browser is zoomed

Describe the bug
I have a similar issue which has been raised here but this time with VectorTile using renderMode: 'image'.
When user zoomed the browser (with Ctrl-+ for example) it makes tiles clipped as in animation below:

.. there is a some kind of 'clip' between tiles.
The bug doesn't occur when:

Browser is 100%
imageMode is 'hybrid'

To Reproduce
Steps to reproduce the behavior:

Go to https://codesandbox.io/s/clipped-mvt-rendering-with-browser-zoom-ecocl?fontsize=14&hidenavigation=1&theme=dark
Zoom your browser (I reproduced with 150%)
Reload the url (otherwise it will work)
Zoom to left from 'Juranville' city
On level 19 you'll see the output as in animation

Expected behavior
The rendering as when the browser is not zoomed.
Thank you in advance and have a nice day,

I also have the same problem !! I’m going to turn off image rendering tomorrow and see if it’s working.

When using Image / hybrid or vector i still git the clipped vector

I fixed this by adding a bigger buffer to the tile vector

I am having this problem as well.

The screenshot that @jeroenvheel looks like the vector tile source might have polygons with the wrong winding order. That could be fixed by configuring the MVT format with ol/Feature as featureClass:
import VectorTileSource from 'ol/source/VectorTile';
import MVT from 'ol/format/MVT';
import Feature from 'ol/Feature';

new VectorTileSource({
  format: new MVT({
    featureClass: Feature
  }),
})

Here are some examples:
OL-latest

OL5.3.0 ✅

Code example
https://codepen.io/benjaki/pen/zYvzGxd

@Benjaki2 Your issue is caused by an invalid tilegrid. Probably due to #10974.

@Benjaki2 Your issue is fixed with #10398
@mshubin's issue looks similar, so I think that should also be fixed. Not sure about @jeroenvheel's issue though. Can you please test with the fix applied and report back?

@ahocevar I confirm, I've tested it in my codesandbox example with last 6.3.2-dev and the issue doesn't occur anymore :+1: Can't wait to integrate it in our app.
Thank you very much !

Looks great. Thank you! @ahocevar


501 Error on login

I'm getting the following error upon login:
http://imgur.com/YfEz0Pm
Everthing worked fine but 2 or 3 days ago the tracking stopped working.
Today I tried to relog but I'm getting this error now.

CCP changed Universe/names endpoint to return a 501 error where previously it returned 404. Pathfinder apparently ignores but still reports to Log 404 errors but hard stops 501's

temp work around: edit controller.php /app/main/controller/controller.php
remove die()  command from error reporting (highlighted in Picture below)

and save this will stop the 501 error but a backup should be made prior to editing so that you can revert once universe/names endpoint is back online

I tried logging in today again and it worked. Seems to be fixed. Thank you.

The 501 Error on login is still occurring for me. Thank you for the workaround - I'll try that


.roleupdate command

Will update all guildmembers roles to fit the new role-levels.

I have tested the command and the message.js functionality extensively. The only worries I have is if the discord API can handle us pulling down 3000+ users info without timing out... That we will know when we have tried xD


[Generate project with Mason] Generate the new project & keep the generated project at repository root folder for reference

Why
After replacing the existing legacy & complex Python script by Mason to generate the new project, there is an issue we need to cover: the updated template with Mason script is not a standard Flutter project anymore. Hence, verifying what we have in a final Flutter project after generating it is hard.
To make this easy, we can keep a backup of a generated project sample in this repository for

referencing.
contributing 👉 we can verify the generated result from this folder locally or from the CI.

Following the idea above, this is what we need to cover in this task:

Add a new workflow at the root template project to

automatically generate the new project.
commit & push the generated project to the repository root folder under /sample.

Who Benefits?
Developers

Blocked by #162


model_sources are ignored in Kaggle kernel push

I'm using Kaggle API version 1.6.17. I noticed the model_sources field in the kernel-metadata.json file is ignore when using kaggle kernel push CLI command. I tried it both with creating new kernels, and editing existing kernels.

Thanks for the report @yitang !
Could you make a test notebook that repros this problem and add me (stevemessick on Kaggle) as a collaborator? I looked through the code, both client and server, and it looks like it should be getting handled.

@stevemessick  i added you to the testing notebook and model as a collaborator. not sure if it is matters but both notebook and model are private.
i just tried it again to replicate the issue:

pull the kernels
edit the metadata.json, add the model_sources field,
push the kernel
open the kernel on kaggle website

the model i added in step 2 is missing in the input field.

Thanks @yitang. Could you add a link to your testing notebook?
We'll look into this soon.

Here's the link. https://www.kaggle.com/code/yimacs/test-kaggle-api/

@yitang It turns out, you were just (un)lucky! If you had used almost any framework except "Other" it would have worked. The server didn't properly handle that one framework (and a couple other recent additions). I have a fix in the works and it should be live on the server in a day or two. Thanks for finding this problem!

Thanks @stevemessick going to test it in weekend.


Assemblies error on iOS on Xamarin.Forms

Hi, as soon I install the package and try to use it, when I build I got this error:
error MT2001: Could not link assemblies. Reason: Error while processing references of 'App.iOS, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'

Sry. Not much to go on here. I haven't seen this before. Any more details you can share?

Hi, yes, I have those warning too, I didn't see them before:
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(793,3): warning MT0129: Debugging symbol file for '/Users/jfdionne/Library/Caches/Xamarin/mtbs/builds/App5.iOS/e7b3b86f111a793b6ccb2bd736c11944/bin/iPhone/Debug/ISocketLite.PCL.dll' does not match the assembly and is ignored.
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(793,3): warning MT0109: The assembly 'System.Net.Http.dll' was loaded from a different path than the provided path (provided path: /Users/jfdionne/Library/Caches/Xamarin/mtbs/builds/App5.iOS/e7b3b86f111a793b6ccb2bd736c11944/bin/iPhone/Debug/System.Net.Http.dll, actual path: /Library/Frameworks/Xamarin.iOS.framework/Versions/<IP_ADDRESS>/lib/mono/Xamarin.iOS/System.Net.Http.dll).
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(793,3): warning MT0129: Debugging symbol file for '/Users/jfdionne/Library/Caches/Xamarin/mtbs/builds/App5.iOS/e7b3b86f111a793b6ccb2bd736c11944/obj/iPhone/Debug/mtouch-cache/1-Link/ISocketLite.PCL.dll' does not match the assembly and is ignored.
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(793,3): error MT2001: Could not link assemblies. Reason: Error while processing references of 'App5.iOS, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'

I'm using Forms with net standard.

Could you try and see if you get the same issue on a different PC? Or try and clear your NuGet cache?

I just try on another computer, started a new projet, without nothing on it.
I add the package from nuget.
put 2 line of code on mainpage:
var m_objTCP_Client = new TcpSocketClient();
await m_objTCP_Client.ConnectAsync("<IP_ADDRESS>", "9991");
try to build, and got the same error.

I've tried to recreate the issue doing what you just describe, but I'm not seeing the errors.
If you take a look at the developer branch you'll see a test for both an iOS app and a Xamarin.Forms app. Both are able to link.

it's strange.
Thank you for have checked


Merge on predicate throw error on date colum: Unable to convert expression to string

Environment
Delta-rs version: 0.16.4
Binding: python
Environment:

OS: windows
python: 3.8.17

Bug
What happened:
Merge on predicate throw error when the merge key is a date column, which table is partitioned by.
How to reproduce it:
import pandas as pd
from datetime import date
from deltalake import DeltaTable, write_deltalake
import tempfile

f  = tempfile.TemporaryDirectory().name
df = pd.DataFrame(data={"Date": [date(2023,1,1)] *10 + [date(2024,1,1)]*10, "B":range(20), "C":"constant"})
write_deltalake(f, df, mode='append', partition_by=["Date"])
dt = DeltaTable(f)
df_new = pd.DataFrame(data={"Date":[date(2023,1,1)], "B":[1], "C":"new value"})
dt.merge(source=df_new, predicate='t.Date = s.Date AND t.B = s.B', target_alias='t', source_alias='s').when_matched_update_all().execute()

DeltaError                                Traceback (most recent call last)
... \lib\site-packages\deltalake\table.py] in execute(self)
1776             Dict: metrics
1777         """
-> 1778         metrics = self.table._table.merge_execute(
1779             source=self.source,
1780             predicate=self.predicate,
DeltaError: Generic DeltaTable error: Unable to convert expression to string

More details:
The same code works in deltalake 0.16.1

This is already fixed here https://github.com/delta-io/delta-rs/pull/2357
And will be available in the next release


Consider removing the targetWorkload field for seccomp profiles

We could think about removing the targetWorkload field from the seccomp profile CRD. Do we really need it? During development it was mostly confusing to have another sub-path in the whole local path.
Let's evaluate what we would break when removing it.

Sorry to jump on this late, just wanted to note for posterity that this is why we added it in the first place: https://github.com/kubernetes-sigs/security-profiles-operator/pull/138#issuecomment-705989431
With the way ProfileBinding binds to images and not workload tags I agree we don't need this anymore.


[proposal] Add iLike support

This small change provides postgres support for ILIKE alongside LIKE.  The "contains", "startsWith" and "endsWith" contraints only support "LIKE"  And while it appears that the direct use of  "LIKE" is supported (although undocumented) there is no equivalent pass-thru support for ILIKE.
I'd like to see this support flow over to mySQL, but that would have to come in the form of
COLLATE UTF8_GENERAL_CI like '%$search%'
Or something similar.
Also need to figure out why this affects populating associations.
A query with an association using like might end up as
"where": {             "members.name": {                 "like": "%greenstreet%"             }         },
where as a query with an association using ilike will end up like
"where": {             "members.name": {                 "members.ilike": "%greenstreet%"             }         },
I have yet to track down where this happens.  Somehow the query building is smart enough to detect the presence of "like" but not "ilike"

@mikermcneil Looking through waterline and the supporting packages, I think another more flexible approach would be simply adding a configuration for waterline that white lists custom modifiers.  In the case of SQL these modifiers just get forwarded to knex.  That way if someone wants ilike or rlike they can tell waterline to let it through explicitly with a configuration and it won't be an issue for anyone else that doesn't use those.  I would be happy to start a pull request, for now we are just using this fork.
In regard to globally configuring case sensitivity, i think if we wanted that we could probably make a case insensitive index.


IncompressibleFlow deprecated in Phiflow >=2

Hello,
There is a dependency on IncompressibleFlow class which is deprecated in Phiflow >=2.
Latest version supporting IncompressibleFlow is phoflow==1.5.1
Maybe it is worth to mention it in the README :)
Best Regards,
Adam

Thanks for pointing this out! It's clarified now in the 'Requirements' section, and the phi2 branch is experimental but worth checking out. This notebook https://www.physicsbaseddeeplearning.org/diffphys-code-sol.html also runs the karman case with phiflow 2.


Bulk operations can fail after user navigation in SharePoint/GDrive

When a user surfs around folders in SharePoint/GDrive, the sidekick can fall behind and subsequently attempt to preview/publish a file with a wrong parent path.

:tada: This issue has been resolved in version 6.10.0 :tada:
The release is available on:

GitHub release
v6.10.0

Your semantic-release bot :package::rocket:


linux-rockpi-4b: load i2c7 bus by default

load i2c7 bus by default as this is the main i2c bus on the 40 pin head, physical pins 3 and 5
Closes: #26
Change-type: patch
Changelog-entry: Turn i2c7 bus on by default
Signed-off-by: Aaron Shaw<EMAIL_ADDRESS>

@balena-ci I self-certify!


add sample analysis into dashboard

New additions:

Sample analysis was added onto the dashboard.
A global helper warningBuilder was added to eliminate repetitive code used across tabs.
Ag-grid library was added and is being used in the Sample Analysis tab.

Bug fixes:
1, When gene search is performed multiple times, the select for readGroupSets keeps appending new options.

Codecov Report

Merging #44 into develop will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop      #44   +/-   ##
========================================
  Coverage    80.72%   80.72%
========================================
  Files           37       37
  Lines        14559    14559
  Branches      1437     1437
========================================
  Hits         11753    11753
  Misses        2328     2328
  Partials       478      478

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 46a0d7e...6cbc8dd. Read the comment docs.


"OAM Layer Basic Part" service execution fails for specific MWDI services due to other operation-uuid format

From MWDI issue https://github.com/openBackhaul/MicroWaveDeviceInventory/issues/959:
All paths under "OAM Layer - Basic Part" have the operation-server uuid as path parameter.
For the link and link-port service the uuids are a special case and don't follow the normal pattern, but contain "get/put/del" substrings:
# individual services:
        - operation-name: /core-model-1-4:network-control-domain=cache/link={uuid}
          uuid: mwdi-1-1-0-op-s-get-is-205, mwdi-1-1-0-op-s-put-is-205, mwdi-1-1-0-op-s-del-is-205
        - operation-name: /core-model-1-4:network-control-domain=cache/link={uuid}/link-port={localId}
          uuid: mwdi-1-1-0-op-s-get-is-206, mwdi-1-1-0-op-s-put-is-206, mwdi-1-1-0-op-s-del-is-206

I only tried to call the service to change the life-cycle-state and Postman returned an error, but I assume the same problem will occur for all those services, when using any of the above uuids:
  "code": 400,
  "message": "request.params.uuid should match pattern \"^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$\"",
  "errors": [
    {
      "path": ".params.uuid",
      "message": "should match pattern \"^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$\"",
      "errorCode": "pattern.openapi.validation"
    }
  ]
}

During discussion with SIAE, Massimo mentioned that this is a problem that needs to be fixed in the Validator.

For the following OAM-BasicPart related to operationServers ,
1. /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name
2. /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state
3. /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state
4. /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/operation-key
5. /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/operation-key

the uuid pattern in the specification is
 pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$'

This specified pattern will not accept -get, -put, -del in the following uuids
1. mwdi-1-1-0-op-s-get-is-205,
2. mwdi-1-1-0-op-s-put-is-205,
3. mwdi-1-1-0-op-s-del-is-205
4. mwdi-1-1-0-op-s-get-is-206,
5. mwdi-1-1-0-op-s-put-is-206,
6. mwdi-1-1-0-op-s-del-is-206

Proposals to resolve the OAS :
Proposal#1 :
To solve this problem ,
In the specifciation of the ApplicationPattern ,
this pattern of the operationServer's uuid in the OAMLayer shall be modified to ,
^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s(-[a-z]+)?-([bi][ms])-([0-9]{3})$

(-[a-z]+)? is an optional field that will allow both the below formats

mwdi-1-1-0-op-s-get-is-205 (MWDI specific uuid)
mwdi-1-1-0-op-s-is-205 (generic uuid)

Note : Also please check this proposed pattern from your side.
Proposal#2 :
To avoid such tight coupling , the uuid pattern in the OAM layers shall be removed because the GET/PUT httpRequest shall not get/modify the resource if they are actually not present in the configuration file.

Temporary Workaround in the server side :
To solve the problem in the existing MicroWaveDeviceInventory ,
in the server/api/openapi.yaml file
there are 5 instance of this pattern
^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$

which shall be replaced by this pattern
^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s(-[a-z]+)?-([bi][ms])-([0-9]{3})$

I'd go with proposal#2, because then we are safe in case there are other uuid format changes in the future.
However, I'm not familiar enough with how the applications work inside, so we should also get feedback from Thorsten and/or Iswaryaa.

The existing pattern: ^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$
has been replaced by ^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s(-(get|put|post|del|pat))?-([bi][ms])-([0-9]{3})$


Check if memory owner available prior to polling it

The transport may drop the memory owner during its destruction sequence

@donnadionne

Closing due to rollback, this change is integrated into #28017


INVALID_OPERATION_WITH_EXPIRED_PASSWORD

When starting the project, you get this error
Message: "The users password has expired, you must call SetPassword before attempting any other API operations"
errorCode: ""INVALID_OPERATION_WITH_EXPIRED_PASSWORD""
public executeQuery(query: string): Thenable<IQueryResult> {
    return new Promise<IQueryResult>((resolve, reject) => {
      Connection.getConn().then((conn: Connection) => {
        conn.jsforceConn.query(query, (err, res) => {
          if (err) {
            vscode.window.showErrorMessage(err);
            reject(err); // <---- HERE
          } else {
            resolve(res);
          }
        });
      });
    });
  }

I don't know why this pops up in the executeQuery function... Since I didn't call it.
We should handle this.

The password was acutally expired...

By the way we actually handle well when the user cannot login with a nice error message in vscode.
Don't know what is the deal with the expired password in executeQuery???

we should definitely implement an error class to handle our errors
thoughts ?


Expecting Client to find and Connect to Authenticator

When trying to run BLECertfication tool we find in many test cases the tool will not find and connect to our device.
On closer inspection if we run the tool using a SecureClick there is a connection. With a BLE sniffer we can see that SecureClick is sending CONNECT_IND messages to force the connection to the PC. This behaviour is allowed, but it is not the only allowed behaviour.
Our devices, and I expect many devices, sit sending undirected ADV_ID packets which can be seen, but are not detected/filtered by the tool. So we are stuck at the start of the function U2FTests() in WaitForUserPrescence().
How do we change the BLECertificationTool code to get the connection initiated by the PC?

First, where does the tool hang? Is it in WaitForDevice()?
The tool does not wait for any specific advertisement type, so any advertisement that makes it through the Windows stack should work. If it sees one, it tries to read a characteristic to trigger a connection. Windows does not allow for anything else, so this is already best effort.
I am unsure why you see connection initiation from the SecureClick but this is not something we have explicitly implemented, although I guess it is possible this is just how Nordic implemented their stack. Can you provide a full trace?

To know if your advertisement makes it through the Windows stack, put a break point in BleDeviceWinRT::OnAdvertisementReceived().

When running the tool, I see windows sending a CONNECT_REQ to the SecureClick, so it is Windows that initiates the connection?

Yeah I agree, I did look at this again quickly last week too and started to think that it might be my sniffer which is hiding some information from me, I believe you and I need to raise an issue with the maker of my sniffer. So we can close this.


[WIP] Add android demo.

The demo apk is uploaded to huggingface, the decoding method is "greedy_search", will add graph based decoding method in next PR.

I recommend that we create separate repositories for platform demos, e.g.,

k2-fsa/android-demo
k2-fsa/ios-demo
....

We can compile sherpa as a shared/static library for different platforms.
The advantage is that it keeps the sherpa repository cleaner and easier to maintain.

Probably a good idea.  We may want to consider ways of keeping them in sync, e.g. use git submodules with pinned versions.  But up to you guys about that.

Probably a good idea. We may want to consider ways of keeping them in sync, e.g. use git submodules with pinned versions. But up to you guys about that.

We can provide k2 and sherpa as prebuilt libraries, where each library has a version. A specific version of a demo
can depend on a specific version of k2 and sherpa.
k2, sherpa, and demos can evolve separately.

Another advantage I can think of is that it lowers the threshold and can encourage other people to contribute.
They don't need to set up the environment to build k2 or sherpa or other libraries required by sherpa, instead they can download them as pre-compiled libraries.
What they need to do is to focus on the demos. They can even create a demo in their own repository.
We can put a link in k2-fsa to their demo repository if they want.

I don't think we need sherpa for android / ios apps, k2 is enough,  too many dependancy makes an application complicated.  I agree to create a new  android-demo project. @csukuangfj  can you create a project for me under k2-fsa, I will move this PR there, let's merge it as soon as possible. Then some other guys can make contributions to add other fancy features.


Adding photos to new gallery doesn't work properly

When creating galleries photos are not saved properly. Only the first image is saved, the rest is forgotten after form save.
When editing, it seems that it works correctly.

Seems to have the same cause as #29.
In /galleries/gallery/add/, there are two empty photos after load. Whereas the first one has ids like id_galleryitem_set-0-*, the second one has ids like id_galleryitem_set-__prefix__-*. Removing the second field from the incoming data structure should fix the bug.

fixed by 47983b6


example_project outdated

I just tried to start the example project and there are multiple issues with that. :(

requirements.txt lists Django>=2.2 which is not compatible with the example_project
requirements.txt does not include django-embed-video and fails to start
the instructions on how to install the example_project fail to mention how to install the fixtures for posts app and thus you get an empty page
'posts' is not a registered namespace when trying to load the example page

Hey @kakulukia and thanks for reporting the issue!
Would you be interested in opening a PR that fixes the aforementioned issues?

Fixed by #179


WandbLogger add Artifact name selection and save by reference

Description & Motivation
The model artifact is currently saved as:
artifact = wandb.Artifact(name=f"model-{self.experiment.id}", type="model", metadata=metadata)

https://github.com/Lightning-AI/lightning/blob/1657ea8a39c3795e1276c491eff4f13b06a06e61/src/pytorch_lightning/loggers/wandb.py#L599
This results in obscure names such as: model-3j2t0k7n that is hard to refer back to the experiment (without looking at the lineages).
There is no current option to log the model by reference. So the model Artifact is always uploaded to WandB.
https://github.com/Lightning-AI/lightning/blob/1657ea8a39c3795e1276c491eff4f13b06a06e61/src/pytorch_lightning/loggers/wandb.py#L600
Pitch
For the naming issue, add the option to save the model by experiment name. This makes sense because there should be a 1-to-1 relationship between the experiment and the model. As long as experiment names are uniquely defined within a project, things should be okay.
artifact = wandb.Artifact(name=f"model-{self.experiment.name}", type="model", metadata=metadata)

On log by reference point, add a flag to choose to log the Artifact by reference or not.
artifact = wandb.Artifact(name=f"model-", type="model", metadata=metadata)

if log_by_reference:
    artifact.add_reference(p, name="model.ckpt")
else:
    artifact.add_file(p, name="model.ckpt")

self.experiment.log_artifact(artifact, aliases=[tag])

Alternatives
No response
Additional context
No response
cc @borda @awaelchli @morganmcg1 @borisdayma @scottire @manangoel99

Thank you for raising this @ShuAiii !  Engineer from W&B here.
We've been thinking of adding a new argument to the WandbLogger for users to be provide custom model checkpoint names.
Could you elaborate a little more on what you're thinking about the adding artifacts by reference bit? Currently the way we find model checkpoints is by using the ModelCheckpoint callback and fetching the paths from that. In my understanding adding an artifact by reference requires the URI to that file which I'm not entirely sure is what the ModelCheckpoint callback will be returning.

Ah! I didn't know PL could save directly to a S3 bucket. This can be implemented as well.
I'm getting started on this PR

@manangoel99 Awesome!


add code coverage job

there are no tests in this repo, so there'll be 0% coverage. Not to worry! that's the best time to add a coverage job. That will give you a baseline.
You'll also need to create a codecov.io account for the reporting to work (you can use your github credentials).

you can see the report here - https://github.com/danieleades/sudoku-solver-cli/pull/2
(unpopulated, due to there being no coverage)

Are there any benefits of doing this? I have never done this before


Requesting Support Information for srcset

Requesting Support Information for srcset
http://www.w3.org/html/wg/drafts/srcset/w3c-srcset/
https://www.webkit.org/blog/2910/improved-support-for-high-resolution-displays-with-the-srcset-image-attribute/

This issue was imported from Google Moderator
Moderator votes: +6
Issue added by quickredfox on 2013-09-06
To vote this issue up or down, simply include +1 or -1 in your comment.

Already added at http://caniuse.com/#feat=srcset


Teensy36

Added Teensy 3.6 platform.

What is the benefit of using a 3.6 instead of a 3.2 Teensy?
I’d suggest to keep the default at 3.2/3.1.

What is the benefit of using a 3.6 instead of a 3.2 Teensy?
I’d suggest to keep the default at 3.2/3.1.

Yes makes sense, will change to 3.1 as default like before.

Thanks 🙂


fix: [IDP-2156]: Updated an info on the harnessautoorgpicker

Harness Developer Pull Request
Updated an info on the harnessautoorgpicker
What Type of PR is This?

[ ] Issue
[ ] Feature
[x] Maintenance/Chore

If tied to an Issue, list the Issue(s) here:

Issue(s)

House Keeping
Some items to keep track of. Screen shots of changes are optional but would help the maintainers review quicker.

[x] Tested Locally
[ ] Optional Screenshot.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://65c5d89879908a7026ec4b04--harness-developer.netlify.app


v1.8 backports 2020-06-24

#11824 -- ci/helpers: Collect Hubble flow logs upon failure (@gandro)
#12218 -- fqdn: Fix panic on MarshalJSON() (@pchaigno)
#12221 -- daemon: fix panic for cilium status in IPv6 only cluster (@Rolinh)
#12222 -- bpf: support host to TCP services when host to UDP services is disabled (@bpineau)
#12220 -- bpf: skip in-cluster xlation for non-local ips (@borkmann)
#12223 -- helm/operator: fix IPv6 liveness probe address for operator (@Rolinh)
#12226 -- ci: fix gke prune script (@nebril)
#12235 -- operator: fix nodes informer (@bpineau)
#12237 -- bpf: remove write-only bool backend_from_affinity from lb{4,6}local (@tklauser)
#12243 -- Make podSubnet consistent across install guide (@jedsalazar)
#12256 -- docs: adjust policy verdict log output examples to new format (@tklauser)
#12234 -- cilium: split off handling of lb svc type in datapath (@borkmann)

Once this PR is merged, you can update the PR labels via:
$ for pr in 11824 12218 12221 12222 12220 12223 12226 12235 12237 12243 12256 12234; do contrib/backporting/set-labels.py $pr done 1.8; done

test-backport-1.8


Support Windows Unicode

This update introduces a type cfgpathchar_t which will be treated as wchar_t and use wchar_t string functions if the constant UNICODE is defined when building for Windows; char and the C standard library will be used otherwise.
The macro CFGPATHTEXT is also introduced so string constants will be prefixed with L when the constant UNICODE is defined when building for Windows.
Additionally, the usage examples display sizeof(buf)/sizeof(buf[0]) being passed in for the maxlen arguments because cfgpathchar_t is not guaranteed to have a size of 1 (it will be at least 2 if building with UNICODE defined on Windows).
Now if a path contains more than just standard ASCII, Windows will still return a usable path. Consider the configuration file path...
C:\Documents and Settings\Name\Application Data\myapp.ini
... where Name contains characters such as ò, ü, etc. As long as the user has #define UNICODE before #include "cfgpath.h", the propagated cfgpathchar_t can be used with _wfopen.
I have tested on Windows (both with and without UNICODE) and Linux to confirm everything is still working.

It looks good, except it's a bit of a pain having to redefine all the string handling functions to have cfgpath-specific variants.  That will likely make it harder to integrate in with other code, not knowing which function to call.
It's been a while since I've used these functions on Windows, but don't they automatically get replaced with wide variants if you are compiling in Unicode mode?  Taking advantage of something like that would be ideal so that strcat, printf and the other functions don't need to be treated specially.

Even when compiling in Unicode mode, the C standard library functions strcat, printf, etc. remain available for any code that needs to use the char equivalents. wchar_t is a Windows-only thing and separate from the C standard library, so unfortunately, there is no other way except for selecting the wchar_t versions of these functions while compiling. (Microsoft Docs)
The good news is, old code using plain char and "standard string literals" is still compatible with the updated cfgpath.h. The only place where old code will cause errors is when compiling for Windows in Unicode mode, and the compiler is sure to let the user know of the datatype mismatches so they know what's wrong and where.
The bad news is having to introduce an additional check in projects that are going to support Unicode Windows. Even if cfgpath.h were to always return a char datatype by running a function like wchar_to_utf8 on Unicode Windows, the programmer would still have to follow up with a utf8_to_wchar and still have to use _wfopen to actually open the configuration file in question. Defining the variables as type cfgpathchar_t and using cfgpath__x functions reduces the conversion overhead and I think it is the lesser of the two evils.
Consider this custom cfgpath__fopen as an example of supporting Unicode Windows in addition to Linux/Mac/non-Unicode Windows:
FILE *cfgpath__fopen(cfgpathchar_t *fn, cfgpathchar_t *mode) {
	#if defined(WIN32) && defined(UNICODE)
		return _wfopen(fn, mode);
	#else
		return fopen(fn, mode);
	#endif
}

void test(void) {
	FILE *fp;
	cfgpathchar_t buffer[MAX_PATH];

// write config file test
	get_user_config_file(buffer, sizeof(buffer)/sizeof(buffer[0]), CFGPATHTEXT("myapp"));
	if (buffer[0] == 0) {
		printf("get_user_config_file() fail\n");
		return;
	}
	fp = cfgpath__fopen(buffer, CFGPATHTEXT("wb"));
	if(fp==NULL) {
		cfgpath__printf(CFGPATHTEXT("fopen(%s) fail\n"), buffer);
		return;
	}
	fclose(fp);
	cfgpath__printf(CFGPATHTEXT("wrote '%s'!\n"), buffer);

// write test file in config folder
	get_user_config_folder(buffer, sizeof(buffer)/sizeof(buffer[0]), CFGPATHTEXT("myapp"));
	if (buffer[0] == 0) {
		printf("get_user_config_folder() fail\n");
		return;
	}
	cfgpath__strcat(buffer, CFGPATHTEXT("test.txt"));
	fp = cfgpath__fopen(buffer, CFGPATHTEXT("wb"));
	if(fp==NULL) {
		cfgpath__printf(CFGPATHTEXT("fopen(%s) fail\n"), buffer);
		return;
	}
	fclose(fp);
	cfgpath__printf(CFGPATHTEXT("wrote '%s'!\n"), buffer);
}

Tested both with and without #define UNICODE with success. There may be a better way to do this, but this is the best fully-portable solution I'm able to come up with for now. Let me know what you think!

Nuk510:master


Bug in timezone conversion when datetime index has duplicates?

Hello the Pandas team,
I ran this morning into some nasty bug with Pandas 18.1.
I was not able to find whether you are aware of it or not. Here it is
idx=[pd.to_datetime('2012-02-27 14:23:00') , pd.to_datetime('2012-08-27 14:33:00'), pd.to_datetime('2012-02-27 14:23:00')]
test=pd.DataFrame({'A':['one','two', 'three']},index=idx)
test['alt']=test.index.tz_localize('UTC').tz_convert('US/Eastern').tz_localize(None)

Out[9]:
                         A                 alt
2012-02-27 14:23:00    one 2012-02-27 09:23:00
2012-08-27 14:33:00    two 2012-08-27 10:33:00
2012-02-27 14:23:00  three 2012-02-27 10:23:00

where the third column is obviously wrong. What have I done wrong here? Are indices not meant to work with duplicate values?
Thanks!

there are a couple of bug fixes w.r.t. DST in 0.19.0;  this RC has been out for a week or so https://github.com/pydata/pandas/releases/tag/v0.19.0rc1
In [23]: test
Out[23]:
                         A
2012-02-27 14:23:00    one
2012-08-27 14:33:00    two
2012-02-27 14:23:00  three

In [24]: test['alt']=test.index.tz_localize('UTC').tz_convert('US/Eastern').tz_localize(None)

In [25]: test
Out[25]:
                         A                 alt
2012-02-27 14:23:00    one 2012-02-27 09:23:00
2012-08-27 14:33:00    two 2012-08-27 10:33:00
2012-02-27 14:23:00  three 2012-02-27 09:23:00

got it. my workaround is to use apply on a column timestamp (not the index). That seems to be working. Does that make sense?


Provide bound-state starting structures for hosts

The CB7 and GDCC guest input files do not have coordinates which correspond to a bound state in the host.
Per Niel:

They are close [to bound], but clearly not a plausible bound state. Jane made these files, and I don't see a way to fix this without manually setting them up or extracting conformations from the equilibrated prmtop/rst7 files.

I now have a Jupyter notebook I've prepared for SAMPL6 which can dock guests to hosts, so we should be able to re-generate these files from compound isomeric SMILES strings. It'll just take me a bit of time to get to that.

(If someone else wants to do it, and has an OEChem license, let me know and I'll just provide the notebook. We could actually put it on this repo and use it to re-generate all the guest structures if needed.)

It's worth noting that this re-generation process would also fix any issues @nhenriksen noted with bond/atom types for carboxylates and others such as amides, as in this comment: https://github.com/MobleyLab/benchmarksets/pull/47#issuecomment-323459533

@nhenriksen - in case you're interested in it, the Jupyter notebook for SAMPL6 is up here: https://github.com/MobleyLab/SAMPL6/blob/master/host_guest/GenerateInputs.ipynb
I could adapt it for these purposes (and probably will at some point).

@andrrizzi: Did you generate these for our YANK simulations? If so, could that script be used more generally here?

@jchodera - as I understand it he used a manual alignment procedure or something similar; I don't think anyone had a script for docking to these systems yet. I believe the one I just linked to above is the first one from our groups.


AssertionError: Torch not compiled with CUDA enabled

System Info
AM 5 platform: ryzen 9 7950x, RTX 4090, 64 GB RAM, Windows 11, Python 3.10.11.
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Wed_Apr_17_19:36:51_Pacific_Daylight_Time_2024
Cuda compilation tools, release 12.5, V12.5.40
Build cuda_12.5.r12.5/compiler.34177558_0

import torch
torch.cuda.is_available()
False

Reproduction
python -m bitsandbytes
Expected behavior
A successful test. Cuda is found. Gpu support present. 8-bit optimizers, 8-bit multiplication, and GPU quantization are available.
(sd3lora) venv output.txt

Hello, matthewdouglas,
After proceeding through the instructions, all worked perfectly well! Thank you!


pkg/operator: Add unit-tests for ReportQuery templating.

Currently, I need to add more test cases, clean up the code, and potentially move the test helper functions to a separate file.
These unit tests would handle the validation of a ReportQuery's templating.
Also added a check for the return of reportingutil.FullyQualifiedTableName as I was able to get the function to return ..initialized_datasource, which would result in invalid SQL (i.e. SELECT * FROM ..initialized_datasouce. This could either be moved to a function or have the function do the check to eliminate the code repetition.

/retest

/lgtm
/approve


Ensure relative filepath between xdmf and h5py file path

Done in https://github.com/tdegeus/XDMFWrite_h5py/pull/13


midisheetmusic: always bring timidity dependency

Motivation for this change
Currently after system upgrade, if midisheetmusic is got from binary cache, it shows The Timidity MIDI player is not installed error. This is because timidity is not present in nix store at user side. So add it to buildInputs to always bring that dependency.
Instead of #53813 cc @FRidh
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

To test this

Remove midisheetmusic and timidity with nix-store --delete
Install this change from cachix and ensure that timidity is installed along with midisheetmusic
sudo nix-store -r /nix/store/gzi5qjdd21a3q4b9dvd6pbh243853bhr-midisheetmusic-2.6 --option trusted-public-keys 'gnidorah.cachix.org-1:BoUbQYpEN0+l/vMirtcHnQauOyfX+WKlUJfiUdWhGmo= cache.nixos.org-1:6NCHdD59X431o0gW ypbMrAURkbJ16ZPMQFGspcDShjY=' --option trusted-substituters 'https://cache.nixos.org/ https://gnidorah.cachix.org/' --option binary-caches 'https://cache.nixos.org/ https://gnidorah.cachix.org/'

Build propagation is not for ensuring a dependency is available during run-time. If you need it during run-time, a reference needs to exist. This can exist because your project is build against it, or because you explicitly include it in a file such as a wrapper.

@FRidh Thanks for explanation! I've added timidity to wrapper instead

@grahamcofborg build midisheetmusic

@FRidh Merge please! :smiley:


PHOENIX-6073 - IndexTool IndexDisableLoggingType can't be set to NONE

Thanks for the reviews, @kadirozde and @swaroopak


Bold text are ignored from html to pdf

Hello, it seens I can't get the bold text in html files passed to the pdf. I tried different ways to get my text bold but none of the attempts were successful.
My attempts

HTML element
HTML element
CSS property   font-weight: bold;

Maybe there is a problem?

A workaround is to use something like font-weight: 700; property. I have am using it and it works pretty fine.

It didn't work for me, I read some there are some problems with phathonJS and linux...

@xpander001 did you find a workaround? Same here, and yes just upgraded OS.

+1

I have the same issue where locally (Mac) the bold text doesn't show up, but once deployed on Heroku it works as expected. Unless you plan to serve this from your mac, I wouldn't worry about it. Also, it's not this package that has the issue, it's a dependency.

My guess is that you might be using some unique fonts which don't support BOLD. I've tried using google fonts it didn't work. But if I used 'DejaVuSans' font, it worked for me. My suggestion is to use that font which supports BOLD.

@kavishatalsania See my answer above. @dpolicastro this can be closed. If you want this to be an issue, add an issue to the broken dependency.

@MarcGodard Thanks for reporting, but before deploying an app to heroku you will probably want to test it, and the best way to do this is locally. It looks like an OS fonts/PhanthomJS problem, but this issue is helping people to address the problem so I'll let it here.

For anyone still looking:
I was importing fonts from google. I added the "bold" fonts also when selecting fonts and it worked.
Posting here because I didn't find this solution anywhere else.

@sulaysumaria on MacOS?

I faced this issue on Linux machine... But you can try on MacOS also, if this solves the problem.

@sulaysumaria I didn't have any issues on linux, but I did on MacOS

@MarcGodard
Is your issue solved?

@sulaysumaria No it isn't, but as I said above, it doesn't effect production (on linux), only dev on my mac. So I don't care.

@MarcGodard

I'm still facing this issue.
Don't know what to do

Can you share your environment details..

Can you share your environment details..

I'm using a macOS 10.14.5

In my case, It's working when we are defining in CSS

Now, use  tags to make fonts bold.

I also encounter this issue (no bold text) when I run my app locally on Mac OS Mojave.

Same problem. 😞

Same here on Linux Mint.

I have the same issue with macOS Mojave v10.14.6, any updates about fix?

Maybe this helps others as well, I ended up using Puppeteer for pdf creation:
const browser = await puppeteer.launch();
const page = await browser.newPage();

await page.setContent(templateHtml);

const pdf = await page.pdf({
	format: 'A4',
	printBackground: true
});

await browser.close();

const buffer = Buffer.from(pdf);
const bufferStream = new stream.PassThrough();

bufferStream.end(buffer);

return bufferStream;

thanks @paulcayon

getting this problem on Big Sur

This works for me
  const options = {     format: 'Letter',     base:file:///${__dirname}/templates/assets/`, // load local files
}
pdf.create(docTemplate, options).toFile('./businesscard.pdf', function (err, res) {
if (err) return console.log(err);
console.log(res);
});
`
templates/assets/css/fonts.css
 @font-face {     font-family: 'Rubik';     src: url('../fonts/Rubik-Light.ttf') format('truetype');   }   @font-face {     font-family: 'Rubik';     src: url('../fonts/Rubik-SemiBold.ttf') format('truetype');     font-weight: 600;   }   @font-face {     font-family: 'Rubik';     src: url('../fonts/Rubik-Bold.ttf') format('truetype');     font-weight: bold;   }
the folder templates/assets/fonts/ have all my fonts

@sulaysumaria
I have same problem in my case its works in local but text not getting bold in production.
any updates about fixes?

@sulaysumaria
I have same issue in my case its working fine in local but not getting bold in production.
any updates about fixes?

@sulaysumaria
I have same issue in my case its working fine in local but not getting bold in production.
Even some data are getting bold like naira(Nigerian currency) symbol
any updates about fixes?


Updating Documentation

Most of these files are generated by Jazzy - the previous ones did not account for the Services.swift and Extension.swift files, but these are now included in the html docs.

Codecov Report

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

@@           Coverage Diff           @@
##           master      #24   +/-   ##
=======================================
  Coverage   74.52%   74.52%
=======================================
  Files           2        2
  Lines         318      318
=======================================
  Hits          237      237
  Misses         81       81

Flag
Coverage Δ

#CloudFoundryConfig
74.52% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Cluster-scoped API objects are not recreated

Type of question
Are you asking about community best practices, how to implement a specific feature, or about general context and help around the operator-sdk?
How to implement a specific feature
Question
What did you do?
I am trying to create an operator that watches namespaced CRs and creates cluster-scoped objects based on them.
What did you expect to see?
Creating the namespaced CR results in the cluster-scoped object being created. Deleting the namespaced CR results in the cluster-scoped object being removed. Deleting the cluster-scoped resource results in it being recreated.
What did you see instead? Under which circumstances?
Deleting the cluster-coped object does not result in it being recreated despite the namespaced CR being in place.
From what I can gather, at
err := r.client.Get(context.TODO(), request.NamespacedName, instance)
the request object is not found. The reconcile function then returns without re-queuing or recreating the cluster-scoped object.
Environment

operator-sdk version:
v0.10.0, commit: ff80b17737a6a0aade663e4827e8af3ab5a21170
Kubernetes version information:
kubernetes v1.11.0+d4cacc0
features: Basic-Auth GSSAPI Kerberos SPNEGO
Kubernetes cluster kind:
OpenShift 3.11.143

Hi @aerdei.
Unfortunately, I do not know if I understood your question very well. Following my understanding of your problem
WHAT: Objects has been not re-created by the operator
WHERE: In the cluster
WHEN: They are removed
So, have you implemented the Watches for these objects? Note that the Watches are required in order to trigger the reconcile function when so change occurs.  I'd like to suggest you check the example.
Following an explanation over how your Reconcile func will be trigged for your impl be able to re-check and re-duo all actions.
After you apply/create the CR which will trigger the reconcile it is trigged by the watches implementations and/or by the manager each X time.
Watches
By default, you will find the watches for the Primary resources already implemented by each controller that you generated by using the SDK tool as follows.
// Watch for changes to primary resource Memcached
err = c.Watch(&source.Kind{Type: &cachev1alpha1.Memcached{}}, &handler.EnqueueRequestForObject{})
if err != nil {
    return err
}

However, note that in the example has watches implemented for each secondary object controlled/created by it.
// TODO(user): Modify this to be the types you create that are owned by the primary resource
// Watch for changes to secondary resource Pods and requeue the owner Memcached
err = c.Watch(&source.Kind{Type: &appsv1.Deployment{}}, &handler.EnqueueRequestForOwner{
    IsController: true,
    OwnerType:    &cachev1alpha1.Memcached{},
})
if err != nil {
    return err
}

err = c.Watch(&source.Kind{Type: &corev1.Service{}}, &handler.EnqueueRequestForOwner{
    IsController: true,
    OwnerType:    &cachev1alpha1.Memcached{},
})
if err != nil {
    return err
}

Reconcile trigged by the manager : (main.go)
If you do not change the following code that is created when you do a new project with the SDK then the Reconcile will be trigged every 10 hours.
	// Create a new Cmd to provide shared dependencies and start components
	mgr, err := manager.New(cfg, manager.Options{
		Namespace:          namespace,
		MapperProvider:     restmapper.NewDynamicRESTMapper,
		MetricsBindAddress: fmt.Sprintf("%s:%d", metricsHost, metricsPort),
	})
	if err != nil {
		log.Error(err, "")
		os.Exit(1)
	}

Why does it happen? How do I know that?
See the Options Struct which is used to create the Manager of the operator project.
	// SyncPeriod determines the minimum frequency at which watched resources are
	// reconciled. A lower period will correct entropy more quickly, but reduce
	// responsiveness to change if there are many watched resources. Change this
	// value only if you know what you are doing. Defaults to 10 hours if unset.
	SyncPeriod *time.Duration

Please, let me know if my understanding of your question is accurate and if the info provided is enough for you to solve it otherwise could you please provide the code of your controller implementation and point us what object has been not re-created?

Hi @camilamacedo86
Thank you for your answer! Apologies if the issue was ambiguous, let me elaborate:
I am trying to write an operator that will monitor namespace-scoped CRs and create OpenShift SecurityContextConstraints based on them.
I set the controller-runtime manager to watch resources in the entire cluster in main.go:
	// Create a new Cmd to provide shared dependencies and start components
	mgr, err := manager.New(cfg, manager.Options{
		Namespace:          "",
		MapperProvider:     restmapper.NewDynamicRESTMapper,
		MetricsBindAddress: fmt.Sprintf("%s:%d", metricsHost, metricsPort),
	})
	if err != nil {
		log.Error(err, "")
		os.Exit(1)
	}

I added api/security/v1 it to the scheme:
//[...]
securityv1 "github.com/openshift/api/security/v1"
//[...]
//Add OpenShift security to scheme
	if err := securityv1.AddToScheme(mgr.GetScheme()); err != nil {
		log.Error(err, "")
		os.Exit(1)
	}
//[...]

Then I created a watch for the SCC resource:
//[...]
func add(mgr manager.Manager, r reconcile.Reconciler) error {
//[...]
err = c.Watch(&source.Kind{Type: &securityv1.SecurityContextConstraints{}}, &handler.EnqueueRequestForOwner{
		IsController: true,
		OwnerType:    &sccv1alpha1.SccOp{},
	})
	if err != nil {
		return err
	}
//[...]

In the reconcile function, the SCC is created when it is not found:
func (r *ReconcileMapRScc) Reconcile(request reconcile.Request) (reconcile.Result, error) {
	//[...]
	scc := newSCCForCR(instance)
	if err := controllerutil.SetControllerReference(instance, scc, r.scheme); err != nil {
		return reconcile.Result{}, err
	}
	found := &securityv1.SecurityContextConstraints{}
	err = r.client.Get(context.TODO(), types.NamespacedName{Name: scc.Name, Namespace: ""}, found)
	if err != nil && errors.IsNotFound(err) {
		err = r.client.Create(context.TODO(), scc)
		if err != nil {
			return reconcile.Result{}, err
		}
		return reconcile.Result{}, nil
	} else if err != nil {
		return reconcile.Result{}, err
	}

	return reconcile.Result{}, nil
}

newSCCForCR returns an SCC:
func newSCCForCR(cr *sccv1alpha1.MapRScc) *securityv1.SecurityContextConstraints {
    return &securityv1.SecurityContextConstraints{
    //[...]
    }
}

Before deploying the operator, I create the service account, cluster role binding and the CRD with scope:namespaced
When running the operator, I notice the following behaviour:
CR is created -> SCC is created
CR is deleted -> SCC is deleted
SCC is deleted -> SCC is NOT recreated - this is the issue I am trying to solve. I notice that deleting the SCC results in calling the Reconcile function, but the SCC object is not recreated. What am I missing something in my implementation?

Hi @aerdei,
It shows a problem with your code impl. Following some information which I hope will help you solve it.
Reconcile
The idea of the Reconcile is as the name says reconciling the cluster data according to the behaviours implemented in the controller of the operator project.
Check that it works as a loop and in order to clarify how it works following pseudo-code to with this purpose.
reconcile APP {

    // Check if Deployment for the app exists, if not create one
    // if has an error came back for the beginner of the loop   (return reconcile.Result{}, err)

    // Check if ConfigMap for the app exists, if not create one
    // if has an error came back for the beginner of the loop   (return reconcile.Result{}, err)

    // search for Database CR/CRD
    // if it was not created and/or is not with the status N and values Y then return to the beginner of the loop (return reconcile.Result{Requeue: true}, nil)
    ...
    // if came to here and it is the end then means that all is done successfully and we can stop the reconcile the `return reconcile.Result{}, nil`

}

IMPORTANT: Check that you are stopping the "loop/reconcile" instead of keep it going on with the return reconcile.Result{}, nil. It should be called just at the end of the loop when all conditions were checked and passed successfully since it will stop the reconcile. You can use reconcile.Result{Requeue: true}, nil) and/or do not do a return and let it still working on in order to pass at the next conditions. My guess that the problem can be at this point.
NOTE: Regards the scope note that if you are using Namespace:          "", it means that your operator project is cluster scope and will watch all namespaces.
Please, let us know if the info provided was enough for you to solve it.

Hi @camilamacedo86
Thank you for pointing out the extra return statements in my code!
However, cluster-scoped objects are still not handled properly.
I have found that hardcoding a namespace when fetching the SccOp instance, the problem is solved.
So defining
	instance := &sccv1alpha1.SccOp{}
	err := r.client.Get(context.TODO(), types.NamespacedName{Name: request.Name, Namespace: "myproject"}, instance)

Will make the operator handle both cluster-scoped and namespace-scoped objects properly. This is of course not a solution, as I am trying to monitor all namespaces.
Here's my theory, I would like to ask for your input on it:

When deleting/creating a SecurityContextConstraint (or any other cluster-scoped resource), an Event is produced that is transformed into a Request. This Request has a NamespacedName.
Reconcile is triggered with a Request containing NamespacedName. In this case, NamespacedName will not have a namespace, because the Source is a cluster-scoped object.
The operator will not be able to fetch the SccOp object, because it will look for types.NamespacedName{Name: request.Name, Namespace: request.Namespace}, where request.Namespace is ""
If I re-queue  the request, it will lead to an infinite Reconcile loop.

HI @aerdei,
I see now. However, note that the following impl to get will do the fetch of the object in the namespace "" and not all. The "" for namespace will just mean all in main.go/manager implantation. To understand it further I'd recommend you check the manager impl.
	err = r.client.Get(context.TODO(), types.NamespacedName{Name: scc.Name, Namespace: ""}, found)

If you would like to check the object in all namespaces then you can do it like the following example.
podList := &corev1.PodList{}
	listOpts := []client.ListOption{
		client.MatchingLabels(labelsForMemcached(memcachedrs.Name)),
	}
	err = r.client.List(context.TODO(), podList, listOpts...)
	if err != nil {
		reqLogger.Error(err, "Failed to list pods", "Memcached.Namespace", memcachedrs.Namespace, "Memcached.Name", memcachedrs.Name)
		return reconcile.Result{}, err
	}

Since it shows solved, I am closing this issue. However, please feel free to re-open if you see that is required.

@aerdei The problem is that cluster-scoped objects cannot be owned by namespace-scoped objects.
See the Kubernetes reference doc about owners and dependents, specifically this note:

Note: Cross-namespace owner references are disallowed by design. This means: 1) Namespace-scoped dependents can only specify owners in the same namespace, and owners that are cluster-scoped. 2) Cluster-scoped dependents can only specify cluster-scoped owners, but not namespace-scoped owners.

To accomplish similar semantics, you can apply labels or annotations to the SCCs, use a custom  MapFunc event handler that maps scc events to the correct SccOp, and a finalizer on the SCC's so that your operator can clean them up when the SccOp is deleted.
To help you with this, the SDK has operator-sdk/pkg/handler.EnqueueRequestForAnnotation

Thank you guys!

@aerdei The problem is that cluster-scoped objects cannot be owned by namespace-scoped objects.
See the Kubernetes reference doc about owners and dependents, specifically this note:

Note: Cross-namespace owner references are disallowed by design. This means: 1) Namespace-scoped dependents can only specify owners in the same namespace, and owners that are cluster-scoped. 2) Cluster-scoped dependents can only specify cluster-scoped owners, but not namespace-scoped owners.

To accomplish similar semantics, you can apply labels or annotations to the SCCs, use a custom MapFunc event handler that maps scc events to the correct SccOp, and a finalizer on the SCC's so that your operator can clean them up when the SccOp is deleted.
To help you with this, the SDK has operator-sdk/pkg/handler.EnqueueRequestForAnnotation

The link is outdated, can you please provide a some useful resource on how can we implement our custom MapFunc event handler?


fix: add liquidity example

This pr fixes the add-liquidity-example. The following changes were made:

replace the api endpoint. Some V3 pools are not part of the production api endpoint. At a further point in time we need to change it back to the production endpoint
Reduce add liquidity amount as otherwise the priceImpact calculation (swap queries) will revert with the pool used, due to revert MaxAmountInRatio
Add the chain parameter to the api query
Added chain name strings the api requires to constants. I initially tried accessing the Chain.name from https://github.com/wevm/viem/blob/main/src/types/chain.ts#L49. However, even with uppercasing them they do not perfectly match with what the api expects.

@brunoguerios - "Reduce add liquidity amount as otherwise the priceImpact calculation (swap queries) will revert with the pool used, due to revert MaxAmountInRatio" - is that a bug in priceImpact?

@brunoguerios - any further comments before this gets merged?


Fix secrets finder regex

According to regex101 there was a missing escape from the forward slash (escaping character) at: ([\w\-/~!@#$%^&*+]+)
There was also a missing | character after id_dsa which made a weird scenario: |id_dsasecret[-]?(key|token|secret)|
This should be I guess: |id_dsa|secret[-]?(key|token|secret)|

Hello,
I fixed the PR. Indeed / symbol is correct it was late night and I forgot to switch regex101 to Java.


Add a means to configure Solo's mirror node version

Feature to Enhance
The configurability of the version of the mirror node that Solo deploys.
Requested Enhancement
Add a means of configuring the version of the Mirror Node that Solo deploys. The version deployed should be configurable to be used inside of a Github workflow (set to the version that is currently being built by the workflow triggered by the PR). Also it would be beneficial to be able to configure Solo to deploy to a specific released version (for example, 0.111.0 in one test and 0.110.0 in another).
Business Need
To use Solo with Github workflows in a CI/CD pipeline, we would like to run Mirror Node acceptance tests with each build. The version of the mirror node that Solo deploys should be the version that has been built in the Github workflow. This will be needed to unblock Mirror Node issue #8513: Test acceptance tests in CI.
Additional Context
No response

Note this is possible by setting --set global.image.tag=0.110.0 via Helm on our wrapper chart.


[Core] Make core library wasm safe

cc @metajack  @bmwill
This is for tracking effort to make libra core library wasm safe, which means all crypto functions and LCS stuff could be compiled into wasm and used by JS.
so, currently,  various core library depends on following non-wasm safe rust crates,  memsec and clear_on_drop just require feature changes , and get_if_addrs and errno  dependency can be get rid of.
[patch.crates-io]
errno = { path = "./empty/errno"}
get_if_addrs = {path = "./empty/get_if_addrs"}
memsec = {path = "./empty/memsec"}
clear_on_drop = {path="./empty/clear_on_drop"}
So I created this

One instance of clear_on_drop probably comes from our old(-ish) dalek. We have an update ready to go (see below) but for reasons essentially tied to rand (a common dependency of many packages, which had recent breaking changes), needs to be updated with proptest, and more specifically, the impending, upcoming version of proptest.
See https://github.com/libra/libra/pull/2611 for a proof-of-concept on the update, which exhibits the proptest issue.


Fungible Token should have a name parameterr?

Issue To Be Solved
Usually, tokens have a name parameter along with decimals and totalSupply.
Should this be added to the interface?

We could add it to the interface, but it isn't the kind of metadata solution that we want, we'd like to have more sophisticated metadata on our token contracts, but haven't come up with the solution yet. see this issue for more context


Add JMX Sizer

The original SSH sizer module is a little difficult because it requires clean SSH access and an ssh-agent and such. It also only supports a single broker per host, and all the mount points have to be the same. We can get the same partition size information from JMX with a little more flexibility.
This module uses the jmx_port attribute that Kafka provides to connect to the broker via JMX and gather the partition sizes that way. This will support multiple brokers on a host, and it will also work regardless of what mount point is there (or if multiple mount points are provided to Kafka). In order to better support multiple sizers, the options for the sizers have been moved to a general purpose "--property" arg.
NOTE - This does not yet support JMX authentication. This is a first pass with tests to get the functionality working, and authentication will be added next.

Coverage increased (+0.007%) to 99.819% when pulling 169e0439a74c480da22d20c4a9963f2398d7c377 on toddpalino:master into 5ecee7e1fd28f214971e6fa9384c4195b9c7a6ab on linkedin:master.


chore: add info about aad-pod-identity deprecagtion

Checklist

[x] When introducing a new scaler, I agree with the scaling governance policy
[x] I have verified that my change is according to the deprecations & breaking changes policy
[x] Tests have been added
[x] Changelog has been updated and is aligned with our changelog requirements
[x] A PR is opened to update the documentation on (repo) (if applicable) https://github.com/kedacore/keda-docs/pull/1235
[x] Commits are signed with Developer Certificate of Origin (DCO - learn more)

Relates to #5035

@tomkerkhove ?

/skip-e2e


Most traits not satisfied for CustomSymbol

Documentation states:

The Symbol struct itself impls many useful traits, including Copy, Clone,
Eq, Ord, Hash, Display, Debug, Send, and Sync, allowing for a
variety of scenarios and use-cases.

CustomSymbol does derive Hash but it uses A: Alphabet in phantom data which prevents it from implementing Hash if A: Hash isn't satisfied. I believe this is a bug and instead of deriving Hash the intent is to manually implement it and hash the data field (even though PhantomData field is ignored).
The custom_alphabet which is used for DefaultAlphabet macro produces:
#[derive(Copy, Clone, PartialEq, Eq)]
pub struct #name {}

which means that the default alphabet isn't hashable, and thus Symbol (default symbol) isn't either.
Same applies to all derived traits that operate on fields - PartialEq, Eq, PartialOrd, Ord, Hash.
1-line fix is to add those to the alphabet, but I think adding custom implementations to CustomSymbol is more correct and would make it behave as expected no matter the alphabet implementation.

diff --git a/src/lib.rs b/src/lib.rs
index 7a180f1..cc69f81 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -42,7 +42,7 @@ extern crate alloc;
 use alloc::{string::String, vec::Vec};
 use core::{
     fmt::{Debug, Display, Formatter, Result},
-    marker::PhantomData,
+    marker::PhantomData, hash::Hash,
 };

 pub use smol_symbol_macros::*;
@@ -96,7 +96,7 @@ custom_alphabet!(DefaultAlphabet, abcdefghijklmnopqrstuvwxyz_);
 /// using [`custom_alphabet!`].
 ///
 /// Typically to create a [`Symbol`] or [`CustomSymbol`], you will want to use the [`s!`] macro.
-#[derive(Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
+#[derive(Copy, Clone)]
 #[repr(transparent)]
 pub struct CustomSymbol<const N: usize, A: Alphabet<N>> {
     _alphabet: PhantomData<A>,
@@ -122,6 +122,28 @@ impl<const N: usize, A: Alphabet<N>> CustomSymbol<N, A> {
     }
 }

+impl<const N: usize, A: Alphabet<N>> PartialEq for CustomSymbol<N, A> {
+    fn eq(&self, other: &Self) -> bool {
+        self.data == other.data
+    }
+}
+impl<const N: usize, A: Alphabet<N>> Eq for CustomSymbol<N, A> {}
+impl<const N: usize, A: Alphabet<N>> Hash for CustomSymbol<N, A> {
+    fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
+        self.data.hash(state);
+    }
+}
+impl<const N: usize, A: Alphabet<N>> PartialOrd for CustomSymbol<N, A> {
+    fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
+        Some(self.cmp(other))
+    }
+}
+impl<const N: usize, A: Alphabet<N>> Ord for CustomSymbol<N, A> {
+    fn cmp(&self, other: &Self) -> core::cmp::Ordering {
+        self.data.cmp(&other.data)
+    }
+}
+
 impl<const N: usize, A: Alphabet<N>> From<CustomSymbol<N, A>> for u128 {
     fn from(value: CustomSymbol<N, A>) -> Self {
         value.data


We should create custom types for things defined in the APIFunction<> methods

This is still a thought, but it's quite annoying having to define types constantly.
Given that we generate the rest APIs I was thinking we could describe them inline and vramework could create custom types for them instead.
so
const getAge = APIFunction<{ name: string }, { age: number } > = ..

should somehow do this:
type GetAgeInput(unique-suffix) = { name: string }
type GetAgeOutput(unique-suffix) = { age: number }

which would then be used for schema generation in vramework.

Done