Cookies Fields

I'm trying to play a site that has cookie sessions, how do I put all these fields:
Cookie | Value | Patch | Domain

livestreamer --http-header "Cookie=vssession=qvgacArux-KOtG2s7TUyvA14597798540782436964/v0/p7795/0c/61/fa/4633312_fa2508b68102669e370e86adcdf5e07e93d246a7/4633312-manifest.ism/?0401459778768085532509614597822444709745473gGzf1gD4vd4tUdwicYqFqw|F|527aa7ff92144743ae000157_4191fd6e-6342-41c6-811a-6f2d5baca537; optimizelyEndUserId=oeu1459473392105r0.9130382984633368; optimizelySegments=%7B%224368606843%22%3A%22none%22%2C%224322720201%22%3A%22direct%22%2C%224306972891%22%3A%22false%22%2C%224322020181%22%3A%22ff%22%7D; optimizelyBuckets=%7B%225391120919%22%3A%220%22%7D; utag_main=v_id:0153cf64a30c00482258120ddd2008049001500d0086e$_sn:1$_ss:1$_pn:1%3Bexp-session$_st:1459475192396$ses_id:1459473392396%3Bexp-session; nav13574=5dbff3fc5a3fe33e8cfb97ef109|2_231; __utma=100629313.1336473454.1459473395.1459473395.1459473395.1; __utmz=100629313.1459473395.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); glb_uid="Y9_Ekuz_fBndZ7gJt-YpTj7EJWdyOCfq5fX8WGs6Rfc="; _gads=ID=50164073f35c1854:T=1459473396:S=ALNI_MY50tB-kVM0vp-ur-1tpRd1gUBpQ; WMPTOKEN_527aa7ff92144743ae000157=e430acff53be7918f1b02b97a5270045; locksession=df8cd05251a66fa2c2cea3e8597ca579" "hlsvariant:https://STREAM_URL" HTTP/1.1  --loglevel debug
more appears this error:
Traceback (most recent call last):
File "", line 6, in
File "main.py", line 128, in
File "main__livestreamer.py", line 9, in
File "livestreamer_cli\main.py", line 886, in main
File "livestreamer_cli\main.py", line 471, in handle_url
File "livestreamer_cli\main.py", line 388, in fetch_streams
File "livestreamer\plugin\plugin.py", line 313, in get_streams
File "livestreamer\plugin\plugin.py", line 227, in streams
File "livestreamer\plugins\stream.py", line 54, in _get_streams
AttributeError: 'NoneType' object has no attribute 'group'

I think your issue is that you have quotes inside of one of your cookie values (glb_uid)
Try turning the embedded quotes into %22

Deleted the code because the values of cookies can bring me a problem, is not very safe to share
I'm not sure what the problem was but solve here. I love livestreamer.


Confirm we're using the correct uint.mulDiv

https://github.com/credbull/credbull-defi/blob/93b4700f9977a08e2b053aa5cab442ba5c6efc13/packages/contracts/src/vault/FixedYieldVault.sol#L73
FixedYieldVault.sol has the below call to mulDiv taking only 2 parameters.  However, the OpenZeppelin Math library only has a version with 3 paramaters.  clarify we are using the correct version.
   // @notice - Returns expected assets on maturity     function expectedAssetsOnMaturity() public view override returns (uint256) {         return totalAssetDeposited.mulDiv(100 + _fixedYield, 100);     }

See answer:

using Math for uint256; makes all Math library functions callable on uint256 values, as if they were member functions.
so totalAssetDeposited.mulDiv(100 + _fixedYield, 100); implicitly passes totalAssetDeposited as the first parameter (x) to the mulDiv function, making it equivalent to:
Math.mulDiv(totalAssetDeposited, 100 + _fixedYield, 100);


chore: Remove unnecessary steps from prepare preview builds script

Explanation
These steps handled updating workspace: references, but we don't use those anymore (since #1623).
References
Related to #1623
Changelog
None
Checklist

[x] I've updated the test suite for new or updated code as appropriate
[x] I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
[x] I've highlighted breaking changes using the "BREAKING" category above as appropriate

It seems that in the original logic we updated all internal dependencies to their equivalents under the @metamask-previews namespace. That no longer happens now, but is it something we want to do? Or... do we already handle that somewhere 🤔

In the new workflow, the user of the new preview packages is expected to use resolutions to update any packages that are relevant to what they are testing. The resolutions serve that purpose now instead.
There is a bit of a footgun here still in that you can forget to update the resolutions. But updating them manually in the preview manifests would also be a footgun, as it would force the extension to update each transitive dependency when they otherwise would have been in-range (which could prevent us from noticing that we forgot to release something critical). Either way has risks.
Though regardless, this code being deleted here doesn't do anything today, so we can remove it and consider replacing it with something later if we think it's necessary.


if log fails, avoid pms getting double free

If logging premaster secret fails, this lead to double free of s->s3->tmp.pms
assigning pms after log is successful to handle this.
Applicable to master and 1.1.0

Maybe just move the assignment down?

i'll merge, but any complaints if i try all three branches?

This will not apply to 1.0.2. The code is completely different in this area.

and different in 1.1.0 also (no keylogging to fail).  so only in master, with 26fb4b0.  Thanks AJ!

Applicable to master and 1.1.0

