Merge latest master into GCE + other fixes

This pull request does the following:

Replaces pycrypto with cryptography, as pycrypto is no longer maintained (commit: https://github.com/gvlproject/cloudbridge/commit/27b217e070e5711a7fd21c76663d64918fcd9c6e)
Applies the fix that Enis mentioned for getting GCPResources to work (https://github.com/gvlproject/cloudbridge/commit/42e6a221e202ffeafbd44185377a029d87d0148d)
Merges latest changes from master into the GCE branch (https://github.com/gvlproject/cloudbridge/commit/f06afe6647ef70a6b9912b22905fa198ac261bbb)
This includes changes to the network interface, where instance.create() now requires a subnet instead of a network and other fixes to simplify testing. With these changes, individual tests can be run when required, and tests are also skipped if not implemented. See testing section in docs for more info.
A preliminary patch or instance.create() to use subnet instead of network.
https://github.com/gvlproject/cloudbridge/commit/10064bf047f26e73a7961837ffb61ca2fdec71a6

Changes Unknown when pulling 10064bf047f26e73a7961837ffb61ca2fdec71a6 on nuwan_gce_changes into ** on gce**.

@baizhang @chiniforooshan @mbookman What do you think about this pull request? I can merge the latest changes in again and update the pull request if it all looks ok. Let me know whether you are ok with the changes and whether to merge this in.

The one thing that jumps out to me is the subnet zone property.
GCE subnets are bound to a region and don't have the notion of "zone placement" as best as I can tell.
I don't think that this is a big deal. The zone will still be a parameter to instance creation, which is fine.
Would be great for @baizhang and @chiniforooshan to give it a look over.

LGTM. Thanks!

Codecov Report

:exclamation: No coverage uploaded for pull request base (gce@09142c7). Click here to learn what that means.
The diff coverage is 39.06%.

@@          Coverage Diff           @@
##             gce      #33   +/-   ##
======================================
  Coverage       ?   55.83%
======================================
  Files          ?       21
  Lines          ?     3566
  Branches       ?      457
======================================
  Hits           ?     1991
  Misses         ?     1515
  Partials       ?       60

Impacted Files
Coverage Δ

cloudbridge/cloud/providers/gce/provider.py
27.2% <0%> (ø)

cloudbridge/cloud/providers/openstack/provider.py
31.53% <0%> (ø)

cloudbridge/cloud/base/resources.py
96.22% <100%> (ø)

cloudbridge/__init__.py
45% <100%> (ø)

cloudbridge/cloud/factory.py
100% <100%> (ø)

cloudbridge/cloud/providers/aws/provider.py
97.77% <100%> (ø)

cloudbridge/cloud/providers/openstack/services.py
34.29% <22.22%> (ø)

cloudbridge/cloud/providers/gce/services.py
25.86% <25%> (ø)

cloudbridge/cloud/providers/aws/services.py
82.25% <36.84%> (ø)

cloudbridge/cloud/providers/openstack/resources.py
40.96% <40%> (ø)

... and 3 more

Continue to review full report at Codecov.

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


[Bug]: In what our user says section next and previous buttons very close to screen give it proper margins

Is there an existing issue for this?

[X] I have searched the existing issues

Describe the bug

As you can see there is no proper margins in next and previous button i will add that.
Expected behavior
NA
Add ScreenShots
NA
On which device are you experiencing this bug?
Chrome
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC'24 contributor
[X] I have starred the repository

@VaibhavArora314 Kindly assign me this task !

@VaibhavArora314 @Ultimateutkarsh11 Please assign me this task and also #333


Add DeepEdit Bundle

Signed-off-by: Andres Diaz-Pinto<EMAIL_ADDRESS>DeepEdit Bundle

@Nic-Ma how I can send a dictionary to a transform?
When using this transform here
https://github.com/Project-MONAI/MONAI/blob/dev/monai/apps/deepedit/transforms.py#L101
I'm getting this error:

for idx, (key_label, val_label) in enumerate(self.label_names.items(), start=1):

AttributeError: 'str' object has no attribute 'items'

Closing this PR.
A new one has been created here: https://github.com/Project-MONAI/model-zoo/pull/3


Add support to retry failed table rebalance

Currently, table rebalance triggered by user runs at best effort. It could fail if the controller running it got restarted; or some servers were not stable, making the rebalance timed out while waiting for external view to converge with ideal state, etc.
This PR adds support to retry failed table rebalance:

extended the existing mechanism to add/update progress status for rebalance jobs in ZK, to help detect failed rebalance jobs. The rebalance job is considered as failed if it's in FAILED status; or in IN_PROGRESS but didn't send out heartbeat in time.
added a controller periodic task - RebalanceChecker - to detect failed rebalance jobs and do retry, and a few configs to operate it, like disabling it, enabling it but to emit failure metrics only, or allowing it to kick off retry.

Release note
New configs for the RebalanceChecker periodic task:

controller.rebalance.checker.frequencyPeriod: 5min by default, with -1 to disable it
controller.rebalanceChecker.initialDelayInSeconds: 2min+ by default
controller.rebalanceChecker.checkOnly: true by default, so just check and emit failure metrics

New configs added for RebalanceConfig:

heartbeatIntervalInMs: 300_000 i.e. 5min
heartbeatTimeoutInMs: 3600_000 i.e. 1hr
maxRetry: 3 by default

New metrics to monitor rebalance and its retries:

TABLE_REBALANCE_FAILURE("TableRebalanceFailure", false), emit from TableRebalancer.rebalanceTable()
TABLE_REBALANCE_EXECUTION_TIME_MS("tableRebalanceExecutionTimeMs", false), emit from TableRebalancer.rebalanceTable()
TABLE_REBALANCE_FAILURE_DETECTED("TableRebalanceFailureDetected", false), emit from RebalanceChecker
TABLE_REBALANCE_RETRY("TableRebalanceRetry", false), emit from RebalanceChecker

Codecov Report

Merging #11740 (8ca19cf) into master (c96221f) will decrease coverage by 63.12%.
Report is 1 commits behind head on master.
The diff coverage is 0.00%.

@@              Coverage Diff              @@
##             master   #11740       +/-   ##
=============================================
- Coverage     63.11%    0.00%   -63.12%
=============================================
  Files          2342     2268       -74
  Lines        125899   122403     -3496
  Branches      19364    18841      -523
=============================================
- Hits          79464        0    -79464
- Misses        40780   122403    +81623
+ Partials       5655        0     -5655

Flag
Coverage Δ

integration
0.00% <0.00%> (-0.01%)
:arrow_down:

integration1
?

integration2
0.00% <0.00%> (ø)

java-11
0.00% <0.00%> (-63.06%)
:arrow_down:

java-17
?

java-20
?

temurin
0.00% <0.00%> (-63.12%)
:arrow_down:

unittests
?

unittests1
?

unittests2
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Files
Coverage Δ

...g/apache/pinot/common/metrics/ControllerTimer.java
0.00% <0.00%> (ø)

...apache/pinot/controller/BaseControllerStarter.java
0.00% <0.00%> (-78.17%)
:arrow_down:

...g/apache/pinot/common/metrics/ControllerMeter.java
0.00% <0.00%> (ø)

...oller/api/resources/PinotTableRestletResource.java
0.00% <0.00%> (-45.75%)
:arrow_down:

...va/org/apache/pinot/controller/ControllerConf.java
0.00% <0.00%> (-58.05%)
:arrow_down:

...ntroller/helix/core/rebalance/TableRebalancer.java
0.00% <0.00%> (-68.59%)
:arrow_down:

...ntroller/helix/core/rebalance/RebalanceConfig.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...elix/core/rebalance/TableRebalanceRetryConfig.java
0.00% <0.00%> (ø)

...ntroller/helix/core/PinotHelixResourceManager.java
0.00% <0.00%> (-63.81%)
:arrow_down:

.../core/rebalance/ZkBasedTableRebalanceObserver.java
0.00% <0.00%> (-80.44%)
:arrow_down:

... and 1 more

... and 1987 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

One concern I have is: if the initial rebalance does not succeed because too many helix messages flood servers, retry will improve workload on servers, which may lead to more severe problem. To alleviate this issue,

is there a way to stop the failed or running table rebalance?
is there a way to drop existing table rebalance helix messages?

Good questions!
for 1: I added a sanity check when rebalance job updates its job progress status in ZK. If the job progress is FAILED, it aborts self. With that, before kicking off a retry, the RebalanceChecker aborts existing jobs by setting their status to FAILED.
for 2. I’m not aware of way to clean up helix msg. Because retry continues the rebablance from where the ideal state is, there wouldn’t be too many redundant helix transition msgs iiuc.
But your concern reminds me that I should add retry backoff and jitters so that RebalanceChecker doesn’t retry too soon after last failure and avoid retrying many tables all at once, flooding the servers.

Can we provide an rest API to abort the current rebalance and stop the following retries?

Good idea. This would need a new ABORTED status, different from FAILED status. Aborted jobs are not considered for retry. The API might look like DELETE /rebalance/{tableName}/{jobId} where jobId is optional. When jobId is omit, all rebalance jobs are aborted for the given table.


Error due to sockets file getting deleted

Bug description
I use umami which uses prisma and I host the app on uberspace, a shared hosting provider.
The /tmp folder on my server gets deleted from time to time, which also deletes the `prisma-*.sock file and leads to this error:
2020-12-10 14:38:23,082 DEBG 'umami' stderr output:
PrismaClientKnownRequestError2: connect ENOENT /tmp/prisma-395d4bbf364fd00bc58da2d3.sock
    at PrismaClientFetcher.request (/home/simbo/umami/node_modules/@prisma/client/runtime/index.js:79355:15)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async getSession (/home/simbo/umami/.next/server/pages/api/auth/verify.js:198:19)
    at async /home/simbo/umami/.next/server/pages/api/auth/verify.js:258:15 {
  code: 'ENOENT',
  clientVersion: '2.12.1',
  meta: undefined
}

2020-12-10 14:38:30,493 DEBG 'umami' stderr output:
PrismaClientKnownRequestError2: connect ENOENT /tmp/prisma-395d4bbf364fd00bc58da2d3.sock
    at PrismaClientFetcher.request (/home/simbo/umami/node_modules/@prisma/client/runtime/index.js:79355:15)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async module.exports.fJFN.__webpack_exports__.default (/home/simbo/umami/.next/server/pages/api/websites.js:1064:22)
    at async apiResolver (/home/simbo/umami/node_modules/next/dist/next-server/server/api-utils.js:8:1)
    at async Server.handleApiRequest (/home/simbo/umami/node_modules/next/dist/next-server/server/next-server.js:63:403)
    at async Object.fn (/home/simbo/umami/node_modules/next/dist/next-server/server/next-server.js:55:530)
    at async Router.execute (/home/simbo/umami/node_modules/next/dist/next-server/server/router.js:24:67)
    at async Server.run (/home/simbo/umami/node_modules/next/dist/next-server/server/next-server.js:65:1023)
    at async Server.handleRequest (/home/simbo/umami/node_modules/next/dist/next-server/server/next-server.js:33:450) {
  code: 'ENOENT',
  clientVersion: '2.12.1',
  meta: undefined
}

How to reproduce

use prisma client on linux
delete /tmp/prisma-*.sock file
see error

Expected behavior
Prisma should handle deleted temporary files (e.g. recreate).
Prisma information
prisma 2.12.1 (as dependency of umami 1.10.0)
Environment & setup

OS: Red Hat 4.8.5-39
Database: mysql
Node.js version: 14.15.0
Prisma version: 2.12.1

I think we should let the user customize the uds path for these cases.

I suggest introducing a parameter to the PrismaClient constructor like so:
new PrismaClient({
  engineMode: 'tcp'
})

or
new PrismaClient({
  engineMode: 'uds'
})

In the future, if we introduce N-API bindings for the engine, we can then also have:
new PrismaClient({
  engineMode: 'n-api'
})

I suggest introducing a parameter to the PrismaClient constructor like so:
new PrismaClient({
  engineMode: 'tcp'
})

or
new PrismaClient({
  engineMode: 'uds'
})

In the future, if we introduce N-API bindings for the engine, we can then also have:
new PrismaClient({
  engineMode: 'n-api'
})

A couple rapid fire thoughts:

Any reason we chose /tmp? Was it because it's writable in server-side environments? If that's the reason, maybe we make that part configurable? You typically find socket files in /var/run or a place that isn't cleaned up by the system by default.

Does /tmp get cleaned up while programs are running? I thought it just gets cleaned up on boot. Update: looks like it depends on the distribution and we won't be able to rely on this behavior.

The suggestion would work, but I think we could improve the abstraction with dependency injection. What happens when we need other engine configuration? What about testing the Prisma Client with a different engine? I think it'd be better if we optionally allowed folks to pass in their own Engine instance. new PrismaClient({ engine: new UDSEngine(options) }). Not sure if this is worth it for this change in isolation, but something to keep in mind.

A couple rapid fire thoughts:

Any reason we chose /tmp? Was it because it's writable in server-side environments? If that's the reason, maybe we make that part configurable? You typically find socket files in /var/run or a place that isn't cleaned up by the system by default.

Does /tmp get cleaned up while programs are running? I thought it just gets cleaned up on boot. Update: looks like it depends on the distribution and we won't be able to rely on this behavior.

The suggestion would work, but I think we could improve the abstraction with dependency injection. What happens when we need other engine configuration? What about testing the Prisma Client with a different engine? I think it'd be better if we optionally allowed folks to pass in their own Engine instance. new PrismaClient({ engine: new UDSEngine(options) }). Not sure if this is worth it for this change in isolation, but something to keep in mind.

In the future, if we introduce N-API bindings for the engine, we can then also have:

@timsuchanek I don't think this is quite right. If we ever make the switch to N-API, we would probably switch wholesale. N-API libraries will need to be compiled separately from the existing Rust binaries, which means we'd need to include both a library version of engine in order to allow people to switch at runtime. This seems undesirable.

Actually I'd like to tease apart the two questions in this thread:

How can we fix Unix Domain Sockets on distributions like RHL from breaking?
Should we introduce a way to configure whether UDS or TCP is used, and what would that look like?

I think @matthewmueller's suggestion on switching the socket off /tmp is one worth trying: if sockets on /tmp is an issue, then switching paths could resolve the issue straight away.
Designing a way to configure choose between TCP and UDP seems worthwhile, but probably requires a bit of back and forth with the Rust team to ensure we don't expose implementation details to end-users. I also agree with @matthewmueller here that probably some kind of constructor for options would be worthwhile. Being more verbose here is probably okay since most users should not want to access this configuration if we've setup the defaults correctly.

In the future, if we introduce N-API bindings for the engine, we can then also have:

@timsuchanek I don't think this is quite right. If we ever make the switch to N-API, we would probably switch wholesale. N-API libraries will need to be compiled separately from the existing Rust binaries, which means we'd need to include both a library version of engine in order to allow people to switch at runtime. This seems undesirable.

Actually I'd like to tease apart the two questions in this thread:

How can we fix Unix Domain Sockets on distributions like RHL from breaking?
Should we introduce a way to configure whether UDS or TCP is used, and what would that look like?

I think @matthewmueller's suggestion on switching the socket off /tmp is one worth trying: if sockets on /tmp is an issue, then switching paths could resolve the issue straight away.
Designing a way to configure choose between TCP and UDP seems worthwhile, but probably requires a bit of back and forth with the Rust team to ensure we don't expose implementation details to end-users. I also agree with @matthewmueller here that probably some kind of constructor for options would be worthwhile. Being more verbose here is probably okay since most users should not want to access this configuration if we've setup the defaults correctly.

Thanks for the comments!
@matthewmueller :

Any reason we chose /tmp? Was it because it's writable in serverless environments? If that's the reason, maybe we make that part configurable? You typically find socket files in /var/run or a place that isn't cleaned up by the system by default.

In Lambda /tmp is the only writeable path, that's the main reason.

Does /tmp get cleaned up while programs are running? I thought it just gets cleaned up on boot. Update: looks like it depends on the distribution and we won't be able to rely on this behavior.

According to Lambda docs, it shouldn't, but is possible depending on OS. (It's something we can't count on)

I think we could improve the abstraction with dependency injection

Interesting direction, but I would wait a bit until we understand the situation better before we introduce such a new concept
@yoshuawuyts :

If we ever make the switch to N-API, we would probably switch wholesale. N-API libraries will need to be compiled separately from the existing Rust binaries, which means we'd need to include both a library version of engine in order to allow people to switch at runtime. This seems undesirable.

That is correct! I was just thinking about other possible values for such an enum, but it's indeed unlikely that it would end up in there. Allowing both at the same time still sound desirable to me though, but that could e.g. be configured in the schema instead.
In a related issue, https://github.com/prisma/prisma/issues/4557 we got reports, that disabling UDS and enabling TCP again fixed their issue. That's why we just changed the default back to TCP until we understand the UDS situation better.
Therefore this issue can be closed.

Thanks for the comments!
@matthewmueller :

Any reason we chose /tmp? Was it because it's writable in serverless environments? If that's the reason, maybe we make that part configurable? You typically find socket files in /var/run or a place that isn't cleaned up by the system by default.

In Lambda /tmp is the only writeable path, that's the main reason.

Does /tmp get cleaned up while programs are running? I thought it just gets cleaned up on boot. Update: looks like it depends on the distribution and we won't be able to rely on this behavior.

According to Lambda docs, it shouldn't, but is possible depending on OS. (It's something we can't count on)

I think we could improve the abstraction with dependency injection

Interesting direction, but I would wait a bit until we understand the situation better before we introduce such a new concept
@yoshuawuyts :

If we ever make the switch to N-API, we would probably switch wholesale. N-API libraries will need to be compiled separately from the existing Rust binaries, which means we'd need to include both a library version of engine in order to allow people to switch at runtime. This seems undesirable.

That is correct! I was just thinking about other possible values for such an enum, but it's indeed unlikely that it would end up in there. Allowing both at the same time still sound desirable to me though, but that could e.g. be configured in the schema instead.
In a related issue, https://github.com/prisma/prisma/issues/4557 we got reports, that disabling UDS and enabling TCP again fixed their issue. That's why we just changed the default back to TCP until we understand the UDS situation better.
Therefore this issue can be closed.


Updates the specified function cache only after the function returns, based on given parameters.

Normally we need cache for computational intensive functions and the function takes a while to complete. If you need to force update the cache periodically, instead of deleting the old cache and then calling the decorated function (which would take time to complete), we get the result of the function call first before we deleting the old cache.

This seems like extremely useful functionality.
My use case is, that if there are large number of requests to the cached view, it can happen, that many requests will arrive when the cache expires. This causes DB "hammering" - many duplicated parallel DB queries at the same time which will get slow. I need to renew the cache in single process.
@xialingxiao The code seems to be a bit outdated and lacking some documentation. Would you be able to update the code, maybe reduce number of commits and add some documentation?


[minor] Free Refugees loose clothes

Version: develop https://github.com/LordGolias/antistasi/commit/8c0ea9bdacffc86ebd00146e22bf80d16e31a147
Mod: CBA, TFAR
Multiplayer dedicated server
Side: tested both vs East and vs West
Telling refugees to follow me make their clothes removed and they roam around in underwear

ahaha, that is hilarious.

:) it's probably something related to faction

I am not able to find why this happens. After the unit is rescued, the piece
[_unit] call AS_fnc_initUnitFIA; is called, which calls forceAddUniform like any other FIA unit.
One possible reason is that the uniform is not defined on the client, causing no uniform to be added. If that is the case, there is a de-sync between a client and the server, in which case the root problem is more serious. If this is the case, the client log should point that a non-existent attribute was tried to be accessed.
@StefArma, could you clarify if that was indeed the case?


koord-descheduler: implement descheduling configuration

Signed-off-by: Joseph<EMAIL_ADDRESS>Ⅰ. Describe what this PR does

Ⅱ. Does this pull request fix one issue?

Ⅲ. Describe how to verify it
Ⅳ. Special notes for reviews
V. Checklist

[x] I have written necessary docs and comments
[x] I have added necessary unit tests and integration tests
[x] All checks passed in make test

/lgtm
/approve

/lgtm

part of implementation #196 #213


Fix distortion on iOS Safari

(Hopefully) fixes #82

Yeah this one looks good on all the devices I have at hand, including the iOS Safari iPad.

... except of course Chrome on iOS, which seems to handle 100vh differently to iOS Safari.

oh ffs. Well, let's land this then we'll see what we can do about Chrome iOS.


Add new cross-platform APIs to Jsrt

This change introduces the cross-platform API shape for JSRT.
It starts with the following assumptions:

Changing the definition of existing APIs is ok, as long as the effective shape doesnt change
(so it's fine to use new macros etc as long as signature/calling convention/linkage etc doesn't change)
Existing APIs which take wchar_t* as a parameter will be exposed only on Windows
New variants of these APIs that take in UTF-8 strings will be exposed on all platforms

Here is a summary of the changes:
New macros introduced:
CHAKRA_CALLBACK - Calling convention attribute of callback functions consumed by jsrt APIs. Used in place of Win32 CALLBACK macro.
CHAKRA_API - Calling convention, linkage and return type of Jsrt APIs (always returns JsErrorCode). Used in place of Win32 STDAPI_ macro.
New types introduced
ChakraCookie - Type of cookies consumed by Jsrt Apis. Used in place of Win32 DWORD_PTR datatype.
JsSerializedScriptLoadUtf8SourceCallback - Callback called to load source code of serialized script encoded as utf8
Following APIs become WIN32 only:
JsParseScript
JsParseScriptWithFlags
JsRunScript
JsExperimentalApiRunModule
JsSerializeScript
JsParseSerializedScriptWithCallback
JsRunSerializedScriptWithCallback
JsParseSerializedScript
JsRunSerializedScript
JsGetPropertyIdFromName
JsGetPropertyNameFromId
JsPointerToString
JsStringToPointer
New APIs introduced (available on all platforms):
JsParseScriptUtf8
JsParseScriptWithAttributesUtf8
JsRunScriptUtf8
JsExperimentalApiRunModuleUtf8
JsRunScriptUtf8
JsExperimentalApiRunModuleUtf8
JsSerializeScriptUtf8
JsParseSerializedScriptUtf8
JsRunSerializedScriptUtf8
JsGetPropertyIdFromNameUtf8
JsGetPropertyNameFromIdUtf8
JsPointerToStringUtf8
JsStringToPointerUtf8
Couple notes:

 All utf8 strings are passed in as char*

 All string parameters in the new APIs are utf8 (e.g source, url etc).

@dilijev fixed the whitespace issue. @agarwal-sandeep @ianwjhalliday any comments? I think @curtisman @Yongqu @liminzhu have already reviewed so if you guys are fine with this, I'll merge to master

Thanks @agarwal-sandeep. Updated the PR.

LGTM

:+1:

@agarwal-sandeep Do you know why the majority of ChakraCommon.h is indented without a block wrapping it? (Starting at line 69)

LGTM

@dilijev it has been like this when we split jsrt.h for USE_EDGEMODE_JSRT

Thanks all- going to merge this guy to master

This is a test comment for CodeFlow, please ignore.

Refers to: lib/Jsrt/ChakraCommon.h:69 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

#define CHAKRA_API extern "C" JsErrorCode
This is a CodeFlow test comment, please ignore.

Refers to: lib/Jsrt/ChakraCommon.h:69 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

#define CHAKRA_API extern "C" JsErrorCode

This is a CodeFlow test comment. Please ignore.

Refers to: lib/Jsrt/ChakraCommon.h:69 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

#define CHAKRA_API extern "C" JsErrorCode

This is comment for testing reply, please ignore.

In reply to: 207689366 [](ancestors = 207689366)

Refers to: lib/Jsrt/ChakraCommon.h:69 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

///     An error code returned from a Chakra hosting API.

This is a test comment on an unchanged line. Please ignore.

Refers to: lib/Jsrt/ChakraCommon.h:79 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

typedef _Return_type_success_(return == 0) enum _JsErrorCode : unsigned int

This is a test comment on a deleted line. Please ignore.

Refers to: lib/Jsrt/ChakraCommon.h:33 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = True)

#define CHAKRA_API extern "C" JsErrorCode

This is a test, please ignore.

Refers to: lib/Jsrt/ChakraCommon.h:69 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

test/benchmarks/*.dpl

This is a test for commenting outside the patch.

Refers to: .gitignore:31 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

test/benchmarks/*.dpl

Testing a reply to the comment outside the patch. Please ignore.

In reply to: 207693118 [](ancestors = 207693118)

Refers to: .gitignore:31 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

#define CHAKRA_API extern "C" JsErrorCode

Testing reply on no GitHub path. Please ignore.

In reply to: 207692300 [](ancestors = 207692300)

Refers to: lib/Jsrt/ChakraCommon.h:69 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

typedef _Return_type_success_(return == 0) enum _JsErrorCode : unsigned int

Testing comment on a deleted line. Please ignore.

Refers to: lib/Jsrt/ChakraCommon.h:33 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = True)

typedef _Return_type_success_(return == 0) enum _JsErrorCode : unsigned int

Testing reply on a comment created without restart. Please ignore.

In reply to: 207693897 [](ancestors = 207693897)

Refers to: lib/Jsrt/ChakraCommon.h:33 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = True)

This is a test comment, please ignore.

Refers to: .gitignore:32 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

This is a test reply, please ignore.

In reply to: 207695787 [](ancestors = 207695787)

Refers to: .gitignore:32 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

test/benchmarks/*.dpl

Test comment, please ignore.

Refers to: .gitignore:31 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

test/benchmarks/*.dpl

Test reply, please ignore.

In reply to: 207695863 [](ancestors = 207695863)

Refers to: .gitignore:31 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

#if defined(_WIN32) && defined(_MSC_VER)

Test comment, please ignore.

Refers to: lib/Jsrt/ChakraCommon.h:27 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

#if defined(_WIN32) && defined(_MSC_VER)

Test reply, please ignore.

In reply to: 207695890 [](ancestors = 207695890)

Refers to: lib/Jsrt/ChakraCommon.h:27 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

#ifndef CHAKRACOMMON_H

Test comment. Please ignore.

Refers to: lib/Jsrt/ChakraCommon.h:23 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

#ifndef CHAKRACOMMON_H

Test reply, please ignore.

In reply to: 207699214 [](ancestors = 207699214)

Refers to: lib/Jsrt/ChakraCommon.h:23 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

test/benchmarks/*.dpl

Test comment, please ignore.

Refers to: .gitignore:31 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)

test/benchmarks/*.dpl

Test reply after restart. Please ignore.

In reply to: 207699231 [](ancestors = 207699231)

Refers to: .gitignore:31 in 5c74acc. [](commit_id = 5c74acc466f00222b84392130220592dd65a82c3, deletion_comment = False)


Fixes bug in the calculation of phase ratios

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:
Additional details and impacted files

:loudspeaker: Thoughts on this report? Let us know!


gh-actions: update conda lock version and issue PR with deploy key

Signed-off-by: Alessandro Comodi<EMAIL_ADDRESS>

This PR only changes the conda lock bot CI, which does not affect any other build.
The conda lock CI has been tested on the branch in the antmicro fork and the resulting PR is the following: https://github.com/antmicro/symbiflow-arch-defs/pull/112. There was no CI run in there as the deploy key was missing, but it should run fine when this PR is merged and the Conda lock update PR is opened. Merging


Speed limit issue

Hello.
I found an issue with the global download speed limit working.
I have same results for tests with and without a download speed limit.
Input data

golang 1.17
github.com/cenkalti/rain v1.8.1
used the same torrent file for both tests
./torrent.db and data folder clean

Test code
func main() {
	var limit int64

	flag.Int64Var(&limit, "limit", 0, "download limit")
	flag.Parse()

	fmt.Printf("Global speed limit is %d KBps\n", limit)

	cfg := torrent.DefaultConfig
	cfg.DataDir = "./data"
	cfg.Database = "./torrent.db"
	cfg.SpeedLimitDownload = limit

	c, _ := torrent.NewSession(cfg)
	defer c.Close()

	f, _ := os.Open("test.torrent")
	defer f.Close()

	t, _ := c.AddTorrent(f, nil)

	for {
		select {
		case <-t.NotifyComplete():
			fmt.Println("Done!")
			return
		case <-time.Tick(10 * time.Second):
			speedKbps := t.Stats().Speed.Download / 1024
			fmt.Printf("Speed is %d KBps\n", speedKbps)
		}
	}
}

Test without download limit
# time ./test_torrent
Global speed limit is 0 KBps
2021-11-02 12:54:52 INFO     [session] session_load.go:34 loaded 0 existing torrents
2021-11-02 12:54:52 INFO     [rpc server] session_rpc_server.go:48 RPC server is listening on <IP_ADDRESS>:7246
2021-11-02 12:54:52 INFO     [torrent 7JTQVDvCEey413Tl-RSrzA] session_add.go:284 added torrent
2021-11-02 12:54:52 INFO     [torrent 7JTQVDvCEey413Tl-RSrzA] torrent_start.go:31 starting torrent
2021-11-02 12:54:52 INFO     [torrent 7JTQVDvCEey413Tl-RSrzA] torrent_start.go:118 Listening peers on tcp://<IP_ADDRESS>:50898
Speed is 6315 KBps
Speed is 6492 KBps
Speed is 6613 KBps
Speed is 6629 KBps
Speed is 6756 KBps
Done!
2021-11-02 12:55:43 INFO     [torrent 7JTQVDvCEey413Tl-RSrzA] torrent_write.go:82 download completed
2021-11-02 12:55:43 INFO     [torrent 7JTQVDvCEey413Tl-RSrzA] torrent_stop.go:46 stopping torrent

real    0m51,059s
user    0m8,361s
sys     0m11,401s

Test with download limit
# time ./test_torrent --limit=1024
Global speed limit is 1024 KBps
2021-11-02 12:56:24 INFO     [session] session_load.go:34 loaded 0 existing torrents
2021-11-02 12:56:24 INFO     [rpc server] session_rpc_server.go:48 RPC server is listening on <IP_ADDRESS>:7246
2021-11-02 12:56:24 INFO     [torrent I2naazvDEeyA0nTl-RSrzA] session_add.go:284 added torrent
2021-11-02 12:56:24 INFO     [torrent I2naazvDEeyA0nTl-RSrzA] torrent_start.go:31 starting torrent
2021-11-02 12:56:24 INFO     [torrent I2naazvDEeyA0nTl-RSrzA] torrent_start.go:118 Listening peers on tcp://<IP_ADDRESS>:55204
Speed is 6883 KBps
Speed is 7022 KBps
Speed is 6936 KBps
Speed is 6922 KBps
Speed is 6930 KBps
Done!
2021-11-02 12:57:15 INFO     [torrent I2naazvDEeyA0nTl-RSrzA] torrent_write.go:82 download completed
2021-11-02 12:57:15 INFO     [torrent I2naazvDEeyA0nTl-RSrzA] torrent_stop.go:46 stopping torrent

real    0m51,494s
user    0m8,410s
sys     0m11,407s

@dd4e There was a bug about the calculation of the speed limit in code. Thanks for bringing this issue. It should be fixed now. Can you verify please? Please note that the the limits are specified in kilobytes in config but they are reported in bytes from Stats() method.
Closing this issue now but feel free to reopen and let me know if you have questions.

Thanks you @cenkalti, I've updated the go.mod to the latest version, built the test, and checked again. And I still have that issue ((
go.mod
require github.com/cenkalti/rain v1.8.2

stdout
# ./test_torrent --limit=1024

Global speed limit is 1024 KBps
// ...
Speed is 5529 KBps
Speed is 5768 KBps
Speed is 5956 KBps
Speed is 6162 KBps
Speed is 6328 KBps

ps.
I setup limit in the config "as is": cfg.SpeedLimitDownload = 1024
I've calculated rate into KBps: Stats().Speed.Download / 1024

It's strange. It seems to be working for me.
[air:rain]{master}% export MAGNET='magnet:?xt=urn:btih:dd8255ecdc7ca55fb0bbf81323d87062db1f6d1c&dn=Big+Buck+Bunny&tr=udp%3A%2F%2Fexplodie.org%3A6969&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftracker.empire-js.us%3A1337&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337&tr=wss%3A%2F%2Ftracker.btorrent.xyz&tr=wss%3A%2F%2Ftracker.fastcast.nz&tr=wss%3A%2F%2Ftracker.openwebtorrent.com&ws=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2F&xs=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2Fbig-buck-bunny.torrent'
[air:rain]{master}% echo 'speedlimitdownload: 100' > config.yaml
[air:rain]{master}% rain download -c config.yaml -t $MAGNET
2021-11-09 19:30:07 INFO     [rain] main.go:649 config loaded from: config.yaml
2021-11-09 19:30:07 INFO     [torrent TKLidEG8EeyVSPbFUNbOiw] session_add.go:284 added torrent
2021-11-09 19:30:07 INFO     [session] session_load.go:34 loaded 1 existing torrents
2021-11-09 19:30:07 INFO     [rpc server] session_rpc_server.go:48 RPC server is listening on <IP_ADDRESS>:7246
2021-11-09 19:30:08 INFO     [torrent TKLidEG8EeyVSPbFUNbOiw] torrent_start.go:31 starting torrent
2021-11-09 19:30:08 INFO     [torrent TKLidEG8EeyVSPbFUNbOiw] torrent_start.go:118 Listening peers on tcp://<IP_ADDRESS>:6109
2021-11-09 19:30:09 INFO     [rain] main.go:763 Status: Downloading, Progress: 0%, Peers: 4, Speed: 0K/s, ETA: ?
2021-11-09 19:30:10 INFO     [rain] main.go:763 Status: Downloading, Progress: 0%, Peers: 11, Speed: 0K/s, ETA: ?
2021-11-09 19:30:11 INFO     [rain] main.go:763 Status: Downloading, Progress: 0%, Peers: 11, Speed: 0K/s, ETA: ?
2021-11-09 19:30:12 INFO     [rain] main.go:763 Status: Downloading, Progress: 0%, Peers: 11, Speed: 0K/s, ETA: ?
2021-11-09 19:30:13 INFO     [rain] main.go:763 Status: Downloading, Progress: 0%, Peers: 11, Speed: 102K/s, ETA: 44m0s
2021-11-09 19:30:14 INFO     [rain] main.go:763 Status: Downloading, Progress: 0%, Peers: 11, Speed: 102K/s, ETA: 44m0s
2021-11-09 19:30:15 INFO     [rain] main.go:763 Status: Downloading, Progress: 0%, Peers: 11, Speed: 102K/s, ETA: 44m0s
2021-11-09 19:30:16 INFO     [rain] main.go:763 Status: Downloading, Progress: 0%, Peers: 11, Speed: 102K/s, ETA: 44m0s

Can you try with the rain download command to see if you can reproduce it?
Also can you try with your code again but with a much lower value? Example: time ./test_torrent --limit=1
I am looking into your code but nothing unusual to my eyes.

@cenkalti I have found the difference between your and my tests.
Speed reduction doesn't work with web seed's torrent. I have repeated the test with tracker only torrent file and it's work.
Can you fix the speed reduction for web seed's torrent?

It should be fix with 57c5445a57caa7a232b8093c73004b9a0e8bdeca. Can you confirm?

@cenkalti this is fantastic! Everything is fine. Thank you, comrade!


Building on Windows corrupts shell script end of line markers

🐞 Bug Report
Description
In PR https://github.com/edgexfoundry/developer-scripts/pull/147 it was determined that the Consul health checking shell scripts can be corrupted if the container is being built on a Windows machine.  This is because when the code is checked out on Windows, many people have automatic EOL conversions turned on, which ends up changing newlines from LF to CRLF.  The corrupted shell scripts are then incorporated into the container image during a docker build.
Proposed fix
Introduce a .gitattributes to prevent the automatic conversion from occurring.
For example:
.gitattributes
scripts/*.sh -text

See also https://www.edwardthomson.com/blog/git_for_windows_line_endings.html

We could also improve the robustness of the docker images by ensuring linux line endings when its built which could easily be done with something like dos2unix. Example:
RUN apt-get update && apt-get install -y dos2unix

COPY docker-entrypoint.sh /entrypoint.sh

RUN dos2unix /entrypoint.sh && apt-get --purge remove -y dos2unix && rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["/entrypoint.sh"]

^^^ very rudimentary example, but hopefully get the idea. Would just eliminate the issue entirely, should be simple enough as well since we use multi-stage builds we don't have to the include the remove part.  I develop pretty much exclusively on windows, so not having to worry about line endings would be great :) +1 for DX.

For the above to work for target containers built from scratch, the build container would have to run this code to sanitize the script, and then the sanitized script would then have to be copied from the build container into the deployment container.  Doing as suggested above in the deployment container would introduce additional attack surface and size to several of the existing containers.

Yup, that's correct. Wouldn't suggest doing that at all, copying your build operations and dependencies in to your deployment would defeat the purpose indeed!


Webview download alert

When I tried to download a picture using webview_flutter it can't able to show an alert box like what chrome is doing.

Hi @varunkumarmedam
Current;y webview_flutter doesn't support downloads so I am not sure alert download would appear without this ability
Closing as duplicate of https://github.com/flutter/flutter/issues/39321
Thank you


Find a better name for "temporary condition"

These are "poisoned", "hasted", etc., pseudo-organs seen in the organ menu and temporary condition lore screens. The name is too long, unnatural and probably not very clear, but I'm not a native speaker, so I'm not sure.
"Status"? But then I'd need to change PLAYING.md not to call the bottom line the status line, since it doesn't display any temporary conditions.
"Affliction" is negative and conditions can be positive.
"Standing"? But plural sounds funny. Perhaps singular for the whole list of them? But then a single one would be "component of standing"?
"Kilter"? "Fitness"? "Constitution"? "Disposition"? "Form"? It needs to suggest the "temporary" aspect and at least of the these probably don't.

What's wrong with "conditions"? It has the connotation of "temporary" already.

OK, let's try. Before:

After:

What do you think?

In MMOs they're usually called "buffs" and "debuffs" by players.
Wikipedia calls them "status effects" - https://en.wikipedia.org/wiki/Status_effect ;)

Wow, a Wikipedia page. Who would have thought. Thank you.
"Buffs" is short and understandable, but I need a term that encompasses the negative ones as well and "(de)buffs" is messy.
"Status" is indeed an option ("effect" makes it too long and more jargon-like, IMHO), but "condition" is probably more precise.

OK, let it be "conditions". Thank you for your input!
TODO: at the next AI rewrite, rename AI.Condition do AI.Predicate and similarly each individual function to avoid confusion.
Renamed on master branch. Closing.


Delete BOM in XML #1044

https://github.com/larshp/abapGit/issues/1044
After the XML has been created, the BOM will be deleted.
After this PR every repo has to push all XML again. Otherwise the XML will be displayed as modified.

hmm, thought it was the other way around, that only files from non-unicode systems were modified

XML creation adds the BOM on a unicode system, so all repos which are pushed from a unicode system are affected.
I tried to add a BOM on a non unicode system. But the BOM get lost in the conversion from xstring to string.
Maybe we can delete the BOM only for the diff check? Unfortunately I've found no good position to do that so far.
Any other suggestions?

If I have not misunderstood the approach in https://github.com/larshp/abapGit/issues/799#issuecomment-335928278, the encoding utf-8 can not be set in a unicode system.

In a non unicode system it works

okay, hack it is then 😄
but I suggest collecting the logic https://github.com/larshp/abapGit/blob/d25bfaf725a9b9b8e256b010cb0eb7f9c8f589c7/src/objects/zcl_abapgit_objects_files.clas.abap#L155-L158 and the BOM in a single place

Unintentionally closed through reorganisation of commits.I'll reopen if I had tested the changes.


Update HDFS default version and remove reference to 1.x

[skip ci]

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/6219/
Test PASSed.

@ns1123 @ZacBlanco do we want this in the release?

alluxio-bot, merge this please

alluxio-bot, cherry-pick this to branch-2.1 please

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/6458/
Test FAILed.


Add watermark support

Description
Investigate if there is a way to add a watermark to the output image.
Additional Context
string root = HttpContext.Current.Server.MapPath("~/Images/download.jpg");
System.Drawing.Image bitmap = (System.Drawing.Image)Bitmap.FromFile(root); // set image
Font font = new Font("Arial", 20, FontStyle.Italic, GraphicsUnit.Pixel);
Color color = Color.FromArgb(255, 255, 0, 0);
Point atpoint = new Point(bitmap.Width / 2, bitmap.Height / 2);
SolidBrush brush = new SolidBrush(color);
Graphics graphics = Graphics.FromImage(bitmap);
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
graphics.DrawString("Madan S B", font, brush, atpoint, sf);
graphics.Dispose();
MemoryStream m = new MemoryStream();
bitmap.Save(m, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] convertedToBytes = m.ToArray();
string saveto= HttpContext.Current.Server.MapPath("~/Images/test.jpg");
System.IO.File.WriteAllBytes(saveto, convertedToBytes );

Before submitting

[X] I have read the documentation, and referred to the known issues before submitting this change request.
[X] I have checked for previously opened & closed issues before submitting this change request.

Moved request to core module
https://github.com/rebelinux/Diagrammer.Core/issues/11


amend structure of the travis configuration for autodeploy on tags

Secret needs to be added to actually perform the deployment to pypi


[FEATURE REQUEST] Specific input folder for "Load image with metadata" node

Crystian, thanks so much for supporting input subfolders (with image previews) in the Load image with metadata node. I searched for weeks for this capability and it was under my nose the whole time.
In the upcoming AP Workflow 10.0 for ComfyUI, I'll replace the default LoadImage node with yours just because of this feature. Given that, I wanted to see if you are willing to introduce an extra feature.
Is your feature request related to a problem? Please describe.
I have hundreds of images in the ComfyUI Input folder. Some of them are used as references for IPAdapter or ControlNet, while others must be processed for upscaling, etc. Every time, I have to go through the whole folder within the node UI to find the image I'm looking for.
Now, the support for subfolders that I just discovered will simplify things a lot,  but there's something that would be even better.
Describe the solution you'd like
If the Load image with metadata node would have an extra field at the very top, allowing me to define a folder to use as input instead of the default one, I could have multiple Load image with metadata nodes, each locked into a specific folder. For example:

/ControlNet Inputs
/IPAdapter Inputs
/To Be Upscaled
etc.

Something like this:

If no folder is specified in the field, the node would behave as it does today: it would look into the ComfyUI input folder, taking into account subfolders.
If a folder would be specified in the field, from that moment on, the node would only display images in that folder (and subfolders). Plus, if the user would click "choose file to upload", the node would upload only in the specified folder.
Describe alternatives you've considered
The only alternative is to keep different images in different subfolders of the input folder, but it's not quite as good.
Additional context
If the "Load image with metadata" node would be modified with such a feature, I would use 3 instances in the AP Workflow as follows (what you see is the current situation):

In this example, I would leave the node at the top configured as default, pointing to the ComfyUI input folder. But then, I would configure the other two LoadImage nodes to point to specific folders where ControlNet and IPAdapter images are.
I hope this whole description is clear enough. If you are interested in developing this feature and what some more real time interaction, you can find me on Discord as @perilli.
Thank you for considering the idea!

I think this would be a fantastic addition, even if it was just a new separate node. I haven't found any nodes that combine the functionality of a folder path loader with a basic image loader like this, and your Load Image w/ Metadata node is the only image loader I use now due to its advanced functionality.

Sorry, this weekend, I'm going to review this

I think it's a good feature, but I don't have time right now, maybe I'll do it on July, not before (and maybe)
btw, thanks for your feedback!

This feature would be great +1!


methods are not "subroutines declared within a class"

Problem or new feature
https://docs.raku.org/language/syntax#Subroutine_calls mentions methods the following way:

When declared within a class, a subroutine is named "method": methods are subroutines invoked against an object (i.e., a class instance).

This is confusing at least but I think it's much rather outright wrong. Whether something is declared in a class or outside of it has little to do whether it's "declared within a class" or not.
Suggestions
I don't know if it's a good idea in the first place to show methods under an entry called "subroutine calls" but in any case, being a method is much rather about argument handling and dispatch than the place of declaration. That property should be highlighted. Maybe it's described better at some place already.

The "Subroutine calls" section has several problems, actually – including that it starts with a paragraph about subroutine declaration even though there's a separate "Subroutine declaration" section.
I think I see how to fix it; I'll submit a PR shortly.


Inconsistent behavior between concatenate and load

Concatenate has an option called path within the target key. This updates the path in the datapackage for the file. Whenever a dump_to_path step is run, resources are dumped based on that path value within the datapackage. As stated in the documentation, 'If omitted, the target resource will receive the name concat and will be saved at data/concat.csv in the datapackage.'.
The new load standard processor has no parameter that allows you to set the path (or at least no documented or easily guessed parameter). Furthermore the path defaults to ${RES_NAME}.${EXT}, which is different from the default behavior of concatenate (data/concat.csv).
This is similar to the https://github.com/BCODMO/frictionless-usecases/issues/7 issue because this functionality used to exist in the previous add_resource, stream_remote_resources paradigm but no longer works with load. The now deprecated add_resource process used to have a path parameterand the default path when left empty wasdata/${RES_NAME}.${EXT}`.
This is a problem because there is a parameter in the datapackage that is only accessible by concatenating resources together. Furthermore, if you don't know to overwrite the default values, the resources created by concatenate will be saved in different locations than resources created by load.
The following is a pipeline-spec.yaml file that, when run, demonstrates that the concatenated resource is saved in a different place.
test:
  title: test
  description: Display discrepancies between concat and load
  pipeline:
  - parameters:
      force_strings: true
      format: csv
      from: https://raw.githubusercontent.com/BCODMO/frictionless-usecases/master/usecases/746395_PierCTD/orig/SantaMonicaPier_April_2018_CTD_data.csv
      headers: 1
      name: ctd
      skip_rows: []
    run: load
  - parameters:
      force_strings: true
      format: csv
      from: https://raw.githubusercontent.com/BCODMO/frictionless-usecases/master/usecases/746395_PierCTD/orig/SantaMonicaPier_April_2018_CTD_data.csv
      headers: 1
      name: ctd2
      skip_rows: []
    run: load
  - parameters:
      fields:
        Date: []
        Time: []
        chlorophylla: []
        cond_and_temp: []
        cond_and_temp_str: []
        conductivity: []
        dissolvedosaturation: []
        lat: []
        lon: []
        newTemperature: []
        pressure: []
        salinity: []
        scan: []
        temperature: []
      sources: [ctd]
      target: {name: ctd_new}
    run: concatenate
  - parameters: {out-path: $TEST_PATH/results}
    run: dump_to_path

This is a low priority because I already updated our python library to handle data regardless of where it is saved.

@cschloer
Hi, not sure I fully understand. Is it general to setting a resource's path or only related to the concatenate processor?
If it's the first one than we can propose a DPP processor like this (already written for dataflows):
from dataflows import Flow, update_resource
from datapackage_pipelines.wrapper import ingest
from datapackage_pipelines.utilities.flow_utils import spew_flow

def flow(parameters):
    return Flow(
        update_resource(**parameters),
    )

if __name__ == '__main__':
    with ingest() as ctx:
        spew_flow(flow(ctx.parameters), ctx)

to use it like package_update:
path:
  title: path
  description: "path join"
  pipeline:

  - run: load
    parameters:
      from: 'cities.csv'
      name: cities
      format: csv

  - run: processors.update_resource
    parameters:
      resources: [cities]
      path: new_path.csv

  - run: dump.to_path
    parameters:
      resources: [cities]
      out-path: 'output'
      pretty-descriptor: true

Is it what we need?

It's somewhat a combination of both. #1 (changing the path) is probably more important, so at least there is a way to get around it. But I also think #2 (the fact that concatenate is different from load) seems counter intuitive and confusing.
But adding the update_resource into the datapackage_pipelines repo would be great! We discussed that on the call yesterday also.

The update_resource processor is added to the core.
$ pip install --upgrade datapackage-pipelines==2.1.9

update_resource:
  title: test
  description: "test update resource processor"
  pipeline:

  - run: load
    parameters:
      from: 'cities.csv'
      name: data
      format: csv

  - run: update_resource
    parameters:
        resources: data
        metadata:
          title: New Title

  - run: dump.to_path
    parameters:
      resources: [data]
      out-path: 'output'
      pretty-descriptor: true

Hey @roll we are still running into issues with this. The workaround of update_resource works great, but we are still unconvinced that a workaround is necessary. Is there any reason to maintain the inconsistency between the path field of concatenated resources and resources that are normally loaded in? It would save us a fair amount of work and confusion if concatenated resource by default had the same path as normally loaded resources (${resource_name}.${ext} rather than data/${resource_name}.${ext})
Let me know if that's something you can't change!
Conrad

Sorry, I'm pretty sure this was an issue on my end. Will reopen if I'm wrong


Copy over Admin UI base for ctl-admin-ui

Code Changes

[x] Create a src/clients directory
[x] Create a ctl-admin-ui directory containing copied over directory from admin-ui
[x] Remove Admin UI specific features from ctl-admin-ui and clean up

Steps to Confirm

[ ] list any manual steps taken to confirm the changes

Pre-Merge Checklist

[ ] All CI Pipelines Succeeded
Documentation Updated:

[ ] documentation complete, or draft/outline provided (tag docs-team to complete/review on this branch)
[ ] documentation issue created (tag docs-team to complete issue separately)

[ ] Issue Requirements are Met
[ ] Relevant Follow-Up Issues Created
[ ] Update CHANGELOG.md

woot, lgtm! would just want to double check with @ThomasLaPiana that this code lives in the right folder (src/clients/ctl-admin-ui)

I don't have any strong opinions here as long as everything is logically organized 😄  @allisonking

woot, lgtm! would just want to double check with @ThomasLaPiana that this code lives in the right folder (src/clients/ctl-admin-ui)

I don't have any strong opinions here as long as everything is logically organized 😄  @allisonking

This is super nitpicky, but can we use admin-ui instead of ctl-admin-ui?
It's just a bit inconsistent across projects to call it admin-ui on fidesops, but ctl-admin-ui on fidesctl, you know?

Does anyone know where I can get an svg of the fidesctl logo to replace the fidesops one?

@allisonking See my other recent comment.
@NevilleS Agreed re. name. Also, for further nitpicky consistency I noticed that admin-ui lives in fidesops/clients but this directory would be fides/src/clients. We should either move fidesops/clients to fidesops/src/clients or fides/src/clients/ctx-admin-ui to fides/clients/admin-ui. Thoughts, all?

@elliotbonneville easier for us to match fidesops than change fidesops I think. Let's go ahead and match and then ship it!

okay, I can change and clean up the toml at the same time


fix a typo in layout's comments

It's not a typo: https://github.com/tucnak/telebot/blob/dd790ca6c1a5b187922415325a2cc2c66e033214/layout/example.yml#L52


actually make clean 1000 max

previously edited in player changes, this change made the max clean 100. This restores it to 1000 as documented.
After creating your pull request, tick these boxes if they are applicable to you.

[x] I have tested my changes against the fae branch (the latest developmental version), and this pull request is targeting that branch as a base
[x] I have tested my changes on Python 3.8 or higher
[x] I have ensured my code is formatted using Black

Description
Previously changed in player changes, revert back to documented max of 1000.
Related issues (if applicable)

So I checked the discord.py docs for channel.purge() and it does not seem to explicitly document a maximum value for limit argument.  The bulk message delete is however limited to 100 messages, so I wonder how this will deal with more than 100 messages.
I suppose the next time I go to run my tests I can turn off the auto-delete and see if it breaks with such a maximum.


Rename controller method to correct name

Renames a federation controller method to match the SCMI branch, which is the only place it was being used. There was a slight implementation difference in the SCMI version (returning addresses instead of pubkeys) which has also been ported to <IP_ADDRESS>.

The CCTS was not designed to allow transfers to be deleted. What checks have been performed to ensure that asymmetric or asynchronous deletions will not run counter to the logic surrounding determinacy etc? Is there any test coverage for this? We don't want to resort to copying data folders around to get everything back in sync when deletions run awry.

Seems to be in <IP_ADDRESS> already


MAUI Extension Continued

Apologies in Advance, most of the files changes are the Test samples for MAUI end to end scenario, feel free to skip those 😅
Fixes Issues :
https://github.com/dotnet/upgrade-assistant/issues/622
https://github.com/dotnet/upgrade-assistant/issues/586

Adds custom step to adjust TFM for net6.0-ios and net6.0-android based on Xamarin Platform Source project
Adds TargetSelectorFilter for net6.0-ios and net6.0-android targets for MAUI Extension
Adds ComponentIdentifier for MAUI exntesion
End to End Tests Added for iOS and Droid
Adds Package Maps for packages to be removed from old Xamarin Projects

Oh - it would be great to have some unit tests as well for the selector/filter/etc

Oh hmm dunno why AzDo build checks aren't coming through. @twsouthwick  I did add the MauiFilter tests and the builds are passing now! 😄  Just waiting on your reviews on the last 2 comments before I merge this!

LGTM!


Update license headers

Coverage increased (+0.1%) to 85.372% when pulling 780a4d39b063cca7613d171a293af5ee77509fb1 on pfernique:master into ae1d2d64efd9b939bcf2374827f6ef4a821fca40 on StatisKit:master.


Drop Kingfisher 4.0 configuration

Pull Request Description
Drops Kingfisher configuration for 4.0, as the commit reference in projects.json no longer exists on the branch.

@onevcat Hi there, just wanted to let you know we've removed the 4.0 configuration for Kingfisher because a5d1214220b8ddf29acf7c08c8bb42993ed56c54 doesn't appear to exist on Kingfisher:master branch.
Feel free to add this configuration again with a different commit!
For reference: https://ci.swift.org/view/Source Compatibility/job/swift-main-source-compat-suite/5844/artifact/swift-source-compat-suite/None_Kingfisher_4.0_BuildXcodeWorkspaceScheme_Kingfisher_generic-platform-iOS.log

@swift-ci test

Oh bummer, it looks like the 5.1 configuration is failing in the same way.
$ git clone https://github.com/onevcat/Kingfisher.git /Users/buildnode/jenkins/workspace/swift-PR-source-compat-suite-test-macOS/swift-source-compat-suite/project_cache/Kingfisher
Cloning into '/Users/buildnode/jenkins/workspace/swift-PR-source-compat-suite-test-macOS/swift-source-compat-suite/project_cache/Kingfisher'...
$ git -C /Users/buildnode/jenkins/workspace/swift-PR-source-compat-suite-test-macOS/swift-source-compat-suite/project_cache/Kingfisher checkout -f 23ef6c73ee3bc12ee3940136aea54bd44a02e93e
fatal: reference is not a tree: 23ef6c73ee3bc12ee3940136aea54bd44a02e93e

I'll try a different commit here.

@swift-ci test

I did a git reflog recently and I will update the config file soon!

Oh! Just saw that you've already gotten a new commit hash for Swift 5.1. That should be fine now since Kingfisher will not support Swift 4.x in the latest versions.
There is no change from me. LGTM!

03:59:04.005 FAIL: Kingfisher, 5.1, 44450a, Kingfisher-macOS, generic/platform=macOS
03:59:04.105 $ git -C /Users/buildnode/jenkins/workspace/swift-PR-source-compat-suite-test-macOS/swift-source-compat-suite/project_cache/Kingfisher rev-parse --show-toplevel
03:59:05.964 FAIL: Kingfisher, 5.1, 44450a, Kingfisher-tvOS, generic/platform=tvOS
03:59:06.065 $ git -C /Users/buildnode/jenkins/workspace/swift-PR-source-compat-suite-test-macOS/swift-source-compat-suite/project_cache/Kingfisher rev-parse --show-toplevel
03:59:07.918 FAIL: Kingfisher, 5.1, 44450a, Kingfisher-watchOS, generic/platform=watchOS

xcodebuild: error: The workspace named "Kingfisher" does not contain a scheme named "Kingfisher-macOS". The "-list" option can be used to find the names of the schemes in the workspace.

:( Ah, it seems that Xcode schemes are used! (I thought it is already using SPM) These schemes also needs update. I will submit a new PR!

@shahmishal Sorry for the confusion but #528 should bring the tests back to normal.

@onevcat Thanks!

@clackary We can close this PR in favor of #528


Make CLI less verbose by coupling inventory to deploy

I find that I find the PyInfra CLI somewhat cumbersome. Maybe I'm using it wrong, or maybe not.
 Because PI forces me to specify the inventory I have to split the deployment in two deploys, say 01-build.py and 02-deploy.py.
Describe the solution you'd like
I'd like to specify combinations of inventory and deploy once, and not keep it in my head.
Any solution that lets me create a set of simple commands that I can run repeatedly using some shorthand.
Maybe let me specify the inventory name in the deploy file. Or something like make.
I hope this makes sense.

I like this idea, not quite sure on a good CLI that wouldn't clash with existing commands/etc, but I'm keen to implement this or similar!

I like the spirit of this idea, but I think it'd be difficult to do without making deploys opinionated about the hosts they run on. @mjmare it seems to me like this might be achievable if inventory allowed you to specify which connector to use when executing tasks. Then you could do something like:
# inventory.py
build_servers = [
  # The third argument tells pyinfra to use the @local connector
  ('localhost', {}, '@local')
}
In fact you might already be able to do this, @Fizzadar can you weigh in?

Then inside your deploys you could have something like:

from pyinfra import host
if 'build_servers' in host.groups:
do_some_build_task
Do more things

This would solve the problem of having to specify different combinations of inventory, however you'd still need to run the pyinfra CLI twice to first run your build tasks, then run your deployment tasks. I think the answer to that is adding a high level Python script that uses [packaged deploys](https://docs.pyinfra.com/en/latest/api/deploys.html) to orchestrate this activity for you. Then your Python script would just be:

from packaged_deploys import build, deploy
build()
deploy()
and you could just run that high level script on the CLI from then on.

During my digging through the docs I also found this @mjmare, pyinfra seems to support a config.py file that will give you access to run tasks locally before making any remote connections. It appears this might suit your use case?

Historically I have achieved this kind of thing using config.py as @benridley suggested - specifically for things like building frontend bundles with webpack before uploading. It should also be possible to achieve in one (see below) but any operations that rely on local files generated by local commands will fail because those files will not exist until after operations start to execute.
# inventory.py
local = ['@local']
remote = ['my-server.net']

# deploy.py
from pyinfra import host
from pyinfra.operations import server

if 'local' in host.groups:
    server.shell('echo this is a local command')

if 'remote' in host.groups:
    server.shell('echo this is a remote command, executed second')

Also note - @ssh/X works too - the SSH connector is just the default for any host names that don't begin @, so is recommended to be left off as the most common target type.

I am now wondering if there's a better way to handle this within a single deploy file - like above but executed as two deploys rather than one. OR - perhaps this is an unncessary over-complication of pyinfra, and something that should be handled outside (via script/similar). I'm unsure on the right approach here, open to thoughts.


[Api Traffic Summary Widget]  X-axis ticks need to be rotated from corner instead of rotating at center

Description:
Please see the screenshot below. Ticks need to be rotated from the corner, unless the part above x-axis will get covered when there is more data.

This is fixed now


Is it possible to load API keys from a .env file

Question
I'm using the Gemini API and I'm it I'm getting the error saying "API key not valid".
My app looks something like this
from dotenv import load_dotenv

load_dotenv()

# Set other config

import src.config
from mirascope.core import BaseMessageParam, Messages, gemini

@gemini.call("gemini-1.5-flash")
def call_thing(message):
    return message

But if I load the env variable in my shell before invoking the python code, everything is working is expected
For example:
export GOOGLE_API_KEY="..."
python src/main.py

I tried to find some way to explicitly pass the API key to the call function after loading from .env but looks from the documentation that it does not work.

The mirascope library internally uses Google's SDK to make API calls, so there's nothing particularly special happening. While it's interesting that it works when you export the key in the shell, it's difficult to diagnose the exact issue with the information provided.
Although I'm not an expert with dotenv, I suspect this might be related to the timing of when variables are loaded. At the very least, Gemini allows you to configure the API key in Python directly, so you could try the following approach:
from google.generativeai import configure
from mirascope.core import gemini

configure(api_key="your-api-key")

@gemini.call("gemini-1.5-flash")
def call_thing(message):
    return message

https://ai.google.dev/gemini-api/docs/quickstart?lang=python#make-first-request

Hey! Thanks for the response!  This was helpful.
Your direction helped with some "printf debugging"
Unfortunately, the issue I was facing is a little stupider than the sequence in which .env is loaded by dotenv.
My .env looked something like this
GOOGLE_API_KEY="AIXXXXXXXXXXXXXXXXXXXX"

and dotenv was loading it reading the variable like so: "AIXXXXXXXXXXXXXXXXXXXX" (including the quotes)
Clearly, the answer to "Is it possible to load API keys from a .env file?" is yes
Also, the answer to "Is there some way to explicitly pass the API key?" is yes, but there's no provider-agnostic interface to do this.
Thanks for all the work!


[RTSP source] [s->c] RTSP/1.0 400 Bad Request

Which version are you using?
v1.4.2
Which operating system are you using?

[ ] Linux amd64 standard
[ ] Linux amd64 Docker
[ ] Linux arm64 standard
[ ] Linux arm64 Docker
[ ] Linux arm7 standard
[ ] Linux arm7 Docker
[ ] Linux arm6 standard
[ ] Linux arm6 Docker
[x] Windows amd64 standard
[ ] Windows amd64 Docker (WSL backend)
[ ] macOS amd64 standard
[ ] macOS amd64 Docker
[ ] Other (please describe)

Describe the issue
I use it to transfer different streams to one application, which does not support all formats. There are no problems with HLS, everything works perfectly. But when I try to stream from the camera using the RTSP protocol, an error appears: [RTSP source] [s->c] RTSP/1.0 400 Bad Request.
Paths section of configuration file simply:
paths:
door:
source: rtsp://<IP_ADDRESS>:8554/live/ch00_0
I try many versions, but no luck.
Describe how to replicate the issue

NVR (with some cameras) stream RTSP on port 8554
mediamtx
VLC

Did you attach the server logs?
yes
Did you attach a network dump?
yes
This dump for VLC
OPTIONS rtsp://<IP_ADDRESS>:8554/live/ch00_0 RTSP/1.0
CSeq: 2
User-Agent: LibVLC/<IP_ADDRESS> (LIVE555 Streaming Media v2016.11.28)
RTSP/1.0 200 OK
CSeq: 2
Date: Tue, 09 Jan 2024 01:59:49 GMT
Public: OPTIONS,DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN
DESCRIBE rtsp://<IP_ADDRESS>:8554/live/ch00_0 RTSP/1.0
CSeq: 3
User-Agent: LibVLC/<IP_ADDRESS> (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp
RTSP/1.0 200 OK
CSeq: 3
Date: Tue, 09 Jan 2024 01:59:49 GMT
Content-Type: application/sdp
Content-Language: en
x-Accept-Dynamic-Rate: 1
Content-Length: 325
v=0
o=- 22669896 782967157  IN IP4 <IP_ADDRESS>
s=live
c=IN IP4 <IP_ADDRESS>
t=0 0
a=control:*
m=video 0 RTP/AVP 96
b=AS:2058
a=rtpmap:96 H264/90000
a=range:npt=0-
a=control:rtsp://<IP_ADDRESS>:554/video/live00_0
m=audio 0 RTP/AVP 8
b=AS:64
a=rtpmap:8 PCMA/8000
a=control:rtsp://<IP_ADDRESS>:554/audio/live00_0
SETUP rtsp://<IP_ADDRESS>:554/video/live00_0 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/<IP_ADDRESS> (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
RTSP/1.0 200 OK
CSeq: 4
Date: Tue, 09 Jan 2024 01:59:49 GMT
Cache-Control: no-cache
Transport: RTP/AVP/TCP;interleaved=0-1;ssrc=1705716749
Session: 22669896
SETUP rtsp://<IP_ADDRESS>:554/audio/live00_0 RTSP/1.0
CSeq: 5
User-Agent: LibVLC/<IP_ADDRESS> (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP/TCP;unicast;interleaved=2-3
Session: 22669896
RTSP/1.0 200 OK
CSeq: 5
Date: Tue, 09 Jan 2024 01:59:49 GMT
Cache-Control: no-cache
Transport: RTP/AVP/TCP;interleaved=2-3;ssrc=1705716749
Session: 22669896
PLAY rtsp://<IP_ADDRESS>:8554/live/ch00_0 RTSP/1.0
CSeq: 6
User-Agent: LibVLC/<IP_ADDRESS> (LIVE555 Streaming Media v2016.11.28)
Session: 22669896
Range: npt=0.000-
RTSP/1.0 200 OK
CSeq: 6
Date: Tue, 09 Jan 2024 01:59:49 GMT
Session: 22669896
Range:  npt=0.000-
RTP-Info: url=rtsp://<IP_ADDRESS>:554/video/live00_0;seq=53579;rtptime=1929048562,url=rtsp://<IP_ADDRESS>:554/audio/live00_0;seq=9922;rtptime=291684329
This dump for MEDIAMTX
OPTIONS rtsp://<IP_ADDRESS>:8554/live/ch00_0 RTSP/1.0
CSeq: 1
User-Agent: gortsplib
RTSP/1.0 200 OK
CSeq: 1
Date: Tue, 09 Jan 2024 01:40:03 GMT
Public: OPTIONS,DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN
DESCRIBE rtsp://<IP_ADDRESS>:8554/live/ch00_0 RTSP/1.0
Accept: application/sdp
CSeq: 2
User-Agent: gortsplib
RTSP/1.0 400 Bad Request
CSeq: 1
mediamtx.log

Looks like the order of the lines for the DESCRIBE request are different. I'm surprised the camera cares

How can this problem be solved?

The information in the log has changed a little, but the problem has not been solved.
2024/01/16 15:15:06 INF MediaMTX
2024/01/16 15:15:06 INF configuration loaded from D:\temp\mediamtx.yml
2024/01/16 15:15:06 DEB [path door] created
2024/01/16 15:15:06 DEB path manager created
2024/01/16 15:15:06 INF [path door] [RTSP source] started
2024/01/16 15:15:06 DEB [path door] [RTSP source] connecting
2024/01/16 15:15:06 DEB [path door] [RTSP source] [c->s] OPTIONS rtsp://<IP_ADDRESS>:8554/live/ch00_0 RTSP/1.0
CSeq: 1
User-Agent: gortsplib
2024/01/16 15:15:06 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2024/01/16 15:15:06 INF [RTMP] listener opened on :1935
2024/01/16 15:15:06 INF [HLS] listener opened on :8888
2024/01/16 15:15:06 INF [WebRTC] listener opened on :8889 (HTTP), :8189 (ICE/UDP)
2024/01/16 15:15:06 DEB [path door] [RTSP source] [s->c] RTSP/1.0 200 OK
CSeq: 1
Date: Tue, 16 Jan 2024 15:15:10 GMT
Public: OPTIONS,DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN
2024/01/16 15:15:06 DEB [path door] [RTSP source] [c->s] DESCRIBE rtsp://<IP_ADDRESS>:8554/live/ch00_0 RTSP/1.0
CSeq: 2
Accept: application/sdp
User-Agent: gortsplib
2024/01/16 15:15:06 INF [SRT] listener opened on :8890 (UDP)
2024/01/16 15:15:06 DEB [path door] [RTSP source] [s->c] RTSP/1.0 200 OK
CSeq: 2
Content-Language: en
Content-Length: 325
Content-Type: application/sdp
Date: Tue, 16 Jan 2024 15:15:10 GMT
X-Accept-Dynamic-Rate: 1
v=0
o=- 57160522 782967157  IN IP4 <IP_ADDRESS>
s=live
c=IN IP4 <IP_ADDRESS>
t=0 0
a=control:*
m=video 0 RTP/AVP 96
b=AS:2058
a=rtpmap:96 H264/90000
a=range:npt=0-
a=control:rtsp://<IP_ADDRESS>:554/video/live00_0
m=audio 0 RTP/AVP 8
b=AS:64
a=rtpmap:8 PCMA/8000
a=control:rtsp://<IP_ADDRESS>:554/audio/live00_0
2024/01/16 15:15:06 ERR [path door] [RTSP source] invalid SDP: sdp: invalid numeric value 782967157
2024/01/16 15:15:11 DEB [path door] [RTSP source] connecting
2024/01/16 15:15:11 DEB [path door] [RTSP source] [c->s] OPTIONS rtsp://<IP_ADDRESS>:8554/live/ch00_0 RTSP/1.0
CSeq: 1
User-Agent: gortsplib
2024/01/16 15:15:11 DEB [path door] [RTSP source] [s->c] RTSP/1.0 200 OK
CSeq: 1
Date: Tue, 16 Jan 2024 15:15:15 GMT
Public: OPTIONS,DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN
2024/01/16 15:15:11 DEB [path door] [RTSP source] [c->s] DESCRIBE rtsp://<IP_ADDRESS>:8554/live/ch00_0 RTSP/1.0
CSeq: 2
Accept: application/sdp
User-Agent: gortsplib
2024/01/16 15:15:11 DEB [path door] [RTSP source] [s->c] RTSP/1.0 200 OK
CSeq: 2
Content-Language: en
Content-Length: 325
Content-Type: application/sdp
Date: Tue, 16 Jan 2024 15:15:15 GMT
X-Accept-Dynamic-Rate: 1
v=0
o=- 39002087 782967157  IN IP4 <IP_ADDRESS>
s=live
c=IN IP4 <IP_ADDRESS>
t=0 0
a=control:*
m=video 0 RTP/AVP 96
b=AS:2058
a=rtpmap:96 H264/90000
a=range:npt=0-
a=control:rtsp://<IP_ADDRESS>:554/video/live00_0
m=audio 0 RTP/AVP 8
b=AS:64
a=rtpmap:8 PCMA/8000
a=control:rtsp://<IP_ADDRESS>:554/audio/live00_0
2024/01/16 15:15:11 ERR [path door] [RTSP source] invalid SDP: sdp: invalid numeric value 782967157
2024/01/16 15:15:16 DEB [path door] [RTSP source] connecting
2024/01/16 15:15:16 DEB [path door] [RTSP source] [c->s] OPTIONS rtsp://<IP_ADDRESS>:8554/live/ch00_0 RTSP/1.0
CSeq: 1
User-Agent: gortsplib
2024/01/16 15:15:16 DEB [path door] [RTSP source] [s->c] RTSP/1.0 200 OK
CSeq: 1
Date: Tue, 16 Jan 2024 15:15:20 GMT
Public: OPTIONS,DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN

@belovkb thanks for providing the new log, here's another nightly release that should fix the SDP-related error too. Please let me know if it works:
https://github.com/bluenviron/mediamtx/actions/runs/7576004813

Hello, sorry for the lack of updates, fixing the server in order to support a specific device is always difficult since the only way to do it is interacting with someone that owns the device. Anyway, your camera had multiple compatibility issues, that are now partially solved:

headers need to be sorted in a specific way (solved)
SDP parser needs to be improved (solved)
VLC is closing the connection with the server, probably because no packets are being received (TODO)

We're at point 3 and some data is needed in order to go on.
You need to generate and attach two network dumps:

one of traffic between the camera and VLC, without MediaMTX involved
the other one of traffic between the camera, MediaMTX and VLC

A network dump can be generated in this way:

Download wireshark (https://www.wireshark.org/)
Start capturing on the interface used for exchanging packets (if the server and the external hardware or software are both installed on your pc, the interface is probably "loopback", otherwise it's the one of your network card)
Start the server and replicate the issue
Stop capturing, save the result in .pcap format
Attach

Those dumps should be enough to solve the issue once for all.

PS: in order to generate the second dump, use the MediaMTX nightly release attached in https://github.com/bluenviron/mediamtx/issues/2887#issuecomment-1899209280, since i didn't merge the two previous fixes into the main branch yet.

@belovkb are you able to provide requested data?

closed since author didn't provide requested data. It's a pity since the SDP-related issue and the CSeq-related issue were solved, but it's impossible to go on without collaboration from someone who physically owns the device.


Add option to lock out by ip OR username

Maybe I did get something wrong, but I think, that it would be possible to set increase safety options of django-axes.
With the default option, the attacker can have access to large stack of IP addresses (i.e. through IPv6, darkweb or botnet), and with that he can make N login attempts per IP, which might be sufficient to guess someones password.
On the other hand the other options are insufficient either (at least what I found). The AXES_LOCK_OUT_BY_COMBINATION_USER_AND_IP has same problem as the previous case and the AXES_ONLY_USER_FAILURES would allow many N*U login attempts per username to attacker with username list of the server (and he could repeat his attack after cooloff time or filling in captcha depending on server configuration).
I think, that django-axes needs to (at least offer, but I think it is good default) locking out based on username OR ip address attempt count. With that I mean, that after N attempts from IP address the access from that address is locked out regardless of username and after N attempts with the same username, the username is locked out regardless of IP address.

Yeah, it would be good to offer a combination of both of these options. The project is open for PRs.
A few notes on the implementation of this feature:

new unit tests need to be implemented for this feature,
existing handlers need to be refactored in order to facilitate this, and
it could be good to refactor the existing test base while implementing this since it has a lot of old cruft.


Can not update Contract

When try to update contract date, the request looks like that:
{"date_start":"2017-11-05T00:00:00.000Z","date_end":"2017-11-18T00:00:00.000Z","dateStart":"2017-11-05T00:00:00.000Z","dateEnd":"2017-11-18T00:00:00.000Z"}

did you upgrade to the latest version of the wrapper?

Should be fixed in 7d332b341c684e2fc90d3b87e992781fb47725b8

Works


Add prettier

Add prettier package
run by default for all files

https://justangular.com/blog/configure-prettier-and-eslint-with-angular

https://www.digitalocean.com/community/tutorials/how-to-format-code-with-prettier-in-visual-studio-code


Fixes issue #8366

Proposed Changes

Fixes #issue_number
Change 1
Change 2
More?

@ohcnetwork/code-reviewers
Merge Checklist

[x] Add specs that demonstrate bug / test a new feature.
[x] Update product documentation.
[x] Ensure that UI text is kept in I18n files.
[x] Request for Peer Reviews
[x] Prep screenshot or demo video for changelog entry, and attach it to issue.
[x] Completion of QA

@Adiflickzzz Please follow contributing guidelines. https://github.com/ohcnetwork/care_fe#contributing-to-care

[ ] Needs proper title for the PR
[ ] Link the issue with a closing keyword in the PR's main comment

Closing as duplicate of #8443


Close Path not recognized if there is no space

I have the following Path: "...ZM...". NSScanner interprets this as a "ZM" command. The output is weird ;)
My workaround for SVGParser.swift at lines 1053:
        repeat {
            scanner.scanCharacters(from: set, into: &pathCommandName)
			if pathCommandName?.length == 2 {	// two commands without space, for example "ZM"
				let command1 = pathCommandName!.substring(to: 1)
				pathCommands.append(
					PathCommand(
						type: getCommandType(command1 as String),
						expression: "",
						absolute: isAbsolute(command1 as String)
					)
				)
				pathCommandName = pathCommandName!.substring(from: 1) as NSString
			}
            scanner.scanUpToCharacters(from: set, into: &pathCommandValues)

Maybe there is a nicer possibility? I don't really know NSScanner

This one is fixed in the master version. Please let us know if it doesn't work for you.