single cell values in logfile / debugfile

HI.
I am always logging BMS data of the different BMS's I am using.
The single cell voltages are also logged, so I can see in a graph over time if one cell is faster dropping/rising.
Is there a way to get the (even the raw hex values) out of your wonderful piece of code into a /var/log/serial-starter/debug.txt ?
Thank you for your work.

Hi @dakoal
There is no such logging currently, but you can add it yourself. Logging to a log file tend to be slow and we poll the BMS data for most batteries every second so I try to keep it as light as possible.
For the battery that you are using, it's driver file will have a refresh_data(self) function. Create your own log function that you can call at the end of this function.
def log_data(self):
   # this will print to screen
   for c in range(self.cell_count):
       print ("Cell {0} voltage    {1}V".format(c, self.cells[c].voltage)

Ok, I will try. It's a daly BMS. I will see if I can handle this in memory without file operation.

It's a daly BMS.
I hope you have the Sinowealth Daly version. It has the data for each cell. The normal Daly we only use the min/max cell data that the BMS publish.
In the log file it will either say "Daly/Sinowealth BMS" or "Daly BMS" connected.

If its a Daly with Sinowealth chip then it should already print the cell voltages to the log.

If its a Daly with Sinowealth chip then it should already print the cell voltages to the log.

This one:  /data/log/dbus-serialbattery.ttyUSB0/current ?
There is nothing logged, only if an error occurs.

That is the correct log file for the USB0. You can chech which USB port your battery use in Remote Console uder your battery -> Device -> Connection

If its a Daly with Sinowealth chip then it should already print the cell voltages to the log.

I think it's not. No single cell values there. But with a selfmade script I can check them.

Here is an example from my log:
root@beaglebone:~# tail -f /data/log/dbus-serialbattery.ttyUSB0/current
@40000000614859681c9f27f4 INFO:utils:>>> INFO: current pack current: 0.000000
@40000000614859681d9c391c INFO:utils:>>> INFO: Cell 1 voltage: 3.334000 V
@40000000614859681e94ae94 INFO:utils:>>> INFO: Cell 2 voltage: 3.318000 V
@40000000614859681f9e2784 INFO:utils:>>> INFO: Cell 3 voltage: 3.334000 V
@400000006148596821386adc INFO:utils:>>> INFO: Cell 4 voltage: 3.335000 V
If the info stuff is not in there you might not have a Sinowealth BMS? What is in your log?

@dakoal the latest beta has cell logging as an option. You need to edit the utuls.py line 10 and change the loggin level from WARNING to INFO to activate it.
logger.setLevel(logging.INFO)
https://github.com/Louisvdw/dbus-serialbattery/releases/tag/v0.9beta1
https://github.com/Louisvdw/dbus-serialbattery/wiki/How-to-install
PS @SanderV4n if you want to keep the same level of logging for your Sinowealth you need to do the same.

@Louisvdw I was looking at your changes, they look good! The logging was mostly for development, so its fine to have it at a lower level.


Adding warning message in case of Sign or Build failures

Sign and Build  use resources besides those watched by module controller. In case it failed due to those resource (secret. configmaps), the fix involves updating the secrets or configmaps in the cluster. In this case KMMO won't be aware of any changes, and new jobs won't be created. This PR adds a logging message that instructs to delete the Build or Sign job in case of changes in secrets/configmaps

Codecov Report
Base: 77.65% // Head: 77.51% // Decreases project coverage by -0.15% :warning:

Coverage data is based on head (4068084) compared to base (33708ec).
Patch coverage: 16.66% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #296      +/-   ##
==========================================
- Coverage   77.65%   77.51%   -0.15%
==========================================
  Files          26       26
  Lines        2766     2771       +5
==========================================
  Hits         2148     2148
- Misses        514      519       +5
  Partials      104      104

Impacted Files
Coverage Δ

controllers/module_reconciler.go
67.25% <0.00%> (-1.21%)
:arrow_down:

internal/build/job/manager.go
79.26% <100.00%> (ø)

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

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

/lgtm
/hold
To make sure @qbarrand is happy with the changes as well.

/lgtm
/unhold


Add codecov yaml, round coverage up instead of down

I think this will help with some of the codecov precision issues we've been seeing lately. If not, we can continue to tweak.
The default codecov.io precision is 2 -- this just changes to round up instead of down when computing the codecov percentage.

@angela97lin thanks! Yep I figured it was better to be explicit about that, for once we forget that we added this 😂


Runtime error for SCIM-compliant schema (object containing $ref attribute)

A runtime error is thrown when validating a schema of a SCIM-compliant API (System for Cross-domain Identity Management, RFC 7643, 7644, 7642).
Steps to reproduce:

Download OpenAPI File for Atlassian provisioning REST API ( https://developer.atlassian.com/cloud/admin/user-provisioning/rest/intro/ ) as an example SCIM-based API definition.

Execute npx ibm-openapi-validator -r default swagger.v3.json

Observed behavior: the app unexpectedly exits with a runtime error.

IBM OpenAPI Validator (validator: 1.16.10), @Copyright IBM Corporation 2017, 2024.

Validation Results for swagger.v3.json:

[ERROR] There was a problem with spectral.
[ERROR] Error running Nimma
[ERROR] Additional error details:
[ERROR] Cause: $ref.startsWith is not a function
[ERROR] At: checkForCircularRef (@ibm-cloud\openapi-ruleset\src\functions\circular-refs.js:65:13)

SCIM Background
SCIM data model uses $ref as an attribute name that could be a confusion for OpenAPI-tools.
The OpenAPI file mentioned in reproduction step 1 contains declaration for the resource per standard with $ref attribute as follows:
  "ScimGroupMember": {
    "type": "object",
    "title": "Scim group member",
    "properties": {
      "$ref": {
        "type": "string",
        "readOnly": true
      },
      ...
    },
    "description": "SCIM group member"
  }

RFC snippet for populated SCIM-resource:
{
  "groups": [
    {
      "value": "e9e30dba-f08f-4109-8486-d5c6a331660a",
      "$ref": "../Groups/e9e30dba-f08f-4109-8486-d5c6a331660a",
      "display": "Tour Guides"
    }
  ]
}

Hi @apestov - I apologize for the delay in responding to this issue.
I've evaluated and this is indeed a validator bug. It will be resolved shortly.

:tada: This issue has been resolved in version 1.18.2 :tada:
The release is available on npm package (@latest dist-tag)
Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 1.19.2 :tada:
The release is available on npm package (@latest dist-tag)
Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 1.4.0 :tada:
The release is available on npm package (@latest dist-tag)
Your semantic-release bot :package::rocket:


Codefresh:  No space left on device

Cannot create temporary file in /tmp/: No space left on device

fixd #682


Replace merge with assign, address ember-polyfills.deprecate-merge

Getting deprecation notices from ember-spaniel in our app. This should fix it up.
Thanks!

Possible for merge/publish on this? Any questions? Thanks!

Thanks!

Thanks for the merge! Any chance of a quickie publish?

@dbashford 0.6.2 released


Stop avoiding linking to ruby when linting to avoid dynamic link errors

Problem
When developing code using rb-sys on ARM64 macOS, I've occasionally had unit tests failing with an error like
$ cargo test
   Compiling rb-sys v0.9.54
   Compiling ext v0.1.0 (/Users/dylants/Downloads/src/oxi-test/ext)
    Finished test [unoptimized + debuginfo] target(s) in 0.77s
     Running unittests src/lib.rs (target/debug/deps/ext-4c633f51b6928390)
dyld[65553]: symbol not found in flat namespace '_rb_define_module'
error: test failed, to rerun pass `--lib`

Caused by:
  process didn't exit successfully: `/Users/dylants/Downloads/src/oxi-test/target/debug/deps/ext-4c633f51b6928390` (signal: 6, SIGABRT: process abort signal)

after that, using otool -L target/debug/deps/ext-4c633f51b6928390 shows that it isn't compiled to link against libruby, which it would be after doing a cargo clean of rb-sys and packages that depend on it and retrying cargo test, which is why it isn't managing to dynamically link against ruby.
I was able to reproduce this in the oxi-test repo using VSCode with the following .vscode/settings.json and the rust-analyzer plugin installed
{
  "editor.formatOnSave": true,
  "rust-analyzer.checkOnSave.command": "clippy"
}

with the following steps:

cargo clean -p rb-sys to get into a state that requires recompilation of crates that link to ruby
Save a change in VSCode to ext/src/lib.rs trigger rust-analyzer
cargo test

which reproduces that cargo test dynamic link error I posted above.
Solution
@ianks pointed out that rb-sys skips linking when the linter is detected, so I removed the condition the conditional branch that skips linking.
Manual Testing
I tested this branch with the above reproduction steps in oxi-test using the following in the top-level Cargo.toml
[patch.crates-io]
rb-sys = { git = "https://github.com/dylanahsmith/rb-sys", branch = "fix-linking-when-linting" }

which prevented the linking error I was seeing.

Out of curiosity, does cargo:rerun-if-env-changed=RUSTC_WRAPPER fix this issue as well?

I tried adding println!("cargo:rerun-if-env-changed=RUSTC_WRAPPER"); to both the oxi-test and rb-sys build scripts but that didn't seem to fix the issue without this PR's change.

The main thing I'm trying to balance here is making sure that this change doesn't significantly degrade the performance of rust-analyzer / clippy. Don't want to slow down the time it takes to show errors in the editor, etc. Need to gather some numbers to measure the impact this change will have

We now set RUSTC_WRAPPER as an indication to rebuild, and I think this has resolved the issue, at least anecdotally. Going to close for now, but thanks again @dylanahsmith ❤


show tag values throwing ERR

Originally: https://github.com/influxdb/influxdb.com/issues/547
Is there some way I can send a trace or dump file for my database?
I'm using Influx <IP_ADDRESS>.
See the problem:
[ksengal@csdev-ksengal influxdb]$ influx
Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.
Connected to http://localhost:8086 version <IP_ADDRESS>
InfluxDB shell <IP_ADDRESS>
% show databases
name: databases
name
_internal
cs
% use cs
Using database cs
% help
Usage:
connect host:port connect to another node
auth prompt for username and password
pretty toggle pretty print
use set current databases
format set the output format: json, csv, or column
precision set the timestamp format: h,m,s,ms,u,ns
consistency set write consistency level: any, one, quorum, or all
settings output the current settings for the shell
exit quit the influx shell
show databases        show database names
show series           show series information
show measurements     show measurement information
show tag keys         show tag key information
show tag values       show tag value information

a full list of influxql commands can be found at:
https://influxdb.com/docs/v0.9/query_language/spec.html

% show series
name: fakeMeasurementName
_key fakeTagLabel1 fakeTagLabel2
fakeMeasurementName,fakeTagLabel1=fakeTagValue1,fakeTagLabel2=fakeTagValue2 fakeTagValue1 fakeTagValue2
% show tag keys
name: fakeMeasurementName
tagKey
fakeTagLabel1
fakeTagLabel2
% show tag values
ERR: error parsing query: found EOF, expected WITH at line 1, char 17 <~~ Error?
% SELECT * from fakeMeasurementName
% <~~~~ Also, this should return something :(
What are the debugging commands available to help here?
Note, the data was inserted using golang code using v2 version of golang client api (pasting it here probably would not make sense).
Here I try to grab the entire series:
[ksengal@csdev-ksengal influxdb]$ curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=cs" --data-urlencode "q=SELECT value FROM fakeMeasurementName"
{
"results": [
{}
]
}
EMPTY, yet...
[ksengal@csdev-ksengal influxdb]$ influx
Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.
Connected to http://localhost:8086 version <IP_ADDRESS>
InfluxDB shell <IP_ADDRESS>
% use cs
Using database cs
% show series
name: fakeMeasurementName
_key fakeTagLabel1 fakeTagLabel2
fakeMeasurementName,fakeTagLabel1=fakeTagValue1,fakeTagLabel2=fakeTagValue2 fakeTagValue1 fakeTagValue2
%

fixed by https://github.com/influxdb/docs.influxdata.com/commit/6d71a3b244be69d2136222da567a050580da0fbd


Interactive Viewshed

Backlog item - https://app.asana.com/0/23019535413944/23019535413977

This is implemented in 4b476419dde014acb33ffffe9e2da25141657d4b. @jrweakland will test when the other 3.0.0 issues are addressed. I will assign it to him at that time.

@jrweakland, aside from #115 and #116, does the viewshed work to your satisfaction?

#115 and #116 are fixed. I will post a new build after we fix #117.


Add example for list for API calls

Add example for request.add(‘path’, ...) when JSON response is in form of an array with objects, for example
// Set the path to find the desired data in the API response, where the
// response format is:
// [{
//     "id": "England",
//     "odd": 5
// }]
request.add("path", "0.odd");

From Andrej

Another community member had the same issue.


corpus*.yml does not load out of the box

using node v6.10.3
Note that the cat example works fine. i was playing around how to get next and interactions working to see if we can chain some responses via some notion of context. (not sure if i quite get thats the correct usage.) none the less, had some issue with loading these yaml files.
the following errors are recorded when attempting to load corpus.yml and corpus-v1.yml
Tue Dec 12 2017 11:09:57 GMT+0100 (CET)] ERROR Unable to load /Users/yveshwang/github/hubot-natural/scripts/index: TypeError: Cannot read property 'find' of undefined
    at classifyInteraction (/Users/yveshwang/github/hubot-natural/scripts/bot/index.coffee:83:46)
    at global.train (/Users/yveshwang/github/hubot-natural/scripts/bot/index.coffee:177:9)
    at module.exports (/Users/yveshwang/github/hubot-natural/scripts/bot/index.coffee:183:10)
    at Robot.loadFile (/Users/yveshwang/github/hubot-natural/node_modules/hubot/src/robot.coffee:358:11)
    at Robot.load (/Users/yveshwang/github/hubot-natural/node_modules/hubot/src/robot.coffee:377:10)
    at RocketChatBotAdapter.loadScripts (/Users/yveshwang/github/hubot-natural/node_modules/hubot/bin/hubot:97:13)
    at RocketChatBotAdapter.g (events.js:292:16)
    at emitNone (events.js:86:13)
    at RocketChatBotAdapter.emit (events.js:185:7)
    at /Users/yveshwang/github/hubot-natural/node_modules/hubot-rocketchat/src/rocketchat.coffee:212:6
    at _fulfilled (/Users/yveshwang/github/hubot-natural/node_modules/q/q.js:854:54)
    at self.promiseDispatch.done (/Users/yveshwang/github/hubot-natural/node_modules/q/q.js:883:30)
    at Promise.promise.promiseDispatch (/Users/yveshwang/github/hubot-natural/node_modules/q/q.js:816:13)
    at /Users/yveshwang/github/hubot-natural/node_modules/q/q.js:624:44
    at runSingle (/Users/yveshwang/github/hubot-natural/node_modules/q/q.js:137:13)
    at flush (/Users/yveshwang/github/hubot-natural/node_modules/q/q.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:73:7)
    at process._tickCallback (internal/process/next_tick.js:104:9)

slightly diff error for corpus-sei.yml
[Tue Dec 12 2017 11:10:07 GMT+0100 (CET)] ERROR Unable to load /Users/yveshwang/github/hubot-natural/scripts/index: TypeError: Cannot read property 'substr' of undefined
    at global.train (/Users/yveshwang/github/hubot-natural/scripts/bot/index.coffee:174:14)
    at module.exports (/Users/yveshwang/github/hubot-natural/scripts/bot/index.coffee:183:10)
    at Robot.loadFile (/Users/yveshwang/github/hubot-natural/node_modules/hubot/src/robot.coffee:358:11)
    at Robot.load (/Users/yveshwang/github/hubot-natural/node_modules/hubot/src/robot.coffee:377:10)
    at RocketChatBotAdapter.loadScripts (/Users/yveshwang/github/hubot-natural/node_modules/hubot/bin/hubot:97:13)
    at RocketChatBotAdapter.g (events.js:292:16)
    at emitNone (events.js:86:13)
    at RocketChatBotAdapter.emit (events.js:185:7)
    at /Users/yveshwang/github/hubot-natural/node_modules/hubot-rocketchat/src/rocketchat.coffee:212:6
    at _fulfilled (/Users/yveshwang/github/hubot-natural/node_modules/q/q.js:854:54)
    at self.promiseDispatch.done (/Users/yveshwang/github/hubot-natural/node_modules/q/q.js:883:30)
    at Promise.promise.promiseDispatch (/Users/yveshwang/github/hubot-natural/node_modules/q/q.js:816:13)
    at /Users/yveshwang/github/hubot-natural/node_modules/q/q.js:624:44
    at runSingle (/Users/yveshwang/github/hubot-natural/node_modules/q/q.js:137:13)
    at flush (/Users/yveshwang/github/hubot-natural/node_modules/q/q.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:73:7)
    at process._tickCallback (internal/process/next_tick.js:104:9)

fixed @yveshwang
there actually was a line calling for config that now goes by global.config.
You can try again please


Collapse seq

Implement sequence collapsing #74

Hmm, examples/ifseq.futil still fails to compile. I would've expected it to compile with this.

Hmm, examples/ifseq.futil still fails to compile. I would've expected it to compile with this.

Thanks for checking. I forgot to add main and mod

That works! Merge it.

Also, please run rustfmt src/**/*.rs to make sure all files are committed with the right formatting.


add cki-lib?

https://gitlab.com/cki-project/cki-lib has some code that uses requests, apparently beyond the very high-level api: https://github.com/python/typeshed/issues/7776

Hello !
Thanks a lot for considering enhancing cki-lib with some typing :) We're flattered !
We're trying to include typing annotations directly into the code of all the projects in the cki-project namespace. It's a bit tricky as some of those pieces run in pretty old python versions, but we're getting there.
We welcome all contributions into our projects, there are some development guidelines around here in case that's useful.

Thanks a lot for considering enhancing cki-lib with some typing :) We're flattered !