there were merge conflicts (because the log call isn't present?) in 1.1.0, so can you do an explicit 1.1.0 PR?

Sorry, its good in 1.1.0. The change is applicable to only master.


Filter with claim

I have been using this as a filter with role, I need to filter with role or claim
1. Support a combination of filter with Role or Claims combination
For e.g. someone may be a manager role or could have audit & finance  claim and w
modelBuilder.Filter("RestrictItemsBaseOnAccsess",
                (IAccessRestrictedItem x, List<string> roles) => x.AccessType == AccessType.Public
                         || roles.Any(r => r == x.AllowedRolesPremissionJsonString),
                 (GlobalFilter ctx) => ctx.IdentityManager.GetCurrentIdentityRoles())

               // How do I support claims /claim manager
               .Filter("RestrictItemsBaseOnAccsess",
                (IAccessRestrictedItem x, List<string> Claims) => { (x.Name == "Manager" || x.Name == "Finance") };

Hello @papyr ,
Thank for your suggestion, one of my developer will look at it but I'm not sure if that will be possible or not.
Best Regards,
Jon

Performance Libraries
context.BulkInsert(list, options => options.BatchSize = 1000);
Entity Framework Extensions • Entity Framework Classic • Bulk Operations •  Dapper Plus
Runtime Evaluation
Eval.Execute("x + y", new {x = 1, y = 2}); // return 3
C# Eval Function • SQL Eval Function

I love the eval @JonathanMagnan can you please add a sample to parse an equation from the web

@bump 😃


Are the colors correct here? If a disabled button gets focus, it no longer looks disabled

Are the colors correct here? If a disabled button gets focus, it no longer looks disabled

https://github.com/microsoft/vscode/commit/3479bb35904eb046c0974090794cac9c76173796

@isidorn This started from: https://github.com/microsoft/vscode/commit/3479bb35904eb046c0974090794cac9c76173796
What's the reasoning behind keeping tab indexes on disabled elements? Doesn't make much sense to me.


Added plugin to take JSON file(s) as input.

Motivation for changes:
Rather than convert JSON to csv or text parsing, simply use JSON.
Detailed changes:

Added plugin that takes either a JSON file or a directory containing multiple JSON files and converts the contents into entries.

Config usage if relevant (new plugin or updated schema):
tasks/templates:
  input_json_task_name:
    json:
      files: <filename here>.json OR
      files: '<path/to/JSON/files/>*.json'
      encoding: <JSON encoding here>
      entry:
        - <entry field name that also exists as a JSON field name>
        - <entry field name>: <JSON field name>
        - get_remnants

SCHEMA:
schema = {
    'type': 'object',
    'properties': {
        'files': {'type': 'string'},
        'encoding': {'type': 'string', 'default': 'utf-8'},
        'entry': {
            'type': 'array',
            'items': {
                'oneOf': [
                    {'type': 'string'},
                    {
                        'type': 'object',
                        'additionalProperties': {
                            'type': 'string', 'format': 'regex'
                        },
                    },
                ]
            },
        },
    },
    'required': ['files'],
    'additionalProperties': False,
}

Log and/or tests output (preferably both):

flexget --test execute --task input_json --debug --dump

2019-11-10 21:37 INFO     manager                       Test mode, creating a copy from database ...
2019-11-10 21:37 INFO     manager                       Test database created
2019-11-10 21:37 INFO     performance                   Enabling plugin and SQLAlchemy performance debugging
2019-11-10 21:37 VERBOSE  task_queue                    There are 1 tasks to execute. Shutdown will commence when they have completed.
2019-11-10 21:37 VERBOSE  details       input_json      Produced 6 entries.
2019-11-10 21:37 VERBOSE  task          input_json      ACCEPTED: `black` by accept_all plugin
2019-11-10 21:37 VERBOSE  task          input_json      ACCEPTED: `white` by accept_all plugin
2019-11-10 21:37 VERBOSE  task          input_json      ACCEPTED: `red` by accept_all plugin
2019-11-10 21:37 VERBOSE  task          input_json      ACCEPTED: `blue` by accept_all plugin
2019-11-10 21:37 VERBOSE  task          input_json      ACCEPTED: `yellow` by accept_all plugin
2019-11-10 21:37 VERBOSE  task          input_json      ACCEPTED: `green` by accept_all plugin
2019-11-10 21:37 VERBOSE  details       input_json      Summary - Accepted: 6 (Rejected: 0 Undecided: 0 Failed: 0)
-- Accepted: ---------------------------
title            : black
url              : https://google1.com
original_url     : https://google1.com
accepted_by      : accept_all
category         : hue
code             : 255,255,255,1
color            : black
original_task    : primary_task_name
original_title   : black
quality          : <LazyField - value will be determined when it is accessed>
task             : input_json

title            : white
url              : https://google2.com
original_url     : https://google2.com
accepted_by      : accept_all
category         : hue
code             : 0,0,0,1
color            : white
original_task    : primary_task_name
original_title   : white
quality          : <LazyField - value will be determined when it is accessed>
task             : input_json

title            : red
url              : https://google3.com
original_url     : https://google3.com
accepted_by      : accept_all
category         : hue
code             : 255,0,0,1
color            : red
original_task    : primary_task_name
original_title   : red
quality          : <LazyField - value will be determined when it is accessed>
task             : input_json

title            : blue
url              : https://google4.com
original_url     : https://google4.com
accepted_by      : accept_all
category         : hue
code             : 0,0,255,1
color            : blue
original_task    : primary_task_name
original_title   : blue
quality          : <LazyField - value will be determined when it is accessed>
task             : input_json

title            : yellow
url              : https://google5.com
original_url     : https://google5.com
accepted_by      : accept_all
category         : hue
code             : 255,255,0,1
color            : yellow
original_task    : primary_task_name
original_title   : yellow
quality          : <LazyField - value will be determined when it is accessed>
task             : input_json

title            : green
url              : https://google6.com
original_url     : https://google6.com
accepted_by      : accept_all
category         : hue
code             : 0,255,0,1
color            : green
original_task    : primary_task_name
original_title   : green
quality          : 720p hdtv
task             : input_json

2019-11-10 21:37 VERBOSE  list_add      input_json      adding accepted entries into entry_list - test
2019-11-10 21:37 INFO     performance                   Performance results for task input_json:
2019-11-10 21:37 INFO     performance                   list_add        took 0.58 sec (33 queries)
2019-11-10 21:37 INFO     performance                   status          took 0.22 sec (4 queries)
2019-11-10 21:37 INFO     manager                       Removed test database

Actual Config for above output:
tasks:
  input_json:
    accept_all: yes
    json:
      files: fake_data.json
      entry:
        - title: color
        - original_task: 't.*k'
        - get_remnants
    list_add:
      - entry_list: test

Actual fake_data.json:
{
"item1": {
      "title": "test_of_title1",
      "color": "black",
      "url": "https://google1.com",
      "category": "hue",
      "task": "primary_task_name",
      "code": "255,255,255,1"
      },

"item2": {
      "title": "test_of_title2",
      "color": "white",
      "url": "https://google2.com",
      "category": "hue",
      "task": "primary_task_name",
      "code": "0,0,0,1"
      },

"item3": {
      "title": "test_of_title3",
      "color": "red",
      "url": "https://google3.com",
      "category": "hue",
      "task": "primary_task_name",
      "code": "255,0,0,1"
      },

"item4": {
      "title": "test_of_title4",
      "color": "blue",
      "url": "https://google4.com",
      "category": "hue",
      "task": "primary_task_name",
      "code": "0,0,255,1"
      },

"item5": {
      "title": "test_of_title5",
      "color": "yellow",
      "url": "https://google5.com",
      "category": "hue",
      "task": "primary_task_name",
      "code": "255,255,0,1"
      },

"item6": {
      "title": "test_of_title6",
      "color": "green",
      "url": "https://google6.com",
      "category": "hue",
      "task": "primary_task_name",
      "code": "0,255,0,1",
      "quality": "hdtv 720p"
      }
}

To Do:

[ ] Discuss how much to de-serialize
[ ] Discuss where to de-serialize

I only de-serialize datetime strings to datetime object. Everything else is left as a string. More decoding can be added in the future, if it is needed. I think this one is ready to go, if one of you all could do one last review.

I modified your plugin a bit to simplify as many things as I could, which could be used as a model. I think it's best to only add to add features where absolutely necessary.
Multi-file support can be handled with inputs plugin, (or when we merge it, glob like support could be done with parameterize plugin.)
https://github.com/Flexget/Flexget/blob/json_input/flexget/plugins/input/json.py

Thanks!


[BUG] errors in console of documentation website

Describe the bug
errors in the rendered documentation
is not blocking
Uncaught TypeError: a.registerLanguage is not a function
    [35]< https://rosaenlg.org/_/js/vendor/highlight.js:1
    l https://rosaenlg.org/_/js/vendor/highlight.js:1
    a https://rosaenlg.org/_/js/vendor/highlight.js:1
    <anonymous> https://rosaenlg.org/_/js/vendor/highlight.js:1
highlight.js:1:103036
Uncaught TypeError: hljs.initHighlighting is not a function
    <anonymous> https://rosaenlg.org/rosaenlg/2.1.6/index.html:763
index.html:763:6
GEThttps://rosaenlg.org/favicon.ico
[HTTP/2 404 Not Found 0ms]

To Reproduce
go to https://rosaenlg.org/rosaenlg/2.1.6/index.html and show console
Expected behavior
no errors
Context:

RosaeNLG version: 2.1.6
Language: NA
Packaging: doc

Additional context
2.1.6 contains a new version of highlight.js, is it related?

done on v2.1.7


x/vgo: support hg and possibly hgweb.cgi

What version of Go are you using (go version)?

vgo version
go version go1.10.1 linux/amd64 vgo:2018-02-20.1

What operating system and processor architecture are you using (go env)?

vgo env
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/matthew/.cache/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/matthew/src/Go_external_1.10.1"
GOPROXY=""
GORACE=""
GOROOT="/home/matthew/src/golang/go1.10.1"
GOTMPDIR=""
GOTOOLDIR="/home/matthew/src/golang/go1.10.1/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build416094540=/tmp/go-build -gno-record-gcc-switches"
VGOMODROOT="/home/matthew/tmp/foo"

What did you do?

mkdir -p tmp/foo
cd !!$
echo 'module foo' > go.mod
vgo get goshawkdb.io/common

What did you expect to see?

vgo: finding goshawkdb.io/common v1.0.0

What did you see instead?

vgo get goshawkdb.io/common: unknown VCS, Repo: hg, https://src.goshawkdb.io/common

Now, this works fine with normal go get and the meta header is there correctly:

curl  https://goshawkdb.io/common

<html>
<head>
<meta name="go-import" content="goshawkdb.io/common hg https://src.goshawkdb.io/common"/>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
</head>
</html>

I suspect this may be classed as a dupe of #25074 but that issue isn't enormously clear to me ;)
The other thing worth pointing out is that hgweb.cgi is probably the most common way of putting an http interface on hg repos. https://www.mercurial-scm.org/wiki/HgWebDirStepByStep an example of which is https://src.goshawkdb.io/common Note that this does provide tags (https://src.goshawkdb.io/common/tags and even rss: https://src.goshawkdb.io/common/rss-tags) and features such as tarballs of specific tags (eg https://src.goshawkdb.io/common/archive/goshawkdb_0.3.1.tar.gz) and even revisions (eg https://src.goshawkdb.io/common/archive/458b975cb054.tar.gz). Point is, you don't have to fall back to cloning the whole repo if you can detect that you're talking to hgweb.cgi

I suspect this may be classed as a dupe of #25074 but that issue isn't enormously clear to me ;)

Yep, I think it is. Russ is working on a number of fixes to vgo get this week, so hopefully this will get better soon.


"when done" does not work with recurrence modifier

Please check that this issue hasn't been reported before.

[X] I searched previous Bug Reports didn't find any similar reports.

Expected Behavior
The following recurring task that was marked as completed:
- [x] My Task 🔁 every 3 weeks on Saturday when done 📅 2024-04-20 ✅ 2024-05-28
should result in a new task
- [] My Task 🔁 every 3 weeks on Saturday when done 📅 2024-06-22
Current behaviour
The following recurring task that was marked as completed:
- [x] My Task 🔁 every 3 weeks on Saturday when done 📅 2024-04-20 ✅ 2024-05-28
currently results in a new task
- [] My Task 🔁 every 3 weeks on Saturday when done 📅 2024-06-01
Steps to reproduce

Create a new task - [] My Task 🔁 every 3 weeks on Saturday when done 📅 2024-04-20
Mark as complete
Observe the new task's due date is not 3 weeks from the current date.

Which Operating Systems are you using?

[ ] Android
[ ] iPhone/iPad
[ ] Linux
[ ] macOS
[X] Windows

Obsidian Version
1.5.12
Tasks Plugin Version
7.3.0
Checks

[X] I have tried it with all other plugins disabled and the error still occurs

Possible solution
No response

Yes - looks like the same one! I guess my GitHub search fu is not up to par.

No worries - I really appreciate that you did search first, and it's only because I know how I've labelled them that I can find similar ones reasonably quickly...
So please do 👍 that other other...


How to implement??

I added exactly what it says to add in the readme, but I get this when I try to compile:
"Caused by: java.lang.ClassNotFoundException: Didn't find class "com.triggertrap.seekarc.SeekArc" on path: DexPathList[[zip file "/data/app/com.(package name etc)"
Surely there must be another step??

Check the latest version 1.1 and include via jitpack.io link. If there's still an issue please post more information about your setup, i.e Android Studio, SDK versions, build.gradle files etc.


Generating methods

As mentioned in https://github.com/rescript-lang/experimental-rescript-webapi/issues/2#issuecomment-2453025647, I'm looking into generating methods via the typescript tool.
The first example I'm trying to implement is already an interesting case: https://developer.mozilla.org/en-US/docs/Web/API/AudioNode/connect
Naively it can be added as:
type rec audioNode = {
  /**
    [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AudioNode/numberOfInputs)
    */
  numberOfInputs: any,
  /**
    [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AudioNode/numberOfOutputs)
    */
  numberOfOutputs: any,
  /**
    [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AudioNode/channelCount)
    */
  mutable channelCount: any,

  // this does work though
  connect: (~destinationNode: audioNode, ~output: int=?, ~input: int=?) => unit,
}

connect has overloads. In this case, I'm lucky and the overloads are all optional parameters.
But this might not always be the case.
In case of https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
the last parameter is different and thus the optional types don't work there.
type any

type listener

type eventTarget = {
  addEventListener: (
    ~type_: string,
    ~listener: listener,
    ~options: any=?,
    ~useCapture: bool=?,
  ) => unit,
}

let et: eventTarget = %todo
let callback: listener = %todo

et.addEventListener(~type_="click", ~listener=callback, ~useCapture = true)

generates:
et.addEventListener("click", callback, undefined, true);

so optional arguments won't always work.
It is also not possible to define overloads inside the record using the @as annotation:
type rec audioNode = {
  connect: (~destinationNode: audioNode, ~output: int=?, ~input: int=?) => unit,
  @as("connect") connectWithOutput: (audioNode, int) => unit,
}

// The field connect is defined several times in the record audioNode. Fields can only be added once to a record.

Using a nested module and @send seems like a good trade-off in this case:
/**
A generic interface for representing an audio processing module. Examples include:
[See AudioNode on MDN](https://developer.mozilla.org/docs/Web/API/AudioNode)
*/
type rec audioNode = {
   ...eventTarget,
  /**
    [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AudioNode/numberOfInputs)
    */
  numberOfInputs: any,
  /**
    [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AudioNode/numberOfOutputs)
    */
  numberOfOutputs: any,
  /**
    [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AudioNode/channelCount)
    */
  mutable channelCount: any,
}

module AudioNode = {
  @send external connect: (audioNode, audioNode) => unit = "connect"

  @send
  external connectWithOutput: (audioNode, audioNode, any) => unit = "connect"

  @send
  external connectWithOutputAndInput: (audioNode, audioNode, any, any) => unit =
    "connect"
}

let a: audioNode = %todo
let b: audioNode = %todo
let c: any = %todo

a->AudioNode.connectWithOutput(b, c)

Another thought I have about having dedicated modules for these functions is that we can duplicate the inherited functions and thus avoiding the need to cast it first to a base interface.
type any

type listener

type eventTarget = {}

module EventTarget = {
  @send
  external addEventListener: (eventTarget, string, listener) => unit =
    "addEventListener"
}

/**
A generic interface for representing an audio processing module. Examples include:
[See AudioNode on MDN](https://developer.mozilla.org/docs/Web/API/AudioNode)
*/
type rec audioNode = {
  ...eventTarget,
  /**
    [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AudioNode/numberOfInputs)
    */
  numberOfInputs: any,
  /**
    [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AudioNode/numberOfOutputs)
    */
  numberOfOutputs: any,
  /**
    [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AudioNode/channelCount)
    */
  mutable channelCount: any,
}

module AudioNode = {
  // there will always be scenarios where you want to convert
  external asEventTarget: audioNode => eventTarget = "%identity"

  @send
  external addEventListener: (audioNode, string, listener) => unit =
    "addEventListener"
}

let a: audioNode = %todo
let callback: listener = %todo

a->AudioNode.addEventListener("click", callback)

This again helps with the discoverability if we can nail the trick of showing the completion of addEventListener (from the AudioNode module) after pressing dot in the editor.
Curious to hear your feedback!

It is also not possible to define overloads inside the record using the @as annotation:

This is interesting and something that has come up before. When records are used as a binding primitive for handling external data, it would kind of make sense to allow multiple fields with different types pointing to the same underlying field, and just let the developer be "on their own" in terms of if that causes problems at runtime. Just like how bindings work today in general, ie you're responsible of binding the correct thing, and with a few notable exceptions like untagged variants, the runtime type won't be checked.
I wonder what consequence it'd have to allow that in some form though. Coercion becomes a problem obviously, so maybe coercion shouldn't be allowed at all if the record were to have multiple @as for the same field. Curious to hear more thoughts.
Allowing that in some form would solve a lot of problems though... It'd allow us to use records for a larger amount of bindings, and not have to resort to @send external as often.

Documented the current approach in https://rescript-lang.github.io/experimental-rescript-webapi/03-module-type-structure/


Accept ISBNs with spaces in them

ISBN 13s are commonly formatted with a space
in between the first three digits and the last
10. This change strips all spaces from any input so
these will be valid.
Adds tests.

there is already an ISBN pre-formatting operation going on here, maybe that case could be addressed there too?

merged and published as v1.0.5

there is already an ISBN pre-formatting operation going on here, maybe that case could be addressed there too?

Hmm good point; this PR is maybe too lenient, because it would accept something like 9 7 8 etc too, no matter where the space is. That code only removes a single hyphen in the same spot that people have single spaces, so it makes sense to keep them together for code hygiene reasons.
I guess the question is do we want to be that strict, or maybe we should remove all spaces and all hyphens, or only spaces and hyphens in between the 97* and the next 10 digits? Sometimes the hyphens are incorrectly places within the body of the 10 digit part too...

Removing all spaces seems like a friendly thing to do as spaces aren't meaningful in ISBN, while hyphens are. Hyphenated ISBN are thus faster to parse, so I wouldn't recommend removing all hyphens. (That might be some unnecessary micro-optimisation though)


Allow a default stage

HI,
since the defaultVersionStrategy behaviour has changed in 1.5.0 so that is not longer possible, to execute without setting the stage, I would appreciate it, if a default stage can be set, which is used in case no other stage is overritten with the usual parameter property release.stage.
The reason is simple: During development, we don't want to type -Drelease.stage=SNAPSHOT everytime we call gradle.
regards

Totally agree, I have this tracked as #182 so I'll close this as a duplicate.


Export node array don't allow to assign a value in the editor

Godot version
4.0 rc1, Beta 17
System information
Windows 10
Issue description
A export variable of type Array[node] appear in the editor and everything seems to work but when assigning a node the array doesn't update and keep all it's values at null.

Steps to reproduce
Create a script with
@export var nodes : Array[Node]
or [Export] Node[] nodeArray; in C#
Try to assign a value in the editor.
Minimal reproduction project
N/A

Duplicate of https://github.com/godotengine/godot/issues/62916.

Yep.


API.exists_friendship(user_a, user_b) not exists?

I´m trying to use this functions but seems that not works... :/
It's documented here. http://tweepy.readthedocs.org/en/v3.1.0/api.html#API.exists_friendship
But i can't make it works.

Late but here is a possible solution:
https://github.com/tweepy/tweepy/blob/master/tweepy/api.py#L473-L475
The exists_friendship method has been removed due changes on the Twitter api.

As explained, API.exists_friendship was removed in #290 (Also see #288). This change was released as part of Tweepy 2.1. The corresponding documentation was removed with https://github.com/tweepy/tweepy/commit/38b4503c7d38558becdf4c26838d66e3ceae040a (#862), and this change was released as part of v3.6.0.
Instead, you should use API.show_friendship.
See https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/get-friendships-show.
Alternatively, you can use API.lookup_friendships for relationships of the authenticating user:
https://github.com/tweepy/tweepy/blob/cc3c8e7cae73d28b9a75edb7342f89f04da99702/tweepy/api.py#L518-L533 See https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/get-friendships-lookup.


added console message in head.html welcoming developers to site

Added a console.log message in head.html to welcome developers to the Project Jupyter site. This PR is in reference to https://github.com/jupyter/notebook/issues/1664.

Sweet, let see this live.


Documentation: Motivation

In this story we should extend our README.adoc to better address why people and projects should use ArchUnit and our "template".
As Acceptance Criteria, the following questions should be properly answered:

Why should I use ArchUnit in my project?
Why should I have a look at this sample project?
How can I use this sample project and apply it to my project?
How do I adapt it to my special project needs? Just give a very brief answer and then link to the result of #46 (link will be added in PR for #46)

The first two questions could be answered together. The answer should also link to our violations that we provide as PRs.
The according section for this is already present in the current README so it just needs to be integrated properly into the structure and readers flow.

https://github.com/devonfw/docgen/blob/master/documentation/guidelines.asciidoc


Add blog post on payment transparency to share page

We recently published the formula for payment calculations and should be linked to on this page.

Thanks Patrick


Declare a ModelAdmin to create the original Admin and the deleted Admin

Is there a way to declare a ModelAdmin to create the original Admin and the deleted Admin (inherits SoftDeletedModelAdmin).
I don't want to create a Proxy Model and a Deleted Admin behind each Model  :)

I am looking to do the same thing. I attempted to register the admin class in this repo as well as the regular admin, but was met with an error because I was registering the same model twice. The only solution I've seen so far is the proxy model.
https://stackoverflow.com/questions/2223375/multiple-modeladmins-views-for-same-model-in-django-admin
Some of the answers have at least created clever wrappers to try and keep it DRY.

Hi @ClanEver , @spockNinja
The separated admin models could work with a different models only, so your way is a proxy model. It's a good enough decision.
BTW, the latest version of this library has the filter for the GlobalObjectsModelAdmin. So if you want to see alive and deleted objects in separated way, try it.

Hi. It's great to be able to see both deleted and undeleted objects in the same Admin.
It suddenly occurred to me that I could use a decorator to view them separately with two Admins.
from django.contrib import admin
from django.contrib.admin import ModelAdmin
from django_softdelete.admin import SoftDeletedModelAdmin

from poll.models import Poll

def soft_delete_model_admin_register(*models, site=None):
    def wrapper(admin_cls):
        for model in models:
            class DeletedModel(model):
                class Meta:
                    proxy = True
                    verbose_name = model._meta.verbose_name + ' [SoftDeleted]'
                    verbose_name_plural = model._meta.verbose_name_plural + ' [SoftDeleted]'

            class DeletedModelAdmin(SoftDeletedModelAdmin, admin_cls):
                pass

            admin.register(DeletedModel, site=site)(DeletedModelAdmin)

        return admin.register(*models, site=site)(admin_cls)
    return wrapper

@soft_delete_model_admin_register(Poll)
class PollAdmin(ModelAdmin):
    list_display = ("id", "name", "deleted_at", "restored_at")
    readonly_fields = "deleted_at", "restored_at"

Anyway, my needs have been solved. I'll close this.

@ClanEver your solution helped me a lot. I cleaned it up a bit and added the deleted_at for only the DeletedModelAdmin part - and I put it in admin/helpers/softdelete.py
from typing import TYPE_CHECKING, TypeVar

from django.contrib import admin
from django.contrib.admin import ModelAdmin
from django_softdelete.admin import SoftDeletedModelAdmin

if TYPE_CHECKING:
    from collections.abc import Callable

    from django.db.models import Model

# This code is

# Type variable for a subclass of ModelAdmin
T = TypeVar('T', bound=type[ModelAdmin])

def soft_delete_model_admin_register(
    *models: type['Model'], site: admin.AdminSite | None = None
) -> 'Callable[[T], T]':
    def wrapper(admin_cls: T) -> T:
        for model in models:

            class DeletedModel(model):
                class Meta:
                    proxy = True
                    verbose_name = f'{model._meta.verbose_name} [SoftDeleted]'
                    verbose_name_plural = f'{model._meta.verbose_name_plural} [SoftDeleted]'

            class DeletedModelAdmin(SoftDeletedModelAdmin, admin_cls):
                list_display = (*admin_cls.list_display, 'deleted_at')
                readonly_fields = (*getattr(admin_cls, 'readonly_fields', ()), 'deleted_at')

            admin.register(DeletedModel, site=site)(DeletedModelAdmin)

        return admin.register(*models, site=site)(admin_cls)

    return wrapper

Then to add it to an ModelAdmin class, it just takes three statements:
from abacus.admin import admin_site
from my_app_name.admin.helpers.softdelete import soft_delete_model_admin_register
[...]
@soft_delete_model_admin_register(ContractFile, site=admin_site)
class ContractFileAdmin(admin.ModelAdmin):

@ClanEver I came up with a cleaner solution that doesn't require using a decorator on all models that implement soft delete and also does not have Django create spurious no-op migrations!
In admin/helpers/soft_delete.py, add this:
import types
from typing import TYPE_CHECKING

from django_softdelete.admin import SoftDeletedModelAdmin

if TYPE_CHECKING:
    from django.db.models import Model

    from abacus import admin

def create_proxy_model(
    model: type['Model'],
    new_model_name: str | None = None,
    meta_updates: dict[str, str] | None = None,
) -> type['Model']:
    """Create a proxy model with modified Meta."""
    if new_model_name is None:
        new_model_name = f'{model.__name__}SoftDeleted'

    if meta_updates is None:
        meta_updates = {
            'verbose_name': f'{model._meta.verbose_name} [SoftDeleted]',
            'verbose_name_plural': f'{model._meta.verbose_name_plural} [SoftDeleted]',
        }

    # Create new Meta class
    class NewMeta(model.Meta):
        proxy = True
        managed = False

    # Update Meta with new attributes
    for key, value in meta_updates.items():
        setattr(NewMeta, key, value)

    # Create the new model

    return types.new_class(
        new_model_name,
        (model,),
        {},
        lambda ns: ns.update({'Meta': NewMeta, '__module__': model.__module__}),
    )

def create_softdeleted_model_admin(
    base_admin_cls: type['admin.ModelAdmin'], new_admin_class_name: str | None = None
) -> type['admin.ModelAdmin']:
    """Dynamically create a model admin class for soft-deleted models."""
    if new_admin_class_name is None:
        new_admin_class_name = f'{base_admin_cls.__name__}SoftDeletedAdmin'

    class NewAdmin(SoftDeletedModelAdmin, base_admin_cls):
        pass

    base_attributes = {
        'list_display': (*getattr(base_admin_cls, 'list_display', ()), 'deleted_at'),
        'readonly_fields': (*getattr(base_admin_cls, 'readonly_fields', ()), 'deleted_at'),
    }

    return types.new_class(
        new_admin_class_name, (NewAdmin,), {}, lambda ns: ns.update(base_attributes)
    )

And then override your site admin register(...) method like this:
class YourCustomAdminSite(admin.AdminSite):
    """Custom admin site class for some UI tweaks."""

    @override
    def register(
        self,
        model_or_iterable: 'type[Model] | Iterable[type[Model]]',
        admin_class: type['ModelAdmin[Any]'] | None = None,
        **options,
    ) -> None:
        super().register(model_or_iterable, admin_class=admin_class, **options)
        if isinstance(model_or_iterable, ModelBase):
            model_or_iterable = [model_or_iterable]
        for model in model_or_iterable:
            if hasattr(model, 'is_deleted') and 'makemigrations' not in sys.argv:
                soft_deleted_model = create_proxy_model(model)
                soft_deleted_model_admin = (
                    create_softdeleted_model_admin(admin_class) if admin_class else None
                )
                super().register(
                    soft_deleted_model, admin_class=soft_deleted_model_admin, **options
                )

Now when you register a model that implements soft delete functionality, we automatically create a proxy model and its associated admin page and register them automatically. Also, since we don't generate these proxy models during a makemigrations, Django does not create the unnecessary migrations.


OpenID appears in tfp/IdentityService/Manage/ManageLogins VS 2017 15.3 Preview 1

From @danroth27 on May 15, 2017 22:11
From @Ponant on May 14, 2017 21:29
OpenID appears as button in the ManageLogins for a registered user in ASP.NET Core 2.0 in-app Identity whereas it is not expected, a priori.
Furthermore, clicking on this button leads to the Server Error The view 'AccessDenied' was not found.
Copied from original issue: aspnet/Tooling#1040
Copied from original issue: dotnet/templating#801

We end up moving the in app OIDC support out of 2.0


DBZ-3482 Use date format model that does not depend on client NLS settings in integration tests

See https://issues.redhat.com/browse/DBZ-3482
I intentionally did not change date literals in tests that don't do any inserts on the database (e.g. OracleDmlParserTest and LogMinerDmlParserTest)

@Naros, you wanna take this one?

Thx, @TAregger! This LGTM, leaving it to @Naros to take another look and merge.

I don't recall specifically off the top of my head.  I'll check the test-suite and report back later today.

Hi @Naros
I just had test failures in OracleDmlParserTest that are related to TIMESTAMP_AM_PM_SHORT_FORMATTER.
They can be easily reproduced by running the tests with a different language settings than en:
export MAVEN_OPTS="-Duser.language=de"
mvn test -Dtest=OracleDmlParserTest#shouldParseTimestampFormats -DforkCount=0

...
Caused by: java.time.format.DateTimeParseException: Text '22-SEP-20 12.09.37 AM' could not be parsed at index 3
	at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
...

Strangely I did not get these failures before.
Nevertheless I think the fix should be straightforward, see diff below. Please let me know whether I should add these changes to this PR or I should create a new issue and send a separate PR.
diff --git a/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/OracleValueConverters.java b/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/OracleValueConverters.java
index 7ca4e3ce7..8eb6c053e 100644
--- a/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/OracleValueConverters.java
+++ b/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/OracleValueConverters.java
@@ -20,6 +20,7 @@
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatterBuilder;
 import java.time.temporal.ChronoField;
+import java.util.Locale;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;

@@ -76,7 +77,7 @@
             .appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, false)
             .optionalEnd()
             .appendPattern(" a")
-            .toFormatter();
+            .toFormatter(Locale.ENGLISH);

     private static final DateTimeFormatter TIMESTAMP_TZ_FORMATTER = new DateTimeFormatterBuilder()
             .parseCaseInsensitive()

@TAregger, its fine to add that change to this PR.  It makes sense we do all the work at once needed for this if possible.

@Naros, thanks. I added the changes to this PR.


handle multiple segments of container blobs

Purpose

...
while listing blobs, the quickstart needs to show how to list all blobs, not just one segment.

Does this introduce a breaking change?

[ ] Yes
[X] No

Pull Request Type
What kind of change does this Pull Request introduce?

[X] Bugfix
[X ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Documentation content changes
[ ] Other... Please describe:

How to Test

Get the code

git clone [repo-address]
cd [repo-name]
git checkout [branch-name]
npm install

Test the code

What to Check
Verify that the following are valid

...

Other Information

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


mapvote

https://regex101.com/r/0FgLdk/1
Possible regex for new game.
Works for all Vanilla modes, will capture maps correctly for mods.
However, mapClassname is not guaranteed to be correct on mods.
This is used in DBlog plugin.
Mods are not bound to put the mapClassname (base layer) anywhere in the path when cooking their mods. They could have any folder structure, apart from the first entry and last entry before 'up at...'
LogWorld: Bringing World /(modfolder)/......./layerfile.layerpersistentlevel

Is there anything else that needs to be tested/worked with this?

Is there anything else that needs to be tested/worked with this?

current functionality should work as it is, apart from merging/conflict resolving it should be good. I stopped working on this a while ago for the lack of time and also expecting v2.12 update to drop some changes.

I would love to see this pull request merged.


Sort Chat list by recent message and  Mobile version

hey brother i loved the you way added features to Sonny Sangha's whatsapp clone. i appreciate your work and i think i can help you in implementing mobile friendly view and sorting chats by recent messages. so do you want me to work on that?

Hey Kamal, Thanks.  Saw your works its great. I was once interested in development. But not anymore I'm not spending time on this.  But your contribution is always welcome and thanks for showing interest on this. Please reach me in twitter (profile in my bio).

sure brother i'll reach you on Twitter 😊 and also i am facing problem in implementing date wise sorting of chats so can you help me with that 😛🤣


when I try running the command it kills the session

Fetching data...
Chosen server: https://lz4.overpass-api.de/api/interpreter
Parsing data...
zsh: killed python3 arnis.py --city "The Bronx" --state "New York" --country --path
I fixed the no data error but now I got this even when I try on colab its says ^C and interrupt

try my fork with bbox:)
http://bboxfinder.com/

Fix by @daniil2327 is merged, will close this issue now


Contributing docs

A short contribution guide would be extremely helpful.

Thanks! I'll write one in my spare time. Do you need some help for now?

Thank you! Nope, for now I hope I figured out :)


