update github repo link on hex

Also this is the toml file that got this package working for me i added the changes above to it too
name = "telega"
version = "0.3.0"
description = "Gleam Telegram Bot Library"
licences = ["Apache-2.0"]
repository = { type = "github", user = "bondiano", repo = "telega-gleam" }
links = [
    { title = "Issues", href = "https://github.com/bondiano/telega-gleam/issues" },
    { title = "Examples", href = "https://github.com/bondiano/telega-gleam/tree/master/examples" },
]
target = "erlang"

[dependencies]
gleam_stdlib = ">= 0.40.0 and < 1.0.0"
logging = ">= 1.3.0 and < 2.0.0"
gleam_http = ">= 3.7.0 and < 4.0.0"
gleam_httpc = ">= 3.0.0 and < 4.0.0"
wisp = ">= 1.2.0 and < 2.0.0"
gleam_json = ">= 2.0.0 and < 3.0.0"
gleam_erlang = ">= 0.27.0 and < 1.0.0"
gleam_otp = ">= 0.12.1 and < 1.0.0"
glisten = ">= 6.0.0 and < 7.0.0"

[dev-dependencies]
gleeunit = "~> 1.0"
mockth = "0.3.2"

also this is the updated echo example to work with the toml file above
import envoy
import gleam/erlang/process
import gleam/option.{None}
import gleam/result
import mist
import telega
import telega/adapters/wisp as telega_wisp
import telega/bot.{Context}
import telega/reply
import telega/update.{CommandUpdate, TextUpdate}
import wisp
import wisp/wisp_mist

fn handle_request(bot, req) {
  use <- telega_wisp.handle_bot(req, bot)
  wisp.not_found()
}

fn echo_handler(ctx) {
  use <- telega.log_context(ctx, "echo")

  case ctx.update {
    TextUpdate(text:, ..) -> reply.with_text(ctx, text)
    CommandUpdate(command:, ..) -> reply.with_text(ctx, command.text)
    _ -> Error("No text message")
  }
  |> result.map(fn(_) { Nil })
}

pub fn main() {
  wisp.configure_logger()
  let assert Ok(token) = envoy.get("Telegram_Token")
  let assert Ok(bot) =
    telega.new(
      token: token,
      url: "<bot url>",
      webhook_path: "webhook",
      secret_token: None,
    )
    |> telega.handle_all(echo_handler)
    |> telega.init_nil_session

  let secret_key_base = wisp.random_string(64)
  let assert Ok(_) =
    wisp_mist.handler(handle_request(bot, _), secret_key_base)
    |> mist.new
    |> mist.port(8000)
    |> mist.start_http
    |> result.replace_error(Nil)

  process.sleep_forever()
}

Thank you!


Pretty-print JSON, for readable diffs

"pretty-print" JSON.  Makes git diffs easier on the eyes.

LGTM. Big improvement


write to parquet

Right now, the file sizes are giant when writing the output from the classifier to a csv. However, Parquet reduces this file size significantly (in our case, we saw files go from ~80GB to ~3GB due to the number of duplicate filenames).
By writing to a partitioned Parquet file, we can get small files and reduce the amount of memory needed.

Hey, Mark! Thanks for this; I actually didn't know that Pandas has parquet support.
There's a lot of repeated logic in the parquet and csv methods; could you merge them into a single method with an argument to choose the output format?

Yeah, that sounds good! I'm not sure if concatenating dataframes is the most memory efficient way of buffering dataframes (it might have to copy a lot of data?), so I might look into other ways of buffering the output.

I'd like to test it before merging, but I couldn't find an easy way to test it in the existing test file. Is there a way to make a unit test for it, or do we have to just run it in a notebook on an existing dataset?

Certainly wouldn't say no to a test, but you're right that there's not an existing test for this function. The place to put a new test is here:
https://github.com/google-research/perch/blob/main/chirp/inference/tests/classify_test.py
There's an example of creating a test dataset here which might be helpful:
https://source.corp.google.com/piper///depot/google3/third_party/py/chirp/inference/tests/bootstrap_test.py;l=47

I was able to make a test (just creating random embeddings) and check that the csv and parquet files are "equal" (or close enough...floating point numbers). The files are significantly smaller with parquet, even in the test with only 4 classes, which is good to see.


kraken orderbook updates are different than bitfinex

Exchange
kraken
Subscription type
L2updates and L2snapshots
Describe the bug
bitfinex/kraken have different updates. When using bitfinex and L2updates and L2snapshots, i get a working, valid orderbook. When I use kraken in the same system, it doesnt work/update. What is going on there? Do i need to incorporate trades?
** steps to reproduce**
cant really reproduce as its production code, but is there documentation missing? I'm leaning towards implementing the websockets of kraken myself as binance and bitfinex both work but kraken is just not working properly.
Is there something i'm missing?

You do no need to incorporate trades to get orderbooks to work. Most likely you are not sending a valid market.

Man, first of all; thanks for the extensive reply. I'm checking my ids, and its XXBTZUSD for kraken and BTCUSD for bitfinex,  does the base/quote matter btw? Its just a marker for internal use right? I do exactly what you do, but i also subscribe for snapshots ofcourse subscribeLevel2Snapshots

so to be clear, i am getting information from kraken, i just think its malformed. I use an RBTree to update my orderbook and its just not updating correctly for kraken. Do i need to take trades into account for kraken? Maybe i'm doing wrong stupidly. I even thought about implementing the webhooks directly but i'd rather use ccxws :)

Glad to investigate with you. The markets sound correct and since you're getting data, my guess was not correct haha!  As you mentioned, the base/quote market properties are just markers that get passed with the result object.  So that shouldn't matter.
You don't need trades since the raw order book updates stream uses the absolute volume at a price level and not the volume delta. The volume will be also be 0 when a price point should be removed.  Therefore, the update stream will take into account any trade matches.
The interesting thing with Kraken is that the raw update stream includes a nanosecond timestamp at each price level. This value indicates the timestamp of change for each price point.
I'm not sure if it matters that CCXWS prunes this data.  Instead, we just find the maximal timestamp and assigns that to the timestampMs property of the overall update. The assumption is that the to maintain an order book only requires a check to make sure the OB's timestamp is less than the update payload's timestamp.
It might be an interesting exercise to try it with a raw stream and do the timestamp checks and see if the OB is more consistent.
The Kraken documentation mentions "republished" values: https://www.kraken.com/en-us/features/websocket-api#message-book.  I'm not exactly sure what the purpose of that is, but if for some reason it broadcast out of date values, it is possible that without the per price timestamps, old entries could be broadcast.
Lastly, I know one issue that we've had (I don't recall if it was with Kraken) is that dropped messages from the exchange can cause you to miss deletes in a fast moving market.  The end result is bid/ask overlap that won't clear.  We have logic to self heal the order book by clear overlaps.

You don't need trades since the raw order book updates stream uses the absolute volume at a price level and not the volume delta. The volume will be also be 0 when a price point should be removed. Therefore, the update stream will take into account any trade matches.

Thanks for this, maybe this should be more obvious in the readme? I had trouble knowing whether or not to include the trades, but this helps.
What I did notice is that my orderbook is more up to date when I get rid of logging (therefore it becomes quicker). But then still I had some issues after a while. This was on a mobile I7 within the last year so I didnt think it would matter.

The end result is bid/ask overlap that won't clear. We have logic to self heal the order book by clear overlaps.

What do you mean by this last part? Is that  a part of logic I have to implement or is it done automagically?

Sure thing, I can add a section on building order books to the README.  Each one is a bit different depending on the data that is emitted by the exchange.  So even with CCXWS it still requires some custom code to get things working consistently.
You will have to implement recovery logic on your own.
For exchanges that do broadcast a sequenceId you can check each update at the correct sequence. If not, you have lost a message and need to restart the feed to recover the order book.
For exchanges that don't implement a sequence you cannot determine if you have dropped a message immediately. Your order book will eventually get out of sync and you will end up with bid/ask overlap.
For example, initial state:
      11002
      11001
Asks: 11000
Bids: 10999
      10998
      10997

Update 1 - missed
Asks: 11001 > delete
      11000 > delete

Update 2 - received
Bids: 11001 > add

Because update 1 was missed there are ask values that should have been removed (11000 and 11001).  When update 2 is received these ask values overlap with the bid value (11001).  So you can detect when the order book has gone out of sync by checking for best bid and best ask overlap.
One recovery mechanism is to prune the side that is overlapping. In this example, since a bid update of 11001 is received in update 2, we know that any ask value <= 11001 should be removed and we can clear those values. This doesn't guarantee that the rest of the order book is consistent (there could have been other changes to the order book that we missed).
Alternatively, you could perform a reconnect and re-sync the order book from the snapshot.

thank you very much for your reply! I didnt know this, this would probably be the cause of my woes, it is a shame that without a sequenceId we dont have a way to check for missed messages.
Is this a speed issue? Because I did notice that the less console.logs i did the faster my updates became

It could be a speed issue, I haven't done much research on how client backpressure impacts various exchanges. My speculation would be that the server would start dropping messages when it receives back pressure.

Closing issue.  Adding new section to README in #92

To be fair, ive abandoned this package (sadly) because the orderbook wouldnt be correct in the most simplest built orderbook. I could not for the life of me get the orderbook to be correct, so im.resorting to implementing thr api directly

@wisepotato I thought I was the only one. My orderbook also always went out of sync, when a spike in orders on the exchange cleared most of the scope(bots tripping over each other) or a large buy that eats up most orders. It seems the client just dropped messages since it could not handle the spike. But the orderbook stayed in sync for days for low volume markets

Hi @wisepotato
Just wondering whether you've managed to build reliable orderbook on top of Kraken WS feed?
Came across this library, but wrongly assumed it already manages the orderbook state.
I am trying to implement the orderbook, need to admit that most of the exchanges I've got covered with success, but I am struggling to keep order book in sync with Kraken.
I would appreciate if you could share some experience.
Is timestamp needed to keep the order/sequence? What's the republish? Does cross bid/ask happen to you? If so, what's your self-heal mechanism?
Thanks

Hi @wisepotato
Just wondering whether you've managed to build reliable orderbook on top of Kraken WS feed?
Came across this library, but wrongly assumed it already manages the orderbook state.
I am trying to implement the orderbook, need to admit that most of the exchanges I've got covered with success, but I am struggling to keep order book in sync with Kraken.
I would appreciate if you could share some experience.
Is timestamp needed to keep the order/sequence? What's the republish? Does cross bid/ask happen to you? If so, what's your self-heal mechanism?