Sorry to disappoint, but that's not exactly what this issue is about :)
mypy_primer is a tool that runs mypy with two different copies of typeshed and compares the results. This is useful in typeshed pull requests: if someone makes a PR that breaks your requests.hooks code, we want to know that before we even review the PR, not a few days/weeks after the PR is merged and you make an issue to typeshed. This is what adding cki-lib to mypy_primer is all about.
For a project to be useful in mypy_primer, it just has to be a relatively big project that uses type annotations, and preferably uses some library or part of a library that other projects in mypy_primer don't. For example, mypy_primer includes one of my personal projects because no other project in mypy_primer contains tkinter code (as far as I know).

Gotta say that makes a lot more sense now :smile:
Thanks for the explanation!

Thanks Akuli, added this! inakimalerba, please feel free to let us know if you run into issues as you add more types to your code! :-)


Math block need manual breaking

Maybe its a typst limitation

Will investigate if its a limitation or an error in our side


Add data generator rake task

Jon has created a nifty data generator rake task. Should be well documented in comments.

LGTM. :+1:


chore(main): release 4.0.2

:robot: I have created a release beep boop
4.0.2 (2023-11-13)
Bug Fixes

Add 'vX.Y.Z' tag format to Docker image (#208) (552facf)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/philips-software/amp-devcontainer/releases/tag/v4.0.2 :sunflower:


New model algorithms and APIs for scope analysis

Previously we identified implicit base models of datatypes and other model children, but we only did this from the perspective of the child (the "extension"), not from the perspective of the base.  This worked fine until Matter 1.3 when the specification began relying more heavily on the "extended cluster" construct.
This commit adds the notion of a "scope" to the model.  Instead of querying a model for applicable members, you now query the scope.  The scope is aware of extensions, so this allows you to retrieve the correct set of members in contexts (such as datatype fields defined in the base cluster) where there is otherwise no explicit reference to the extension.
CHANGELOG.md contains additional details.
Fixes #1455
@Apollon77 - this one is a somewhat large and has a couple of breaking changes, up to you whether we put in a dot release

On hold for 0.12!!

We decided to bring it into 0.11


accuracy-noise-distribution

@joshua-oss: We are encountering a problem when reporting the Gaussian mechanism noise distribution. Below is an example, where the accuracy value is the same if you asked for alpha = 0.05, 0.5, etc.
import numpy as np
from opendp.smartnoise.sql import PostgresReader, PrivateReader
from opendp.smartnoise.sql.privacy import Privacy
from opendp.smartnoise.metadata import CollectionMetadata

analysis_query= "SELECT MARS, COUNT(E00200) as n FROM puf.puf GROUP BY MARS"

metadata = load_metadata()

delta = 1/ (1000 * np.sqrt(1000))
alphas = [0.05]

epsilon = 1.0

# Calculate proper epsilon given query complexity.
private_reader = PrivateReader(reader, metadata, epsilon_per_column = 1.0)
multiplier = len(private_reader.get_privacy_cost(query))
epsilon_per_column = epsilon / multiplier

# set up SmartNoise
privacy = Privacy(epsilon=epsilon_per_column, delta=delta, alphas=alphas)
private_reader = PrivateReader(reader=reader, metadata=metadata, privacy=privacy)

# run query and format results
data, accuracy = private_reader.execute_with_accuracy_df(analysis_query)

print(accuracy)
# [    total_95 mars_95
# 0  18.057352    None
# 1  18.057352    None
# 2  18.057352    None
# 3  18.057352    None]

print(data)
#    total  mars
# 0  56969     1
# 1   3304     3
# 2  16937     4
# 3  95205     2

Can you try with multiple alphas passed to the privacy object?  Here's an example:
privacy = Privacy(alphas=[0.01, 0.05], epsilon=1.0, delta=0.1)
private_reader = ... # create and pass in privacy
query = 'SELECT COUNT(age) AS n FROM PUMS.PUMS GROUP BY educ'
data, accuracy = private_reader.execute_with_accuracy_df(query)
data = pd.DataFrame(data)
acc99, acc95 = accuracy
acc99 = pd.DataFrame(acc99)
acc95 = pd.DataFrame(acc95)
print(data)
print(acc99)
print(acc95)

This output is like:
      n
0    36
1    12
2    36
3    18
4    24
5    23
...
        n_99
0   6.073829
1   6.073829
2   6.073829
3   6.073829
4   6.073829
5   6.073829
...

        n_95
0   4.621613
1   4.621613
2   4.621613
3   4.621613
4   4.621613
5   4.621613
...

Because this is a count, the noise is the same for all partitions in the GROUP BY.  However, the 99% interval is wider than the 95%.  On the other hand, for an average, such as in this query:
query = 'SELECT AVG(age) AS age FROM PUMS.PUMS GROUP BY sex'

The 99% interval is still wider than the 95%, but each partition also has slightly different error.  This is because the average is composed from a noisy sum divided by a noisy count, which causes the noise to become larger as the denominator gets smaller.
        age
0  44.213691
1  45.912723

    age_99
0  3.215660
1  3.119076

    age_95
0  2.743090
1  2.661119


flush cache before segment merge

What problem does this PR solve?
Issue Number: close #xxx
Problem Summary: cherry pick of https://github.com/pingcap/tiflash/pull/4955
What is changed and how it works?
Check List
Tests

[ ] Unit test
[ ] Integration test
[ ] Manual test (add detailed scripts or steps below)
[ ] No code

Side effects

[ ] Performance regression: Consumes more CPU
[ ] Performance regression: Consumes more Memory
[ ] Breaking backward compatibility

Documentation

[ ] Affects user behaviors
[ ] Contains syntax changes
[ ] Contains variable changes
[ ] Contains experimental features
[ ] Changes MySQL compatibility

Release note

None

/rebuild

/rebuild

/run-all-tests

/run-unit-test

/run-unit-test

/run-unit-test

/run-unit-test

/run-unit-test

/run-unit-test

unit test succeed in https://ci.pingcap.net/job/tiflash-ghpr-unit-tests/4409/console

/run-integration-test


NetworkFirewall operator doesn't support LoggingConfiguration construct

Is your feature request related to a problem?
AWS::NetworkFirewall::LoggingConfiguration construct is not supported.
Cloudformation ref
As per my understanding, there is an API which supports Update method and not Create.
Describe the solution you'd like
Add support for this as part of Create process.
Describe alternatives you've considered
N/A

/remove-lifecycle stale

@jaypipes Hey, thanks for looking into this.
Might be a dumb question, but my understanding is this feature will be worked on after a release is cut for this merged PR. Is there an ETA for the release & this feature by any chance?


new 'jupp' theme

added a new theme with some nicer colors, a timestamp prompt on the
left, return code display, host and directory (based on muse)

Sorry for the confusing commits. Tried out GitHub for Mac's merging capabilities.


Let me name my instance

Even if you can only have 1 instance of OpenShift Local, it would be nice if you could name it whatever you want (keeping the same default name as today would be fine), as you can with Podman, Kind, or Sandbox instances.
This does mean we'd need to display another field in Resources that shows what preset it is.

Resources will eventually show preset and more information regarding the instance.
however, naming it individually might not be possible.
We however do the following, and that might be related?

https://github.com/crc-org/crc/issues/3634
https://github.com/crc-org/crc/issues/3639

The name of the instance is related to the uniqueness for us to allow controlling it (it matches the name in the VMM).


Enable PROXY procotol for proxy hosts and streams

As I see not too much progress in https://github.com/NginxProxyManager/nginx-proxy-manager/pull/3537, I decided to copy most of the code and (try to) fix the tests.
In this PR I also included the code necessary to enable the PROXY protocol for Streams.
Thank you @jwklijnsma for the previous work

CI is reporting:
Integration Tests / Mysql / Hosts endpoints.Should be able to create a http host

Error Message:
data should NOT have additional properties, data should have required property 'proxy_support_enabled'

One question I do have: How should we show the user, that udp and proxy_protocol are exclusive options on a listener? Currently I just silently drop the proxy_protocol option for the UDP listener, but I am unsure that this is a good implementation.
I imagine that we could also disable the UDP button, when "Enable Proxy Protocol" is pressed.

As I see not too much progress in #3537, I decided to copy most of the code and (try to) fix the tests. In this PR I also included the code necessary to enable the PROXY protocol for Streams.
Thank you @jwklijnsma for the previous work

The plan was to fix the test next week

what needs be done for mr @jc21

Any update on this?

Any latest news about proxy_protocol?

@jc21 would you be able to merge this PR when I resolve all the conflicts?

tbh, might be easier to start again from the current develop branch. I will close this PR and open a new one once I am done with the re-implementation.


Vibrato effect does not work

I suspect these never worked. We'll need to fix them at some point.

Fixed in 32ffb6f7005d51322fe476475af2a35428ebe4b0


Libssl error

Seems like the issue is related with the prisma client to resolve

Go to the prisma file and check the database url of correct
Trying removing the env part and manually enter the url to the prisma file (most cases this is what happens since u are running on replit)
And I see many of the times replit has its own env system so try replacing the .env to replits env


Dictionary of common errors

Ideally our errors should make sense. But sometimes that’s hard to figure out. Perhaps also have a dictionary or glossary of common errors and how to solve.

A section here would be a great start: https://github.com/jmorganca/ollama/blob/main/docs/faq.md and we can link to this from the README.md


TerminalChatController mutates disposed disposable store on window reload

It happoens on window reload, might not be a big deal but it means there is a potential leak with how the code is written.

Fixed up a double dispose that looks like this on Thursday: https://github.com/microsoft/vscode/pull/207078 so this is likely fixed, ping me if you see it again.


[R] Vote for Memory Layout

I just noticed this, and I think we might want to change. Currently python and C++ use row major ordering while Julia/R use column major ordering. In current R package, the behavior is doing col/row order conversion when going from R's native array to internal one, and vise versa.
In Julia pkg  @pluskid used a another convention Which seems to be more natural. So shape is reversed, while the other things do not change.
I like to call for a vote between the R core devs, @thirdwing @hetong007 . Others are welcomed to participate. Whether we want to make R pkg follow the Julia way. So the memory layout of image is
(width, height, channel, num), and memory layout of normal input examples (num_feature, num_inst) by default
Options:

Do col/row major conversion. So a c++ array (num, channel, height, width) remains (num, channel, height, width) in R

This is the current way in R. This keeps arrays consistent, but layout not "native"

Do not do row/col major conversion a c++ array (num, channel, height, width) becomes  (width, height, channel, num)

This is the current way in Mocha.jl
This layout might be more natural for R users, as R's images are loaded in this layout normally.

For reference Mocha.jl also used (with, height, channel, num) layout.
This may also mean for all the shape related parameters, like stride, kernel size, should also follow a (width, height) convention, and we need to do conversion when pass things into the backend.

+1, reserving the shape seems more nature.

@mli  Your vote is confusing, let me list the options

@mli Plase vote which option you like

+1 for 2. a typo: reserving -> reversing

I vote for 2 to not confuse other R users.

i'm not a R user, but i'm thinking in the column major when using matlab. i'll probably switch to julia later, mxnet.jl quite makes sense for me

Though not R dev, I vote for 2. It is more natural for R/Julia (and potentially matlab) users to think in that way. And it cause less confusion when working with language's native Array types.
There is caveat though: the API needs to be careful when passing parameters back to libmxnet. Currently what MXNet.jl does is to assume all parameters of type Tuple{N,Int} should be shape, and it gets reversed before dumping into string (primarily when constructing new Symbol or DataIter). The assumption is definitely not true but at least up to now seems valid. If we are to adopt this convention for both R and Julia binding, we might need to extend the underlying libmxnet API a bit to at least allow the frontend to know which parameter corresponds to a shape parameter that should be reversed.

As far as I know, very very few people are using R for image processing. I will switch to other tools for images.
Actually no traditional or natural way in R for this problem. Keeping consistent with other tools will be a better solution.

Here are some potential problem in doing 2(which we need to address),

The json format did not involve shape conversion, this means interpretation json shape should be reverse in native bindings.
The code for building symbols will not be directly copy-pastable between python and R/julia with non rectangle shapes (this is a less problem)

One remaining question for you guys, when doing simple MLP training, is it natural to use
features x examples in R/Julia as opposed to examples x features?

Since going column major means we adopt nfeature x nexamples in the input layout. We can still potentially do a conversion manually though.

@tqchen I prefer feature x examples in Julia. This is just a personal preference. I think for matrices, it is not really a problem. But when each data point has higher order dimension, it could get quite confusing if one is not following the native convention in the language. For example, for MNIST batch tensor, shape (28,28,1,100) clearly makes sense in Julia because each data point (28,28,1,1) is a continuous piece of memory.

if doing doing sgd, most people (should) use the format features x example (in matlab). but i need to say, in most cases, example x feature is the default way...

Also if we want to support HDF5 (supported by Caffe, Torch, Mocha.jl, pylearn2, etc, and with standard libraries to read/write from Matlab,numpy,Julia,etc.), the basic data types in HDF5 are general tensors, the same file when loading from Python and Julia, will reads to "reversed" shape, for the same reason.

It is clear we will go for option 2, (use the default memory layout).
The question remains whether support example x feature vs feature x example in simple MLP case. I think we are fine as long as we are consistent. Most classifier packages seems still follows example x features because this is what will be loaded from csv file. So maybe we need to do a bit smart conversion for such case.

We could detect which dimension is samples by looking at the labels. But that would fail for some special cases, e.g. when multi-dimension regression and Y has the same number of dimensions as the input. Maybe "a clear documentation and a warning when detected that the user might be supplying the transpose of X" is better than trying to figure out automatically all the situations?

Yes, I agree for a warning solution

Fixed by #333
For auto detect layout, here is the proposed approach in #339
Add a parameter array.layout(default to auto) to fit and predict. Auto mode will try to detect layout when input is a matrix. If there is ambiguity(square input matrix, which can be rare), ask user to explicitly specify this parameter.
This can benefit potential data science user who are used to put data into a classifier in row major, as read from csv

I was looking at saving and loading JSON interface today. Since the JSON encoding and decoding is completely handled in the libmxnet backend, it seems there is no need to reverse the shape, and the saved json should be able to load correctly from any language binding. However, this also means that the users are discouraged to manually edit the JSON file unless he knows what he is doing.

Yes, that is what I mean, if user need to implement a visualization of nets in the native side, he need to remember to reverse the shape


Optional adduser() method for auth plug-ins is only partly optional

Your Environment

verdaccio version: 5.23.2
node version : v18.15.0
package manager: 9.5.0
os: Linux
platform: npm

Describe the bug
I've been writing a basic plug-in for a Verdaccio server I'm working on using the API described here. The interface and documentation suggests that it is optional, and while Verdaccio does run without it, npm login will always fail.
To Reproduce
Create a simple plug-in that doesn't have an adduser() function:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

const createError = require('http-errors');
const commonsApi = require('@verdaccio/commons-api')

/**
 * Editor custom authentication plug-in
 */
class AuthCustomPlugin {
	constructor(config, options) {
		this.logger = options.logger;

		return this;
	}

	authenticate(user, password, cb) {
		cb(null, []);
	}

	allow_access(user, pkg, cb) {
		cb(null, true);
	}

	allow_publish(user, pkg, cb) {
		cb(null, true);
	}

	allow_unpublish(user, pkg, cb) {
		cb(null, true);
	}
}
exports.default = AuthCustomPlugin;

Run Verdaccio with this plug-in and attempt npm login for an existing user.  This results in:
npm ERR! code E409
npm ERR! 409 Conflict - PUT https://..../-/user/org.couchdb.user:allan/-rev/undefined - username is already registered

npm ERR! A complete log of this run can be found in: /....npm/_logs/2023-04-14T14_40_06_339Z-debug-0.log

The console output from Verdaccio is:
0|verdaccio  | info <-- <IP_ADDRESS> requested 'POST /-/v1/login'
0|verdaccio  | http <-- 200, user: null(.... via <IP_ADDRESS>), req: 'POST /-/v1/login', bytes: 22/0
0|verdaccio  | http <-- 404, user: null(.... via <IP_ADDRESS>), req: 'POST /-/v1/login', bytes: 22/150
0|verdaccio  | info <-- <IP_ADDRESS> requested 'PUT /-/user/org.couchdb.user:allan'
0|verdaccio  | http <-- 200, user: null(.... via <IP_ADDRESS>), req: 'PUT /-/user/org.couchdb.user:allan', bytes: 143/0
0|verdaccio  | warn --- the plugin method add_user in the auth plugin is deprecated and will be removed in next major release, notify to the plugin author
0|verdaccio  | error--- the user allan could not being added. Error: username is already registered
0|verdaccio  | http <-- 409, user: null(.... via <IP_ADDRESS>), req: 'PUT /-/user/org.couchdb.user:allan', error: username is already registered
0|verdaccio  | info <-- <IP_ADDRESS> requested 'GET /-/user/org.couchdb.user:allan?write=true'
0|verdaccio  | http <-- 200, user: null(.... via <IP_ADDRESS>), req: 'GET /-/user/org.couchdb.user:allan?write=true', bytes: 0/0
0|verdaccio  | http <-- 304, user: null(.... via <IP_ADDRESS>), req: 'GET /-/user/org.couchdb.user:allan?write=true', bytes: 0/0
0|verdaccio  | info <-- <IP_ADDRESS> requested 'PUT /-/user/org.couchdb.user:allan/-rev/undefined'
0|verdaccio  | http <-- 200, user: null(.... via <IP_ADDRESS>), req: 'PUT /-/user/org.couchdb.user:allan/-rev/undefined', bytes: 187/0
0|verdaccio  | warn --- the plugin method add_user in the auth plugin is deprecated and will be removed in next major release, notify to the plugin author
0|verdaccio  | error--- the user allan could not being added. Error: username is already registered
0|verdaccio  | http <-- 409, user: null(.... via <IP_ADDRESS>), req: 'PUT /-/user/org.couchdb.user:allan/-rev/undefined', error: username is already registered

If you now add the following function to the plug-in:
        adduser(user, pass, cb) {
                cb(null, true);
        }

Then you can login successfully.
Related: I'd been looking at this issue before discovering that adduser() is required to allow existing users to login.
I'm not sure what the right fix it - either to make it a required method, or to allow adduser to pass for the plug-in if it wasn't defined (could anyone be depending on this behaviour?!).

Linking to #943 in case anyone else has a custom auth plugin and is receiving the same E409 error; thanks @AllanJard !


dumb terminal when using docker exec

OS: Ubuntu 14.04, kernel 3.13.0-37-generic
Using Docker 1.3
When you run a container with bash command and do echo $TERM the output is xterm. However, if you are using docker exec -i -t bash on a running container and do the same command, the output is dumb. This gives "terminal is not fully functional" warning messages when running commands.
I cannot reproduce this very time. Still working on exact steps to reproduce.

When using docker exec if you get:

WARNING: terminal is not fully functional

One solution to to run:
export TERM=xterm

(does not survive restarts)

@jfrazelle perhaps this issue should be locked so that the discussion can continue on https://github.com/docker/docker/issues/9299 which isn't closed and (if I see it correctly) a dup of this one?

This worked for me:
docker exec -it $container /bin/bash -c "export TERM=xterm; exec bash"

Solved this by running
echo "export TERM=xterm" >> /etc/bash.bashrc
in my Dockerfile when building my container.

I think the best solution is
echo "export TERM=xterm" >> /root/.bashrc

All these solutions have hardcoded "xterm" in them.
For a more generic solution, how about:
docker exec -it $container bash -c "TERM=$TERM exec bash"

We just merged a pull-request that automatically sets TERM if docker exec is started with a tty (-t) https://github.com/docker/docker/pull/26461
This change will go into the next release (1.13)


bucket docs: fix "thanos downsample" remnant

and follow formatting of the other bucket commands

cc: @GiedriusS

Thanks for your contribution. The update looks good. Could you please sign the DCO? https://github.com/thanos-io/thanos/pull/2409/checks?check_run_id=576448603


Publish to npm

Could you please publish this to npm? So I can incorporate this into bs-containers. Thanks!

Done: https://www.npmjs.com/package/bs-jest

:+1: Thanks!


iOS - Ticketing - App crashes when no certificate is selected or none is displayed and NEXT button is pressed

iOS Wallet App <IP_ADDRESS> (2)
iPad 11 Pro
When scanning booking QR Code I go through the process:

scan QR Code

select environment (acc or tst)
-> both works fine

select certificate
-> no certificate is shown, but the NEXT button is possible to press and after that the app closes (or crashes)

expected behaviour:
When no certificate is shown or none is selected the NEXT button should be disabled or not shown or a hint should be displayed that no certificate for the user can be found or isn't selected and the app should not crash.
(In Android there is no NEXT button visible in this case)

fixed in wallet <IP_ADDRESS> (4)


Ensure element exists when removing css classes

This will fixes the  Cannot read property 'className' of null errors.

tested?

work on my machine :)