Upgrade trivy and harbor-scanner-trivy for harbor v2.11.1

Description of changes:
This PR does the following:

Updates aquasecurity/trivy to v0.56.2 instead of harbor dependency v0.54.1 as the latest trivy version includes #7600 which fixes the go.mod dependencies to remove the broken replace directives
Removes the 0001-Replace-mitchellh-os-ext-with-kardianos-os-ext-modul.patch from trivy as upstream removed the dependency on github.com/mitchellh/osext module in #7249 as part of v0.54.0 release
Adds a new patch to replace trivy dependency using some non-standard public domain license and fix attribution generation error:

E1016 06:35:01.744101     246 library.go:132] Failed to find license for github.com/xi2/xz: cannot find a known open source license for "/eks-anywhere-build-tooling/projects/aquasecurity/trivy/trivy/vendor/github.com/xi2/xz" whose name matches regexp ^(?i)((UN)?LICEN(S|C)E|COPYING|README|NOTICE).*$ and locates up until "/eks-anywhere-build-tooling/projects/aquasecurity/trivy/trivy/vendor"
F1016 06:35:08.701095     246 main.go:77] one or more libraries have an incompatible/unknown license: map["unknown":["github.com/xi2/xz"]]

Updates aquasecurity/harbor-scanner-trivy to v0.31.4