yeah i've started doing it myself as ccxws is awesome but it makes a lot of assumptions about knowledge, and it was hard to get into the raw details of hjow ccxws does stuff.
I would suggest doing it yourself. Its probably also faster, and less generic

Hi, I am currently grabbing data from the Kraken websocket API and have found issues potentially related to what was discussed previously in this thread. Basically, I have managed to correctly receive and parse the streamed data regarding order books. I have verified that I am receiving and parsing correctly by calculating at each update the checksum for the updated book as described here and comparing with the broadcasted checksum. I get a matching checksum almost always, but on very rare occasions I get a different checksum. It is quite problematic, because after one of these rare events, the checksums don't match again until a fresh book is requested from 0 again, meaning that somehow I process something differently. This seems to be independent of the exchange pair(s). I am currently still troubleshooting it and trying to find out what triggers them, but a very interesting observation I have recently made is that the checksum mismatches seem to always happen when either the most recent update message, or the one before that, contains one of those "republished" updates mentioned by @bmancini55 . I am wondering if anyone figured out what exactly they are, or how they should be dealt with? I thought they just had to be inserted in the order book as any other update (i.e., as normal, non "republished" updates), but apparently I'm missing something... Thanks!

Just in case someone stumbles upon this thread like I did the answer is here:
https://blog.kraken.com/post/2341/new-version-of-kraken-websockets-public-api-goes-live-may-30/#:~:text=The order book feed includes an additional field when price levels are pulled into scope by another price level being deleted (also known as a border republish)
tldr: when a price deletion causes a price that was outside your depth to fall into scope, kraken will send you the "missing" prices


[Kusto] Update to 2020-09-18 client

Swagger PR: https://github.com/Azure/azure-rest-api-specs/pull/10688

@nisha-bhatia when this Nuget should be available in nuget.org ?


remove model.predict()

This PR removes the model.predict() method. If someone tries to call it they'll get an exception.
Normally it would make sense to deprecate stuff like this, but maybe since it's early days we can just break it.
This would be a great time to start using Semantic Versioning. We could call this 1.0.0, since it's a breaking change.
Resolves #69

👍 Perhaps we wait until we have a JS client that matches the Python client then we could increment them to 1.0 at the same time and keep them more-or-less in line with each other.

🚢  https://github.com/replicate/replicate-python/releases/tag/0.5.0
Here's how I did it:
$ git commit -am "bump version to 0.5.0"
[main f71eec6] bump version to 0.5.0
 1 file changed, 1 insertion(+), 1 deletion(-)

$ git checkout main
Already on 'main'
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

$ git checkout main
Already on 'main'
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

$ git tag 0.5.0

$ git push --tags
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 368 bytes | 368.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/replicate/replicate-python
 * [new tag]         0.5.0 -> 0.5.0


feat: Base & Zora

Description
Support Base and Zora via official RPC.
Note that the Base docs disclaims the following, so if we want more production-ready support we will need to consider other providers and potentially pay. Available providers are listed on the Base docs.

Rate limited and not for production systems.

Base only supports HTTP RPC, but Zora supports both HTTP and Websocket RPC.
Fix: HTTP RPC supported chains list used to setup WebSocket RPC supported chains.
Resolves #291
How Has This Been Tested?
Locally by running rpc-proxy and testing with curl (HTTP RPC) and JavaScript WebSockets.
Due Diligence

[ ] Breaking change
[ ] Requires a documentation update
[ ] Requires a e2e/integration test update

@arein

Wanna update the tests to cover these?

Tests have been added. Can you re-review?


Referrers not getting logged

I am on version 1.28 and I am noticing a sudden decrease in referrers. Where before I used to have multiple visits from Google, I now have none even though the amount of visits are the same. I am pretty sure this is a bug. Is there a way I can debug this to make sure?

Just go to your website from another site and the referrer should be logged. It should show up immediately in the Realtime tab.

Just tried it from Google and nothing popped up.

Yes, confirmed. Tried Google Chrome & Brave Browser. Google isn't getting listed in the referrers tab.

I put this in the <head> tag. I can also see /collect request being sent in the Network tab.
<script async="" defer="" data-website-id="<id>" src="<script url>" data-domains="<main-domain>"></script>

In the /collect request's payload, it is putting itself as the referrer for some reason i.e., url and referrer are the same. Can it be because of Cloudflare?

window.document.referrer is returning the correct referrer but the script isn't getting it. Is it being called too soon?

Not sure what's going on with your setup. I just tried coming from google and it saves fine. There have been some tracker changes in the dev branch so you can try that and see if it makes a difference.


Using requests session with pool_block=True blocks indefinitely for name resolution errors

I am using a requests session pool in my code since we make a large number of HTTP requests.
We recently ran into an issue where temporary name resolution errors blocked the process from making any more HTTP requests since the pool was full.
I have pasted a quick script to reproduce the issue below.
from requests import Request, Session
import requests
import gevent
from gevent import monkey

monkey.patch_all()

urltotest = 'http://thisisanunresolvablesite.com/foo'
MAX_CONC_REQUESTS_PER_CONNECTION = 21
MAX_POOLS = 1
MAX_CONC_REQUESTS = 5
# Requests session pool
http_pool = None

def get_requests_session():
    global http_pool
    if not http_pool:
        http_pool = Session()
        adapter = requests.adapters.HTTPAdapter(
            pool_connections=MAX_POOLS,
            pool_maxsize=MAX_CONC_REQUESTS,
            pool_block=True)
        http_pool.mount('http://', adapter)
        http_pool.mount('https://', adapter)
    return http_pool

def send_request_in_greenlet(i):
    try:
        prepped = Request('GET', urltotest).prepare()
        session = get_requests_session()

        print 'Sending request #', i
        resp = session.send(prepped)
        body = str(resp.content)
        status = str(resp.status_code)
        print 'Reponse for request # %d - Status: %s' % (i, status)
    except Exception as ex:
        print ex

i = 0
while i < 20:
    i += 1
    gevent.spawn(send_request_in_greenlet, i)

try:
    gevent.sleep(100)
except KeyboardInterrupt:
    pass

The error seems to stem from the urlopen method in packages/urllib3/connectionpool.py:
       ...
       except (TimeoutError, HTTPException, SocketError) as e:
            if conn:
                # Discard the connection for these exceptions. It will be
                # be replaced during the next _get_conn() call.
                conn.close()
                conn = None
             ...
        finally:
            if release_conn:
                # Put the connection back to be reused. If the connection is
                # expired then it will be None, which will get replaced with a
                # fresh connection during _get_conn.
                self._put_conn(conn)

I am not sure that this issue should be filed under urllib3 or requests. Apologizing in advance if I posted this at the wrong place.

Why aren't you using gevent for this?

@sigmavirus24 Thanks for the suggestion. Will look it up.
Does using grequests allow connection pooling? I briefly looked at it right now and it does not look to be as feature rich as the requests library.
We make a ton of HTTP requests and connection pooling is important for us.

At this point in time Session's aren't reliably threadsafe enough for you to use them like this. You're better off creating sessions in each worker and using a Queue to send work to the worker. (So you'll have connection pooling local to the thread but not between threads.)

Closing due to inactivity


Restrict module visibility and export useful types at root.

Delete unused colour.rs
Remove an unnecessary unsafe block
Add root exports for searchable objects.
Restrict visibility of internal modules

Speaking of the colours module, do you think it makes sense (in another PR) to rename Colours and Colour structs to use the American English spelling, to match the spelling used by Scryfall and the module?

Yes, I think it's a good ideia, I've noticed that you found quite a few typos and inconsistencies already, thanks! You could do it in this PR no? Or am I missing something?

I just thought it was probably a separate PR conceptually. I'll add the commit to this one.

You should probably bump the minor version number after this change.

Yes, after all these PRs I'll bump to 0.8

Crate fully Americanized (U.S.A.! U.S.A.!). Ready to go.


Added option for DHCPv6 before RA

Some ISP BNG's require that a DHCP6 solicit is sent before RA.
Interfaces.php has additions to add new flag
'dhcp6withoutra' to configuration.
Interfaces.inc uses this flag to decide whether to launch dhcp6c on its own or as presently done via rtsold.
Added an extra function call 'kill_dhcp6client_process($interface) and removed multiple posix_kill calls, this is to make it operate in similar way to the  kill_dhclient_process(***)

Thanks @marjohn56. This will need to be resubmitted without the merge commits to not clutter up the history unnecessarily and ease cherry-picking. I'm guessing your local copy became outdated and you didn't do a 'git fetch && git rebase origin' before the git push.
If you can re-submit as a single commit PR in the next 3 days or so, we can get this in for 2.3.2 release. Otherwise it can make 2.4.


Expose agent log level configuration

This already exist on ingress (using the global values.yaml), but not
sidecars. Adding a NEW annotation to allow it to be configured in
sidecar injection.
If/When this is merged, will add to API

@howardjohn: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-multicluster-tests_istio
039859f92b49008676a65d0bb4f2f485d0a9a55a
link
/test integ-pilot-multicluster-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test integ-pilot-multicluster-tests_istio

/test integ-pilot-multicluster-tests_istio


Suggestion: vh height option for FluxParallax

Would love to have an option to be able to set height of the FluxParallax component in vh. Thank you :)

Hello, this is already implemented in the source code of the FluxParallax but didn't release a new beta with this changes because I still need to fix the holder parameter. I expect to have it published today or tomorrow.
The update removes the height parameter, fixes the chrome mobile bug, reduces its size, fixes holder element and improves performance.

Check last beta.18 version :)


Optional fields raise TypeError in XmlEncoder without skip_empty=True

Since the validation for fields that should not be None is done by pydantic itself, it seems reasonable to me that XmlEncoder should not raise a TypeError in serializers.py#L58 and should instead return "" for those.
Let me know what you think, I can submit a pr if we're on the same page :)

This is indeed not trivial. It should at least be better documented.

Fixed in version 2.x.


If commit message refers to issue, add link and issue title

Hi there,
Imagine that :
git commit -m "#42 @user check that"
git push

A mail will be generated with the message, and I will be able to follow the link to the commit.
It should be convenient to add the title of the issue and the link to the issue directly.
All the best,
VH.

@vhuber you could totally build something like that with webhooks. This doesn't sound like something we'd be looking to add as a service because we already have an Email service we support.
Take a look at the documentation and feel free to contact<EMAIL_ADDRESS>if you need any help. :grinning:

@kdaigle Thank you for the answer. Actually, I'm confused since I contacted first<EMAIL_ADDRESS>and I got the following answer
Hi Vincent,

> Is it possible to add the link to the referenced issue in the mail ?

Thanks for the suggestion. It looks like you're referring to an email sent by the Email Service (not a standard notification). The source code for this service is available here:

https://github.com/github/github-services/blob/master/lib/services/email.rb

So that's where the change would need to be made if this were to be implemented. You could open an issue or pull request.

Thanks,
James

Thus, I guess my question is not about building something new but parsing the commit["message"] variable line 242 in email.rb to add a link.
I apologize for the non understandable question :/

@vhuber I'm sorry. To clarify, you'd like the email to link directly to that commit in GitHub's UI?

@kdaigle If the commit' message contains an issue's reference, it would be nice to add the link (in the mail) to the issue in GitHub's UI. We already have links to commits in the mail.

@kdaigle Is there something we can do for that purpose ?

We'll take a look at it and see if it's something we can add moving forward. Now I understand what you're looking for though. :grinning:


Run Cypress after Heroku Deploy

Currently the Cypress tests run when the other tests run. The problem is that Heroku finishes deploying the new changes after the tests run, so the Cypress results are actually for the previous code push.
Better solutions:

A Heroku post-deploy script makes an API call to Github (https://api.github.com/repos/{repo-name}/dispatches)
The Github Action for Cypress is changes to only trigger on repository_dispatch

https://niteo.co/blog/staging-like-its-2020

A final fix for this was implemented in https://github.com/thinknimble/tn-spa-bootstrapper/pull/150


Add department to "edit" command

Add feature to change department for employees, according to #61.

LGTM


Cannot upload asset bundle

Whenever I try to upload an asset bundle through window -> upload asset bundles I get the error "Response failed with status: 0".  I'm not sure what this means and I'm pretty sure I've set the storage, access key, and container name correctly.

@thisislance98 what platform are you using Unity for Mac or Windows? Also what is your Unity version no?

I'm running into the same problem, but what @thisislance98 may not have noticed is that cloud-WSA.unity3d uploads, but the remaining two do not.
This is where it gets interesting. Clicking on

results in this dialog.

However, If I attach the Visual Studio 2017 debugger to Unity and go through the code while holding down F11 (the "step into" debug command), they all upload without any error.
I'm using Unity 2017.1.0f3 on Windows 10 with Creators Update.

Essentially the StartCoroutine method used for async uploading is not designed for the Unity Editor so I might remove this feature as discussed on another related issue. The recommended way is to use Storage Explorer as the way to upload blobs to a container.

Closing... As part of the next update I'm removing the Editor upload function and replacing it with the Azure Storage Explorer app as the preferred option to upload blobs to Azure Storage. (Using StartCoroutine ended up being a bit of a hack in the Editor as it relies on being in 'play' mode to work.)


Feedback doesn't work

Hello!
With the latest version of Companion (companion-2.2.0-77e29ef4-3230, windows and mac) I am struggling with getting feedback from Unity on the pressed buttons. Am I the only one with this problem? In the attached files some screendumps of the instance where I should expected some red and blue buttons. I tried with all the feedback options (red and blue, only red and only blue).
Thanks for helping me out/fixing the bug!
Lars.

@josephdadams

Did you use the presets to make the buttons or did you make them yourself?

Oh, I did it myself earlier this week with the previous beta of Companion. That wasn't working. The buttons made with presets are working indeed. :) That's great, thanks.

But to be complete: it doesn't work when I program exact the same as the preset manually.

@larsvdmanden when you program it manually and it doesn't seem to work, will it light up if you cycle that listen off then on for the channel in the app?


OpenSSL 3 ports migration

Important notices
Our forum is located at https://forum.opnsense.org , please consider joining discussions there in stead of using GitHub for these matters.
Before you ask a new question, we ask you kindly to acknowledge the following:

[x] I have read the contributing guide lines at https://github.com/opnsense/core/blob/master/CONTRIBUTING.md
[x] I am convinced that my issue is new after having checked both open and closed issues at https://github.com/opnsense/core/issues?q=is%3Aissue

Collection of random things to take care of:
dns/ddclient (native):
root@OPNsense:~ # /usr/local/opnsense/scripts/ddclient/ddclient_opn.py -l
Traceback (most recent call last):
  File "/usr/local/opnsense/scripts/ddclient/ddclient_opn.py", line 46, in <module>
    print(json.dumps(AccountFactory().known_services()))
  File "/usr/local/opnsense/scripts/ddclient/lib/poller.py", line 41, in __init__
    self._register()
  File "/usr/local/opnsense/scripts/ddclient/lib/poller.py", line 50, in _register
    importlib.import_module(".%s" % os.path.splitext(os.path.basename(filename))[0], pkg_name)
  File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/usr/local/opnsense/scripts/ddclient/lib/account/aws.py", line 33, in <module>
    import boto3
  File "/usr/local/lib/python3.9/site-packages/boto3/__init__.py", line 17, in <module>
    from boto3.session import Session
  File "/usr/local/lib/python3.9/site-packages/boto3/session.py", line 17, in <module>
    import botocore.session
  File "/usr/local/lib/python3.9/site-packages/botocore/session.py", line 26, in <module>
    import botocore.client
  File "/usr/local/lib/python3.9/site-packages/botocore/client.py", line 15, in <module>
    from botocore import waiter, xform_name
  File "/usr/local/lib/python3.9/site-packages/botocore/waiter.py", line 18, in <module>
    from botocore.docs.docstring import WaiterDocstring
  File "/usr/local/lib/python3.9/site-packages/botocore/docs/__init__.py", line 15, in <module>
    from botocore.docs.service import ServiceDocumenter
  File "/usr/local/lib/python3.9/site-packages/botocore/docs/service.py", line 14, in <module>
    from botocore.docs.client import (
  File "/usr/local/lib/python3.9/site-packages/botocore/docs/client.py", line 18, in <module>
    from botocore.docs.example import ResponseExampleDocumenter
  File "/usr/local/lib/python3.9/site-packages/botocore/docs/example.py", line 13, in <module>
    from botocore.docs.shape import ShapeDocumenter
  File "/usr/local/lib/python3.9/site-packages/botocore/docs/shape.py", line 19, in <module>
    from botocore.utils import is_json_value_header
  File "/usr/local/lib/python3.9/site-packages/botocore/utils.py", line 37, in <module>
    import botocore.httpsession
  File "/usr/local/lib/python3.9/site-packages/botocore/httpsession.py", line 45, in <module>
    from urllib3.contrib.pyopenssl import (
  File "/usr/local/lib/python3.9/site-packages/urllib3/contrib/pyopenssl.py", line 50, in <module>
    import OpenSSL.crypto
  File "/usr/local/lib/python3.9/site-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import SSL, crypto
  File "/usr/local/lib/python3.9/site-packages/OpenSSL/SSL.py", line 9, in <module>
    from OpenSSL._util import (
  File "/usr/local/lib/python3.9/site-packages/OpenSSL/_util.py", line 6, in <module>
    from cryptography.hazmat.bindings.openssl.binding import Binding
  File "/usr/local/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 167, in <module>
    Binding.init_static_locks()
  File "/usr/local/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 134, in init_static_locks
    cls._ensure_ffi_initialized()
  File "/usr/local/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 123, in _ensure_ffi_initialized
    _legacy_provider_error(cls._legacy_provider_loaded)
  File "/usr/local/lib/python3.9/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 43, in _legacy_provider_error
    raise RuntimeError(
RuntimeError: OpenSSL 3.0's legacy provider failed to load. This is a fatal error by default, but cryptography supports running without legacy algorithms by setting the environment variable CRYPTOGRAPHY_OPENSSL_NO_LEGACY. If you did not expect this error, you have likely made a mistake with your OpenSSL configuration.

if it's only for our ddclient alternative, it make be an idea to see if export CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1 would fix it.  (https://cryptography.io/en/latest/openssl/#legacy-provider-in-openssl-3-x)

@AdSchellevis the same actually applies to aliases since it's all Python scripts... https://forum.opnsense.org/index.php?topic=37108.0 so I guess that explains the behaviour recently reported about OpenSSL 3/alias combo.

I'm afraid so, yes

(missed it the first time as well, but reading a bit deeper indeed points into a different direction)

at least from my perspective that is the ideal fix for the time being. trying to confirm now but the nightly download is a bit slow at the moment

Voiced concern over FreeBSD ports handling here https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=273656 ... maybe py-cryptography is the right place to bring a "fix" in for everyone else but I'd think we cannot go without legacy for a while anyway.
Confirmed fixed via https://forum.opnsense.org/index.php?topic=37108.msg181665#msg181665 (original reporter of ddclient native issue).


Update kickstart-python.lua

fixes https://github.com/chrisgrieser/nvim-kickstart-python/issues/10

Thank you!


Do you have a side hustle?

While everyone has one, I don't have. Why? Coz I have multiple side hustles going on and I'll talk about it at length.

My side hustles

health
financial discipline: savings
wife/father/sister working
being industry relevant
extremely low maintenance
being really good at my job
connections in industry and community
huge social capital: linkedin and twitter
good karma


Project structure and packaging needs work

Should split up into submodules, and include proper cargo.toml
This will make it more maintainable, and hopefully a bit easier to understand?

Done, was a bit easier than I thought


Variable interpolation does not work correctly with bootstrap 4, formControl is used before it's defined.

On line 3073 the definition for inputGroup references formControl before it is defined.
This causes the wrong selector to be used.
Look like this is because the rule on line 3315
.btn-toolbar .input-group {
  width: auto;
}

Causes input-group to be generated before form-control which is defined later in the file.
Here is a screenshot of the css.

Bootstrap file used

One way to solve this would be to generate files for each style, and have them inter-import.


Revert "Add Class#descendants"

This reverts commit dbff2dcc38dd2a7b28aead535a115120296be255.  See https://github.com/ruby/ruby/commit/3bd5f27f737

Thanks!


 These unreachable branches contain dead code, and therefore logically unused code.
What problems does it solve:
Unreachable branches are an indicator of either:

Error: errors in logical thinking, which the user should be made aware of
Error: Usage of the wrong variable used instead of another of the same type
work in progress that should be finished
Simplification: code that could be simplified

Example of things the rule would report:
if (value == stringLiteral) then
  if (value != stringLiteral) then
    -- you can prove that this is dead code
  else
    -- nested else
else
  -- outer else

Example of things the rule would not report:
if (value == stringLiteral) then
  -- nested else
else
  -- outer else

When (not) to enable this rule:
???
Questions:

Should this rule also warn about cases where the condition can be evaluated statically (like if True then or if a == a then), or should this be the task of another rule? (I'm leaning towards a different rule, but maybe in a different package.

Do you see a more fitting name for the rule?

Can you think of reasons not to have an automatic fix?

Should the rule handle case expressions too?

case value of
  Foo ->
	case value of
		Foo ->
            1
        Bar ->
            2 -- dead branch, we know value == Foo
  Bar -> 2

I am wondering whether this will not be annoying in cases where you'll need to destructure again, but I think that's unwarranted concern :thinking:
I think the first iteration of the rule can concentrate on handling if expressions only anyway.

I moved this from elm-review-unused. I think this package now covers more of the logic behind this.
What I'm slightly worried about is whether the rule will be able to add an automatic fix in all cases, because that's quite important for Simplify.

For if, this is already implemented, right? And https://github.com/jfmengels/elm-review-simplify/issues/229 covers the combination with case..of.
Should we close this?


ARTEMIS-1825 Live-backup topology not correctly displayed on console

@clebertsuconic done.

@clebertsuconic removed the debug logs.

@mtaylor / @andytaylor  / @michaelandrepearce  I didn't work on this module a lot... can you guys check on this?

@gaohoward sorry taken a while to look at this as have been burning hours on other issue. From what i can tell from the JS this looks ok, i assume form reading the js, the idea here is more clearly show who is live and who is a slave, calling a method to deduce this, rather than the hardcoded master=true, is this roughly a correct understanding? If so +1 from me.

@michaelandrepearce  Yes that's the idea.

Great ill merge this shortly then. Thanks for the contribution, and sorry again for taking soo long to review it

np at all.


github/workflows: add release workflow

I coun't find the workflow that create https://github.com/efabless/volare/releases, would it makes sense to add something like this to automate gf180mcu build and enable easier OpenLane testing?

Sorry, I can't merge this for a number of reasons:
A. The Volare builds depend on a value in OpenLane. It thus follows that the build is done by OpenLane itself, which is the case: whenever a new version of Volare is built in OpenLane's master branch, the Volare version also gets pushed: https://github.com/The-OpenROAD-Project/OpenLane/blob/63b5966c2874da8bf01a831f0ee9dc68382a4958/.github/workflows/openlane_ci.yml#L35

This is good because by the time it's been pushed to master, we're actually also sure this specific release works. By the time a new push to master occurs, it has already been both built with volare AND tested with OpenLane once in the PR's CI checks.

B. As you'll find in the workflow I linked, Volare already has a built-in function for pushing: volare push (or volare enable_or_build --also-push), which uses ghr. The release metadata is significant to the functionality of Volare and another way of uploading is courting problems down the line.
C. I'm opposed to uploading the open_pdks builds of GF180MCU before any of them work with OpenLane.

A. whenever a new version of Volare is built in OpenLane's master branch, the Volare version also gets built and pushed

That makes sense! I wasn't aware of this workflow (I should probably have opened an issue first to ask how the build were published).

As you'll find in the workflow I linked, Volare already has a built-in function for pushing: volare push (or volare enable_or_build --also-push), which uses ghr

Yes, I assumed it was meant for interactive use, but it's good to see it automated from the action you linked too.

C. I'm opposed to uploading the open_pdks builds of GF180MCU before any of them work with OpenLane.

Would it makes sense to publish draft release of it to unlock further testing by the community (without requiring them to do the build?)

Actually, that's a good idea- I can add draft release functionality and then I can have Volare clearly mark that it's not ready for use.


esptool: 4.5.1 -> 4.6.2

Description of changes
Diff: https://github.com/espressif/esptool/compare/v4.5.1...v4.6.2

Things done

Built on platform(s)

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

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

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

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

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

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 249415 run on x86_64-linux 1

2 packages built:

esptool
esptool.dist


Fix return uids

This supersedes #521

Current coverage is 82.49% (diff: 95.74%)

Merging #625 into master will increase coverage by 0.26%

@@             master       #625   diff @@
==========================================
  Files            20         20
  Lines          4332       4370    +38
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits           3562       3605    +43
+ Misses          770        765     -5
  Partials          0          0

Powered by Codecov. Last update d131dd0...c7f74fb


Ability to start containers from CRIU snapshot

We need to be able to specify checkpoint name and start browser container from this checkpoint. Something like this:
"46.0": {
          "image": "selenoid/firefox:46.0",
          "port": "4444",
          "checkpoint": "my-checkpoint"
        },

As a plus killer-feature, there will be nice to have an ability to create CRIU checkpoint at any time, by sending a command to Selenoid.
I think it will be a lot easier to debug with browser container restored to a checkpoint, and VNC )


Global styles defined in layouts do not update after first switch

Description
In the case my layout files define different global styles (for example, change the background and text colors), the change works as expected in the first layout switch, but then stays fixed on subsequente switches.
Reproduction
https://codesandbox.io/s/vue-template-bf6ox?fontsize=14

Switch to "books"
The background and color changes according to the styles defined on booksLayout.vue
Switch back to "movies"
The background and color stays as defined in booksLayout.vue, ignoring the new definitions on moviesLayout.vue

Yeah, that's kinda as expected if you're applying global styles in components. You either have to scope your styles or use CSS modules.
If you have further questions please head over to https://forum.vuejs.org/ because this is not specific to this repository. Thx!


Stocksnap 403 forbidden error during ingestion

Airflow log link

Note: Airflow is currently only accessible to maintainers & those given
access. If you would like access to Airflow, please reach out to a member of
@WordPress/openverse-maintainers.

https://airflow.openverse.org/log?execution_date=2024-03-01T00%3A00%3A00%2B00%3A00&task_id=ingest_data.pull_image_data&dag_id=stocksnap_workflow&map_index=-1
Description

The Stocksnap DAG encountered an error during ingestion:
[2024-04-01, 23:09:02 UTC] {requester.py:85} ERROR - Error with the request for URL: https://cdn.stocksnap.io/img-thumbs/960w/LZITOLMWL6.jpg
[2024-04-01, 23:09:02 UTC] {requester.py:86} INFO - HTTPError: 403 Client Error: Forbidden for url: https://cdn.stocksnap.io/img-thumbs/960w/LZITOLMWL6.jpg
[2024-04-01, 23:09:02 UTC] {requester.py:89} INFO - Using headers {'User-Agent': 'Openverse/0.1 (https://openverse.org; openverse@wordpress.org)', 'Accept': 'application/json'}
[2024-04-01, 23:09:02 UTC] {media.py:233} INFO - Writing 68 lines from buffer to disk.
[2024-04-01, 23:09:02 UTC] {provider_data_ingester.py:513} INFO - Committed 31168 records
[2024-04-01, 23:09:02 UTC] {taskinstance.py:2728} ERROR - Task failed with exception
providers.provider_api_scripts.provider_data_ingester.IngestionError: 403 Client Error: Forbidden for url: https://cdn.stocksnap.io/img-thumbs/960w/LZITOLMWL6.jpg
query_params: {}
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/home/airflow/.local/lib/python3.10/site-packages/airflow/models/taskinstance.py", line 439, in _execute_task
    result = _execute_callable(context=context, **execute_callable_kwargs)
  File "/home/airflow/.local/lib/python3.10/site-packages/airflow/models/taskinstance.py", line 414, in _execute_callable
    return execute_callable(context=context, **execute_callable_kwargs)
  File "/home/airflow/.local/lib/python3.10/site-packages/airflow/operators/python.py", line 200, in execute
    return_value = self.execute_callable()
  File "/home/airflow/.local/lib/python3.10/site-packages/airflow/operators/python.py", line 217, in execute_callable
    return self.python_callable(*self.op_args, **self.op_kwargs)
  File "/opt/airflow/catalog/dags/providers/factory_utils.py", line 55, in pull_media_wrapper
    data = ingester.ingest_records()
  File "/opt/airflow/catalog/dags/providers/provider_api_scripts/provider_data_ingester.py", line 276, in ingest_records
    raise error from ingestion_error
  File "/opt/airflow/catalog/dags/providers/provider_api_scripts/provider_data_ingester.py", line 241, in ingest_records
    self.record_count += self.process_batch(batch)
  File "/opt/airflow/catalog/dags/providers/provider_api_scripts/provider_data_ingester.py", line 455, in process_batch
    if not (record_data := self.get_record_data(data)):
  File "/opt/airflow/catalog/dags/providers/provider_api_scripts/stocksnap.py", line 92, in get_record_data
    filesize = self._get_filesize(url)
  File "/opt/airflow/catalog/dags/providers/provider_api_scripts/stocksnap.py", line 152, in _get_filesize
    resp = self.delayed_requester.head(image_url)
  File "/opt/airflow/catalog/dags/common/requester.py", line 114, in head
    return self._make_request(self.session.head, url, **kwargs)
  File "/opt/airflow/catalog/dags/common/requester.py", line 70, in _make_request
    response.raise_for_status()
  File "/home/airflow/.local/lib/python3.10/site-packages/requests/models.py", line 1021, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://cdn.stocksnap.io/img-thumbs/960w/LZITOLMWL6.jpg

On top of this, Stocksnap uses a page counter instead of normal query params, so it's difficult to determine which page it failed on:
https://github.com/WordPress/openverse/blob/852e6b7d852728a7213f860d0a8657f06c584e00/catalog/dags/providers/provider_api_scripts/stocksnap.py#L45
In addition to resolving this issue, we should try and alter the DAGs that don't normally use query parameters so they still have something to report when they fail.

DAG status

Unchanged for now since this is a monthly DAG

I've opened #4102 to help us reproduce this. Once that's merged, we should run the DAG again and see if it fails in the same place. If it does, we can continue to troubleshoot. If it doesn't, we can close this and reopen if it comes up again.

Confirmed (now that initial_query_params works!) that this fails locally when starting with the params {"page": 780}. Locally by the time I tested, the error was actually happening on page 781, possibly because more records were added before I tested.


Fixing an 	instant app related issue

Fixing an instant app redirect to full app issue
@aaustin @EvangelosG

👍


[BUG] The yaml tag format regexp doesn't match the given example

Please confirm

[x] I am running the latest version of this plugin

Describe the bug
The yaml tagline regexp fails where there are spaces between the surrounding brackets and the list of tags.
To Reproduce
Steps to reproduce the behavior:

Start nvim
create file using yaml tag format example given in documantation

---
title: My awesome note
date: 2021-12-06
tags: [ example, note-taking, foo, bar ]
---

try searching for tags
See error

Expected behavior
finds tags, regardless of spaces being present.
Would also be nice if the alternative yaml format
tags:
  - tag1
  - tag2

was supported
Operating system (please complete the following information):

OS: arch btw

Additional context
I love your work. Thank you so much!

Nice catch. I'll fix that right now.

Would also be nice if the alternative yaml format

Not sure about that one, I will not try to implement it unless you can come with a regex that would work. That being said, maybe a better idea would be to make a "custom" tag and let people come with their own regex.

I think multiple, comma space separated tags (as given in the example) also foul the subsequent parsing.
I'm trying to debug this right now.
I'm printing the tag variable in yaml_to_tags and that returns the whole list instead of single tags where more than one tag is specified.
so the splitting doesn't work either.

The splitting seems to be working, but somehow the picker only lists the first tag it seems. But if I type in the second tag, it is recognized as well.

Hrm, I still get this error..
E5108: Error executing lua ...ite/pack/packer/start/telekasten.nvim/lua/telekasten.lua:2786: invalid option '%110' to 'format'
stack traceback:
        [C]: in function 'format'
        ...ite/pack/packer/start/telekasten.nvim/lua/telekasten.lua:2786: in function 'entry_maker'
        ...scope.nvim/lua/telescope/finders/async_static_finder.lua:17: in function 'new_table'
        ...ite/pack/packer/start/telekasten.nvim/lua/telekasten.lua:2780: in function 'selection'
        ...ite/pack/packer/start/telekasten.nvim/lua/telekasten.lua:3021: in function 'panel'
        [string ":lua"]:1: in main chunk

? With the latest push ?

yes

You had that before ?

yes

Can you reproduce it with a minimal example? I have all my tags with #tag, and when I try to add a few tags: [foo, bar] in some notes, I do not have any specific error (besides the fact that the list only shows foo by default and not separate values for the other tags.

I just set max_tag_len to 50. that does not throw an error. It seems the length of 110 (that is the actual value of that variable), is too long.
My tags aren't split though, the call runs and I see lots of tags that are comma separated tag lists just is they are in the file.

Minimal crashing example note:
---
title: My awesome note
date: 2021-12-06
tags: [ with-a-really-really-long-tag-name-to-test-if-tagnames-kill-it-too-but-this-is-still-way-way-too-short ]
---

Another one:
---
title: My awesome note
date: 2021-12-06
tags: [ with, a, really, reaally, long, tag, name, to, test, if, tagnames, kill, it, too, but, this, is, still, way, short ]
---

This one doesn't crash, but illustrates, that only the last tag is being extracted.
---
title: My awesome note
date: 2021-12-06
tags: [ first, middle, last ]
---

I suspect that the problem is that "%s*.*%s*," matches greedily everything before the last comma, since the . also matches ,.

"%s*%w*%s*,"
this seems to work

an no, it can't handle special characters like ä

These do the job as far as my testing goes
"%s*%S*%s*,"
"%s*(%S*)%s*"

Tested with:

---
title: My awesome note
date: 2021-12-06
tags: [ tuäg1, ta2g, taßg3 ]
---

I am not sure I follow everything. What would be the final regex then?
https://github.com/renerocksai/telekasten.nvim/blob/b2ed311f281fc1400dbda183d997cc3f20e0471b/lua/taglinks/tagutils.lua#L7-L8

that works fine.
the above mentioned regexes are from tagutils.lua lines 85 to 91

Aaaaaaaah ok, I see it now 😄
I will push the fix in a few moments!
Thank you very much for making all the heavy lifting on that issue!


basic example VPC: enable_dns_hostnames = true

PR o'clock
Description
AWS docs state:

Your VPC must have DNS hostname and DNS resolution support. Otherwise, your worker nodes cannot register with your cluster. For more information, see Using DNS with Your VPC in the Amazon VPC User Guide.

https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html

From that it seems like it should always be enabled, no matter what kind of VPC is used. I added it to the basic example which I used and had error messages with DNS resolution appearing in the logs on the nodes. Interestingly enough, without DNS resolution the cluster appears to sometimes work and sometimes not. It's hard to run experiments though, so as per the docs, it should be enabled.
Question: do we want to play it safe and enable DNS resolution in all examples (even public VPC)?
Checklist

[v] terraform fmt and terraform validate both work from the root and examples/* directories
[ ] CI tests are passing
[v] I've added my change to CHANGELOG.md and highlighted any breaking changes

Strange though. That parameter for the VPC module has always defaulted to false. And we haven't had a problem with the examples previously. I have previously run each of the examples from scratch and tested that nodes joined the cluster 🤔

I ran into this as well and found a similar recommendation from a different AWS page:

In order for the private hosted zone to properly route traffic to your API server, your VPC must have enableDnsHostnames and enableDnsSupport set to true, and the DHCP options set for your VPC must include AmazonProvidedDNS in its domain name servers list.

https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html

In my experience, the workers not joining was a result of setting cluster_endpoint_private_access = true in terraform-aws-eks without setting enable_dns_hostnames = true and enable_dns_support   = true in terraform-aws-vpc. The DHCP option referenced is already set as a default with the vpc module.
I'm wondering if @karolinepauls was enabling the private endpoint as well? Wish I had more time to draw up a test matrix and exercise all these different configs.

@cmrust I haven't changed cluster_endpoint_private_access, kept the defaults.
The below is what I had, and added only enable_dns_hostnames = true since.
The differences from the basic example is using the launch template and only a single security group (for SSH).
data "aws_availability_zones" "available" {}

resource "aws_security_group" "worker_management" {
  name_prefix = "all_worker_management"
  vpc_id      = module.vpc.vpc_id

  ingress {
    from_port = 22
    to_port   = 22
    protocol  = "tcp"

    cidr_blocks = [
      "<IP_ADDRESS>/8",
      "<IP_ADDRESS>/12",
      "<IP_ADDRESS>/16",
    ]
  }
}

module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "2.6.0"

  name                 = var.cluster_name
  cidr                 = "<IP_ADDRESS>/16"
  azs                  = data.aws_availability_zones.available.names
  private_subnets      = ["<IP_ADDRESS>/24", "<IP_ADDRESS>/24", "<IP_ADDRESS>/24"]
  public_subnets       = ["<IP_ADDRESS>/24", "<IP_ADDRESS>/24", "<IP_ADDRESS>/24"]
  enable_nat_gateway   = true
  single_nat_gateway   = true

  tags = {
    "kubernetes.io/cluster/${var.cluster_name}" = "shared"
  }

  public_subnet_tags = {
    "kubernetes.io/cluster/${var.cluster_name}" = "shared"
  }

  private_subnet_tags = {
    "kubernetes.io/cluster/${var.cluster_name}" = "shared"
    "kubernetes.io/role/internal-elb"           = "true"
  }
}

module "eks" {
  source  = "terraform-aws-modules/eks/aws"
  version = "5.0.0"

  cluster_name = var.cluster_name
  subnets      = module.vpc.private_subnets

  vpc_id = module.vpc.vpc_id

  worker_groups_launch_template = [
    {
      name                 = "worker-group-1"
      instance_type        = "t2.small"
      asg_desired_capacity = "2"
      asg_min_size         = "0"
      asg_max_size         = "5"
      key_name             = aws_key_pair.bastion-key.key_name
    },
  ]

  worker_additional_security_group_ids = [aws_security_group.worker_management.id]
  map_roles                            = []
  map_users                            = []
  map_accounts                         = []

  tags = {
    environment = "dev"
  }
}

@cmrust Can you chart the test matrix? I may automate/run the tests, depending on how much of a social failure I'll end up being this weekend :D

@max-rocket-internet done adding DNS resolution to other examples.


http: cleaning upstream interfaces for upstream filters.

This changes the Upstream Filter code to creating the codec filter via factory which

requires adding all UpstreamRequest/CodecFilter interactions to an UpstreamCallback interface accessible through the filter manager
requires unhiding the configuration because the presubmit cross-checks for the registered factory require all the config be unhidden
allows configuring the codec filter in configuration, in case of eventual alternate terminal filter
allows fixing up the filter dependency validator to validate the entire upstream filter chain.

Upstream filters flipped on for CI, SHOULD BE FLIPPED OFF BEFORE SUBMITTING
Risk Level: low assuming it's flipped back off
Testing: updated unit tests, covered by filter integration tests
Docs Changes: n/a
Release Notes: n/a (off by default)
Part of https://github.com/envoyproxy/envoy/issues/10455

@mattklein123 if you have any thoughts about / improvement suggestions for envoy/http/filter.h please let me know

cc @paul-r-gall

/lgtm api

/docs

@snowp ping?

whelp I forgot to flip the flag back.  retroactively this is higher risk than it's tagged as.
We had already fixed the blocking bug, so I AFIK it's good to turn up, I'd just planned on doing that in a solo follow-up PR


[CLOSED] Cannot generate instance for -> in Control.Category

 Issue by sweirich
Thursday Nov 16, 2017 at 21:24 GMT
Originally opened as https://github.com/antalsz/hs-to-coq/issues/40

If we switch from HANDMOD to MODULES for Control.Category, the translation succeeds but we miss an instance
(* Translating `instance Category GHC.Prim.arrow' failed: OOPS! Cannot find
   information for class "Category" unsupported *)

The Category class is defined in the same file so the class information should be available.

 Comment by sweirich
Thursday Nov 16, 2017 at 21:24 GMT

Is this related to the recent change you have made to type classes?

 Comment by nomeata
Thursday Nov 16, 2017 at 21:49 GMT

No, my change should be completely independent of the type class information handling

 Comment by nomeata
Thursday Nov 16, 2017 at 21:53 GMT

Ah, but it might be related to class kinds – if I remove that edit it knows about the class.

 Comment by nomeata
Thursday Nov 16, 2017 at 21:58 GMT

Found and fixed, thanks for the report.


Added 1 CVPR'18 paper and 3 CVPR'19 papers

Added 1 CVPR'18 paper: HD-GAN
Updated 3 CVPR'19 papers: these can be found from their authors' personal pages

Thanks!


Additional escape character added to the escaped header values results in test failure

Additional escape characters (\) were added to the header in generated tests
Looks similar to: https://github.com/spring-cloud/spring-cloud-contract/issues/851
Spring cloud contract plugin version: 2.2.3.RELEASE
Contract :
import static org.springframework.cloud.contract.spec.Contract.make

[
    make {
        request {
            name("test")
            method 'GET'
            urlPath('/test')
        }
        response {
            status OK()
            body( "test": "\"escaped\"")
            headers {
                contentType('application/pdf')
                header(contentDisposition(), "attachment; filename=\"test.pdf\"")
            }
        }
    }
]

Generated test:
	@Test
	public void validate_test() throws Exception {
		// given:
			RequestSpecification request = given();

		// when:
			Response response = given().spec(request)
					.get("/test");

		// then:
			assertThat(response.statusCode()).isEqualTo(200);
			assertThat(response.header("Content-Type")).matches("application/pdf.*");
			assertThat(response.header("Content-Disposition")).isEqualTo("attachment; filename=\\\"test.pdf\\\"");

		// and:
			String responseBody = response.getBody().asString();
			assertThat(responseBody).isEqualTo("{test=\"escaped\"}");
	}

Note that the body is compiled correctly but the header Content-Disposition value has an additional \\ resulting in a test failure.
The compiled header should have been assertThat(response.header("Content-Disposition")).isEqualTo("attachment; filename=\"test.pdf\"");

Can you check this against the latest version of Spring Cloud Contract - you're using version 2.x which is not supported anymore.

Can you check this against the latest version of Spring Cloud Contract - you're using version 2.x which is not supported anymore.

Tested with version 3.1.2 together Spring cloud version 2021.0.2.
Here is a small app I've created to test this. Hope it helps.

It seems OK in 3.1.5 -> see:
header(contentDisposition(), 'attachment; filename="test.pdf"')
is generated as
response.header("Content-Disposition") == '''attachment; filename="test.pdf"'''
Note: maybe the trick is in using ' -> there's no need to evaluate the content 😏

It seems OK in 3.1.5 -> see: header(contentDisposition(), 'attachment; filename="test.pdf"') is generated as response.header("Content-Disposition") == '''attachment; filename="test.pdf"'''
Note: maybe the trick is in using ' -> there's no need to evaluate the content 😏

I tried with the repo provided above, but it still doesn't work

it's quite funny. I'm using it in another project and it's working now. However, the non-working tests is JUnit, but the old working is Spock (<testFramework>SPOCK</testFramework>). I'll try to play with it more.

I found out a work around with regexp working for me:
header(contentDisposition(), regex('attachment; filename="oracle.sql"'))


[Feature Request] Allow OpenAI tool to be initiated with environment variables

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is.
I have a local flow that uses multiple llm nodes, to run the flow I have to create a connection and set the connection name in the llm nodes. This is not very convenient if I need to switch across multiple OpenAI resources. OpenAI client can be initiated with environment variables, which I often have already set locally. There should be a way I can have the llm nodes to use my local environment variables so that I don't need to create connections and change llm nodes all the time.
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Hi @luigiw , thanks for reporting! We plan to support this in our python eager mode's phase 2, which might take a while. Currently there's a workaround, you can create a connection which references environment variable for api_key like this:
$schema: https://azuremlschemas.azureedge.net/promptflow/latest/OpenAIConnection.schema.json
type: open_ai
name: open_ai_connection
api_key: ${env:OPEN_AI_CONNECTION_API_KEY} # env reference

Not sure if it works for your scenario, we'll add a doc for this usage.

@D-W- will this be part of the eager mode feature that's coming soon?

Yes, we are designing the whole experience for leveraging environment variable to set connections for both DAG and eager flow. I'll update here once the design finalized.

Hi @luigiw , we plan to provide a API to create connection object from environment variables. But user will still have to pass that connection object to the tools since we don't want to change current tools behavior. Does this meet your requirement?
Here's related PR: https://github.com/microsoft/promptflow/pull/2219/files
And a sample
connection_obj = OpenAIConnection.from_env()
built_in_tool(connection=conection_obj, xxx)


fix: try catch for postinstall script

Should avoid this kind of errors #4485
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>postinstall: node postinstall.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

This should be closed if #4489 get merged


DFK72BUC02 in Ubuntu 16.04

I want to use the camera DFK 72BUC02 in ubuntu 16.04. I followed the instructions and the installation seems correct but:
When I tried to change the camera firmware to dfk72uc02_3012.euvc says:
Firmware Size: 19968 EEPROM Size: 16384
Firmware does not fit in EEPROM. Aborting!
Using the default firmawe and using the command tcam-ctrl -l , I got the message:
No device found.
What should I do to use the camera?

Hi,
Sorry for the late reply.
There are two types of dfk72 cameras in circulation. One has a bigger EEPROM.
You will have to use the previous firmware file dfk72uc02_158.euvc.
The rest of the instructions remains identical.

Thank you for your replay.
I tried the firmware and I can use the camera but, with the tcam-capture command shows the image in gray. The camera in Windows has color. Is there another firmware that preserves de color?

To verify you used the dfk72uc02_158.euvc file and not the dmk72uc02_158.euvc right?
Do applications like guvcview show a color image?

I have tested the firmware with two cameras:
./firmware-update -l
Found 2 device(s).
Name           - ID        - Serialnumber
DFx 72BUC02    - 199e:8207 - 49010288
DFx 72BUC02    - 199e:8307 - 49010289
In the 49010288 tested with the guvcview, it shows the image in gray. When I change the output to RGB3 or BGB3, it returns the following error
libv4l2: error set_fmt gave us a different result then try_fmt!
Segmentation fault (core dumped)
The 49010289 is not detected with this firmware.

What does uname -a say?
Can you give me the output of sudo firmware-update -i -d <SERIAL> for both cameras?

sudo ./firmware-update -i -d 49010289
Device manufacturer: The Imaging Source Europe GmbH
Product name:        DFx 72BUC02
Serial number:       49010289
VendorID:ProductID:  199e:8207
Firmware version:    158
UVC mode is:         off
Camera EEPROM size:  16384
sudo ./firmware-update -i -d 49010288
Device manufacturer: The Imaging Source Europe GmbH
Product name:        DFx 72BUC02
Serial number:       49010288
VendorID:ProductID:  199e:8207
Firmware version:    158
UVC mode is:         off
Camera EEPROM size:  16384

You need to toggle the uvc flag for them as is described in the instructions.
sudo firmware-update -d  -m uvc
Then both cameras should be listed.
With the current 4.15 kernel for Ubuntu 16.04 a color image is available.
Are you using an older kernel? What does 'uname -a ' say?

That was it. Thank you now they work perfectly.

That is great to hear. If you have any further questions, please let us know.


[rhel 8.7/9.1] explicitly add containernetworking-plugins to edge

Cherry-picked #2951 for backported release into RHEL 9.1.0.

In podman v4.0.0 the default network backend was switched from cni to netavark.  However, podman will choose cni if there are already containers, images, or cni networks preset on a system [1].
Starting with podman v4.2.0, containernetworking-plugins is no longer a hard requirement for podman.  So when an edge commit is built with an embedded container, podman v4.2.0+ will choose the cni network and fail with an error because the plugin isn't installed.
Adding the package explicitly alongside podman to avoid this issue with future RHEL 9.1 edge builds when they include containers.
This change does not affect test manifests.  The package is already included in manifests as a dependency of podman < v4.2.0.
See rhbz#2123210
[1] https://github.com/containers/common/blob/a083f790abf21048518f2d66b7e01370cc055790/pkg/config/containers.conf#L275-L278

The diff-manifests script needed a fix for PRs made against any branch other than main.  Branches aren't synced to GitLab so we need to fetch the base branch from GitHub.

Added commits required to fix some CI jobs.

Failures in new ostree test are being fixed in https://github.com/osbuild/osbuild-composer/pull/2979


add solarized dark json theme

This PR adds a custom json theme representing the solarized dark colour palette.
It mirrors a PR that I opened some time ago for matplotlib (ignored ever since). The style of the graphs and plots is exactly what you see in the images on the comments on the original PR.
If you find it relevant I could also add screenshots to the README showcases the palette onto the plot images that you use.

Thank you for reviewing the PR, I will address the comments between today and tomorrow :)

Is anything else needed for this PR?


Besu help - unite the tx-pool CLI options

to reproduce: besu -h
Expected output - all the tx-pool options together
Actual (extract from) output - two groups of tx-pool options
      --tx-pool-disable-locals[=<Boolean>]
                             Set to true if transactions sent via RPC should
                               have the same checks and not be prioritized over
                               remote ones (default: false)
      --tx-pool-enable-save-restore[=<Boolean>]
                             Set to true to enable saving the txpool content to
                               file on shutdown and reloading it on startup
                               (default: false)
      --tx-pool-limit-by-account-percentage=<DOUBLE>
                             Maximum portion of the transaction pool which a
                               single account may occupy with future
                               transactions (default: 0.001)
      --tx-pool-save-file=<STRING>
                             If saving the txpool content is enabled, define a
                               custom path for the save file (default: txpool.
                               dump in the data-dir)
  -V, --version              Print version information and exit.
...
Tx Pool Options
      --tx-pool-max-size=<INTEGER>
                             Maximum number of pending transactions that will
                               be kept in the transaction pool (default: 4096)
      --tx-pool-price-bump=<INTEGER>
                             Price bump percentage to replace an already
                               existing transaction  (default: 10)
      --tx-pool-retention-hours=<INTEGER>
                             Maximum retention period of pending transactions
                               in hours (default: 13)

proposed PR merged into main


Getting syntex error

Hi
I was trying to run query
but getting
pyhdb.exceptions.DatabaseError: sql syntax error: incorrect syntax near "-": line 1 col 11043 (at pos 11043)
please help me to resolve

sample query -
SELECT
BARK."KUNAG" AS "SoldTo",
SUM(VBPP."NETWR") AS "NetValue"
FROM
"_SYS_BIC"."XYZ-ABC.profitability/S_CA_R_BillingDocument" VBPP
INNER JOIN "_SYS_BIC"."XYZ-ABC.profitability/S_CA_R_BillingDocumentItem" VBPP
ON VBRK."VBELN" = VBRP."VBELN"
WHERE
VBRK."FKDAT" >= '20190824' AND VBRK."FKDAT" <= '20190927'
"

Closing due to the sunset of the project. Please check active maintained alternative: https://pypi.org/project/hdbcli/


can not download NWPU-Crowd dataset from that link.

display：Sorry, **************.com was not found in the mailnwpueducn-my.sharepoint.com directory

Other links:
http://share.crowdbenchmark.com:2443/home/NWPU-Crowd_Dataset
https://pan.baidu.com/s/1c2eLEE7leN0jz-fM38zyIQ#list/path=%2F


Conflated "Schema" node with "Reference" node in sampledb.cql

Conceivably a schema may be built using several references. Schemas should be their own node.

Are the author relationships on your current Reference nodes for those nodes, or would they be changed to the new Schema nodes?

Good question.
I think in this case the authors would actually be applied to both as they authored both the publication (the book/manual) and authored/created the schema. It is possible (likely?) in future that authors of a reference won't be identical to schema authors though.
As a note, authors (whether for schemas or references) are distinct from enterers, as those are meant to indicate who literally entered it into the database.
Did that make sense?

Can this be closed, based on how this is handled in sampledb2.cypher?

Yeah totally fixed.


Adding CSV-reader, metadata, and several validations #2

Most content of this PR has been added via #5. Thanks for submitting the PR!


Add Optional package signing check to Update Manager

Hi, thanks for the contribution, but can you add some more context to this PR?
What does "SignatureState.SignedAndTrusted" mean in this context, does that mean it has a valid authenticode signature? Or that it has been signed by a trusted root in the OS store? How do you go about signing that package? Is that a manual step after vpk pack? what steps need to be taken? etc. Does reconstructing a package from deltas break the package signature? Is this change cross platform? can signing be performed and verified on mac / linux?
As far as the code itself, the signature check should probably be combined with the current checksum method to deduplicate some code and avoid needing to do the fast fails (like file length check) more than once.

Hi, thanks for the contribution, but can you add some more context to this PR?
What does "SignatureState.SignedAndTrusted" mean in this context, does that mean it has a valid authenticode signature? Or that it has been signed by a trusted root in the OS store? How do you go about signing that package? Is that a manual step after vpk pack? what steps need to be taken? etc. Does reconstructing a package from deltas break the package signature? Is this change cross platform? can signing be performed and verified on mac / linux?
As far as the code itself, the signature check should probably be combined with the current checksum method to deduplicate some code and avoid needing to do the fast fails (like file length check) more than once.

1st, I need to hold off on submitting this as I work for MSFT and should run my contribution through them since this might be work related. Otherwise I would just have to ask for the feature and hope it gets added :-)
The SignatureState.SignedAndTrusted status in the context of Microsoft.Security.Extensions indicates that the file has a valid Authenticode signature and that the signature is trusted. This means the signature is verified against a trusted root certificate in the OS store as well (which all major software signing certs would be). It is Windows specific, so I made it optional. Perhaps, I could change the name of the option to make it indicate it's for Windows only? This is why I don't think adding it to the hash check methods would be best since its OS specific and not everyone will choose to sign their packages.
As far as signing it, yes, for me the package files from vpk commands are signed downstream in pipelines (by the same cert used to sign the application binaries). An extra security level in case someone was to create MITM attack replacing downloaded update files cleverly. MSIX, for example, has similar logic to validate update package files before being willing to extract them. You could choose to modify your vpk code as well to optionally sign the update packages.
"Does reconstructing a package from deltas break the package signature?" yes, but my hope was that my code checks only after the update manager downloads either a full package file or a delta package(s). It should not check the signature of a local full package after it has been reconstructed, nor should it need to if it already checked the individual delta files before allowing them to be integrated.

Actually, looking at your AuthenticodeTools class, My method is basically a 1:1 replacement for that.

In that case we may want to be consistent. Either use authenticodetools in both places (and avoid an additional dependency) or take the library and deprecate our existing code.
As far as this approach in general goes, since this is Windows only (and I'm still unclear about how you would actually go about signing a package) I'm slightly hesitant to merge it.
If we could make it much more clear that this is a windows only authenticode check, eg with supported os annotations and better naming. And also document how to go about creating signed packages, it might be good enough to go in! In general though we would still need to look for similar solutions on Mac and Linux.

In that case we may want to be consistent. Either use authenticodetools in both places (and avoid an additional dependency) or take the library and deprecate our existing code.
As far as this approach in general goes, since this is Windows only (and I'm still unclear about how you would actually go about signing a package) I'm slightly hesitant to merge it.
If we could make it much more clear that this is a windows only authenticode check, eg with supported os annotations and better naming. And also document how to go about creating signed packages, it might be good enough to go in! In general though we would still need to look for similar solutions on Mac and Linux.

Agree 100%. I will play around with it a bit more to address this. Where is the repo for your documentation?

https://github.com/velopack/velopack.docs

As one additional point of reference, powershell is the only open source thing I can find which depends on Microsoft.Security.Extensions, and it also has a fallback to WinVerifyTrust.
https://github.com/PowerShell/PowerShell/blob/389f9dba8879bfacfef76337eb661eb640bb6218/src/System.Management.Automation/security/Authenticode.cs#L278

unfortunately I have had to go in a different direction so will close this pull request.


Support bt_disable on Silabs chips

Is your enhancement proposal related to a problem? Please describe.
Silabs chips do not support bt_disable (at least on the Series 2 EFR32MG24 we're using), returning -ENOTSUP, seemingly related to some on-demand start component missing. We'd like to have better control over BLE, especially for power management purposes, so we'd need to turn off the stack for limited power consumption, and reenable it when we are out of low-power.
Describe the solution you'd like
Simply support the BT_DISABLE HCI state!
Describe alternatives you've considered

Further power optimization (further reading in progress) that do not involve stopping the BLE controller

I would assume that the Silabs link layer already achieves minimal power consumption when you don't have any active states in the controller (advertising disabled, scanning disabled, no active connections). So I wouldn't think that having a separate explicit "disable bluetooth" API would add much value. @asmellby any thoughts on this? Is there something "more" that we could do through a top-level "shut down Bluetooth" API, that we don't already implicitly do when the link layer doesn't have any active states?


Refactor to use rb_check_id_cstr for id resolution

https://github.com/ruby/ruby/blob/c14f230b26aa4f8abe9ecf3814cfebbe584d77c9/symbol.c#L1139-L1148
Note: this creates a fake str as part of the op and returns an id
Tests pass, but TBH I have not looked at the current code coverage to see if that means this change works or not.
Feel free to push back / not accept if this change

Does something incorrect that I am missing
Decreases performance as I am new to this codebase (and my groking of rb internals).

Looks like rake test didn't test full build for me locally and the tests have failed.
Will look at this and update.

Very sorry, Adam. I probably missed something when building the Rakefile, which caused it not to rebuild properly.
I think there is another method for doing this (creating a symbol from a c string), but I forgot what it is. Thanks for giving this a try!

I found and used rb_intern2 in 4712d51d69b4a023da01c9817e7ea97aa6f780d8. It seems to work!


Honor Disappearing

On 2021/2/19, My Rank is 3kyu, and today, the honor disappeared, and I dropped straight down to 4kyu

Could you share a link to your Codewars profile?

https://www.codewars.com/users/Jari Jarvis

As far as I can see, many of your solutions wer found out to be dishonest copies of other solutions, and your points for them were withdrawn.


Is there support for slot filling?

Hi there
Is there support for slot filling where the user can provide all the necessary info for a given intent over multiple interactions
Example:
User: I'm hungry
Bot: What kind of food would you like to eat?

User: Delivery
Bot: Here are some nearby options for Mexican food for delivery: ...
Or for a simpler more classic example - think booking an appointment where you're asked to provide time and with whom for instance.
Is there already support for this type of scenario? If so, could you point me to key parts of code/tutorial of relevance?  If not, is this on the roadmap, and is there some workaround way to do this in the meantime?
Thank you

Hi there,
thanks for this. This is outwith the scope of rasa NLU, so you will have to write a loop in your bot's code. There are a number of frameworks (e.g. botkit) which you can use to build your application logic.


Rebund

Coverage remained the same at 100.0% when pulling c4e530030e8f3fd5a7316bd922ad6abe0d06d1a4 on rebund into b175d1869f246f80d9a0ea227f8fed7d9329d4fe on master.


Dogfood this application

This application should use itself to have changes approved.
To facilitate this, the development workflow will probably need to change to use feature branches. I don't know what impact if any this will have.
Ping @FundingCircle/black-bat for :thought_balloon:s and :memo:s.

We've thought about this but haven't done it yet because Shipment Tracker itself doesn't need to be audited and because of the tension Pull Requests put on our continuous integration process. I realize we may be missing some obvious pain points or flaws by not dogfooding so at some point we probably should.

Shipment Tracker itself doesn't need to be audited

@whamilton42: Is that true? Who watches the watchers? :thought_balloon:

@sgerrand we were keen to roll fast and furious in the early phase of this project. But given this app is now in production, I agree that we should treat it as such.
Timing is good: we have new team members joining next week and I will propose to start working with a more formal process - pending review with @dideler @whamilton42

We've started doing this.


perf: use a composable rather than BTransition component, eliminating…

… a useless fragment
Describe the PR
A clear and concise description of what the pull request does.
Small replication
A small replication or video walkthrough can help demonstrate the changes made. This is optional, but can help observe the intended changes. A mentioned issue that contains a replication also works.
PR checklist

What kind of change does this PR introduce? (check at least one)

[ ] Bugfix :bug: - fix(...)
[ ] Feature - feat(...)
[ ] ARIA accessibility - fix(...)
[ ] Documentation update - docs(...)
[ ] Other (please describe)

The PR fulfills these requirements:

[ ] Pull request title and all commits follow the Conventional Commits convention or has an override in this pull request body This is very important, as the CHANGELOG is generated from these messages, and determines the next version type. Pull requests that do not follow conventional commits or do not have an override will be denied

@VividLemon I'm against this... adding css again, css that doesn't even use bootstrap variables.

BTransition consumed components already use this CSS anyways. There is no real difference between before/after this change besides eliminating BTransition from the codebase
It could be a good idea to refactor to use actual bootstrap classes, if at all possible. But on the other hand to that, Transition is a useful abstraction for managing transitions


feat(banner): removal of persistent prop

Describe pull-request
Removing persistent prop
Solving issue
Part of Angular/React clean-up
How to test

Go to the Storybook PR preview link
Open the Banner component
There should not be "Disable closing" control anymore
"persistent" prop is removed from "Notes" tab of Banner component too

Suggested test steps

[ ] Browser testing (Chrome, Safari, Firefox)
[ ] Keyboard operability
[ ] Interactive elements have labels.
[x] Storybook controls
[ ] Design/controls/props is aligned with other components
[ ] Dark/light mode and variants
[ ] Input fields – values should be displayed properly
[ ] Events

Additional context
Compare it with the production version of Storybook.

Deploy page has been tested and passed in Chrome, Safari, Firefox:

There should not be "Disable closing" control anymore
"persistent" prop is removed from "Notes" tab of Banner component too

Controls and light/dark mode in deploy page work fine.


feat: upgrade openssl and openssl-ssl

openssl : "0.10.29" -> "0.10.42"
openssl-sys : "0.9.55" -> "0.9.76"

releate to #240


Auto position monitor relative to an explicitly specified one

Description
If I read both the code and the documentation correctly there is currently no way to represent a layout like this using only auto positions:
|-----------|-----------|
|    ???    | auto-top  |
|-----------|-----------|
| auto-left |  "first"  |
|-----------|-----------|

I feel adding something like
auto-left:DP-1

is a logical thing to add.

to reduce ambiguity of implementation I think it should be something like anchor-(top/bottom-left/right)-to:(top/bottom-left/right), DP-1, as in specify the corner of one monitor to place at the corner of the other

i feel like that is a bit confusing/complicated...
how about xrandr style left-of,right-of,above,below?

i feel like that is a bit confusing/complicated... how about xrandr style left-of,right-of,above,below?

that only works/makes sense when the monitors have the same size

oh right, didnt even consider that...


Fixing the gdal include error that Macports seems to only mess up.

For some reason, Macports installs GDAL includes in $PREFIX/include, rather than $PREFIX/include/gdal, causing problems.  I typically build in Linux so I didn't catch it until now.  I removed the #include <gdal/gdal.h> with just #include <gdal.h> in the source.  This is also proper due to my mistake in part 2.

In addition, I didn't include the headers from find_package(GDAL) into the OpenCVFindLibsGrfmt cmake script, causing them to also not be found.   I got lucky as you typically include so many other dependencies, that /usr/local/include on Linux systems almost always gets appended.  As a result, this should fix that problem for both Mac and Linux.

:+1:


chore: improve docs

Update README
Update the CONTRIBUTING.md document
Switch to contributor covenant for code of conduct

Resolved by https://github.com/schalkneethling/minimalist-docs


swap URL over to new repo.saltstack.com site

@twangboy or @jfindlay who looks after these repos?

also see question in https://github.com/saltstack/salt-windows-bootstrap/issues/22


Improve performance of floatformat template filter by using lru_cache

I noticed this block of code was quite expensive and could be cached quite easily.
Before:
In [1]: from django.template.defaultfilters import floatformat
In [2]: f = 1 / 3
In [3]: %timeit floatformat(f)
19.4 µs ± 2.2 µs per loop (mean ± std. dev. of 7 runs, 100000 loops each)

After:
In [3]: %timeit floatformat(f)
11.7 µs ± 167 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

Not major, but it adds up if this method is called repeatedly.

That's not fair benchmark, you should try:
%timeit floatformat(random.random())

How come? And wouldn't the overhead of random.random() affect the results though? I mean, it's roughly the same speed with random.random():
In [7]: %timeit floatformat(random.random())
20.3 µs ± 516 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

But the optimization is to use a cache, in case it's being called repetitively with the same inputs on a page.

And wouldn't the overhead of random.random() affect the results though?

In [19]: %timeit random.random()
94.8 ns ± 1.1 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [20]: %timeit floatformat(1/3)
29.6 µs ± 996 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [22]: (94.8*10**-9) / (29.6*10**-6)
Out[22]: 0.0032027027027027024

So overhead could be neglected.

in case it's being called repetitively with the same inputs on a page.

How common is this case?

Agreed. I don't think it's a common use case.

I'd also agree and say that if this is a bottleneck for a particular project and they know their inputs are such that this will always help and not hinder, they should use a custom template tag.

Fair enough, I understand. However there is a small code improvement to
remove the multiple calls to append/the while loop that might be worth
including, I will do that as a separate PR if anyone is interested.


[modify][gws][schedule] relax facility max days limit

Coverage increased (+4.2%) to 79.07% when pulling e92895d5cc5e1baa7aff7608867c349b67616b57 on sunny4381:features/relax-facility-max-days-limit into d8d332f649bcc1426197e4e954561ee65f90224c on shirasagi:master.


idea-nginx crashes PhpStorm

How to produce:
Install last PhpStorm 3.0 / 4.0
Install nginx Support.
http://code.google.com/p/idea-nginx/issues/detail?id=3

Sorry. Last version is started properly


Ability to add dependency using a Provider type

As a plugin developer, I would like to provide lazy calculated values as dependencies. I could also use this as a build script author.
Current Behavior
Exception thrown by configuration if a Provider type is passed in.
Context
Mapping extension values or any other values to dependencies has to be done in an afterEvaluate type step right now.
Steps to Reproduce (for bugs)
tasks.wrapper.gradleVersion = '4.3-rc-2'

final myProp = objects.property(String)
myProp.set('com.google.guava:guava:23.0')

repositories {
  jcenter()
}

configurations {
  myConfig
}

dependencies {
  myConfig(myProp)
}

Fails with
> Cannot convert the provided notation to an object of type Dependency: value: com.google.guava:guava:23.0.
  The following types/formats are supported:
    - Instances of Dependency.
    - String or CharSequence values, for example 'org.gradle:gradle-core:1.0'.
    - Maps, for example [group: 'org.gradle', name: 'gradle-core', version: '1.0'].
    - FileCollections, for example files('some.jar', 'someOther.jar').
    - Projects, for example project(':some:project:path').
    - ClassPathNotation, for example gradleApi().

Your Environment

version 4.3-rc-2

The error message you are seeing is expected as we don't support assigning Provider types as dependencies. Can you give us a concrete example when you want to defer the evaluation of a dependency version? Is the use case that you want to be able to assign a dependency value through a property exposed by an extension?

The error message was expected by me as Provider is still really new, and I see you guys doing a lot of recent work on it . I should remove the "Steps to Reproduce (for bugs)" because this is definitely not a bug.
You have the most concrete case, like you said, is to map an extension property to a later calculated dependency
myExtension {
  packageVersion = '1.2'
}

Right now, I believe I have to map this in an afterEvaluate (here).
I'd like to generally avoid afterEvaluate and have all interactions and configurations declared up front, especially so users can easily retrieve and do things with them if they want to during configuration time.

Another way I have done it is to use beforeResolve and afterResolve like I described on this form post (https://discuss.gradle.org/t/configuration-and-transitive-dependency-management-by-extension/23824/5?u=mkobit). That is a little bit more interesting approach but is stilla but wonky.

Another approach I have been using before in my plugin is to expose a custom configuration (potentially in combination with assigning a default dependency). The drawback is that you have to document the configuration, its purpose and have to assign the full coordinates of dependency.

I think this is a good use case: as a plugin author I know I'm going to need a version of something (a tool or library for example) but I don't know exactly what when the plugin is applied. I won't know until some other build logic has configured my model to tell me.
Using a provider here allows me to wire in the dependency when the plugin is applied. I don't need to bother about trying to find some hook that runs after all of the build logic might configure my model but before the dependency is used (aka the hope-for-the-best strategy).
Using a provider is more descriptive, so that we can (later) do things like apply validation to make sure the input value isn't changed after it is used and report on where the dependency came from to make this work better.
We added something similar for declaring the artifacts of the project.

I'm leaving this in:core since it's more about project configuration than dependency-management.

This can sort of be worked around better now by using the newer Configuration.withDependencies API

Maybe this is less needed with the configuration avoidance APIs? I haven't tried it yet, but:

val myProp: Property<String> = objects.property()
myProp.set("com.google.guava:guava:23.0")

repositories {
  jcenter()
}

val myConfig by configurations.registering

myConfig.configure config@ {
  dependencies {
    this@config(myProp.get())
  }
}


When will FSC-147 be released?

The validation and test sets can be accessed but there is no ground truth. When will the whole dataset be released?

Hey,
entire dataset along with annotations is available now.


Update virtual-machines-linux-create-upload-centos.md

Steps for CentOS 7+ are incorrect and will not lead to a successful VM launch. The kernel will go into Crash Recovery mode and the VM will ultimately fail to launch. The following additions correct these issues. Note: These additional steps will most likely be required in RHEL 7+ as well though I have not tested it.

Hi @maxirus, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no contribution license agreement is required at this point. Real humans will now evaluate your PR.

TTYL, AZPRBOT;

@szarkos / @RicksterCDN - Could you review this proposed update from @maxirus and let me know if it's good to merge?

Some of these look fine, but I think the root of the problems is due to prepping the image on Virtualbox.  This document presumes you are prepping the image on Hyper-V.  That's also why you're seeing the "[Errno 5] Input/output error" - for some reason we can't log to /dev/console under vbox.
It may be better to add some of those notes to the following document since they are not all specific to CentOS: https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-create-upload-generic/#linuxinstall
You also shouldn't have to reboot after changing the kernel, except maybe to test the changes.  The net.ifnames=0 is a good change. It's not necessary in this case, but it's actually part of some of the Openlogic images already.

@tysonn if there's no desire to modify the PR then I can just take this feedback and integrate the changes into the appropriate docs, ok?

OK, I've taken the feedback and integrated it into multiple docs.  I think we can close this for now.  Thanks!

@maxirus - Thanks for the contributions...the author incorporated via other PRs to multiple articles.


How to handle collection

I don't know why but I can not use collection using a2lix forms. I've tried using a2lix_translations but I was not able to find correct options. So I've created a new form type to use with a2lix_translationsForms but I've got this error:
 The form's view data is expected to be of type scalar, array or an instance of
\ArrayAccess, but is an instance of class MyClass. You can avoid this error by
setting the "data_class" option to "MyClass" or by adding a view transformer that
transforms an instance of class MyClass to scalar, array or an instance of
\ArrayAccess

and when I add data_class, I've got:
The form's view data is expected to be an instance of class MyClass, but is an
instance of class Doctrine\ORM\PersistentCollection. You can avoid this error by
setting the "data_class" option to null or by adding a view transformer that
transforms an instance of class Doctrine\ORM\PersistentCollection to an instance
of MyClass

The problem occurs when I try to edit an entity that I've created manually. For creation the form is generated when removing the data_class option but the entity does not persist into database.
I'm using admin2generator so I do not write edittype manually. I've tried all options I was able to find but nothing works.

I'm having exactly the same problem with a form that has another embedded form. Both entities are related by an OneToOne reference as I explained on this issue: #207
Does anybody know why? Thanks!