Always active_usernames contains editable_username?

Does active_usernames of the supergroup always contain editable_username if editable_username is not empty?

Yes.


HackThis updates

Adding HackThis to the HackIllinois page.
HackThis website archives left commented until event is complete.
HackIllinois logo may need to be updated.

We should probably stick to using the single event template instead of adding a new template specifically for HackIllinois / HackThis. You could either make HackThis it's own page and populate the event template with data for just HackThis on that page. Alternatively you could make the event template take in a slice of events and then in the template you can iterate over the events in the slice to generate the content.

that makes sense, but I was wondering how would I handle specific cases like if HackThis doesn't need its own logo because it shares one with HackIllinois? so it's template it slightly different than the events template

You can wrap the block that generates the logo html in an if statement using go's html templating language.

Separate page for HackThis.
Logo may need to be updated.


Target-based IntelliSense

When multiple targets include the same file (say public library header), they may #define different variables which will change the active part of the header.
There must be an option to view files based on a selected target. This is not only about #defines, but also include paths, etc. One target may include path with "foo.h", but the other may not include that path. So based on a selected target, it should show squiggles accordingly.

This use case is probably unsupportable with the current infrastructure. The compilation flags associated with a header come from the target to which that header is attached, and CMake has no to represent a file being attached to more than one target.