Upstream source of truth:
https://github.com/goharbor/harbor/blob/v2.11.1/Makefile#L107-L108
Changelog:
Trivy: https://github.com/aquasecurity/trivy/blob/main/CHANGELOG.md
Harbor-scanner-trivy: https://github.com/aquasecurity/harbor-scanner-trivy/releases/tag/v0.31.4
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve

/lgtm


Win Loss tracker

Would be very useful if you could keep track of a deck's win/loss rate (by version and for deck in general).
Additionally, being able to pick the type of deck you played against if it's on Thrones, otherwise, just select deck type

interesting idea, but not something that's going to make it into thronesdb, at least not any time soon.
instead, may i suggest you check out https://agotstats.com/, this seems to offer at least some of what you're looking for.


RenkoBar Consolidator not functioning as expected

Expected Behavior
Consolidator will build bars at appropriate intervals according to the argument passed to RenkoConsolidator(10) -- in this case, $10.
Actual Behavior
Despite a number of occasions where there is a $10 difference, the consolidator fails to build bars until late in the time series -- that is, there are instances where the stock price fluctuates around $121 when it's starting price was around $111.
Potential Solution
Examine and update the behavior of the Renko Consolidator.
Reproducing the Problem
This code will reproduce the problem and show a RenkoBar plot overlaid with an asset price plot.
def Initialize(self):

        self.SetStartDate(2012,1, 1)  #Set Start Date
        self.SetEndDate(2013,1,1)    #Set End Date
        self.SetCash(100000)           #Set Strategy Cash

        self.AddEquity("SPY", Resolution.Hour)
        renko_bar = RenkoConsolidator(10)
        renko_bar.DataConsolidated += self.OnDataConsolidated
        self.SubscriptionManager.AddConsolidator('SPY', renko_bar)

        renko_plot = Chart('Renko')
        renko_plot.AddSeries(Series('Renko Bar', SeriesType.Bar, 4))
        renko_plot.AddSeries(Series('Stock', SeriesType.Bar, 0))

    def OnData(self, data):

        if data.Dividends.ContainsKey('SPY'):
            return
        self.Plot('Renko', 'Stock', data['SPY'].Close)
        self.Log(str(self.Time) + '   SPY Ceiling: $' + str(np.ceil(data['SPY'].Close)))
        self.Log(str(self.Time) + '   SPY Floor: $' + str(np.floor(data['SPY'].Close)))

    def OnDataConsolidated(self, sender ,bar):
        self.Plot('Renko', 'Renko Bar', bar.Close)
        self.Log(str(self.Time) + '   Renko Bar: $' + str(bar.Close))