This issue is pretty much a deal-breaker for me using the CMake Tools extension, sad to say (because otherwise I think the extension does a really good job integrating build systems with VSCode!)  Unfortunately, in C it's common to use macros to vary the compilation context for the same header file depending on who is including it and/or for what reason.
A classic example is the pattern in Windows for controlling whether the entrypoint functions in a loadable module are being imported or exported:
#if COMPILING_DLL
    #define DLLEXPORT __declspec(dllexport)
#else
    #define DLLEXPORT __declspec(dllimport)
#endif

Now if there was a way to set the compilation context, even if it's just as crude as what Visual Studio does (lets you select a target when viewing a header file), I think this would solve the problem for the majority of users who run into this issue.

A classic example is the pattern in Windows for controlling whether the entrypoint functions in a loadable module are being imported or exported

Thanks for the example, this is exactly what I'm talking about.

even if it's just as crude as what Visual Studio does (lets you select a target when viewing a header file)

Crude? Do you have a better idea how it potentially could be done? As far as I know, QtCreator does it the same way.

By "crude" I mean you can only select a target.  A more fine context selection would be to pick a specific compilation unit (e.g. a single .c or .cpp file being compiled), because although it's perhaps not best practice, you could have different compile definitions given on the command line when compiling each source file.  Also, each source file may include a different set of headers, or include headers in a different order, resulting in all sorts of fun problems.

Compilation unit-based context selection for headers is something cpptools should consider supporting.  I think this would also solve some of the existing problems around having to "guess" which .cpp file to assign a given header to.  I will copy this issue into the cpptools repo.


Different error code and error message should be raised when AuthenticationFailed on TokenObtainPairView.

I have noticed when user login credentials fails on TokenObtainPairView, it still returns the same 401 error which is same when the Token is invalid. I think this is to do how the exceptions are handled with  serializer.is_valid(raise_exception=True). I have fixed this for my code but I thought this simple change could benefit others too, if you want I can fix it myself and commit. Here is my simple solution:

class TokenObtainPairView(TokenViewBase):
    """
    Takes a set of user credentials and returns an access and refresh JSON web
    token pair to prove the authentication of those credentials.
    """
    serializer_class = TokenObtainPairSerializer

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        try:
            serializer.is_valid(raise_exception=True)
        except when as e:
            raise InvalidUser(e.args[0])
        except TokenError as e:
            raise InvalidToken(e.args[0])

        return Response(serializer.validated_data, status=status.HTTP_200_OK)

class InvalidUser(AuthenticationFailed):
    status_code = status.HTTP_406_NOT_ACCEPTABLE
    default_detail = ("Credentials is invalid or didn't match")
    default_code = 'user_credentials_not_valid'

Hey Danial,
Thanks for sharing the fix. Can you please let me know which file we need to modify for raising different error codes? I am trying to raise an error code when the user is inactive. Right now simple jwt gives a generic message "No active account found with the given credentials"
Thanks

There must be Exception of **Invalid Token** whenever user trying with the wrong token or with the Expired token.

the default Exception is very annoying it says
sequence item 0: expected str instance, dict found,
it is better, if it will return the Response or validation error for invalid Token

Hey Danial,
Thanks for sharing the fix. Can you please let me know which file we need to modify for raising different error codes? I am trying to raise an error code when the user is inactive. Right now simple jwt gives a generic message "No active account found with the given credentials"
Thanks

@alphacentauridigital If I'm not wrong, simple_jwt already checks if the user is active. There is a default function which you can override as this is added to simple_jwt after Django 1.10. the function need to return a True or False and you can check other things if you wish to override it:
def default_user_authentication_rule(user):
    # Prior to Django 1.10, inactive users could be authenticated with the
    # default `ModelBackend`.  As of Django 1.10, the `ModelBackend`
    # prevents inactive users from authenticating.  App designers can still
    # allow inactive users to authenticate by opting for the new
    # `AllowAllUsersModelBackend`.  However, we explicitly prevent inactive
    # users from authenticating to enforce a reasonable policy and provide
    # sensible backwards compatibility with older Django versions.
    return True if user is not None and user.is_active else False

If you wish to override it, you need to reference it in your settings under simple_jwt settings (below is the default and how it is referenced:
'USER_AUTHENTICATION_RULE': 'rest_framework_simplejwt.authentication.default_user_authentication_rule',

If you need more help let me know.

There must be Exception of **Invalid Token** whenever user trying with the wrong token or with the Expired token.

@deepanshu-nickelfox Yes, there is **Invalid Token** token exception, but In order to handle the error correctly for the user you need to show the relevant error. It could be scenarios where the user credentials are correct but the token is invalidated perhaps by blocking the users and etc and I think showing the relevant error is necessary. Perhaps we need show if the user is inActive too, rather than simply raise an **Invalid Token** exception.

how can i override and show *Invalid Token*, can you share me any code snippet?

@deepanshu-nickelfox Here is my solution for the issue I mentioned above.
from rest_framework.exceptions import AuthenticationFailed
from rest_framework_simplejwt.views import TokenViewBase
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
from rest_framework_simplejwt.exceptions import InvalidToken, TokenError

class InvalidUser(AuthenticationFailed):
    status_code = status.HTTP_406_NOT_ACCEPTABLE
    default_detail = ('Credentials is invalid or expired')
    default_code = 'user_credentials_not_valid'

class CustomTokenObtainPairView(TokenViewBase):
    """
    Takes a set of user credentials and returns an access and refresh JSON web
    token pair to prove the authentication of those credentials.
    """
    serializer_class = TokenObtainPairSerializer

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        try:
            serializer.is_valid(raise_exception=True)
        except AuthenticationFailed as e:
            raise InvalidUser(e.args[0])
        except TokenError as e:
            raise InvalidToken(e.args[0])

        return Response(serializer.validated_data, status=status.HTTP_200_OK)

Hope the above helps you.

Thanks, Danial,
I am using the default authentication class from simple JWT.
'DEFAULT_AUTHENTICATION_CLASSES': [         'rest_framework_simplejwt.authentication.JWTAuthentication',     ]
Still, I was getting the same error code. So I used your code and did checks on whether the user is not active.
`class MyTokenObtainPairView(TokenObtainPairView):
serializer_class = MyTokenObtainPairSerializer
def post(self, request, *args, **kwargs):
    req_data = request.data.copy()
    try:
        current_user = User.objects.get(username=req_data['email'])
    except User.DoesNotExist:
        raise AuthenticationFailed('account_doesnt_exist')
    if current_user is not None:
        if not current_user.is_active:
            #raise AuthenticationFailed('account_not_active')
            raise InactiveUser('account_not_active')
        else:
            pass
    serializer = self.get_serializer(data=request.data)
    try:
        serializer.is_valid(raise_exception=True)
    except Exception as e:
        print(e)
        raise InvalidUser(e.args[0])
    except TokenError as e:
        print(e)
        raise InvalidToken(e.args[0])
    return Response(serializer.validated_data, status=status.HTTP_200_OK)

class InvalidUser(AuthenticationFailed):
status_code = status.HTTP_406_NOT_ACCEPTABLE
default_detail = ("Credentials is invalid or didn't match")
default_code = 'user_credentials_not_valid'
class InactiveUser(AuthenticationFailed):
status_code = status.HTTP_406_NOT_ACCEPTABLE
default_detail = ("Credentials is invalid or didn't match")
default_code = 'user_inactive'`

Thank you so much Guys for your Help
@danialbagheri @alphacentauridigital
you guys are awesome :fire:

Dear @alphacentauridigital
Sorry I didn't understood your issue correctly last time. I just read your first message again and it seems that you want to change the error code not the message when the user is inactive, to do so you would have to make this change some another how. I think you will have to override the serializer rather than the view.before doing so you would have to also return True for default_user_authentication_rule method when the user is inactive so that the parent class TokenObtainSerializer doesn't return that error and you handle it yourself. once you customised the serializers you would have to use the new serializer in your view (below code is just an example and I have not tested it):
## serializers.py
from rest_framework_simplejwt.serializers import TokenObtainSerializer
from rest_framework_simplejwt.exceptions import AuthenticationFailed
from rest_framework import status

class InActiveUser(AuthenticationFailed):
          status_code = status.HTTP_406_NOT_ACCEPTABLE
          default_detail = ("User is not active, please confirm your email")
          default_code = 'user_is_inactive'

class CustomTokenObtainPairSerializer(TokenObtainSerializer):

    @classmethod
    def get_token(cls, user):
        return RefreshToken.for_user(user)

    def validate(self, attrs):
        data = super().validate(attrs)
        if not self.user.active:
                raise InActiveUser()

        refresh = self.get_token(self.user)

        data['refresh'] = str(refresh)
        data['access'] = str(refresh.access_token)

        if api_settings.UPDATE_LAST_LOGIN:
            update_last_login(None, self.user)

        return data

hope the above works. I recommend you to read the source code and you will be able to understand it a lot better.

Hello Danial,
Yes. I wanted to override the error code for the Inactive user. So that frontend has better communication with the backend in case of inactive users trying to login. Thanks for the updated code.

@danialbagheri Is there any URL to override after adding the code for the view?

@anoited007 Hello, You have to put the Danial's code in serializers.py and add the following lines inside urlpatterns array in urls.py
path('v1/token/', MyTokenObtainPairView.as_view(serializer_class=MyTokenObtainPairSerializer), name='token_obtain_pair'),
path('v1/token/refresh/', jwt_views.TokenRefreshView.as_view(), name='token_refresh'),

Okay. I will give it a try. Thanks for the help @alphacentauridigital

I managed to get it to work. Thanks, @danialbagheri and @alphacentauridigital for the help.
I will put everything in one so that in case someone needs to see the full picture.
# custom_serializers.py
from django.contrib.auth.models import update_last_login
from rest_framework_simplejwt.serializers import TokenObtainSerializer
from rest_framework_simplejwt.exceptions import AuthenticationFailed
from rest_framework import status
from rest_framework_simplejwt.settings import api_settings
from rest_framework_simplejwt.tokens import RefreshToken

class InActiveUser(AuthenticationFailed):
    status_code = status.HTTP_406_NOT_ACCEPTABLE
    default_detail = "User is not active, please confirm your email"
    default_code = 'user_is_inactive'

# noinspection PyAbstractClass
class CustomTokenObtainPairSerializer(TokenObtainSerializer):

    @classmethod
    def get_token(cls, user):
        return RefreshToken.for_user(user)

    def validate(self, attrs):
        data = super().validate(attrs)
        if not self.user.is_active:
            raise InActiveUser()

        refresh = self.get_token(self.user)

        data['refresh'] = str(refresh)
        data['access'] = str(refresh.access_token)

        if api_settings.UPDATE_LAST_LOGIN:
            update_last_login(None, self.user)

        return data

# custom_authentication.py
def custom_user_authentication_rule(user):
    """
    Override the default user authentication rule for Simple JWT Token to return true if there is a user and let
    serializer check whether user is active or not to return an appropriate error
    :param user: user to be authenticated
    :return: True if user is not None
    """

    return True if user is not None else False

# views.py
from .custom_serializer import CustomTokenObtainPairSerializer, InActiveUser
from rest_framework.response import Response
from rest_framework_simplejwt.exceptions import AuthenticationFailed, InvalidToken, TokenError
from rest_framework_simplejwt.views import TokenViewBase

class CustomTokenObtainPairView(TokenViewBase):
    """
    Takes a set of user credentials and returns an access and refresh JSON web
    token pair to prove the authentication of those credentials.

    Returns HTTP 406 when user is inactive and HTTP 401 when login credentials are invalid.
    """
    serializer_class = CustomTokenObtainPairSerializer

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        try:
            serializer.is_valid(raise_exception=True)
        except AuthenticationFailed:
            raise InActiveUser()
        except TokenError:
            raise InvalidToken()

        return Response(serializer.validated_data, status=status.HTTP_200_OK)

# urls.py
 path('api/token/', CustomTokenObtainPairView.as_view(),
         name='token_obtain_pair'),
 path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
 path('api/token/verify/', TokenVerifyView.as_view(), name='token_verify'),

Thank you very much @danialbagheri and @alphacentauridigital

@danialbagheri and @alphacentauridigital I tried your solutions but for me, it is not working. Maybe I did some mistake. I had the same problem, I want a different error code to be raised for inactive accounts. Below are the codes
custom serializer
class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):
    @classmethod
    def get_token(cls, user):
        print(f'\nCustomTokenObtainPairSerializer get_token function called\n')

        token = super().get_token(user)

        # Add custom claims
        token['is_active'] = user.is_active
        token['is_teacher'] = user.is_teacher
        token['is_student'] = user.is_student
        token['is_superuser'] = user.is_superuser
        token['is_staff'] = user.is_staff

        return token

    def validate(self, attrs):
        print(f'\nCustomTokenObtainPairSerializer validate function called\n')
        print(f'\nattrs {attrs}\n')
        try:
            data = super().validate(attrs)
            print(f"\ndata recieved {data}\n")
        except Exception as e:
            print(f'\nthis is the exception in the serializer {e}')

        if not self.user.is_active:
            print(f'\nCustomTokenObtainPairSerializer if not self.user.is_active function called\n')
            raise InActiveUser()
        token = self.get_token(self.user)

        data['refresh'] = str(token)
        data['access'] = str(token.access_token)

        if api_settings.UPDATE_LAST_LOGIN:
            update_last_login(None, self.user)

        return data

custom view
class CustomTokenObtainPairView(TokenViewBase):
    serializer_class = CustomTokenObtainPairSerializer

    def post(self, request, *args, **kwargs):
        print(f'\nCustomTokenObtainPairView is being called\n')
        print(f'\nCustomTokenObtainPairView request data {request.data}\n')
        serializer = self.get_serializer(data=request.data)
        try:
            serializer.is_valid(raise_exception=True)
            return Response(serializer.validated_data, status=status.HTTP_200_OK)
        except AuthenticationFailed as e:
            print(f'is active exception raised {e}')
            raise InActiveUser()

        except TokenError:
            print(f'is active exception raised {e}')
            raise InvalidToken()
        except Exception as e:
            print(f'\nCustomTokenObtainPairView this is the general exception being recieved {e}\n')

        return Response(status=500)

custom_authentication.py
def custom_user_authentication_rule(user):

    print(f'custom authentication has been applied')
    print(f'custom authentication rule has been applied for {user}')

    return True if user is not None else False

simple jwt settings in setting.py
SIMPLE_JWT = {

    'USER_ID_CLAIM': 'user_id',
    'USER_AUTHENTICATION_RULE': 'account.custom_authentication.custom_user_authentication_rule',

}

Please help me and correct me wherever I am wrong. I am beginner in DRF.

@rickbhatt  Have you defined InActiveUser Class?
class InActiveUser(AuthenticationFailed):
    status_code = status.HTTP_406_NOT_ACCEPTABLE
    default_detail = "User is not active, please confirm your email"
    default_code = 'user_is_inactive'

Oh yes Sorry I forgot to put it here, But I have defined this class same as you did

@rickbhatt  Is CustomTokenObtainPairView being called?  Can you please elaborate if you are getting errors or you are getting default error message from Simple JWT

@alphacentauridigital   Yes, CustomTokenObtainPairView is being called. I am still getting the default error of 401  "unauthorised"  for accounts whose is_active=False.

@alphacentauridigital What I understood after writing some print statements and using try and except around
data = super().validate(attrs)

is that this validation is itself throwing the "No active account found with the given credentials" for an inactive account, hence stopping the rest of the function to execute and stopping the manual handling of this error. I do not understand why this is happening. Please help me get these codes working to get a different error code for in active account

For a quick fix, right now you can do this. Validate after checking whether the user is active or not.
if not self.user.is_active:
    raise InActiveUser()
data = super().validate(attrs)

I am getting this error now
 if not self.user.is_active:
AttributeError: 'CustomTokenObtainPairSerializer' object has no attribute 'user'

Try to do it manually by getting the user and verifying whether the user exists or is inactive before calling data = super().validate(attrs) . You can get an email/username from the POST data and get the user and check whether a user exists or is inactive.

@alphacentauridigital thank you. For the time being I found a way to get a different detail about the inactive  account. I have stated the ans here.
https://stackoverflow.com/a/72133625/16425029


CI workflow on Windows is missing

As @eduar-hte added the Windows support in #321, we need to add a task to our pipeline on Windows too, after the #3132 PR will be merged.

Closed as completed through #321.


Cake Pay Web: Some products unavailable temporarily

Some products are unavailable temporarily. We are working on restoring full service ASAP. Thanks for your patience!


Update README.md for Remote Network Device access

Adding remote device support. (When device not connected over USB)
Network address like localhost or <IP_ADDRESS> or other can be provided.
Local port forwarding from host machine can be configured which would redirect the local port 27042 to mobile/remote device port 27042 using
ssh -L 27042:<IP_ADDRESS>:27042 root@<iDevice_ip>
and then on host machine supply -n "<IP_ADDRESS>" with furlzz.
Also, you can run Frida CLI command "frida-ps -Rai" to test if that port forwarding is working.

Hey there, could you please update the PR from the output of the furlzz because the order now is not correct

Oh sure! my bad. Done.

Thanks @In3tinct


Add tests for block class

Simple tests for block signing and hashing.
One thing that stood out to me is that the block signature is included in the hash which is different to Ethereum 1.0 behavior. Is this intentional? It doesn't seem to break anything because the hash isn't used to calculate the signature, but I wanted to ask anyway just to be sure.

There is no signature on a block in Ethereum1.0.  Because it is pow, it just needs a hash (from the contents of the block + nonce) that meets the difficulty requirement.
The sig should be included in the hash in this case because in PoS a block that is signed by a different key even with the same fields is in fact a different block and should be recognized as such.