Checklist

[x] I have completely filled out this template
[x] I have confirmed that this issue exists on the current master branch
[x] I have confirmed that this is not a duplicate issue by searching issues
[x] I have provided detailed steps to reproduce the issue

@simonsonjack Is this still an issue, or has it been inherently fixed as part of #3764?

Still a problem.


Cadl developer doc comments

Certain things in Cadl libraries exist to help the Cadl developer write a spec and their documentation should be shown in the IDE, but should not bleed through emitters to the end user. One example is #126 and I believe the various resource operation mixin interfaces are like this too.
We need a way to distinguish these docs from @doc. We could make a different decorator or use a jsdoc style for instead for these.

We don't want a new decorator for this.  We should be doing something like JSDoc comments (/**), and then we'd need to update the VSCode extension to recognize these and show them in intellisense.

Fair question.  I intended "we" to mean the consensus opinion in the design meeting and I believe I captured it accurately.

I'm working on a proposal for this.

Proposal is here: https://gist.github.com/nguerrera/01158db039e103dd37201c66978ce10b

Heads up, I will be making significant edits to the proposal after pre-discussion with

Proposal is now ready for review. I will mark it as such on the design board. Scheduled discussion on April 14th.

Added to may milestone and planning epic to track design, not implementation.


Modified wind-sensor area to re-parent to the ARVRCamera

This change results in the wind-sensor area being attached to the players head, even in exclusive movement operations such as climbing:

This fixes issue #68

This looks fine to me, need to make sure the code is not executed in tool mode though

Added the editor check. Thanks for reviewing - it's taking me a little bit to build up the gdscript mental linting.

Thanks Malcolm!


sfml: 2.4.2 -> 2.5.0

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools.
This update was made based on information from https://repology.org/metapackage/sfml/versions.
These checks were done:

built on NixOS
Warning: no binary found that responded to help or version flags. (This warning appears even if the package isn't expected to have binaries.)
found 2.5.0 with grep in /nix/store/j708rilms5fpihj454xv4m8yph07v3y5-sfml-2.5.0
directory tree listing: https://gist.github.com/2efaabd811738a49adb17b7c96980837

cc @astsmtl for testing

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: sfml
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnsupportedSystem = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnsupportedSystem = true; }
to ~/.config/nixpkgs/config.nix.

Success on x86_64-linux (full log)
Attempted: sfml
Partial log (click to expand)
shrinking RPATHs of ELF executables and libraries in /nix/store/j708rilms5fpihj454xv4m8yph07v3y5-sfml-2.5.0
shrinking /nix/store/j708rilms5fpihj454xv4m8yph07v3y5-sfml-2.5.0/lib/libsfml-system.so.2.5.0
shrinking /nix/store/j708rilms5fpihj454xv4m8yph07v3y5-sfml-2.5.0/lib/libsfml-window.so.2.5.0
shrinking /nix/store/j708rilms5fpihj454xv4m8yph07v3y5-sfml-2.5.0/lib/libsfml-network.so.2.5.0
shrinking /nix/store/j708rilms5fpihj454xv4m8yph07v3y5-sfml-2.5.0/lib/libsfml-graphics.so.2.5.0
shrinking /nix/store/j708rilms5fpihj454xv4m8yph07v3y5-sfml-2.5.0/lib/libsfml-audio.so.2.5.0
strip is /nix/store/j75dgadrff2d1fyc4fczmcgqkid2imdx-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/j708rilms5fpihj454xv4m8yph07v3y5-sfml-2.5.0/lib
patching script interpreter paths in /nix/store/j708rilms5fpihj454xv4m8yph07v3y5-sfml-2.5.0
checking for references to /build in /nix/store/j708rilms5fpihj454xv4m8yph07v3y5-sfml-2.5.0...

Success on aarch64-linux (full log)
Attempted: sfml
Partial log (click to expand)
shrinking RPATHs of ELF executables and libraries in /nix/store/sarclvf0i843d87rf3xgxhbssnc2cfkg-sfml-2.5.0
shrinking /nix/store/sarclvf0i843d87rf3xgxhbssnc2cfkg-sfml-2.5.0/lib/libsfml-audio.so.2.5.0
shrinking /nix/store/sarclvf0i843d87rf3xgxhbssnc2cfkg-sfml-2.5.0/lib/libsfml-graphics.so.2.5.0
shrinking /nix/store/sarclvf0i843d87rf3xgxhbssnc2cfkg-sfml-2.5.0/lib/libsfml-network.so.2.5.0
shrinking /nix/store/sarclvf0i843d87rf3xgxhbssnc2cfkg-sfml-2.5.0/lib/libsfml-window.so.2.5.0
shrinking /nix/store/sarclvf0i843d87rf3xgxhbssnc2cfkg-sfml-2.5.0/lib/libsfml-system.so.2.5.0
strip is /nix/store/gp7fylxwn18b7pl2c18ks89hsiaxyfvf-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/sarclvf0i843d87rf3xgxhbssnc2cfkg-sfml-2.5.0/lib
patching script interpreter paths in /nix/store/sarclvf0i843d87rf3xgxhbssnc2cfkg-sfml-2.5.0
checking for references to /build in /nix/store/sarclvf0i843d87rf3xgxhbssnc2cfkg-sfml-2.5.0...


/triggers list only lists your triggers

What modules are affected by this bug?
Triggers
Describe the bug
The /triggers add command only lists your triggers.
How can the bug be reproduced?

Have other users set their triggers
Set your triggers
Use /triggers list

What is the expected behavior?
All users' triggers will be on the list because they are in the server.
What is the actual behavior?
Only your triggers will be in the list
What is your Discord username?
Bujju#1234

This issue doesn't happen on the Beta bot, even using the normal config. I am confused.

I just removed the triggers feature since this bug makes absolutely no sense and I never really was proud of the way I implemented this feature in the first place.


Restructure modules

This PR restructures JaxKern so that kernels are broken out by their type. Further, computation objects are given their own modules.
Resolves #31

Do we need this py.typed file?

Suggestion: While we (or you) are refactoring, would it be sensible to structure the kernels and the computations across two submodules rather than in the main directory? I see the computations growing in size in the near future (inter-domain, Kronecker, Markovian dynamics, ...). It might be nice to have the computations split up into separate files for better readability (like I did in JaxLinOp)? You could also consider have submodules within the kernels (for e.g. stationary). It might make things easier to maintain/ reduce the amount of scrolling? Interested to hear your thoughts on this.

Do we need this py.typed file?

Not right now. Removed.

Suggestion: While we (or you) are refactoring, would it be sensible to structure the kernels and the computations across two submodules rather than in the main directory? I see the computations growing in size in the near future (inter-domain, Kronecker, Markovian dynamics, ...). It might be nice to have the computations split up into separate files for better readability (like I did in JaxLinOp)? You could also consider have submodules within the kernels (for e.g. stationary). It might make things easier to maintain/ reduce the amount of scrolling? Interested to hear your thoughts on this.

Yeah nice idea.

Suggestion: While we (or you) are refactoring, would it be sensible to structure the kernels and the computations across two submodules rather than in the main directory? I see the computations growing in size in the near future (inter-domain, Kronecker, Markovian dynamics, ...). It might be nice to have the computations split up into separate files for better readability (like I did in JaxLinOp)? You could also consider have submodules within the kernels (for e.g. stationary). It might make things easier to maintain/ reduce the amount of scrolling? Interested to hear your thoughts on this.

Yeah nice idea.

@Daniel-Dodd  - this is now done.

Sorry @thomaspinder these comment are a little out of date with regards to their file references.


Computes price estimates in the driver.

I split the PR in two: this one is just to compute the price estimates every batch and send it to the solver.
Apologies in advance :/
Questions:
Should UniswapPriceEstimator be factored out of orderbook (like put in shared/) ?

It seems "clippy" is complaining that the Driver constructor has now too many arguments:
    pub fn new(
        settlement_contract: GPv2Settlement,
        uniswap_liquidity: UniswapLiquidity,
        orderbook: OrderBookApi,
        price_estimator: UniswapPriceEstimator,
        solver: Vec<Box<dyn Solver>>,
        gas_price_estimator: Box<dyn GasPriceEstimating>,
        target_confirm_time: Duration,
        settle_interval: Duration,
    ) -> Self {

What to do?

One way to fix it is to silence the warning by putting #[allow(clippy::too_many_arguments)] right on top of the function. This is what we can do if we feel the warning is too limiting in this case. An alternative could be to group all the arguiments into a new struct like DriverParameters and pass the struct as the only argument. Not sure if that really makes it cleaner. For this PR I am fine with the #allow solution.

An alternative could be to group all the arguiments into a new struct like DriverParameters and pass the struct as the only argument.

Thanks. We wouldn't have the same problem in the constructor of the DriverParameters struct?

That struct wouldn't need a constructor function because it just stores plain old data. So you would create it using the Struct { ... }
syntax instead of Struct::new(...).

Good that I've tried to add a unit test. If I do:
    async fn best_execution_spot_prices() {
        let token_a = H160::from_low_u64_be(1);
        let token_b = H160::from_low_u64_be(2);
        let token_c = H160::from_low_u64_be(3);
        let pool_ab = Pool::uniswap(
            TokenPair::new(token_a, token_b).unwrap(),
            (10u128.pow(30), 10u128.pow(29)),
        );
        let pool_bc = Pool::uniswap(
            TokenPair::new(token_b, token_c).unwrap(),
            (10u128.pow(30), 10u128.pow(29)),
        );

        let pool_fetcher = Box::new(FakePoolFetcher(vec![pool_ab, pool_bc]));
        let estimator = UniswapPriceEstimator::new(pool_fetcher, hashset!());

        let res = estimator.best_execution_spot_prices(&[token_a, token_b, token_c], token_c).await;
        assert!(res.is_ok());
    }

I get a "panic" :
thread 'price_estimate::tests::best_execution_spot_prices' panicked at 'token list contains same token in a row', shared/src/uniswap_solver.rs:115:50

I guess I am assuming something that is not true.

Right, it appears we can't do best_execution_spot_price(tokenA, tokenA)


ci: do not fail the Windows build if the certificate is missing

The CI fails if the secret key for the Windows certificate is not set.
We should fall back to the default value instead -- or, even better, for routine checks, we may always use the default key.
I am submitting this patch, but feel free to close and resolve it in a better way, this is mostly to show where the issue is.
In particular, this would silently fall-back to the default key even when we want it to actually fail!
Signed-off-by: Edoardo Vacchi<EMAIL_ADDRESS>

I think it is a security thing that secrets aren't available from forked PRs. thanks for raising this and reviewing now!

turns out this broke the original repo commit. working on the fix now

yay my first screw-up! 🤣

yay my first screw-up! 🤣

I lost count of mine :)