Ready to merge @jannikluhn?

Yep, can be merged.


Profile and Beverage are not linked to each other

Hello, very interesting the beta version!
I'have created a Scene like this:

id: '1698231376410'
name: Prepara il The a Jacopo
entities:
select.delonghi_dinamica_plus_profile:
options:
- Profile 1
- Profile 2
- Profile 3
- Guest
friendly_name: Delonghi Dinamica Plus Profile
state: Profile 3
select.delonghi_dinamica_plus_beverage:
options:
- none
- steam
- long
- coffee
- dopio
- hot_water
- espresso
- americano
- espresso2
friendly_name: Delonghi Dinamica Plus Beverage
state: hot_water
icon: mdi:coffee
metadata:
select.delonghi_dinamica_plus_beverage:
entity_only: true

but when I launch the scene the machine selects the right profile, but the hot water comes out at a default quantity and not the one saved in the profile

Nothing? Do the profiles work as expected for you?

I also have Dinamica plus. Also, beverage does not work according to settings in profiles. For example, if you choose Profile1 to prepare a full cup of coffee in the coffee machine, then if you choose the same HA, the cup is only filled to a third of its volume.
It seems that it makes a drink according to the minimum factory settings.

I have ECAM 650.85 and the quantities also don't match with profile settings

Same here.  Cup is filled only half way.


fix(outputs_unix_timestamp): Remove subsecond

Context
Improves #2805
Description
Remove the subsecond part from the epoch when using unix timestamp.
@ramses999 could you please test it?
License
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@jfagoagas
It looks like everything is working correctly.
Thank you, I'm waiting for the image update)


Alfoa/rouxpn/phisics interface

Pull Request Description
What issue does this change request address? (Use "#" before the issue to link it, i.e., #42.)
What are the significant changes in functionality due to this change request?

For Change Control Board: Change Request Review
The following review must be completed by an authorized member of the Change Control Board.

[ ] 1. Review all computer code.
[ ] 2. If any changes occur to the input syntax, there must be an accompanying change to the user manual and xsd schema. If the input syntax change deprecates existing input files, a conversion script needs to be added (see Conversion Scripts).
[ ] 3. Make sure the Python code and commenting standards are respected (camelBack, etc.) - See on the wiki for details.
[ ] 4. Automated Tests should pass, including run_tests, pylint, manual building and xsd tests. If there are changes to Simulation.py or JobHandler.py the qsub tests must pass.
[ ] 5. If significant functionality is added, there must  be tests added to check this. Tests should cover all possible options.  Multiple short tests are preferred over one large test. If new development on the internal JobHandler parallel system is performed, a cluster test must be added setting, in  XML block, the node <internalParallel> to True.
[ ] 6. If the change modifies or adds a requirement or a requirement based test case, the Change Control Board's Chair or designee also needs to approve the change.  The requirements and the requirements test shall be in sync.
[ ] 7. The merge request must reference an issue.  If the issue is closed, the issue close checklist shall be done.
[ ] 8. If an analytic test is changed/added is the the analytic documentation updated/added?

I was able to review these files only:
framework/CodeInterfaces/PHISICS/DecayParser.py
framework/CodeInterfaces/PHISICS/ControlParser.py
XSParser.py
XS.xml
PhisicsInterface.py

Please, address these comments for now (keeping in mind all the comments on the docstrings (apply them to all the other files...I would like to focus on the code and not on the standards)).
Once these comments are addressed, I will continue reviewing the remaining parts of the PR.

@rouxpn do you think this PR is ready to be reviewed?
Please do a second round of checks because I would like to avoid to readd the same comments about syntax, formats, etc.
Thanks

PS. there is a conflict with the file doc/user_manual/existing_interfaces.tex. Please, address it

@rouxpn Pascal, you did not address the comments I added weeks ago. In addition, your last commit added "trailing white spaces" that will make the precheck test fail
Please, address the comments and check all the files you have in this PR
Thanks

THIRD ATTEMPT:
doc/user_manual/existing_interfaces.tex is in Conflict! Fix this

For Change Control Board: Change Request Review
The following review must be completed by an authorized member of the Change Control Board.

[x] 1. Review all computer code. OK
[x] 2. If any changes occur to the input syntax, there must be an accompanying change to the user manual and xsd schema. If the input syntax change deprecates existing input files, a conversion script needs to be added (see Conversion Scripts). checked
[x] 3. Make sure the Python code and commenting standards are respected (camelBack, etc.) - See on the wiki for details. ok
[x] 4. Automated Tests should pass, including run_tests, pylint, manual building and xsd tests. If there are changes to Simulation.py or JobHandler.py the qsub tests must pass. they pass
[x] 5. If significant functionality is added, there must  be tests added to check this. Tests should cover all possible options.  Multiple short tests are preferred over one large test. If new development on the internal JobHandler parallel system is performed, a cluster test must be added setting, in  XML block, the node <internalParallel> to True. test added
[x] 6. If the change modifies or adds a requirement or a requirement based test case, the Change Control Board's Chair or designee also needs to approve the change.  The requirements and the requirements test shall be in sync. n/a
[x] 7. The merge request must reference an issue.  If the issue is closed, the issue close checklist shall be done. #611
[x] 8. If an analytic test is changed/added is the the analytic documentation updated/added? n/a

Check list passed...
Approved.
Merging...


firmware: /should/ include support for oprom drivers on off-the-shelf cards

Support for off-the-shelf PCIe adapters remains a problem in the non-x86 server space, that may be mitigated using an OpRom emulator. This provides end users with the ability to use off-the-shelf NICs, RAID and graphics adapters.

Covered by https://github.com/riscv-non-isa/riscv-server-platform/pull/20


module 'lvsfunc.comparison' has no attribute 'stack_vertical'

The problem occurred after upgrading to version 0.8.1.

Could you give me a bit more information? What function did you call to get this, and do you have a full stacktrace?


Cherry pick CI fixes to hotfix branch

What
Cherry pick:

#3916
#3867

Also:

Disable conditional compile tests that are still running in update-snapshots
Update snapshots that weren't updated in the 1.11.0-beta.1 release branch

Why
Needed for green CI
How Tested
CI needs to be green

Confirmed mobile gallery snapshots are correct as well


expose find(nodeID) method public

Hi
Great work so far. Thanks for this project.
I'm playing with your dev branch.
Would it be possible to expose the HomieNode* find(nodeID) method to public ?
I'd like to get dynamically the current HomieNode in a globalInputHandler to call a setNodeProperty to the related node.
Thanks

Sure!

I changed the signature of the global input handler to:
bool globalInputHandler(const HomieNode& node, String property, HomieRange range, String value)

Is it fine for you?

Pretty nice. Thanks

You're welcome!


Add main configuration to package.json

I am not exactly sure how dist/ and npm is being managed, but could we add this?
https://docs.npmjs.com/files/package.json#main
{
  "main": "./dist/videojs-dash.min.js"
}

We could. Only issue is that we don't generate a UMD build currently.

Feel free to submit a PR, though :)

Pardon my noobery. What is UMB build and/or issue?

UMD: Univeral Module Definition. It allows the packages to work in either node/browserify, AMD, or just plain old-style global javascript.
The issue is that package.json's main implies something that could be used in node or at least in a browserify module. Something that you can require. However, our build right now only produced the old-style "global" javascript. But it probably still doesn't hurt to have it in there.

Oh, ya its pretty much so I can call require, or rather import it without having to qualify a path.
This follows the same convention as https://github.com/videojs/video.js/blob/stable/package.json#L22

Rant: Though, too bad I can't use either video.js or dashjs requires due to compilation issues (Have to run debug mode in each).
I'll make a PR.


[Bug]: New files are not generated by shopify theme push from CI/CD

Please confirm that you have:

[X] Searched existing issues to see if your issue is a duplicate. (If you’ve found a duplicate issue, feel free to add additional information in a comment on it.)
[X] Reproduced the issue in the latest CLI version.

In which of these areas are you experiencing a problem?
Theme
Expected behavior
Execute bundle task, new bundle files are generated (custom.css , custom.js) and these are reflected in theme.
I was wondering if there was a problem with the files generated by the bundle.
However,
the anima.js is not a file generated by the bundle, but a newly created file in the theme folder, which should also be reflected in the theme.

Actual behavior
All newly generated files are not reflected in theme.
Verbose output
Run shopify theme push --allow-live --theme=*** --json --verbose
  shopify theme push --allow-live --theme=*** --json --verbose
  shell: /usr/bin/bash -e {0}
  env:
    SHOPIFY_FLAG_STORE: ***
    SHOPIFY_CLI_THEME_TOKEN: ***
    SHOPIFY_CLI_TTY: 0
2024-04-01T15:16:39.473Z: Running command theme push
2024-04-01T15:16:39.479Z shopify:theme:push init version<EMAIL_ADDRESS>argv: [ '--allow-live', '--theme=***', '--json', '--verbose' ]
2024-04-01T15:16:39.493Z: Ensuring that the user is authenticated with the Theme API with the following scopes:
[]

2024-04-01T15:16:39.499Z: Getting development theme...
2024-04-01T15:16:40.139Z: Request to https://theme-kit-access.shopifyapps.com/cli/admin/api/unstable/themes.json?fields=id%2Cname%2Crole%2Cprocessing completed in 632 ms
With response headers:
 - cache-control: max-age=0, private, must-revalidate
 - content-type: application/json; charset=utf-8
 - etag: W/"ad4e6fba3eb83066d467f0bf9ccc6669"
 - x-request-id: c15ec0f7-84f4-4b06-985e-7de7e285a30c-1711984599

2024-04-01T15:16:40.827Z: Request to https://theme-kit-access.shopifyapps.com/cli/admin/api/unstable/themes/***/assets.json?fields=key%2Cchecksum completed in 680 ms
With response headers:
 - cache-control: max-age=0, private, must-revalidate
 - content-type: application/json; charset=utf-8
 - etag: W/"6479bc207fbd3ec26edaa4f67e0b178a"
 - x-request-id: 2a4cfb28-95c5-4211-abab-fa26a7a440a8-1711984600

2024-04-01T15:16:40.866Z: Reading the content of file at assets/anima.js...
2024-04-01T15:16:40.866Z: Reading the content of file at assets/base.css...
2024-04-01T15:16:40.866Z: Reading the content of file at assets/cart-drawer.js...
2024-04-01T15:16:40.867Z: Reading the content of file at assets/cart-notification.js...
2024-04-01T15:16:40.867Z: Reading the content of file at assets/cart.js...
2024-04-01T15:16:40.867Z: Reading the content of file at assets/collage.css...
2024-04-01T15:16:40.868Z: Reading the content of file at assets/collapsible-content.css...
2024-04-01T15:16:40.868Z: Reading the content of file at assets/component-accordion.css...
2024-04-01T15:16:40.868Z: Reading the content of file at assets/component-article-card.css...
2024-04-01T15:16:40.868Z: Reading the content of file at assets/component-card.css...
2024-04-01T15:16:40.869Z: Reading the content of file at assets/component-cart-drawer.css...
2024-04-01T15:16:40.869Z: Reading the content of file at assets/component-cart-items.css...
2024-04-01T15:16:40.869Z: Reading the content of file at assets/component-cart-notification.css...
2024-04-01T15:16:40.869Z: Reading the content of file at assets/component-cart.css...
2024-04-01T15:16:40.869Z: Reading the content of file at assets/component-collection-hero.css...
2024-04-01T15:16:40.870Z: Reading the content of file at assets/component-complementary-products.css...
2024-04-01T15:16:40.870Z: Reading the content of file at assets/component-deferred-media.css...
2024-04-01T15:16:40.872Z: Reading the content of file at assets/component-discounts.css...
2024-04-01T15:16:40.872Z: Reading the content of file at assets/component-facets.css...
2024-04-01T15:16:40.872Z: Reading the content of file at assets/component-image-with-text.css...
2024-04-01T15:16:40.873Z: Reading the content of file at assets/component-list-menu.css...
2024-04-01T15:16:40.873Z: Reading the content of file at assets/component-list-payment.css...
2024-04-01T15:16:47.881Z: Obtaining the dependency manager in directory /home/runner/work/custmizeEC/custmizeEC...
2024-04-01T15:16:47.887Z:
Running system process:
  · Command: ruby -v
  · Working directory: /home/runner/work/custmizeEC/custmizeEC