Fix the install bug

Simply added a init file in third party. Feel free to modify to add licensing or other if you need to.

Thanks for the bug report and the PR @AdrienCorenflos!
External contributors need to sign the contributor license agreement; see this file. For simplicity, I fixed the problem myself this time. If you want to contribute to the project in the future, don't hesitate to sign the agreement.

I've already signed the cla actually. Probably something wrong with how you
set the bot up?
On Tue, 21 Jul 2020, 13:50 Mathieu Blondel<EMAIL_ADDRESS>wrote:

Thanks for the bug report and the PR @AdrienCorenflos
https://github.com/AdrienCorenflos!
External contributors need to sign the contributor license agreement; see this
file
https://github.com/google-research/fast-soft-sort/blob/master/CONTRIBUTING.md.
For simplicity, I fixed the problem myself this time. If you want to
contribute to the project in the future, don't hesitate to sign the
agreement.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google-research/fast-soft-sort/pull/4#issuecomment-661783722,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEYGFZ3D7BI7EIC2GEQDLKLR4VXGTANCNFSM4PDJ5OYQ
.

Sorry about that @AdrienCorenflos. The bot should now be set up. We'll see if it works properly with the next PR.


mTLS with custom roots known to work?

Has anybody used go-swagger to do end-to-end mutual TLS connections with client and server certificates issued from a custom CA?  I am having quite some difficulty, although I haven't exhaustively debugged it yet.  Just thought I'd ask here to see if it's known whether or not it will work.
The basic approach is to modify server.go to set httpsServer.TLSConfig.ClientAuth = tls.RequestClientCert and to override the client Transport's TLSClientConfig to have a RootCAs certpool which I've added my CA root cert to.  The client is reporting "x509: certificate signed by unknown authority."
I am able to get this to work with a simple no-swagger client using net/http directly to issue an HTTPS request with the same certs, so I don't think it's something wrong with the certs themselves.

Getting this to work on on the client should be supported today.  But the server is missing the bits for the client auth to be validated.
for the client part:
https://github.com/go-swagger/go-swagger/blob/master/examples/todo-list/client/todo_list_client.go#L23
that transport that gets created has a Transport property which is a http.RoundTripper. This should not be very hard to add to go-swagger.
https://github.com/go-swagger/go-swagger/blob/master/httpkit/client/runtime.go#L47

This turned out to be me flubbing the path to the root cert file, so it's working now.  Regarding the server, I've worked around it temporarily by modifying my XyzHandler to pass the http.Request in along with the XyzParams:
type GetTestHandlerFunc func(GetTestParams, *http.Request) middleware.Responder

This lets the handler grab the TLS context and examine the certs to do client validation.
I'm not too enthused about this solution but it is working at the moment.  Perhaps I'll think of something better.  I could also do the client validation in some middleware but I need a way for middleware to set some app-specific context that the method handlers can see, because ultimately I want my method handlers to make some decisions based on the client's certificate.  If you have any suggestions I'm all ears.

I think this might be fixed by 53c4f85

yes, it fixes it. However, one thing I don't like it is a configuration options for HTTPS. I am forced to add them into different group of CLI parameters, which means --ca-cert option is teared apart from private key and cert config.

This has veered off from having anything to do with custom root certs, of course.  It looks like some of the recent changes address the ability to see the TLS context in the request handlers, but I'm not sure 53c4f85 is the one I'd cite.  I have yet to try it out, but I saw a change go by that allowed access to the http.Request in the handlers, which would be perfect, as not only does it enable looking at the connection directly in the handlers, but it also allows one to use something like gorilla/context to pass arbitrary info between middleware and handlers.

yes that went in as well. generated code now has access to *http.Request and gorilla context is already in use by go-swagger itself.

I'm going to go ahead and close this even though I haven't tried it out.  If it doesn't work when I finally do, a new bug will make more sense anyway.


Replace file webgui parameter with cron line

Replace the webgui argument that is the file where the du results are written, with the line from cron that runs the script and writes the output file. Parse this cron line to:

Extract the frequency at which the directory size is checked.
Determine the output file to be read.
Validate that the output file is in the right subdirectory.

and current on with the current behaviour.

Using identifier instead of cron job line because that was determined to be more user-friendly.


retryGo refactor

This PR does the following:
1. Incorporates Airnode's array GoResult type
2. Includes Airnode's retryOperation and promiseTimeout retry logic into promise-utils go function

Refactors go and adds retry functionality
Adds Airkeeper's retryGo function
Adds timeoutGo and retryTimeoutGo

Oh, I didn't expect that you'll start implementing the tuple version of the go function :sweat_smile: We've decided that we'll switch to returning an object. Sorry, I could have mentioned that :confused:

Last round of changes, I promise sweat_smile

I've updated the misleading (which I also confused myself with :sweat_smile: ) errors and test names.

Feel free to merge :slightly_smiling_face:

@Siegrift Should I make these changes?

Yeah, please do - I have too much to catch up since last two weeks :/


Report footer seems not fixed to position hence not always printing same content/location

Please verify that this bug has NOT been raised before.

[X] I checked and didn't find a similar issue

Describe the bug*
Hi guys,
i was playing with a SO report that has a company logo, invoice details, line details and, finally a footer with again a logo and some text. but it seems like the footer is not always printed at the same position/offset.
I was wondering if thers any way that i can upload my template to the online test environment to see if it reports the same there?
currently i could not access the site administration
below i have added screenshots of the result including my template. could you pls advice why the footer is not printed correctly
thx Martijn
Steps to Reproduce

Upload attached template
InvoiceTemplate_Export.html.txt
I have added background red to the footer to make it more clear.

create a SO with multiple line items such that it exceeds one page.

print so report

see the deltas

The red areas should be
a) at the same offset from the lower left corner of the page.
b) be from same size with same number of line
c) not overlap wit the lines
Expected behaviour
i would expect the footer to always be consistent from size and position.
Deployment Method

[ ] Docker
[X] Bare metal

Version Information
Version Information:
InvenTree-Version: 0.11.0
Django Version: 3.2.18
Database: sqlite3
Debug-Mode: False
Deployed using Docker: False
Active plugins: [{'name': 'InvenTreeBarcode', 'slug': 'inventreebarcode', 'version': '2.0.0'}, {'name': 'InvenTreeCoreNotificationsPlugin', 'slug': 'inventreecorenotificationsplugin', 'version': '1.0.0'}]
Relevant log output
No response

@mabroens you might run into issues if your footer content is taller than the allocated footer margin size.
Check out the way that the page is defined here
Also the weasyprint docs might help

You could consider using page-margins, which are not supported by most browsers but work in Weasyprint.
https://www.quackit.com/css/at-rules/what_is_a_page-margin_box_in_css.cfm
https://printcss.net/articles/page-margin-boxes

Hi All,
still strugling to get the template correct.
here's an example of what the pdf looks like:

as we can see on page 1 the fotter just goes over the invoice line
while on page 2 its lower but still not at the position where i had visioned it.
the text page x of y is always atethe same position though.
i'm using following settings:
{% block page_margin %}
margin-left: 20mm;
margin-right: 15mm;
margin-top: 40mm;
margin-bottom: 45mm;
{% endblock %}
.footer {
background: red;
color: #545454;
font-size: 10px;

bottom: 40mm;
left: 0mm;
position: fixed;
width: 100%;
margin-bottom: -30mm;

}
.footer img {
width: 100%;
max-width: 100%;
}
.footer div {
line-height: 16px;
padding: 10px 30px 30px;
}
{% block footer_content %}

Address VAT COC
Bank details

{% endblock %}
I have also tried placing my data in the {% block bottom_center %} but also that fails.
is there anyone willing to have a look at my template and fix it?
and i'm fine with the template beeing used as template later on.
Br Martijn

Hi all, we finally managed to get the layout like we wanted.
thanks for the help.

Hi all, we finally managed to get the layout like we wanted.

Nice, glad to hear it! Are you able to provide some contribution to the reporting documentation that might help others who are facing the same issue?

@SchrodingersGat yes i'd like to contribute here. and will also make my temlate availeble.
will do so in the comming weeks
Br Martijn


Rewrite README in markdown

The README was originally written in reStructuredText (RST) a long time ago -- perhaps before PyPI supported Markdown.
But PyPI should now be able to render markdown.
Too often I've noticed myself and others making mistakes as RST is less common than Markdown.
Great issue for any new contributor looking to help out.

Hey, I like it. I'll start it.
I happened to just create a small PR for the current README. #163


The demo does not build with Xcode 6.4

AS the title says I imported the latest version 3.4 via cocoa pods in my project and it gave me build errors, so I downloaded the DEMO project and it does not build either. Maybe I am missing something super obvious but usually it should just be 'pod install' and thats it.

For the latest version you need Xcode 7.

Ok I see, what is the latest version compatible with Xcode 6.4?

3.2 should be fine.

It worked thanks ;)


Support yaml formatted configs

Currently all config files are in json format. However @Random-Liu has been complaining about that it's hard to deal with all the character escapings in json, and would prefer a yaml format.
Maybe we can reuse the apimachinery lib at here to support both json and yaml together: https://github.com/kubernetes/apimachinery/blob/461753078381c979582f217a28eb759ebee5295d/pkg/util/yaml/decoder.go#L207

/cc @wangzhen127

yes please, we keep all other configs as yaml so this would be nice!

/remove-lifecycle stale

/remove-lifecycle stale

/remove-lifecycle stale


feat(esl-media-query): extend ESLMediaRuleList.parseTuple with ability to pass Parser

:tada: This PR is included in version 3.14.0-beta.3 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Dot product calculation

Hello,
I am looking at TCAV score calculation, in particular, line 59 of tcav.py file, where the dot product of gradient and CAV is calculated: https://github.com/tensorflow/tcav/blob/97531b02f639371e6cab4d6e1aa3cfe81ccf38fb/tcav/tcav.py#L59
I might be getting something wrong, but as SGDClassifier() also fits a bias(intercept) by default, should the lm.intercept_  value be added on line 59?
Or just set fit_intercept=False while initializing the classifier:
https://github.com/tensorflow/tcav/blob/97531b02f639371e6cab4d6e1aa3cfe81ccf38fb/tcav/cav.py#L169

Actually, the idea is clearer now, as we only need a direction of the concept to get the derivative.
I will close the issue, thank you.


Timer reaching 49 days

Thanks for the library!
If a countdown for 100 hours is started when millis()= 48 days, would there it be some issue ?