2024-04-01T15:16:48.170Z: Request to https://monorail-edge.shopifysvc.com/v1/produce completed in 259 ms
With response headers:
 - x-request-id: fb2cdb40-0d5d-476e-bc9d-2540c987cce3

2024-04-01T15:16:48.171Z: Analytics event sent: {
  "command": "theme push",
  "time_start":<PHONE_NUMBER>474,
  "time_end":<PHONE_NUMBER>878,
  "total_time": 8404,
  "success": true,
  "cli_version": "3.58.0",
  "ruby_version": "3.1.4",
  "node_version": "18.19.1",
  "is_employee": false,
  "uname": "linux amd64",
  "env_ci": true,
  "env_ci_platform": "github",
  "env_plugin_installed_any_custom": false,
  "env_plugin_installed_shopify": "[\"@shopify/cli\",\"@shopify/plugin-did-you-mean\",\"@shopify/theme\"]",
  "env_shell": "bash",
  "env_device_id": "808dfaefc23074c20c200e756c6c4c159ea9d44e",
  "env_cloud": "localhost",
  "env_package_manager": "npm",
  "cmd_all_timing_network_ms": 0,
  "cmd_all_timing_prompts_ms": 0,
  "cmd_all_launcher": "unknown",
  "cmd_all_topic": "theme",
  "cmd_all_plugin": "@shopify/theme",
  "cmd_all_force": false,
  "cmd_all_timing_active_ms": 8404,
  "cmd_all_exit": "ok",
  "args": "--allow-live --theme=*** --json --verbose",
  "env_plugin_installed_all": "[\"@shopify/cli\",\"@shopify/plugin-did-you-mean\",\"@shopify/theme\"]",
  "metadata": "{\"extraPublic\":{},\"extraSensitive\":{}}"
}
2024-04-01T15:16:48.171Z: Completed command theme push

Reproduction steps

Create the following github actions

name: Build and Deploy Theme

on:
  push:
    branches:
      - main

jobs:
  build-and-push:
    if: github.actor != 'shopify[bot]'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
        with:
          ref: main
      - uses: actions/setup-node@v3
        with:
          node-version: 18
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: 3.1
          bundler: 'latest'
      - name: Install Shopify CLI
        run: npm install -g @shopify/cli @shopify/theme
      - name: Install dependencies
        run: npm install
      - name: Build
        run: |
         npm run build
         echo "Searching for custom.css..."
         find . -name "custom.css"
      - name: Deploy
        env:
          SHOPIFY_FLAG_STORE: '${{ secrets.SHOP_STORE_OS2 }}'
          SHOPIFY_CLI_THEME_TOKEN: ${{ secrets.SHOPIFY_CLI_THEME_TOKEN }}
          SHOPIFY_CLI_TTY: 0
        run: shopify theme push --allow-live --theme=${{ secrets.SHOPIFY_THEME_ID }} --json --verbose

Create a new file and push it to the main branch
Check to see if the newly generated files from the remote theme are reflected

Operating System
ubuntu-latest
Shopify CLI version (check your project's package.json if you're not sure)
3.58
Shell
No response
Node version (run node -v if you're not sure)
18.19.1
What language and version are you using in your application?
"ruby_version": "3.1.4"

I am experiencing a similar issue with just the standard shopify theme push ... command in the CLI without the CI/CD stuff.
Has anyone found a resolution to this? This only happened after I upgraded the Shopify CLI to the new version.

This was fixed in release 3.58.2
You can either upgrade to 3.58.2 or use the --stable flag :)

https://github.com/Shopify/cli/pull/3645

can anyone help me with this-
remote: Enumerating objects: 23398, done.                                                                         │
remote: Counting    │cts:   1% (2/143)
remote: Counting objects:   4%       │
remote: Counting objects:   6% (9/143)             │
remote: Counting │bjects:   8% (12/143)
remote: Counting objects:  11%     │43)
remote: Counting objects:  13% (19/143)          │
remote: Counting │bjects:  15% (22/143)
remote: Counting objects:  18%     │43)
remote: Counting objects:  20% (29/143)          │
remote: Counting │bjects:  22% (32/143)
remote: Counting objects:  25%     │43)
remote: Counting objects:  27% (39/143)          │
remote: Counting │bjects:  29% (42/143)
remote: Counting objects:  32%     │43)
remote: Counting objects:  34% (49/143)          │
remote: Counting │bjects:  36% (52/143)
remote: Counting objects:  39%     │43)
remote: Counting objects:  41% (59/143)          │
remote: Counting │bjects:  43% (62/143)
remote: Counting objects:  46%     │43)
remote: Counting objects:  48% (69/143)          │
remote: Counting │bjects:  50% (72/143)
remote: Counting objects:  53%     │43)
remote: Counting objects:  55% (79/143)          │
remote: Counting │bjects:  57% (82/143)
remote: Counting objects:  60%     │43)
remote: Counting objects:  62% (89/143)          │
remote: Counting │bjects:  64% (92/143)
remote: Counting objects:  67%     │43)
remote: Counting objects:  69% (99/143)          │
remote: Counting objects:  71% (102/143)
remote: Counting objects:  74%  │05/143)
remote: Counting objects:  76% (109/143)       │
remote:       │g objects:  78% (112/143)
remote: Counting        │  80% (115/143)
remote: Counting objects:  83%   │8/143)
remote: Counting objects:  85% (122/143)       │
remote:       │g objects:  87% (125/143)
remote: Counting        │  89% (128/143)
remote: Counting objects:  92%   │1/143)
remote: Counting objects:  94% (135/143)       │
remote:       │g objects:  96% (138/143)
remote: Counting        │  98% (141/143)
remote: Counting objects: 100%   │3/143)
│  (143/143), done.                                                                                │
remote:         │ng objects:   3% (2/65)
remote: Compressing     │ts:   6% (4/65)
remote: Compressing objects:  10%   │65)
remote: Compressing objects:  13% (9/65)          │
remote:      │ssing objects:  16% (11/65)
remote: Compressing   │ects:  20% (13/65)
remote: Compressing objects:  24% │15/65)
remote: Compressing objects:  27% (18/65)       │
remote:     │essing objects:  30% (20/65)
remote: Compressing   │ects:  33% (22/65)
remote: Compressing objects:  38% │24/65)
remote: Compressing objects:  41% (27/65)       │
remote:     │essing objects:  44% (29/65)
remote: Compressing   │ects:  47% (31/65)
remote: Compressing objects:  52% │33/65)
remote: Compressing objects:  55% (36/65)       │
remote:     │essing objects:  58% (38/65)
remote: Compressing   │ects:  61% (40/65)
remote: Compressing objects:  66% │42/65)
remote: Compressing objects:  69% (45/65)       │
remote:     │essing objects:  72% (47/65)
remote: Compressing   │ects:  75% (49/65)
remote: Compressing objects:  80% │51/65)
remote: Compressing objects:  83% (54/65)       │
remote:     │essing objects:  86% (56/65)
remote: Compressing   │ects:  89% (58/65)
remote: Compressing objects:  93% │60/65)
remote: Compressing objects:  96% (63/65)       │
remote:     │essing objects: 100% (65/65)
│  Compressing objects: 100% (65/65), done.                                                                          │
Receiving objects: │ 1% (234/23398), 84.00 KiB | 92.00 KiB/s
Receiving │bjects:   1% (346/23398), 180.00 KiB | 74.00 KiB/s
Receiving objects:   2% (468/23398), 244.00 KiB | 68.00       │
Receiving objects:   2% (616/23398), 300.00   │ | 63.00 KiB/s
Receiving objects:   3%           │, 348.00 KiB | 58.00 KiB/s
Receiving     │ts:   3% (889/23398), 428.00 KiB | 55.00 KiB/s
Receiving objects:   4% (1086/23398), 524.00 KiB | 59.00      │
Receiving objects:   5% (1192/23398), 556.00 │iB | 56.00 KiB/s
Receiving objects:   6%          │8), 604.00 KiB | 57.00 KiB/s
Receiving   │ects:   6% (1537/23398), 684.00 KiB | 63.00 KiB/s
Receiving objects:   7% (1711/23398), 756.00 KiB | 64.00     │
Receiving objects:   8% (1872/23398), 796.00 │iB | 63.00 KiB/s
Receiving objects:   8%          │8), 836.00 KiB | 56.00 KiB/s
Receiving   │ects:   9% (2106/23398), 892.00 KiB | 53.00 KiB/s
Receiving objects:   9% (2246/23398), 964.00 KiB | 44.00     │
Receiving objects:  10% (2341/23398), 996.00 │iB | 44.00 KiB/s
Receiving objects:  11%          │8), 1.03 MiB | 39.00 KiB/s
Receiving       │:  11% (2649/23398), 1.11 MiB | 45.00 KiB/s
Receiving objects:  11% (2807/23398), 1.18 MiB | 49.00         │
Receiving objects:  12% (2870/23398), 1.24 MiB │ 49.00 KiB/s
Receiving objects:  12% (3002/23398),  │25 MiB | 48.00 KiB/s
Receiving objects:  13%       │3398), 1.33 MiB | 42.00 KiB/s
Receiving       │:  13% (3063/23398), 1.43 MiB | 43.00 KiB/s
Receiving objects:  13% (3064/23398), 1.50 MiB | 46.00         │
Receiving objects:  13% (3225/23398), 1.68 MiB │ 55.00 KiB/s
Receiving objects:  14% (3276/23398),  │82 MiB | 85.00 KiB/s
Receiving objects:  14%      │23398), 1.98 MiB | 110.00 KiB/s
Receiving     │ts:  14% (3362/23398), 2.22 MiB | 126.00 KiB/s
Receiving objects:  14% (3457/23398), 2.42 MiB | 124.00       │
Receiving objects:  14% (3492/23398), 2.59 MiB│| 111.00 KiB/s
Receiving objects:  15%             │ 2.64 MiB | 96.00 KiB/s
Receiving       │:  15% (3557/23398), 2.79 MiB | 93.00 KiB/s
Receiving objects:  15% (3626/23398), 2.98 MiB | 98.00         │
Receiving objects:  16% (3744/23398), 3.17 MiB│| 106.00 KiB/s
Receiving objects:  16%             │ 3.23 MiB | 114.00 KiB/s
Receiving     │ts:  16% (3848/23398), 3.43 MiB | 106.00 KiB/s
Receiving objects:  16% (3901/23398), 3.57 MiB | 94.00 KiB/s  │
Receiving objects:  16% (3939/23398), 3.71 MiB |    │0 KiB/s
Receiving objects:  17% (3999/23398),    │ MiB | 69.00 KiB/s
Receiving objects:  17%       │3398), 3.83 MiB | 68.00 KiB/s
Receiving       │:  17% (4067/23398), 4.01 MiB | 71.00 KiB/s
Receiving objects:  17% (4119/23398), 4.14 MiB | 78.00         │
Receiving objects:  17% (4204/23398), 4.29 MiB │ 82.00 KiB/s
Receiving objects:  18% (4236/23398),  │29 MiB | 75.00 KiB/s
Receiving objects:  18%       │3398), 4.38 MiB | 64.00 KiB/s
Receiving       │:  18% (4259/23398), 4.47 MiB | 46.00 KiB/s
Receiving objects:  18% (4288/23398), 4.57 MiB | 46.00         │
Receiving objects:  18% (4361/23398), 4.74 MiB │ 54.00 KiB/s
Receiving objects:  18% (4390/23398),  │82 MiB | 70.00 KiB/s
Receiving objects:  18%       │3398), 4.98 MiB | 82.00 KiB/s
Receiving       │:  19% (4446/23398), 5.11 MiB | 83.00 KiB/s
Receiving objects:  19% (4491/23398), 5.19 MiB | 76.00         │
Receiving objects:  19% (4524/23398), 5.33 MiB │ 71.00 KiB/s
Receiving objects:  19% (4599/23398),  │39 MiB | 61.00 KiB/s
Receiving objects:  20%       │3398), 5.47 MiB | 55.00 KiB/s
Receiving       │:  20% (4739/23398), 5.54 MiB | 54.00 KiB/s
Receiving objects:  20% (4798/23398), 5.64 MiB | 56.00         │
Receiving objects:  20% (4819/23398), 5.79 MiB │ 60.00 KiB/s
Receiving objects:  20% (4871/23398),  │82 MiB | 62.00 KiB/s
Receiving objects:  21%       │3398), 6.00 MiB | 68.00 KiB/s
Receiving       │:  21% (4945/23398), 6.08 MiB | 71.00 KiB/s
Receiving objects:  21% (4982/23398), 6.24 MiB | 77.00         │
Receiving objects:  21% (5039/23398), 6.40 MiB │ 78.00 KiB/s
Receiving objects:  21% (5074/23398),  │51 MiB | 87.00 KiB/s
Receiving objects:  21%      │23398), 6.76 MiB | 103.00 KiB/s
Receiving     │ts:  21% (5137/23398), 6.93 MiB | 112.00 KiB/s
Receiving objects:  22% (5148/23398), 7.12 MiB | 119.00       │
Receiving objects:  22% (5212/23398), 7.30 MiB│| 119.00 KiB/s
Receiving objects:  22%             │ 7.41 MiB | 123.00 KiB/s
Receiving     │ts:  22% (5271/23398), 7.63 MiB | 107.00 KiB/s
Receiving objects:  22% (5297/23398), 7.76 MiB | 96.00 KiB/s  │
Receiving objects:  22% (5318/23398), 7.90 MiB |    │0 KiB/s
Receiving objects:  22% (5338/23398),    │ MiB | 65.00 KiB/s
Receiving objects:  22%       │3398), 8.04 MiB | 55.00 KiB/s
Receiving       │:  23% (5382/23398), 8.15 MiB | 54.00 KiB/s
Receiving objects:  23% (5394/23398), 8.23 MiB | 57.00         │
Receiving objects:  23% (5446/23398), 8.36 MiB │ 59.00 KiB/s
Receiving objects:  23% (5454/23398),  │37 MiB | 57.00 KiB/s
Receiving objects:  23%       │3398), 8.50 MiB | 50.00 KiB/s
Receiving       │:  23% (5586/23398), 8.82 MiB | 98.00 KiB/s
Receiving objects:  24% (5643/23398), 9.06 MiB | 138.00        │
Receiving objects:  24% (5727/23398), 9.46 MiB│| 162.00 KiB/s
Receiving objects:  24%             │ 9.68 MiB | 191.00 KiB/s
Receiving     │ts:  24% (5810/23398), 9.89 MiB | 164.00 KiB/s
Receiving objects:  24% (5842/23398), 10.08 MiB | 124.00     │
Receiving objects:  25% (5871/23398), 10.16  │B | 124.00 KiB/s
Receiving objects:  25%          │8), 10.22 MiB | 90.00 KiB/s
Receiving     │ts:  25% (5913/23398), 10.43 MiB | 87.00 KiB/s
Receiving objects:  25% (5939/23398), 10.57 MiB | 89.00       │
Receiving objects:  25% (5989/23398), 10.80   │ | 92.00 KiB/s
Receiving objects:  25%           │), 10.93 MiB | 96.00 KiB/s
Receiving   │ects:  25% (6071/23398), 11.14 MiB | 109.00 KiB/s
Receiving objects:  26% (6084/23398), 11.24 MiB | 108.00     │
Receiving objects:  26% (6155/23398), 11.41  │B | 93.00 KiB/s
Receiving objects:  26%          │8), 11.47 MiB | 103.00 KiB/s
Receiving   │ects:  26% (6261/23398), 11.76 MiB | 110.00 KiB/s
Receiving objects:  27% (6438/23398), 11.96 MiB | 142.00     │
Receiving objects:  28% (6552/23398), 12.18  │B | 158.00 KiB/s
Receiving objects:  28%         │98), 12.39 MiB | 181.00 KiB/s
Receiving   │ects:  29% (6786/23398), 12.74 MiB | 212.00 KiB/s
Receiving objects:  30% (7020/23398), 12.94 MiB | 210.00     │
Receiving objects:  30% (7215/23398), 13.22  │B | 223.00 KiB/s
Receiving objects:  31%         │98), 13.34 MiB | 226.00 KiB/s
Receiving   │ects:  32% (7488/23398), 13.69 MiB | 240.00 KiB/s
Receiving objects:  32% (7544/23398), 13.93 MiB | 224.00     │
Receiving objects:  33% (7722/23398), 14.20  │B | 222.00 KiB/s
error: RPC failed; curl 18      │98), 14.37 MiB | 233.00 KiB/s
│  transfer closed with outstanding read data remaining                                                              │
│  error: 7436 bytes of body are still expected                                                                      │
│  fetch-pack: unexpected disconnect while reading sideband packet                                                   │
│  fatal: early EOF                                                                                │
│  fatal: fetch-pack: invalid index-pack output