@AndyMel
You are referring to the overflow
Never tried, but it is relative easy to test by using micros() and a countdown of 20 minutes starting after an hour.
micros() will overflow after 42xx seconds  that is about 75 minutes.
As the math and logic are the same it could be tested in less than 2 hours.
Does this help?

@AndyMel
A look into the code does not ring an alarm, duration is measured with subtraction as it should to prevent errors.
line 103++ in cpp  void CountDown::calcRemaining()
uint32_t t = millis() - startTime ==> as this is done unsigned an overflow of millis() wont affect  t
then t is compared to ticks which is straightforward. and reset to zero when done.

Thanks @RobTillaart for your review!
I will test with micros() anyway as you suggested

With this code it's confirmed that no issue is triggered but counter does not reach 0..
CountDown CD(CountDown::MICROS);
bool myflag=false; void loop() {   if (millis() > (1*60*60*1000UL) && !myflag) //1 hour from boot   {     myflag=true;     CD.start(20*60*1000UL*1000UL); //20 minutes (microseconds)   }      if (CD.remaining()>0)     {     Serial.print("Remaining: ");     Serial.print(CD.remaining()/1000/1000);     Serial.println(" seconds ");     delay(5000);     } }
/**/
Remaining: 914 seconds
Remaining: 909 seconds
Remaining: 904 seconds
Remaining: 899 seconds
Remaining: 1199 seconds
Remaining: 1194 seconds
Remaining: 1189 seconds
Remaining: 1184 seconds
/**/

That sounds like a bug.
To be investigate asap

(updated your post for syntax highlighting - add 3 backquotes +cpp

I'm going to run your sketch to see if I can replicate

@AndyMel
Patched the library with a hard offset of 4290.000.000 on the micros.
(replaced all calls to micros() to micros() + 4290 million,
This sets micros() just ~5 seconds before overflow
Also added a print statement in calcRemaining() to show the current value of micros().
Allows me to test overflow in < 20 seconds and it works as it should.
output
COUNTDOWN_LIB_VERSION: 0.2.7
Remaining:<PHONE_NUMBER>
9 seconds
Remaining:<PHONE_NUMBER>
8 seconds
Remaining:<PHONE_NUMBER>
7 seconds
Remaining:<PHONE_NUMBER>
6 seconds
Remaining:<PHONE_NUMBER>
5 seconds
Remaining: 45692
4 seconds
Remaining: 1046260
3 seconds
Remaining: 2046940
2 seconds
Remaining: 3047616
1 seconds
Remaining: 4048288
0 seconds
Remaining: 5048952
0 seconds

Also works with 20 minutes
COUNTDOWN_LIB_VERSION: 0.2.7
Remaining:<PHONE_NUMBER>
1199 seconds
Remaining:<PHONE_NUMBER>
1198 seconds
Remaining:<PHONE_NUMBER>
1197 seconds
Remaining:<PHONE_NUMBER>
1196 seconds
Remaining:<PHONE_NUMBER>
1195 seconds
Remaining: 46556
1194 seconds
Remaining: 1047280
1193 seconds
Remaining: 2048104
1192 seconds

So I cannot replicate based upon the snippet of loop you posted.
Can you post your whole sketch

Tested with millis() worked also ..

I will try with the same code (platform IO). That is:
#include <Arduino.h>
#include "CountDown.h"

CountDown CD(CountDown::MICROS);

uint32_t start, stop;
unsigned long inicio;
bool myflag=false;

void setup()
{
  Serial.begin(115200);
  }

void loop()
{

  if (millis() > (1*60*60*1000UL) && !myflag) //1 hour
  {
    myflag=true;
    CD.start(20*60*1000UL*1000UL); //20 minutes (microseconds)
  }
    if (CD.remaining()>0)
    {
    Serial.print("Remaining: ");
    Serial.print(CD.remaining()/1000/1000);
    Serial.println(" seconds ");
    delay(5000);
    }
}

looked at your logging
Remaining: 914 seconds
Remaining: 909 seconds
Remaining: 904 seconds
Remaining: 899 seconds

Remaining: 1199 seconds
Remaining: 1194 seconds
Remaining: 1189 seconds
Remaining: 1184 seconds

And it looks like the stopwatch is reset to 20 minutes again.

Thanks for the code, gives no clue.
Q1: Which board do you use?
Q2: Can you try this variation? it moves the start of the count down to setup()
#include <Arduino.h>
#include "CountDown.h"

CountDown CD(CountDown::MICROS);

void setup()
{
  Serial.begin(115200);
  while (millis() < (1*60*60*1000UL) );  //  wait 1 hour

  // start countdown
  CD.start(20*60*1000UL*1000UL); //20 minutes (microseconds)
}

void loop()
{
    if ( CD.remaining() > 0 )
    {
      Serial.print("Remaining: ");
      Serial.print(CD.remaining()/1000/1000);
      Serial.println(" seconds ");
      delay(1000);
    }
}

Did more tests and found a serious bug when using start(days, hours, minutes)

see #12

Q1: I use Mega 2560
Q2: With your code ,the counter reaches 0 correctly..
(It seems that starting the wait loop in the setup, works fine)
Remaining: 8 seconds
Remaining: 7 seconds
Remaining: 6 seconds
Remaining: 5 seconds
Remaining: 4 seconds
Remaining: 3 seconds
Remaining: 2 seconds
Remaining: 1 seconds
Remaining: 0 seconds

Thanks for testing, so now is the question how your original sketch could go wrong.
One option is that CD.start() is called twice, so adding an extra print statement should show that.
If you have time for another testrun?
#include <Arduino.h>
#include "CountDown.h"

CountDown CD(CountDown::MICROS);

bool myflag = false;

void setup()
{
  Serial.begin(115200);
  }

void loop()
{

  if ( (millis() > (1*60*60*1000UL)) && (!myflag)) //1 hour
  {
    myflag=true;
    CD.start(20*60*1000UL*1000UL); //20 minutes (microseconds)
    Serial.println("START CALLED ");
  }
    if (CD.remaining()>0)
    {
    Serial.print("Remaining: ");
    Serial.print(CD.remaining()/1000/1000);
    Serial.println(" seconds ");
    delay(5000);
    }
}

Found a possible cause for your original sketch, _startTime is not initialized in the constructor, _remainder idem, _state idem.
Depending on the 'random' memory content, there might be unwanted side effects.
I have not found a scenario that explains the failure of your initial sketch, but no initialization is wrong.
==> I will add initialization in the constructor (I add this to the PR I am making for the MINUTES bug).
CountDown::CountDown(const enum Resolution res)
{
  //  _res = MILLIS;  //  set in setResolution
  //  _ticks = 0;     //  set in setResolution
  _state = CountDown::STOPPED;
  _remaining = 0;
  _startTime = 0;
  setResolution(res);
  stop();
}

FYI the Arduino build-CI script I use for my libs has a bug that is under attention of its maintainer.
So although the PR build fails it will be merged a.s.a.p.

Thanks @Rob,
I have tested your code, it reachs to 0, correctly..
Remaining: 34 seconds
Remaining: 29 seconds
Remaining: 24 seconds
Remaining: 19 seconds
Remaining: 14 seconds
Remaining: 9 seconds
Remaining: 4 seconds
Both codes are almost identical. I will try again with with my original sketch

I have tried several times with my first code. I don't know what happened. Now reachs 0
Remaining: 14 seconds
Remaining: 9 seconds
Remaining: 4 seconds

Could been an electrical glitch (wires, power supply,...)?

@AndyMel
If you consider the issue solved, please close the issue.
I will merge the PR in a few moments.

Sure, it was electrical glitch. I've checked 4-5 times, and all of them, the counter reachs 0
I apologize for the inconvenience..
Thanks Rob for your attention and your work!

Welcome!


DAG/plugins/data path is different from GCP Cloud Composer

First of all, thanks for creating this tool. The local environments will come in very useful for local testing, shortening the feedback loop.
I noticed that my DAGs were failing because:

Data path in the local Airflow environment: /home/airflow/airflow/data
Data path in GCP Cloud Composer: /home/airflow/gcs/data

Please consider making the paths the same so that absolute path references work.
This is useful for BashOperator's cwd argument, which is non-templated and needs an absolute path.
Workaround
ln -s /home/airflow/airflow/dags /home/airflow/gcs
ln -s /home/airflow/airflow/plugins /home/airflow/gcs
ln -s /home/airflow/airflow/data /home/airflow/gcs

You may modify the CLI to add this in entrypoint.sh too.
Thank you!

Since we're in 0.9.x version we've made a decision to align the paths so the workaround is not needed anymore.
Thanks for reporting this discrepancy :)


smf/providers/default.rb:68: syntax error, unexpected keyword_end, expecting end-of-input

Bad commit?  smf/providers/default.rb:68: syntax error, unexpected keyword_end, expecting end-of-input
extra end keyword in there I believe?

https://github.com/livinginthepast/smf/blob/master/providers/default.rb#L68

Try with the latest version.
This was introduced here: https://github.com/livinginthepast/smf/commit/89e6da9f7ac7be2824539f2e4b1077e0af8c5ccb. Bad me for releasing without running the tests!

thx, worked.


Should use a storedWorkflow from the class property instead of the static context

This PR fixes the bug that leads to using a wrong queue and connection with multiple workflows
$workflow1 = WorkflowStub::make(MyWorkflow::class);
$workflow2 = WorkflowStub::make(MyWorkflow2::class); // <- This workflow overwrites static context

$workflow1->start();
$workflow2->start();

$workflow1->setTestString('string 1'); // <- this signal uses connection and queue from workflow 2 because it uses info from the context that was overwritten. This PR fixes it
$workflow2->setTestString('string 2');

@asanovr We should write a test for this that fails and then gets fixed by this PR. I will work on it.

@asanovr I have added a test and changed the solution to instead just reload the workflow context. From the outside perspective this will make things more consistent. Let me know what you think! Thanks for finding this bug and fixing it!

@rmcdaniel Thanks for the changes and for writing a test.
I think you should get connection and queue from the class property since it's more straightforward than getting storedWorkflow from context which is rewritten every time. Also, "host" will use a context only in the queues.


x/blog:

What version of Go are you using (go version)?

$ go version
I am using go playground and want to point to a blog where example does not seem correct.
https://blog.golang.org/defer-panic-and-recover

Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
NA

What did you do?

I am just going through go documentation to understand defer, panic, recover. The example does not seem correct.
What did you expect to see?
Deferred functions may read and assign to the returning function's named return values.

In this example, a deferred function increments the return value i after the surrounding function returns. Thus, this function returns 2:
func c() (i int) {
defer func() { i++ }()
return i
}
What did you see instead?
Deferred functions may read and assign to the returning function's named return values.

In this example, a deferred function increments the return value i after the surrounding function returns. Thus, this function returns 2:
func c() (i int) {
defer func() { i++ }()
return 1
}

Try it yourself and see.  With return 1 the function c returns 2, as the text says.  If you change it to return i, then c returns 1.


WIP: ENH: Improve Thresholding module filters' coverage.

Improve the ITKThresholding module filters' coverage:

Exercise basic object methods. Remove redundant calls to print the
filter.
Exercise the Set/Get methods using the TEST_SET_GET_VALUE and On/Off
methods using the TEST_SET_GET_BOOLEAN macro.
Use the TRY_EXPECT_NO_EXCEPTION macro for all filter update calls to
save typing try/catch blocks.
Use TRY_EXPECT_EXCEPTION to try/catch expected exceptions when
possible/appropriate.
Refactor the tests to accept (more) input parameters to check the
classes under a broader range of conditions. In many cases, the
parameters accepted belong to inherited propertis (e.g.
itk::HistogramThresholdImageFilter: m_NumberOfHistogramBins,
m_AutoMinimumMaximum, m_MaskOutput, m_MaskValue). Keep the default
values of the class for existing tests.
Make the tests quantitative: compare the compute threshold to the
expected one.
Add the hash code to compare to the baseline for new tests.
Remove unnecessary print messages.
Style changes: define the image dimension as a constant; use a typedef
for the pixel type; use a variable to set the output's inside/outside
value so that its Set/Get methods can be clearly tested; try to use the
same sequence of sentences across all tests; change '\n' to std::endl.
Improve the messages in the threshold regression tests to make the
consistent across the tests/the entire toolkit, and to provide rich
information.
Finished the tests with a "Test finished" message; helps telling in the
the dashboard whether the failure has happened in the test or the
comparison to the baseline.
In itkBinaryThresholdImageFilterTest.cxx, set the functor before
updating the filter.
Correct the arguments passed to SetSigmaFactor and SetNumberOfIterations
in itkKappaSigmaThresholdImageFilterTest.cxx (the expected sigmaFactor
as defined by the order in the CMakeLists command/usage explanation was
being set to the number of iterations of the filter and vice-versa).
Update the corresponding baselines accordingly.

Take advantage of the commit to use C++11 features.
Recovered from gerrit:
Change-Id: I9d6050d9e474b17fe3639faa7a5b16c052440e21
https://review.source.kitware.com/%23/c/22134/

I still did not study @richardbeare 's last comment at the time the topic was being reviewed in gerrit. That will take some time.
And there will be a few tests whose baseline needs to be updated.
But this is a starting point as a refactoring and code coverage improvement.

Just as a follow-up, generating all baselines and updating/adding them will take me quite some time.

Rebased on master to fix the merge conflicts. Have not yet reproduced the test results.

Rebased on master to avoid further conflicts when I find the time to review the topic.

a6b148f rebased on master and addressed KWStyle warnings. Working on the baselines.

A few comments about 484290c:

Undoing some style changes done in a6b148f that generated build errors.
KW Style is generating a few error: Unnecessary semicolon false negatives. Still producing some locally at itkHistogramThresholdImageFilter:205 and itkHistogramThresholdImageFilter:207.
Add missing baselines and fix the corresponding content links in the CMakeLists.txt file.
Fix some expected values in the script tests.
Change a TRY_EXPECT_EXCEPTION oversight to  TRY_EXPECT_NO_EXCEPTION.
Fix a test output filename.
itkIntermodesThresholdImageFilterTestNoAutoMinMax failing locally because the itk::IntermodesThresholdCalculator instance is exceeding the maximum iterations for histogram smoothing.
itkMaximumEntropyThresholdImageFilterTestNoAutoMinMax producing a vector subscript out of range error because the itk::Historam::GetMeasurement method's InstanceIdentifier parameter has a value of<PHONE_NUMBER>3709551615.
itkShanbhagThresholdImageFilterTestNoAutoMinMax producing a vector subscript out of range at the itk::Historam::GetMeasurement method because the m_Min and m_Max variables are not initialized.
Not sure about the itkOtsuThresholdImageFilterTestNoAutoMinMax test being deterministic any more.
I have removed the null calculator exception test from itkOtsuThresholdImageFilterTestNoAutoMinMax because it no longer throws such an exception after 79148b6.

The remaining errors are due to the causes explained above, which dot not look evident, so it will take some time to find the appropriate fixes.

Did a quick first pass review. Looks good. I will do a more in-depth review when the tests pass.

@fbudin69500 thanks for having a look.
I started to have another look at the IntermodesThresholdImageFilter failures.
Well, it seems to be trickier than what it looks like. I'd dare to say that there is some sort of inheritance mess involved.
When running the TRY_EXPECT_EXCEPTION( filter->Update() ); statement right after the call to SetMaximumSmoothingIterations in the test, the progress reporter std output shows the filter as being upcasted to its parent class.
If I reimplement the SetCalculator function in itk::IntermodesThresholdImageFilter, and lower the maximum number of iterations (it reaches 14 when finishing the process) and set it to 10 in the test), the exception is indeed caught, but the exception is not quite itkIntermodesThresholdCalculator.hxx:100, but the one in itkHistogramThresholdImageFilter.hxx:67.
So there is some sort of inheritance issue: the itk::IntermodesThresholdImageFilter class uses a specialized itk::itkIntermodesThresholdCalculator class, with an ivar of its own, but the former still uses its parent method's (e.g. GenerateData) which has no idea about the itk::itkIntermodesThresholdCalculator ivar.
To be honest, I've spent some time trying to find an accurate explanation in order to propose a solution, but the best explanation I've come up to is the above, and still have not found a fix.

Rebased on master after #999 has been merged.

The patch set is still relevant. It would need to be rebased.

Addressing some of the issues commented here:

The CMake configuration error is explained by the following: the itkMaximumEntropyThresholdImageFilterTestNoAutoMinMax test does not yet have its baseline image, itkMaximumEntropyThresholdImageFilterTestNoAutoMinMax.png. I have gone through the issue and it stems from the fact the test fails to execute due to an out-of-bounds error in a vector, which happens because the itk::Histogram class is trying to slice its m_Min and m_Max members with an n value which is out of bounds. This, in turns, is the consequence of the InstanceIdentifier being defined as an uint64, probably here or here, but the threshold value having a -1 value set here.

Not sure about the values or type the threshold/instance identifier should have. I assume the default -1 value was set to somehow mean an initial/unspecified state, and thus, I ignore whether setting it to 0 would be appropriate, or else, if the n variable should have its type change from InstanceIdentifier to something else.
Any ideas?

As for the itkShanbhagThresholdImageFilterTestNoAutoMinMax test, the issue is the same as above (and not quite the one reported in this comment).

The m_Min and m_Max members of itk::Histogram are still not initialized in the constructor. Should they be initalized to a zero vector?

As for the questions, is it possible to separate the problematic parts of this PR into a follow-on PR? This one is already quite big. The questions look like they need a dive into what is going on.

It is great that you are reviving this PR!

👍

As for the questions, is it possible to separate the problematic parts of this PR into a follow-on PR? This one is already quite big. The questions look like they need a dive into what is going on.

Absolutely. Since they seem to be bugs, once some light is casted on them, I was planning to propose separate PRs to address them, then rebase this one on top of  master when they hopefully get merged.

Testing doing its job: revealing bugs!

Yes, well done on getting back to this!
My thought on the min max initialization (not based on any specific memories of the code), is to either initialize them to force an error if a more appropriate initialization doesn't come elsewhere (like setting the min to the max of the pixel type and the max to the min of the pixel type), or to do something that will be correct some of the time (setting the min to the min of the pixel type).
If you do the former then there could be a runtime debug test to check whether max > min.

My thought on the min max initialization (not based on any specific memories of the code), is to either initialize them to force an error if a more appropriate initialization doesn't come elsewhere (like setting the min to the max of the pixel type and the max to the min of the pixel type), or to do something that will be correct some of the time (setting the min to the min of the pixel type).

Not sure why we should initialize them to values force an error @richardbeare .
Also, I am still bumping into this issue. Any ideas?

On the grounds that possibly the class using it should always be doing the initializing. I am not certain that this is true, but it may be. For example, if there are no sensible defaults - min max of the pixel type is probably sensible for 8 bit data, but for floats it probably isn't what you wanted.
I guess you could also include code that warns if this initialization hasn't been done. Slightly more code, but possibly a better way to go.

Folks, we are getting closer. A few notes:

I could not make work two tests locally:

itkIntermodesThresholdImageFilterTestNoAutoMinMax gets stuck at progress 0.8 whatever the maximum number of smoothing iterations (I've gone up to 8000000). It is not related to the change in #1732 (I've checked that the same happens with the code prior to the commit in that PR).
itkOtsuThresholdCalculatorVersusOtsuMultipleThresholdsCalculatorTest fails when comparing the values of the values yielded by itk::OtsuThresholdsCalculator and the  itk::OtsuMultipleThresholdsCalculator instances.

I had a look at both issues without success. To be honest, if nobody has the bandwidth to address them in the following days (I personally don't) I'd comment both tests and open two issues so that the PR can be merged (if the rest of the tests pass).

When setting the autoMinimumMaximum flag to false, all thresholding filters return the same threshold value (provided that the input image is the same), e.g. -31744 for cthead1.png. Checking the range of the input image values, this expected threshold value seems to be in the lower end of the dynamic range. I have not dug more than that, but my impression is that it is like a floor value of the histogram. Also, the output image contains a single value (they appear completely black). I'd dare to say that this makes sense since the histogram filter was told not to compute any limits. Now to solve this we should be able to set those limits manually (e.g. find the filtering thresholds between the itk::HistogramThresholdImageFilter::m_Minimum and itk::HistogramThresholdImageFilter::m_Maximum arbitrary values e.g. 100 and 1340 -the filter should internally make sure they are not out of bounds). This means that we should be able to set those numbers or that filter to our thresholding filter (e.g. itk::MaximumEntropyThresholdImageFilter), instead of the autoMinimumMaximum flag maybe or using some logic in case the flag is set to false. And we should be able to set those values in the tests where the flag is set to false. That is not possible now, and requires some work both on the classes and the tests. Honestly, I would open an issue and let whoever has the bandwith to fix it.

TLDR: If only itkIntermodesThresholdImageFilterTestNoAutoMinMax itkOtsuThresholdCalculatorVersusOtsuMultipleThresholdsCalculatorTest fail, I will comment the tests and open the appropriate issues.
Sorry for the length of the message.

CI results are as anticipated in this comment. Please consider reading it and comment as appropriate. Thanks !

So I commented the two failing tests and push-forced.
If CIs still pass, this will be ready to be merged. I will open the related issues once it gets merged.
Thanks.

Not sure why Azure builds have not been reported. Anybody with the appropriate permissions to trigger those? Thanks.

Occasionally they don't report. A force push with updated time should trigger them.

Thank you all your bearing with the multiple unsuccessful commits and my intermittent dedication. This was team work.