Enable CI for Crashlytics

Update scripts to support running CI for Crashlytics.

May want to move the -use-libraries and -use-modular-headers tests to a cron job to speed things up and failures should be rare.
See .travis.yml for examples of this.


No visible marker provided that can indicate the field are mandatory for "Target database name" and "Network share path":A11y_[BM]SQL Migration extension for Azure Data Studio_Database backup_Network file share_Labels or Instructions

"Please do not close this bug. This bug should only be closed by TCS, C+AI Accessibility tester after bug verification."
Check out Accessibility Insights! - Identify accessibility bugs before check-in and make bug fixing faster and easier.
GitHub Tags:
#A11yMAS; #A11yTCS; #Win11; #DesktopApp; #A11ySev2; #BM_SQL Migration extension for Azure Data Studio_Win32_AUG2024; #SQL Migration extension for Azure Data Studio; #WCAG3.3.2; #FTP; #Win32; #Labels or Instructions;
Environment Details:
Application Name: SQL Migration extension for Azure Data Studio
Microsoft Windows 11 version 23H2 (OS Build 22631.4037)
Version: 1.49.1 (user setup)
Commit: https://github.com/microsoft/azuredatastudio/commit/2f696aa95a13ccabd7e0a4431d1d759e3a7b8cfd
Date: 2024-08-13T18:12:38.831Z
VS Code: 1.82.0
Electron: 25.9.8
Chromium: 114.0.5735.289
Node.js: 18.15.0
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.22631
Azure SQL Migration v1.4.8
Repro Steps:

Install Azure data studio and open
Tab till Extension press enter key and install Azure SQL Migration
Tab till Respective server and right click
Tab till manage and press enter key
Tab till Azure SQL Migration and press enter key
Tab till migrate to azure sql and press enter key andSaved session page will open
Select start new session and give next ,Databases for assessment page will open
Select the respective databases and give next ,Assessment results and recommendations page will open
Select Azure SQL managed Instance/Virtual Machines from Azure SQL Target
Tab till Get Azure recommendation and press enter,
Get Azure Recommendation will open and select  collect performance data now ,Browse folder and give start
Tab till view/select and press enter ,select database and give next
Azure SQL Target will open  and give next, Migration mode page will open and select online.
Tab till "My databse backups are on a network share" radio button and select it.
Tab till "Next" button and press enter.
Tab till "Target database name" and "Network share path" grid columns.
Observe the fields are marked as mandatory visually.

Note: Similar issue is also reproducing in the below scenarios:
Migrate to azure sql - Azure Database Migration Service (Subscription combo box)
Migrate to azure sql- Database backup
Actual results:
No visible marker provided that can indicate the field are mandatory for "Target database name" and "Network share path".
Expected results:
Visible marker should be provided that can indicate the field are mandatory for "Target database name" and "Network share path".
User Impact:
The Users will get confused and will miss out the mandatory fields.
Attachments:
25919_A11y_[BM]SQL Migration extension for Azure Data Studio_Database backup_Network file share_Labels or Instructions.webm

While reading through the issue i understand that we need the required indicator on

subscription combo box
target database name and network share path (Database backup on network share)
What do we mean here by Similar issue in database backup?
Does it refer to Database Backups are on blob storage?

Verified the issue in the environment Version: 1.50.0 (user setup)
Commit: 49c73a84388731fec941dac8d938345ac16bd470
Date: 2024-11-17T22:41:05.327Z
VS Code: 1.82.0
Electron: 30.5.1
Chromium: 124.0.6367.243
Node.js: 20.16.0
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.26100
and issue is fixed. Hence closing the bug.


Git repo dirty: List repos with changes

[ ] Unstaged
[ ] Uncommitted
[ ] Untracked
[ ] Local commits not yet pushed
[ ] Local branches not in the remote

gitup solves all my current problems while updating Git repos.


Start testing database_cleaner-core with Ruby 3.0

Hey,
This PR starts testing the gem with Ruby 3.0.
Please check it out.
Thanks!

Nice, no changes needed to core, looks like!


I cant find the components in toolbox

Hi
I selected all dlls files and vs 2022 say that the components are installed . I created a new tab for them "Krypton" but in WindowsForms app I can not see any of the controls. I also tried to create krypton tab again but I get error that this tab already exists but not visible.
I tried "show all" so the components become visible but disabled (grayed)

found the problem was the .net version

Same Here , Did you find the solution or not ?

It looks like this version doesn't support .net 6.0+.
https://github.com/Krypton-Suite/Standard-Toolkit Looks like a drop in replacement for this.


Make dropView final

There is nothing you can do by subclassing that you can't do in other ways, especially if you always call takeView and dropView from the view side. See closing comment to https://github.com/square/mortar/issues/52.

Better plan: https://github.com/square/mortar/issues/156


Update alliancecan.md

Updated the instructions for getting sshfs working, as I thought it could use more specificity

If you're updating this, would you mind also making a change to the settings for handling MFA? These were based on the combination of some discussion with Alliance support and also the following: https://docs.alliancecan.ca/wiki/Multifactor_authentication#Configuring_your_SSH_client_to_only_ask_every_so_often

Add the following to .ssh/config such that MFA is only asked after a period of time rather than each time ssh/sshfs is called:

Host HOSTNAME
    ControlPath ~/.ssh/cm-%r@%h:%p
    ControlMaster auto
    ControlPersist 10m # Can change this to 0 to only ask once

Update sshfs with the following options (removes ServerAliveCount and updates ServerAliveInterval):

reconnect,ServerAliveInterval=0,Compression=no,follow_symlinks

The second point was at least working on a cloud instance I was testing this out on.

@kaitj, gonna save that point for a new PR