Load Sub-Tasks of a Particular Task

Is your feature request related to a problem? Please describe.
I want a way to load all the subtasks of a particuar task.  An example is when I'm working on a JIRA ticket.  I make a top-level ticket in todoist with a link to the ticket, and then I add sub-tasks so I can keep track of my Next Actions as I'm working (GTD).
Currently, there is no way that I know of to query for the subtasks of a particular task.
Describe the solution you'd like
I would like a way through the API to load subtasks of a particular task.  Having something else other than just 'filter', that lets you specify a task to load subtasks of would be really useful in a lot of situations.
Describe alternatives you've considered
I have tried to be very clever with my filters, but I cannot figure out the magic.  If there is such a magic, I don't need this feature.
Additional context

Hey @max-dfinity, this isn't something that I'm looking to support right now

Hi jamie,
thank you for this awesome plugin.
It would be extremely useful if one could easily render sub-tasks. Why are you not interested in supporting this feature?
Would you be willing to accept PRs that implement this?

The core reason is that its not necessarily straightforward to implement this. We can fetch individual tasks by task ID, but subtasks are not included in the response. We could fetch all tasks and filter them, but this feels like an abuse of the API.
I'd be more willing to look at this if/when this migrates onto the sync API, since the expectation is that we keep an entire copy of the application state. I've not done this migration (yet) because it would force me to re-implement all the Todoist filters and I'm not sure if that's a level of complexity I want to commit to.

We can fetch individual tasks by task ID, but subtasks are not included in the response.
Yeah, I noticed this too while looking at the API doc.
It's a peculiar implementation detail.

As an intermediate step, one could use the Sync API to just pull in the parent-child relationships and stay on the REST API for the filtering tasks.

While that could work, if I do start using the Sync API it would to start porting existing functionality across first, before building on top of what already exists.


basicauth: Remove siteRoot from htpasswd= parameter

Currently, it's not possible to put .htpasswd out of a website.
I would suggest removing "siteRoot" parameter from "passwordMatcher" in "caddy/caddyhttp/basicauth/setup.go" to allow it.
It's currently an undocumented feature of this parameter.
It would be a breaking change for some users (which could be adjusted by putting full path to the .htpasswd file), but it would allow .htpasswd file to be stored outside what is served by caddy.
Ref: https://github.com/mholt/caddy/blob/master/caddyhttp/basicauth/basicauth.go#L96
Ref: https://github.com/mholt/caddy/blob/master/caddyhttp/basicauth/setup.go#L77
Ref: https://caddyserver.com/docs/basicauth
If it's accepted, I could probably submit a pull request.

Thanks for the suggestion. I think this would be a good move... however, see my (upcoming) comment in your other issue #1402.

Since it evaluates the path as relative to root, you can strong-arm this config directive by using a series of ../../ prefixes in front of the actual location, ie:
servername.fqdn {
    root /var/www/html
    basicauth username htpasswd=../../../etc/caddy/htpasswd {
        realm "Realm"
        /
    }
}

As long as the user caddy is running under can see whatever location you hand it, it works fine. Obviously if you move the location of root, the htpasswd location might have to change as well. It's not pretty, but it solves the problem today.
If you're going to engineer a fix though, I think the right answer is to check the provided htpasswd path for a leading / and if it has one, treat it as absolute and if it doesn't, treat it as relative to the provided root. That's consistent with your average config file format and likely doesn't break as many current user configs.

I think this will be irrelevant in Caddy 2, so, closing.


select menu and textarea not supported in ui-material

This is due to Angular 2 Material currently not supporting select menues and textareas

textarea was added in 1.2.0


How to get entity list key value from azure cognitive services ( Conversational language understanding)

Library name and version
Azure cognitive language
Query/Question
I am not able to see the key of the list entity in the json returned by the conversation language understanding.
Environment
.Net Core

Thank you for your feedback.  Tagging and routing to the team member best able to assist.

Can you provide some sample code of the endpoint request you are making?

I have the same error as @namanjain123 that I can't enter the value of the list key
https://user-images.githubusercontent.com/67531380/224478341-54c9efb4-c3b0-4fa2-8069-7488b7835a6e.mp4

Please note this repo is only for Azure SDK issues. If you're having a problem with the Portal, please use the feedback button in the top-right to report an issue.

@amberitas17 I am facing the same issue. Were you able to solve this?

Answering my own question, the trick is to also add synonym to make it a valid list item.


1165 admin issues regarding code quality syle

🍰 Pullrequest
unused elements removed. click function for show details for a user in the user table
Issues

fixes #1165

inhalt gemergt in #1196


Add support for Kofax Patchcodes

https://en.wikipedia.org/wiki/Patch_Code

This would be fairly useful in enterprise document imaging.

You can currently construct these using the symbol encoder with the following data inputs:
5252222 : Patch 1
5222225 : Patch 2
5222522 : Patch 3
2252522 : Patch 4
2252225 : Patch 5 ("T")
2222525 : Patch 6

Specification here: http://www.alliancegroup.co.uk/downloads/patch-codes.pdf


Support for namespaced fixtures and models

I have a number of models which require nested name spacing. Is there a way to support this in mirage?
GET /blog/authors?include=blog/posts
{
  'blog/authors': [
   {  id: 1, name: 'adam', posts: [1,2] },
   {  id: 2, name: 'bob', posts: [3,4] },
  ]
  'blog/posts': [
   {  id: 1, title: 'Monday thoughts', author: 1 },
   {  id: 2, title: 'Tuesday reminiscence', author: 1 },
   {  id: 3, title: 'Top 10 songs', author: 2 },
   {  id: 4, title: 'Leo says so', author: 2 },
  ]
}

models/blog/author.js
import DS from 'ember-data';
export default DS.Model.extend({
  name: DS.attr('string'),
  posts: DS.hasMany('blog/post'),
});

models/blog/post.js
import DS from 'ember-data';
export default DS.Model.extend({
  title: DS.attr('string'),
  author: DS.belongsTo('blog/author'),
});

We need to add proper nested support, but for now I would say the best place to do this is in the serialize method of your serializer, assuming you're on 0.2 betas.
See the guides for how to override serialize, then rewrite your keys.

Filing under "Subdirectory support" card in the Roadmap project.


It happend again

Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Traceback (most recent call last):
File "/usr/local/bin/speedtest-cli", line 718, in
main()
File "/usr/local/bin/speedtest-cli", line 712, in main
speedtest()
File "/usr/local/bin/speedtest-cli", line 558, in speedtest
servers = closestServers(config['client'])
File "/usr/local/bin/speedtest-cli", line 362, in closestServers
uh = urlopen(request)
File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 410, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 442, in error
result = self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 629, in http_error_302
return self.parent.open(new, timeout=req.timeout)
File "/usr/lib/python2.7/urllib2.py", line 410, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 442, in error
result = self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 629, in http_error_302
return self.parent.open(new, timeout=req.timeout)
File "/usr/lib/python2.7/urllib2.py", line 410, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 442, in error
result = self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 629, in http_error_302
return self.parent.open(new, timeout=req.timeout)
File "/usr/lib/python2.7/urllib2.py", line 410, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 442, in error
result = self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 629, in http_error_302
return self.parent.open(new, timeout=req.timeout)
File "/usr/lib/python2.7/urllib2.py", line 410, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 442, in error
result = self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 619, in http_error_302
self.inf_msg + msg, headers, fp)
urllib2.HTTPError: HTTP Error 302: The HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
Found
python --version
Python 2.7.6

Your line numbers to do not line up with the current version.  Make sure you are running the current version


Error when archiving project

When I archived the project, I received the error below:

I don't know why because the error did not appear when I ran it on the simulator and my devices. Hope you fix it
Notice: I get the framework by Carthage.
My test project is using Swift

I never use Carthage. It will be great if you can fix it and make a PR. Thanks

I tried to fix it for a few days, but I couldn't find any solution for it.


Check the integrity of weights files and disable cache

For some reason, some weights files get corrupted after downloading, and it get saved in the cache so it always crash no matter how many times I download it. I spent quite some time to figure it out. To avoid this type of issues I would propose the following:

Disable cache by default
Check the integrity of the the sha256 value of the weight file after downloading
Provide an additional argument to allow run bioimageio validate --check-weights <MODEL_RDF>.

Another caveat about the current way of disabling cache is that we need to set the env before importing the bioimageio.core:
import os
os.environ["BIOIMAGEIO_USE_CACHE"] = "no"

# The import should be set after the import
import bioimageio.core

This works by setting env outside the script but not obvious for the users who want to set it inside the script (and also make the script a bit hacky since we cannot place all the imports to the top of the script).

I haven't seen this behaviour before, could you link to a model where that happens? Is this maybe due to some timeouts on the server?

Disable cache by default

That's a pretty big change and will change overall usage pattern quite a bit. In general caching is definitely desirable, otherwise the library will download data over and over again. So I am against disabling caching by default, I think it's the desired way of working in most use-cases.

Check the integrity of the the sha256 value of the weight file after downloading

Provide an additional argument to allow run bioimageio validate --check-weights <MODEL_RDF>.

That's a good point, we should def. use the hash to check that the weights are downloaded correctly.

Another caveat about the current way of disabling cache is that we need to set the env before importing the bioimageio.core:
import os
os.environ["BIOIMAGEIO_USE_CACHE"] = "no"

# The import should be set after the import
import bioimageio.core

Yes, that's how environment variables work and is a general pattern in python. We can add a section in the README about this.


FT add feature flag for 'promql-experimental-functions'.

Is your proposal related to a problem?
I can't use sort_by_label promql experimental function in thanos-query to sort results by a label, e.g. "environment", where the values are like "dev", "qa", "uat".
This is needed to display results in Grafana Stat panel in a logical ordering.
Describe the solution you'd like
I would like to be able to provide a feature flag argument to the thanos docker image which enables promql experimental functions (sort_by_label, sort_by_label_desc, ...).
Describe alternatives you've considered
I can't add my prometheus instance as a separate Grafana Datasource, or an endpoint in thanos-query, because all of my long-term metrics are coming from S3 via thanos-store.
Additional context
Please see Issue #4022 or PR #4786 for an example of adding feature flag support.

How does this work with the new engine? @MichaHoffmann @fpetkovski Does the new engine support those experimental functions

How does this work with the new engine? @MichaHoffmann @fpetkovski Does the new engine support those experimental functions

Not yet but at least those sorting functions should be very easy to add!

I appreciate the speedy response!

We still need to add a feature flag for promql-experimental-functions. Help wanted.


List symbol is < instead of >

Hi André,
thanks for the update on the exporter. Testing it I found that the symbol used to render lists in SCORM-Modules is < instead of > like so:
< This is an item in a list
< And this is another item
which looks odd (at least to me) and has not been so before. Is this a bug or a design decision?
Btw the same goes for liascript-preview.
See also the attached files:
liascript_test_new-exporter-list-symbol.md
liascript_test_new-exporter-list-symbol.zip
Thanks
Andreas

Hi Andreas,
yeah, this is not a bug, it was a design decision, but you are not the one to complain. This list symbol is used everywhere in LiaScript. Maybe it would be a good choice to preserve the semantics for the list-characters.
+ positive
+ ...
- negative
- ....
* neutral
* ...

And preserve these symbols also within the rendered list. Such that the user could decide, if he or she prefers dashes, pluses, or dots ... This would diverge from the Markdown standard, but I think it could be a benefit...
@SebastianZug @amuehli what is your opinion in this case :-)

Hi André,
Thanks for answering so quickly.
I have to admit that I find it tempting to have more control (and being able, as you suggested, to chose the symbol). But from an RDM and OER (and in general interoperability) perspective I would argue that as few alterations from standard (probably github flavored?) markdown as possible would be best and that deviations should only occur by adding something (adhering to markdown logic if possible) - as you did beautifully with combining !image and ?audio to !?video - but not by changing standard md (so that the md-files used for liascript can also be used with a standard md interpreter with little to no changes and unexpected behaviour).
I am not sufficiently versed in md to judge whether the alteration you described would meet with this reasoning but my understanding is that -, + and * are pretty much interchangeable but should not be mixed (at least in the same list) - so it probably could work?
From a purely design perspective I personally prefer the dot as unordered list symbol (which has the additional benefit to allow for two differerent symbols for two levels with full and empty), but also liked the somewhat distinct liascript-look with the ">". But the reversed "<" is still confusing for my eyes. ">" points to the list item, but "<" just seems to point in the wrong direction.
But I certainly do not want to incite a design war just because of my very personal aesthetics and can live with any decision - and btw I assume there are much more pressing things to do and consider so please feel very free to simply ignore my ramblings on this :-)

We switched to the github flavored style for lists... These changes have been committed and will be released with the next update ;-) ...

dot

circle

square

square ...

https://github.com/LiaScript/LiaScript/pull/87/commits/2015bb3da19bb8d6371aef230981470e4d389f0c

Great news, thanks a lot!


Autocomplete list overlaps "Recent" lists and can't be dismissed

Just in case there's interest in a possible solution:
Personally, I'm used to the way Google's seach box works. If the textfield loses focus, the autocomplete list is hidden. Google only shows the autocomplete list again if the user enters another character, but that always annoyed me - I think the list should be shown as soon as the textfield regains focus.

If the textfield loses focus, the autocomplete list is hidden. Google only shows the autocomplete list again if the user enters another character, but that always annoyed me - I think the list should be shown as soon as the textfield regains focus.

Yep, this is the fix 👍 Thank you
(I had noticed this one but it just didn't quite make it in for launch 😬)

Just realised this is already in the backlog. Moving your comment over there and closing this in favour of #218


Adding cleanup for share backup test and impl of polling for delete u…

…ser validation

What this PR does / why we need it:
Which issue(s) this PR fixes (optional)
Closes #
Special notes for your reviewer:

Please fix the compilation failure


JSON Configuration for additional columns not working?

Bug Report / Support Request Template
I m using latest serilog libraries with dotnet 5 project, and adding sinks configuration from json configuration provider. the connection strings and other stuff works fine, but anything related to adding custom column; deleting old columns etc is not taking effect. So even if i add a column manually in db, its not registered with serilog so LogContext.PushProperty does nothing for me.
appsettings code is below

Serilog: 4.1.0
Serilog.Sinks.MSSqlServer: 5.6.0
Serilog.Settings.Configuration 3.2.0

Target framework and operating system:

DotNet 5
OS: Windows 2019
"Serilog": {
    "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.MSSqlServer" ],
    "MinimumLevel": "Warning",
    "WriteTo": [
      { "Name": "Console" },
      {
        "Name": "File",
        "Args": {
          "path": "D:\\Logs\\log.log",
          //"pathFormat": "D:\\Logs\\log-{Date}.log",
          "RollingInterval": "Day",
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] Site {SiteId} {Message}{NewLine}{Exception}",
          "retainedFileTimeLimit": "7.00:00:00"
        }
      },
      {
        "Name": "MSSqlServer",
        "Args": {
          "connectionString": "Data Source=mydbsource;Initial Catalog=database-1;Trusted_Connection=True;MultipleActiveResultSets=true;User ID=sa;Password=xyz;Integrated Security=False",
          "sinkOptionsSection": {
            "tableName": "SystemLogs",
            "schemaName": "EventLogging",
            "autoCreateSqlTable": true,
            "columnOptionsSection": {
              //"removeStandardColumns": [ "Level" ], //remove the Properties column in the standard ones -> not working
              //"additionalColumns" -> also not working
              "customColumns": [
                {
                  "ColumnName": "SiteId", // not working
                  "DataType": "bigint"
                }
              ]
            }
          },
          "restrictedToMinimumLevel": "Debug"
        }
      }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
    "Properties": {
      "Application": "Logging Example 1"
    }
  },

startup.cs file :
public Startup(IConfiguration configuration, IWebHostEnvironment env)
        {
            Configuration = configuration;
            IConfigurationBuilder builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json",optional:false,reloadOnChange:true);
            configRoot = builder.Build();
            Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(configuration).Enrich.FromLogContext().CreateLogger();
            _env = env;
        }

i have done continues testing and confirmed that the problem is with json config, fluent works fine.
awaiting your reply

getting it out of the sinkoptions worked


Doesn't play some sounds

I have loaded 26 sounds but generally only plays the first 14 sounds. Some timesplay 16 first.
const sound = require("nativescript-sound"); const sounds = {    "A": sound.create("~/assets/sounds/A.mp3"),       "B": sound.create("~/assets/sounds/B.mp3"),       "C": sound.create("~/assets/sounds/C.mp3"),       "D": sound.create("~/assets/sounds/D.mp3"),       "E": sound.create("~/assets/sounds/E.mp3"),       "F": sound.create("~/assets/sounds/F.mp3"),       "G": sound.create("~/assets/sounds/G.mp3"),       "H": sound.create("~/assets/sounds/H.mp3"),       "I": sound.create("~/assets/sounds/I.mp3"),       "J": sound.create("~/assets/sounds/J.mp3"),    "K": sound.create("~/assets/sounds/K.mp3"),       "L": sound.create("~/assets/sounds/L.mp3"),       "M": sound.create("~/assets/sounds/M.mp3"),       "N": sound.create("~/assets/sounds/N.mp3"),       "O": sound.create("~/assets/sounds/O.mp3"),       "P": sound.create("~/assets/sounds/P.mp3"),       "Q": sound.create("~/assets/sounds/Q.mp3"),       "R": sound.create("~/assets/sounds/R.mp3"),       "S": sound.create("~/assets/sounds/S.mp3"),       "T": sound.create("~/assets/sounds/T.mp3"),       "U": sound.create("~/assets/sounds/U.mp3"),       "V": sound.create("~/assets/sounds/V.mp3"),       "W": sound.create("~/assets/sounds/W.mp3"),       "X": sound.create("~/assets/sounds/X.mp3"),       "Y": sound.create("~/assets/sounds/Y.mp3"),       "Z": sound.create("~/assets/sounds/Z.mp3")   }  methods:{       sonar:function(letra){               sounds[letra].play();       }, //  End sonar

@sistemasymicro Did you find any solution? In my app this plugin not working (File not found even if mp3 is in the same folder).

Hi, not, i havent found any solución yet.
El mié., 29 de abr. de 2020 9:22 a. m., arystosedes <
<EMAIL_ADDRESS>escribió:

@sistemasymicro https://github.com/sistemasymicro Did you find any
solution? In my app this plugin not working (File not found even if mp3 is
in the same folder).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jbristowe/nativescript-sound/issues/16#issuecomment-621243693,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFCPDXEBVEJA3I4ESFEX3LTRPAZ3VANCNFSM4LRBN6OQ
.

Ok, I fixed my issue. In your example there might be a problem with a buffering. Check this out: https://github.com/jbristowe/nativescript-sound/issues/3#issuecomment-582206757

Thanks
El mié., 29 abr. 2020 a las 10:38, arystosedes<EMAIL_ADDRESS>escribió:

Ok, I fixed my issue. In your example there might be a problem with a
buffering. Check this out: #3 (comment)
https://github.com/jbristowe/nativescript-sound/issues/3#issuecomment-582206757
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jbristowe/nativescript-sound/issues/16#issuecomment-621292423,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFCPDXFZYZB4AU7G4KOSUSLRPBCYHANCNFSM4LRBN6OQ
.


Fix Swift warning for using 'class' instead of 'AnyObject'

Fixes this warning:

Using 'class' keyword for protocol inheritance is deprecated; use 'AnyObject' instead

Can we please merge this!


sink adds cluster name and resource's uid

The sink needs to add the cluster name (db field name: cluster) and the resource's uid (db field name: cluster_uid) to the entry it writes to the database
related to #86

Currently we are talking about this being provided by the user in the configuration, so this should go
into the Chart values. For something long-term we can see what multi-cluster management tools use
for cluster identification.

I have to ask again, why do we need this information?

We agreed on removing cluster_uid and cluster_name, we won't go multi-cluster soon and its better to remove what we don't need.

Reopening so we delete the cluster_uid and cluster_name in another PR.

Closed in favor of #183


chore(types): delete unnecessary @ts-ignore or use @ts-expected-error instead

There are 9 left and I don't understand the meaning of the relevant codes. Since the semantics of @ts-expected-error may not apply to the relevant code, they were not modified.


Training without d_w

Hi, author. Thanks for this shared code.
I have a question on how to implement training without the d_w.

Just comment out the source distance calculation in rerank.py?

Any suggestion is welcome and thanks for your kindly reply.

I got it! Just set the lambda to 0. I should think more before asking.


Update haskell.yml

Since recent changes have been made to Actions for the forked repository to prevent automatic CI execution. So, the pull_request should also be enabled.

Thanks


With a large atlas image, scrolling/panning the image outside of the bottom panel blocks mouse input to the editor

Here's a large atlas image in the bottom panel editor, it's halfway scrolled down so ~400px of the image are "above" the top of the panel.

This seems to cause blocked input to the editor UI such as the apply/snap settings of the dock itself, as well as any of the code/scene editor that it may overlap.
If I open bottom_panel.tscn and change the Inside, TextureRect, and SelectedArea nodes' mouse_filter properties to Ignore, this fixes the problem and doesn't seem to interfere with the plugin's mouse handling.

Thanks for this issue! Now the bottom panel does not obstruct the input.
I also did some other commits to fix the Input in general, since I first didn't know that _gui_input() existed 😐


introduce the hubspot engagement table to adjust the joins in int_hub…

PR Overview
This PR will address the following Issue/Feature: #11  #10 #12
This PR will result in the following new package version:

v0.1.0-a4
Please provide the finalized CHANGELOG entry which details the relevant changes included in this PR:

Breaking Changes

Added the hubspot engagement table to the package and made the following updates:

Added stg_rag_hubspot__engagement model as part of the hubspot staging models.
Updated int_rag_hubspot__deal_document to adjust the method that hubspot_engagement_* models are joined by leveraging the hubspot__engagement table as the intermediary joining table for the engagement_contact and engagement_company tables.
Updated int_rag_hubspot__deal_document to retrieve engagement_type from the hubspot engagement table as opposed to the engagement_emails and engagement_notes tables. As such, removes their respective references as they are no longer used in this model.

Under the Hood

Updated the unique key in rag__unified_document to include chunk_index. Previously, the unique key was a combination of only document_id, platform, and source_relation, which was potentially inaccurate if there were multiple chunks associated with a document.

PR Checklist
Basic Validation
Please acknowledge that you have successfully performed the following commands locally:

[x] dbt run –full-refresh && dbt test
[na] dbt run (if incremental models are present) && dbt test

Before marking this PR as "ready for review" the following have been applied:

[x] The appropriate issue has been linked, tagged, and properly assigned
[x] All necessary documentation and version upgrades have been applied
[x] docs were regenerated (unless this PR does not include any code or yml updates)
[x] BuildKite integration tests are passing
[x] Detailed validation steps have been provided below

Detailed Validation
Please share any and all of your validation steps:

If you had to summarize this PR in an emoji, which would it be?

:dancer:

Thanks @fivetran-avinash ! Addressed comments. Also, I noticed that I didn't update the hubspot seed data with the new category field. Even though it doesn't play a part downstream, I figured to update the seed data and get-columns macro anyways. Additionally, I noticed some missing field descriptions in the rest of the hubspot staging models, so I added those in as well.

Removed the UTC strings and this fixed the Buildkite errors. With @fivetran-reneeli out, I will merge this onto main and cut as a pre-release.


Added new holopin cli badge

Description
Added the new Holopin cli badge.
Issue reference
Please reference the issue this PR will close: #1398
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[ ] Code compiles correctly
[ ] Created/updated tests
[ ] Extended the documentation

@dapr/maintainers-cli can you restart the E2E tests please? Or somehow resolve this issue and merge? This change is only about a yaml for for the Holopin bot to award badges for this repo.

/keep-alive

@dapr/maintainers-cli any chance of re-running the e2e test again to get this PR merged? Or ignore the e2e. The only addition is a github config file.

@holopin-bot @rishabkumar7
You made it Rishab! Thanks for your patience! 😁


Dead paper link in blog post

Here: https://deepmind.com/research/publications/Acme it links to here (at the bottom):
https://github.com/deepmind/acme/blob/master/paper.pdf

Link still not working for me, extra space (%20) at the end of the link.

Yap, can confirm it links wrong: https://arxiv.org/abs/2006.00979

I found a nifty chrome extension that will automatically show you broken links:

Thanks drozzy and guskal01!


Missing media library in admin panel

In localhost when I tested the website in the admin panel I access the media library menu but on the server when I published the website , I could not see the media library in sidebar menu.

Can you post this to the mailing list instead? Thanks

Hi ,
yes I’m sorry

On May 17, 2016, at 8:46 AM, Stephen McDonald<EMAIL_ADDRESS>wrote:
Can you post this to the mailing list instead? Thanks
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub https://github.com/stephenmcd/mezzanine/issues/1601#issuecomment-219615350


RuntimeError: ('Fatal error occurred while running async tasks.', APIConnectionError('Connection error.')) when using answer_correctness with Bedrock LLM

Describe the bug
I am trying to run an answer_correctness evaluation on a simple dataset using AWS Bedrock as the LLM (anthropic's claude v2).
I have succeeded with following the bedrock example for faithfulness, answer_relevancy and context_precision. But answer_correctness is giving me the error:
RuntimeError: ('Fatal error occurred while running async tasks.', APIConnectionError('Connection error.'))
Ragas version: 0.0.21
Python version: 3.10.6
Code to Reproduce
from ragas.metrics import answer_correctness
from ragas.llms import LangchainLLM
from ragas import evaluate

from langchain.chat_models import BedrockChat
import nest_asyncio  # CHECK NOTES
from datasets import Dataset

metrics = [answer_correctness]

config = {
    "region_name": "us-east-1",
    "model_id": "anthropic.claude-v2",
    "model_kwargs": {"temperature": 0},
}

bedrock_model = BedrockChat(
    region_name=config["region_name"],
    model_id=config["model_id"],
    model_kwargs=config["model_kwargs"],
)
# wrapper around bedrock_model
ragas_bedrock_model = LangchainLLM(bedrock_model)

# patch the new RagasLLM instance
answer_correctness.llm = ragas_bedrock_model

# for m in metrics:
#     m.__setattr__("llm", ragas_bedrock_model)

# Sample data
data = {
    "question": ["What is the capital of France?"],
    "contexts": [["Paris is the capital of France.", "France is in Europe"]],
    "answer":         ["Paris"],
    "ground_truths": [["Paris"]]
}

# Create a Dataset
dataset = Dataset.from_dict(data)

# NOTES: Only used when running on a jupyter notebook, otherwise comment or remove this function.
nest_asyncio.apply()

result = evaluate(
    dataset,
    metrics=[answer_correctness],
)

result

Error trace
The trace is big...
TypeError                                 Traceback (most recent call last)
File /opt/conda/lib/python3.10/site-packages/openai/_base_client.py:1307, in AsyncAPIClient._request(self, cast_to, options, stream, stream_cls, remaining_retries)
   1306 try:
-> 1307     response = await self._client.send(request, auth=self.custom_auth, stream=stream)
   1308     log.debug(
   1309         'HTTP Request: %s %s "%i %s"', request.method, request.url, response.status_code, response.reason_phrase
   1310     )

File /opt/conda/lib/python3.10/site-packages/httpx/_client.py:1617, in AsyncClient.send(self, request, stream, auth, follow_redirects)
   1615 auth = self._build_request_auth(request, auth)
-> 1617 response = await self._send_handling_auth(
   1618     request,
   1619     auth=auth,
   1620     follow_redirects=follow_redirects,
   1621     history=[],
   1622 )
   1623 try:

File /opt/conda/lib/python3.10/site-packages/httpx/_client.py:1645, in AsyncClient._send_handling_auth(self, request, auth, follow_redirects, history)
   1644 while True:
-> 1645     response = await self._send_handling_redirects(
   1646         request,
   1647         follow_redirects=follow_redirects,
   1648         history=history,
   1649     )
   1650     try:

File /opt/conda/lib/python3.10/site-packages/httpx/_client.py:1682, in AsyncClient._send_handling_redirects(self, request, follow_redirects, history)
   1680     await hook(request)
-> 1682 response = await self._send_single_request(request)
   1683 try:

File /opt/conda/lib/python3.10/site-packages/httpx/_client.py:1719, in AsyncClient._send_single_request(self, request)
   1718 with request_context(request=request):
-> 1719     response = await transport.handle_async_request(request)
   1721 assert isinstance(response.stream, AsyncByteStream)

File /opt/conda/lib/python3.10/site-packages/httpx/_transports/default.py:366, in AsyncHTTPTransport.handle_async_request(self, request)
    365 with map_httpcore_exceptions():
--> 366     resp = await self._pool.handle_async_request(req)
    368 assert isinstance(resp.stream, typing.AsyncIterable)

File /opt/conda/lib/python3.10/site-packages/httpcore/_async/connection_pool.py:232, in AsyncConnectionPool.handle_async_request(self, request)
    230     deadline = float("inf")
--> 232 async with self._pool_lock:
    233     self._requests.append(status)

File /opt/conda/lib/python3.10/site-packages/httpcore/_synchronization.py:69, in AsyncLock.__aenter__(self)
     68 elif self._backend == "asyncio":
---> 69     await self._anyio_lock.acquire()
     71 return self

File /opt/conda/lib/python3.10/site-packages/anyio/_core/_synchronization.py:119, in Lock.acquire(self)
    118 try:
--> 119     self.acquire_nowait()
    120 except WouldBlock:

File /opt/conda/lib/python3.10/site-packages/anyio/_core/_synchronization.py:150, in Lock.acquire_nowait(self)
    144 """
    145 Acquire the lock, without blocking.
    146
    147 :raises ~WouldBlock: if the operation would block
    148
    149 """
--> 150 task = get_current_task()
    151 if self._owner_task == task:

File /opt/conda/lib/python3.10/site-packages/anyio/_core/_testing.py:59, in get_current_task()
     53 """
     54 Return the current task.
     55
     56 :return: a representation of the current task
     57
     58 """
---> 59 return get_asynclib().get_current_task()

File /opt/conda/lib/python3.10/site-packages/anyio/_backends/_asyncio.py:1850, in get_current_task()
   1849 def get_current_task() -> TaskInfo:
-> 1850     return _create_task_info(current_task())

File /opt/conda/lib/python3.10/site-packages/anyio/_backends/_asyncio.py:1846, in _create_task_info(task)
   1844     parent_id = task_state.parent_id
-> 1846 return TaskInfo(id(task), parent_id, name, get_coro(task))

TypeError: descriptor 'get_coro' for '_asyncio.Task' objects doesn't apply to a 'Task' object

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
File /opt/conda/lib/python3.10/site-packages/openai/_base_client.py:1307, in AsyncAPIClient._request(self, cast_to, options, stream, stream_cls, remaining_retries)
   1306 try:
-> 1307     response = await self._client.send(request, auth=self.custom_auth, stream=stream)
   1308     log.debug(
   1309         'HTTP Request: %s %s "%i %s"', request.method, request.url, response.status_code, response.reason_phrase
   1310     )

File /opt/conda/lib/python3.10/site-packages/httpx/_client.py:1617, in AsyncClient.send(self, request, stream, auth, follow_redirects)
   1615 auth = self._build_request_auth(request, auth)
-> 1617 response = await self._send_handling_auth(
   1618     request,
   1619     auth=auth,
   1620     follow_redirects=follow_redirects,
   1621     history=[],
   1622 )
   1623 try:

File /opt/conda/lib/python3.10/site-packages/httpx/_client.py:1645, in AsyncClient._send_handling_auth(self, request, auth, follow_redirects, history)
   1644 while True:
-> 1645     response = await self._send_handling_redirects(
   1646         request,
   1647         follow_redirects=follow_redirects,
   1648         history=history,
   1649     )
   1650     try:

File /opt/conda/lib/python3.10/site-packages/httpx/_client.py:1682, in AsyncClient._send_handling_redirects(self, request, follow_redirects, history)
   1680     await hook(request)
-> 1682 response = await self._send_single_request(request)
   1683 try:

File /opt/conda/lib/python3.10/site-packages/httpx/_client.py:1719, in AsyncClient._send_single_request(self, request)
   1718 with request_context(request=request):
-> 1719     response = await transport.handle_async_request(request)
   1721 assert isinstance(response.stream, AsyncByteStream)

File /opt/conda/lib/python3.10/site-packages/httpx/_transports/default.py:366, in AsyncHTTPTransport.handle_async_request(self, request)
    365 with map_httpcore_exceptions():
--> 366     resp = await self._pool.handle_async_request(req)
    368 assert isinstance(resp.stream, typing.AsyncIterable)

File /opt/conda/lib/python3.10/site-packages/httpcore/_async/connection_pool.py:232, in AsyncConnectionPool.handle_async_request(self, request)
    230     deadline = float("inf")
--> 232 async with self._pool_lock:
    233     self._requests.append(status)

File /opt/conda/lib/python3.10/site-packages/httpcore/_synchronization.py:69, in AsyncLock.__aenter__(self)
     68 elif self._backend == "asyncio":
---> 69     await self._anyio_lock.acquire()
     71 return self

File /opt/conda/lib/python3.10/site-packages/anyio/_core/_synchronization.py:119, in Lock.acquire(self)
    118 try:
--> 119     self.acquire_nowait()
    120 except WouldBlock:

File /opt/conda/lib/python3.10/site-packages/anyio/_core/_synchronization.py:150, in Lock.acquire_nowait(self)
    144 """
    145 Acquire the lock, without blocking.
    146
    147 :raises ~WouldBlock: if the operation would block
    148
    149 """
--> 150 task = get_current_task()
    151 if self._owner_task == task:

File /opt/conda/lib/python3.10/site-packages/anyio/_core/_testing.py:59, in get_current_task()
     53 """
     54 Return the current task.
     55
     56 :return: a representation of the current task
     57
     58 """
---> 59 return get_asynclib().get_current_task()

File /opt/conda/lib/python3.10/site-packages/anyio/_backends/_asyncio.py:1850, in get_current_task()
   1849 def get_current_task() -> TaskInfo:
-> 1850     return _create_task_info(current_task())

File /opt/conda/lib/python3.10/site-packages/anyio/_backends/_asyncio.py:1846, in _create_task_info(task)
   1844     parent_id = task_state.parent_id
-> 1846 return TaskInfo(id(task), parent_id, name, get_coro(task))

TypeError: descriptor 'get_coro' for '_asyncio.Task' objects doesn't apply to a 'Task' object

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
File /opt/conda/lib/python3.10/site-packages/openai/_base_client.py:1307, in AsyncAPIClient._request(self, cast_to, options, stream, stream_cls, remaining_retries)
   1306 try:
-> 1307     response = await self._client.send(request, auth=self.custom_auth, stream=stream)
   1308     log.debug(
   1309         'HTTP Request: %s %s "%i %s"', request.method, request.url, response.status_code, response.reason_phrase
   1310     )

File /opt/conda/lib/python3.10/site-packages/httpx/_client.py:1617, in AsyncClient.send(self, request, stream, auth, follow_redirects)
   1615 auth = self._build_request_auth(request, auth)
-> 1617 response = await self._send_handling_auth(
   1618     request,
   1619     auth=auth,
   1620     follow_redirects=follow_redirects,
   1621     history=[],
   1622 )
   1623 try:

File /opt/conda/lib/python3.10/site-packages/httpx/_client.py:1645, in AsyncClient._send_handling_auth(self, request, auth, follow_redirects, history)
   1644 while True:
-> 1645     response = await self._send_handling_redirects(
   1646         request,
   1647         follow_redirects=follow_redirects,
   1648         history=history,
   1649     )
   1650     try:

File /opt/conda/lib/python3.10/site-packages/httpx/_client.py:1682, in AsyncClient._send_handling_redirects(self, request, follow_redirects, history)
   1680     await hook(request)
-> 1682 response = await self._send_single_request(request)
   1683 try:

File /opt/conda/lib/python3.10/site-packages/httpx/_client.py:1719, in AsyncClient._send_single_request(self, request)
   1718 with request_context(request=request):
-> 1719     response = await transport.handle_async_request(request)
   1721 assert isinstance(response.stream, AsyncByteStream)

File /opt/conda/lib/python3.10/site-packages/httpx/_transports/default.py:366, in AsyncHTTPTransport.handle_async_request(self, request)
    365 with map_httpcore_exceptions():
--> 366     resp = await self._pool.handle_async_request(req)
    368 assert isinstance(resp.stream, typing.AsyncIterable)

File /opt/conda/lib/python3.10/site-packages/httpcore/_async/connection_pool.py:232, in AsyncConnectionPool.handle_async_request(self, request)
    230     deadline = float("inf")
--> 232 async with self._pool_lock:
    233     self._requests.append(status)

File /opt/conda/lib/python3.10/site-packages/httpcore/_synchronization.py:69, in AsyncLock.__aenter__(self)
     68 elif self._backend == "asyncio":
---> 69     await self._anyio_lock.acquire()
     71 return self

File /opt/conda/lib/python3.10/site-packages/anyio/_core/_synchronization.py:119, in Lock.acquire(self)
    118 try:
--> 119     self.acquire_nowait()
    120 except WouldBlock:

File /opt/conda/lib/python3.10/site-packages/anyio/_core/_synchronization.py:150, in Lock.acquire_nowait(self)
    144 """
    145 Acquire the lock, without blocking.
    146
    147 :raises ~WouldBlock: if the operation would block
    148
    149 """
--> 150 task = get_current_task()
    151 if self._owner_task == task:

File /opt/conda/lib/python3.10/site-packages/anyio/_core/_testing.py:59, in get_current_task()
     53 """
     54 Return the current task.
     55
     56 :return: a representation of the current task
     57
     58 """
---> 59 return get_asynclib().get_current_task()

File /opt/conda/lib/python3.10/site-packages/anyio/_backends/_asyncio.py:1850, in get_current_task()
   1849 def get_current_task() -> TaskInfo:
-> 1850     return _create_task_info(current_task())

File /opt/conda/lib/python3.10/site-packages/anyio/_backends/_asyncio.py:1846, in _create_task_info(task)
   1844     parent_id = task_state.parent_id
-> 1846 return TaskInfo(id(task), parent_id, name, get_coro(task))

TypeError: descriptor 'get_coro' for '_asyncio.Task' objects doesn't apply to a 'Task' object

The above exception was the direct cause of the following exception:

APIConnectionError                        Traceback (most recent call last)
File /opt/conda/lib/python3.10/site-packages/ragas/async_utils.py:42, in run_async_tasks(tasks, show_progress, progress_bar_desc)
     41 try:
---> 42     outputs: List[Any] = loop.run_until_complete(_gather())
     43 except Exception as e:
     44     # run the operation w/o tqdm on hitting a fatal
     45     # may occur in some environments where tqdm.asyncio
     46     # is not supported

File /opt/conda/lib/python3.10/site-packages/nest_asyncio.py:89, in _patch_loop.<locals>.run_until_complete(self, future)
     87     raise RuntimeError(
     88         'Event loop stopped before Future completed.')
---> 89 return f.result()

File /opt/conda/lib/python3.10/asyncio/futures.py:201, in Future.result(self)
    200 if self._exception is not None:
--> 201     raise self._exception.with_traceback(self._exception_tb)
    202 return self._result

File /opt/conda/lib/python3.10/asyncio/tasks.py:234, in Task.__step(***failed resolving arguments***)
    233     else:
--> 234         result = coro.throw(exc)
    235 except StopIteration as exc:

File /opt/conda/lib/python3.10/site-packages/ragas/async_utils.py:39, in run_async_tasks.<locals>._gather()
     38 async def _gather() -> List[Any]:
---> 39     return await asyncio.gather(*tasks_to_execute)

File /opt/conda/lib/python3.10/asyncio/tasks.py:304, in Task.__wakeup(self, future)
    303 try:
--> 304     future.result()
    305 except BaseException as exc:
    306     # This may also be a cancellation.

File /opt/conda/lib/python3.10/asyncio/tasks.py:232, in Task.__step(***failed resolving arguments***)
    229 if exc is None:
    230     # We use the `send` method directly, because coroutines
    231     # don't have `__iter__` and `__next__` methods.
--> 232     result = coro.send(None)
    233 else:

File /opt/conda/lib/python3.10/site-packages/tenacity/_asyncio.py:88, in AsyncRetrying.wraps.<locals>.async_wrapped(*args, **kwargs)
     86 @functools.wraps(fn)
     87 async def async_wrapped(*args: t.Any, **kwargs: t.Any) -> t.Any:
---> 88     return await fn(*args, **kwargs)

File /opt/conda/lib/python3.10/site-packages/tenacity/_asyncio.py:47, in AsyncRetrying.__call__(self, fn, *args, **kwargs)
     46 while True:
---> 47     do = self.iter(retry_state=retry_state)
     48     if isinstance(do, DoAttempt):

File /opt/conda/lib/python3.10/site-packages/tenacity/__init__.py:325, in BaseRetrying.iter(self, retry_state)
    324 if self.reraise:
--> 325     raise retry_exc.reraise()
    326 raise retry_exc from fut.exception()

File /opt/conda/lib/python3.10/site-packages/tenacity/__init__.py:158, in RetryError.reraise(self)
    157 if self.last_attempt.failed:
--> 158     raise self.last_attempt.result()
    159 raise self

File /opt/conda/lib/python3.10/concurrent/futures/_base.py:451, in Future.result(self, timeout)
    450 elif self._state == FINISHED:
--> 451     return self.__get_result()
    453 self._condition.wait(timeout)

File /opt/conda/lib/python3.10/concurrent/futures/_base.py:403, in Future.__get_result(self)
    402 try:
--> 403     raise self._exception
    404 finally:
    405     # Break a reference cycle with the exception in self._exception

File /opt/conda/lib/python3.10/site-packages/tenacity/_asyncio.py:50, in AsyncRetrying.__call__(self, fn, *args, **kwargs)
     49 try:
---> 50     result = await fn(*args, **kwargs)
     51 except BaseException:  # noqa: B902

File /opt/conda/lib/python3.10/site-packages/ragas/llms/openai.py:170, in OpenAIBase.agenerate(self, prompt, n, temperature, callbacks)
    161 @retry_decorator
    162 async def agenerate(
    163     self,
   (...)
    168 ) -> LLMResult:
    169     # TODO: use callbacks for llm generate
--> 170     completion = await self._client.chat.completions.create(
    171         model=self.model,
    172         messages=[convert_message_to_dict(m) for m in prompt.format_messages()],  # type: ignore
    173         temperature=temperature,
    174         n=n,
    175     )
    177     return self.create_llm_result(completion)

File /opt/conda/lib/python3.10/site-packages/openai/resources/chat/completions.py:1199, in AsyncCompletions.create(self, messages, model, frequency_penalty, function_call, functions, logit_bias, max_tokens, n, presence_penalty, response_format, seed, stop, stream, temperature, tool_choice, tools, top_p, user, extra_headers, extra_query, extra_body, timeout)
   1152 @required_args(["messages", "model"], ["messages", "model", "stream"])
   1153 async def create(
   1154     self,
   (...)
   1197     timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
   1198 ) -> ChatCompletion | AsyncStream[ChatCompletionChunk]:
-> 1199     return await self._post(
   1200         "/chat/completions",
   1201         body=maybe_transform(
   1202             {
   1203                 "messages": messages,
   1204                 "model": model,
   1205                 "frequency_penalty": frequency_penalty,
   1206                 "function_call": function_call,
   1207                 "functions": functions,
   1208                 "logit_bias": logit_bias,
   1209                 "max_tokens": max_tokens,
   1210                 "n": n,
   1211                 "presence_penalty": presence_penalty,
   1212                 "response_format": response_format,
   1213                 "seed": seed,
   1214                 "stop": stop,
   1215                 "stream": stream,
   1216                 "temperature": temperature,
   1217                 "tool_choice": tool_choice,
   1218                 "tools": tools,
   1219                 "top_p": top_p,
   1220                 "user": user,
   1221             },
   1222             completion_create_params.CompletionCreateParams,
   1223         ),
   1224         options=make_request_options(
   1225             extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
   1226         ),
   1227         cast_to=ChatCompletion,
   1228         stream=stream or False,
   1229         stream_cls=AsyncStream[ChatCompletionChunk],
   1230     )

File /opt/conda/lib/python3.10/site-packages/openai/_base_client.py:1482, in AsyncAPIClient.post(self, path, cast_to, body, files, options, stream, stream_cls)
   1479 opts = FinalRequestOptions.construct(
   1480     method="post", url=path, json_data=body, files=await async_to_httpx_files(files), **options
   1481 )
-> 1482 return await self.request(cast_to, opts, stream=stream, stream_cls=stream_cls)

File /opt/conda/lib/python3.10/site-packages/openai/_base_client.py:1283, in AsyncAPIClient.request(self, cast_to, options, stream, stream_cls, remaining_retries)
   1274 async def request(
   1275     self,
   1276     cast_to: Type[ResponseT],
   (...)
   1281     remaining_retries: Optional[int] = None,
   1282 ) -> ResponseT | _AsyncStreamT:
-> 1283     return await self._request(
   1284         cast_to=cast_to,
   1285         options=options,
   1286         stream=stream,
   1287         stream_cls=stream_cls,
   1288         remaining_retries=remaining_retries,
   1289     )

File /opt/conda/lib/python3.10/site-packages/openai/_base_client.py:1337, in AsyncAPIClient._request(self, cast_to, options, stream, stream_cls, remaining_retries)
   1336 if retries > 0:
-> 1337     return await self._retry_request(options, cast_to, retries, stream=stream, stream_cls=stream_cls)
   1338 raise APIConnectionError(request=request) from err

File /opt/conda/lib/python3.10/site-packages/openai/_base_client.py:1364, in AsyncAPIClient._retry_request(self, options, cast_to, remaining_retries, response_headers, stream, stream_cls)
   1362 await anyio.sleep(timeout)
-> 1364 return await self._request(
   1365     options=options,
   1366     cast_to=cast_to,
   1367     remaining_retries=remaining,
   1368     stream=stream,
   1369     stream_cls=stream_cls,
   1370 )

File /opt/conda/lib/python3.10/site-packages/openai/_base_client.py:1337, in AsyncAPIClient._request(self, cast_to, options, stream, stream_cls, remaining_retries)
   1336 if retries > 0:
-> 1337     return await self._retry_request(options, cast_to, retries, stream=stream, stream_cls=stream_cls)
   1338 raise APIConnectionError(request=request) from err

File /opt/conda/lib/python3.10/site-packages/openai/_base_client.py:1364, in AsyncAPIClient._retry_request(self, options, cast_to, remaining_retries, response_headers, stream, stream_cls)
   1362 await anyio.sleep(timeout)
-> 1364 return await self._request(
   1365     options=options,
   1366     cast_to=cast_to,
   1367     remaining_retries=remaining,
   1368     stream=stream,
   1369     stream_cls=stream_cls,
   1370 )

File /opt/conda/lib/python3.10/site-packages/openai/_base_client.py:1338, in AsyncAPIClient._request(self, cast_to, options, stream, stream_cls, remaining_retries)
   1337         return await self._retry_request(options, cast_to, retries, stream=stream, stream_cls=stream_cls)
-> 1338     raise APIConnectionError(request=request) from err
   1340 return self._process_response(
   1341     cast_to=cast_to,
   1342     options=options,
   (...)
   1345     stream_cls=stream_cls,
   1346 )

APIConnectionError: Connection error.

During handling of the above exception, another exception occurred:

RuntimeError                              Traceback (most recent call last)
Cell In[58], line 7
      4 # NOTES: Only used when running on a jupyter notebook, otherwise comment or remove this function.
      5 nest_asyncio.apply()
----> 7 result = evaluate(
      8     dataset,
      9     metrics=[answer_correctness],
     10 )
     12 result

File /opt/conda/lib/python3.10/site-packages/ragas/evaluation.py:105, in evaluate(dataset, metrics, column_map)
    103         binary_metrics.append(metric.name)
    104     print(f"evaluating with [{metric.name}]")
--> 105     scores.append(metric.score(dataset).select_columns(metric.name))
    107 # log the evaluation event
    108 metrics_names = [m.name for m in metrics]

File /opt/conda/lib/python3.10/site-packages/ragas/metrics/base.py:76, in Metric.score(self, dataset, callbacks)
     74 with trace_as_chain_group(f"ragas_{self.name}", callback_manager=cm) as group:
     75     for batch in tqdm(self.get_batches(len(dataset))):
---> 76         score = self._score_batch(dataset.select(batch), callbacks=group)
     77         scores.extend(score)
     79 return dataset.add_column(f"{self.name}", scores)

File /opt/conda/lib/python3.10/site-packages/ragas/metrics/_answer_correctness.py:66, in AnswerCorrectness._score_batch(self, dataset, callbacks, callback_group_name)
     63     ds_faithfulness = dataset
     65 ds_faithfulness = ds_faithfulness.rename_columns({"ground_truths": "contexts"})
---> 66 faith_scores = self.faithfulness._score_batch(ds_faithfulness)  # type: ignore
     67 similarity_scores = self.answer_similarity._score_batch(dataset)  # type: ignore
     69 scores_stacked = np.vstack([faith_scores, similarity_scores])

File /opt/conda/lib/python3.10/site-packages/ragas/metrics/_faithfulness.py:88, in Faithfulness._score_batch(self, ds, callbacks, callback_group_name)
     84     human_prompt = LONG_FORM_ANSWER_PROMPT.format(question=q, answer=a)
     85     prompts.append(ChatPromptTemplate.from_messages([human_prompt]))
---> 88 result = self.llm.generate(prompts, callbacks=batch_group)
     89 list_statements: list[list[str]] = []
     90 for output in result.generations:
     91     # use only the first generation for each prompt

File /opt/conda/lib/python3.10/site-packages/ragas/llms/openai.py:153, in OpenAIBase.generate(self, prompts, n, temperature, callbacks)
    146 def generate(
    147     self,
    148     prompts: list[ChatPromptTemplate],
   (...)
    151     callbacks: t.Optional[Callbacks] = None,
    152 ) -> t.Any:  # TODO: LLMResult
--> 153     llm_results = run_async_tasks(
    154         [self.agenerate(p, n, temperature, callbacks) for p in prompts]
    155     )
    157     generations = [r.generations[0] for r in llm_results]
    158     llm_output = _compute_token_usage_langchain(llm_results)

File /opt/conda/lib/python3.10/site-packages/ragas/async_utils.py:47, in run_async_tasks(tasks, show_progress, progress_bar_desc)
     42     outputs: List[Any] = loop.run_until_complete(_gather())
     43 except Exception as e:
     44     # run the operation w/o tqdm on hitting a fatal
     45     # may occur in some environments where tqdm.asyncio
     46     # is not supported
---> 47     raise RuntimeError("Fatal error occurred while running async tasks.", e)
     48 return outputs

RuntimeError: ('Fatal error occurred while running async tasks.', APIConnectionError('Connection error.'))

Expected behavior
I expected the call to succeed.
Additional context
Running in a Jupyter notebook. Other metrics (faithfulness, answer_relevancy, context_precision) work fine.

I was able to pinpoint the error and work around it.
AnswerCorrectness has an answer_similarity attr that must be initialized to use a Bedrock embeddings model.
This is the working code for the example above, so I am closing the ticket.
from ragas.metrics import AnswerCorrectness, AnswerSimilarity
from ragas.llms import LangchainLLM
from ragas import evaluate

from langchain.chat_models import BedrockChat
from langchain.embeddings import BedrockEmbeddings

import nest_asyncio  # CHECK NOTES
from datasets import Dataset

config = {
    "region_name": "us-east-1",
    "model_id": "anthropic.claude-v2",
    "model_kwargs": {"temperature": 0},
}

bedrock_model = BedrockChat(
    region_name=config["region_name"],
    model_id=config["model_id"],
    model_kwargs=config["model_kwargs"],
)
# wrapper around bedrock_model
ragas_bedrock_model = LangchainLLM(bedrock_model)

bedrock_embeddings = BedrockEmbeddings(
    region_name=config["region_name"],
)

# patch the new RagasLLM instance
answer_similarity = AnswerSimilarity(llm=ragas_bedrock_model, embeddings=bedrock_embeddings)
answer_correctness.llm = AnswerCorrectness(llm=ragas_bedrock_model, answer_similarity=answer_similarity)

# Sample data
data = {
    "question": ["What is the capital of France?"],
    "contexts": [["Paris is the capital of France.", "France is in Europe"]],
    "answer":         ["Paris"],
    "ground_truths": [["Paris"]]
}

# Create a Dataset
dataset = Dataset.from_dict(data)

# NOTES: Only used when running on a jupyter notebook, otherwise comment or remove this function.
nest_asyncio.apply()

result = evaluate(
    dataset,
    metrics=[answer_correctness],
)

result

Has the problem been solved？


Allow spaces at prefix start/end

Custom prefixes currently strip any space, tab, newline, or other white-space characters at the beginning and end of their supplied content.
This seems to be a bug, as I would expect the supplied value to persist unmodified.
Example input:
concurrently -p '\u0020{name}\u0020' -n foo,bar 'echo "foo"' 'echo "bar"'

Current output:
foo foo
bar bar

Desired output:
 foo  foo
 bar  bar

Fair 👍 tagged as a bug, should be easy enough for newcomers to take a stab.


[SPIKE] Investigate open source tools for scraping instagram content analytics

What?
Investigate open source scraping tools to help collect various analytics from instagram posts & stories.
Outcome
We have an open source tool that can get the job done for us OR we can start planning on creating such tool.
Also investigate instagram API to see if it is viable to create our own tool.
Notes / References

The marketing team is wondering whether it may be possible to create some sort of scraping tool that would help  collect the number of likes, comments, shares on the posts and stories. We want to be able to use this tool to analyze data and strengthen our marketing approaches.
(Link to message)

While I was not able to find open source tools as of yet, I found some free alternatives online.
While NotJustAnalytics is pretty good, I recommend checking the others too see if they have some features that you are looking for which NotJustAnalytics may not cover.
Current free alternatives:

NotJustAnalytics ~ Most comprehensive so far
Instrack
Toolzu
Inflact ~ Some locked features

As Abdullah mentioned already, there are two possible approaches:

Use an existing (most likely paid) tool (like the ones Musa shared already)
Develop our own

For option 2, there are a couple of ways we can do this:

Use selenium (or puppeteer) to create a bot that can login, retrieve the data we need (e.x. likes, comments, shares), and then store it somewhere (e.x a shared Google Spreadsheet). We can then use Google Apps Script to run our bot periodically.
I skimmed the Instagram Graph API and basic API, which allow retrieval of likes on posts/stories. So we can try making a simple dashboard website for this (we'll need a database to store metrics over time, and webhooks to update statistics).

If the marketing team wants additional features outside of the IG API (like tracking incoming and outgoing dms), we'll have to scrape it or use a private API like https://github.com/subzeroid/instagrapi (never used this one before so not sure how viable it is; possible sus).


create and update business line

Description
Added the non-documented 'beta' adyen api calls for the businessLines

LGTM!


Why vec![] works faster?

Benchmark Codes
fn abs_d(array: &PrimitiveArray<i32>) -> PrimitiveArray<u32> {
    let it = array.values().iter().map(|x| x.abs() as u32);
    unsafe { PrimitiveArray::<u32>::from_trusted_len_values_iter_unchecked(it) }
}

fn abs_v(array: &PrimitiveArray<i32>) -> PrimitiveArray<u32> {
    let mut data = vec![0u32; array.len()];
    array.values().iter().enumerate().for_each(|(i, x)| {
        data[i] = x.abs() as u32;
    });

    PrimitiveArray::<u32>::from_vec(data)
}

fn abs_e(array: &PrimitiveArray<i32>) -> PrimitiveArray<u32> {
    let mut data = Vec::with_capacity(array.len());
    unsafe { data.set_len(array.len()) }
    array.values().iter().enumerate().for_each(|(i, x)| {
        data[i] = x.abs() as u32;
    });

    PrimitiveArray::<u32>::from_vec(data)
}

Results:
Gnuplot not found, using plotters backend
abs_d                   time:   [318.68 us 320.62 us 322.84 us]

abs_v                   time:   [217.97 us 219.60 us 221.25 us]

abs_e                   time:   [318.71 us 321.41 us 324.39 us]

Why did this benchmark?
Let's see this function
https://github.com/jorgecarleitao/arrow2/blob/3c10b1669d0a55d78824d505f02ad86952b193ba/src/compute/cast/binary_to.rs#L51-L59
As you can see the iter is an iterator of  Option<T>, so it'll cause much prediction miss when collecting iter into Array.
I think we can avoid this performance drop by using bit skills.
Example of velox's function:
template <typename T>
VELOX_UDF_BEGIN(ceil)
FOLLY_ALWAYS_INLINE bool call(T& result, const T& a) {
  result = std::ceil(a);
  return true;
}
VELOX_UDF_END();

As you can see this small function returns a bool. So there will no prediction-miss to building another array.
let dest_array = IntArray::new(vec![0; rows] );
let bitmap = Bitmap::new(rows);
dest_array.iter_mut().zip(source_array.iter()).for_each( |a,  b|  {
   bitmap.add(call(a, b));
}  )

I don't really understand? In the benchmark you write you collect with from_trusted_len_values_iter_unchecked. There is no bitmap involved there.

I don't really understand? In the benchmark you write you collect with from_trusted_len_values_iter_unchecked. There is no bitmap involved there.

Yes, the benchmark example ignores  all bitmap, just to show why vec![] works faster than others.
The second example is to improve performance in transforming array.

But why is is vec faster in that first case? Autovectorization?

Asked in https://users.rust-lang.org/t/why-vec-works-faster-than-others/69435

This is indeed unexpected. I think that the thread in users.rust-lang is more fitting, as this is a std-specific issue (with Vec)

According to the discussions in the users group, maybe it's related to a different arch, let's close it.


Fix: Error while creating new post (create article, video, note)

Task description
fix error when creating a new post(video, note, article)

To do

[ ] fix error while creating new post

duplicate https://github.com/ita-social-projects/dokazovi-fe/issues/311


support customizing the default struct tag in

Refer to https://github.com/google/go-querystring/issues/29

Closed as the same reason #25 mentioned.


Add time to read the instructions of a form?

Could have sworn that we had added this, but I can only find that time_to_answer uses how long it takes to write a response.
"The effect of word predictability on reading time is logarithmic" might be useful here, if we want more than basic word-per-minute reading estimates.

It used to be in ratemyPDF (just a straight reading speed multiple of the length of the words) but I removed it. I thought it was a bit cluttered/consuming how it related to time to answer and redundant with the word count.


Differences between canonical api ref and ably-flutter

This document highlights all the differences I had found between canonical api ref, and the Flutter's implementation.
I've segregated issues that are similar to each other into separate sections, so that it's (hopefully) easier to look at. Unfortunately this document is pretty big anyway, sorry about that.
I'd appreciate any input on what to do with those differences, and what the final docstrings for them should look like.
Where I suggest the @nodoc tag I believe the docstrings should just be internal and not visible in the generated output html (which is what this tag does when using the docs generator tool). So it's more of an information for me when I'll be removing the LEGACY DOCSTRING markers from the code. I don't think any input from the team is required in those places.
Improvements suggestions to descriptions in the canonical api ref
Some potential improvements I found in the canonical doc ref. I've been working with 6296da4 commit of the api ref docs, so my apologies if those have been changed in the meantime.

ClientOptions#channelRetryTimeout - wrong enum is being linked in the api ref - ChannelState should be used in a couple of places instead of ConnectionState
Realtime#request - description of the HttpPaginatedResponse return object has the response word duplicated in the canonical api reference doc:

An [HttpPaginatedResponse]{#link HttpPaginatedResponse} response object, returned…

DevicePushDetails#recipient - contains should probably be replaced with consists?

Default values missing in Flutter implementation
In those cases I've removed the bit from canonical docstrings that specifies the default value, for example: The default value is rest.ably.io. for ClientOptions#restHost. Ideally though I imagine those default values should be assigned in the Flutter sdk, so this section might be used as a reference to create an issue (or multiple issues) for that in the ably-flutter repo (if you like that idea).

ClientOptions#restHost - default value not provided in the sdk

ClientOptions#realtimeHost - default value not provided in the sdk

ClientOptions#tlsPort - default value not provided in the sdk

ClientOptions#port - default value not provided in the sdk

ClientOptions#realtimeRequestTimeout - default value of 10s is not specified in the sdk's code

ClientOptions#idempotentRestPublishing - default value not provided in the code

TokenRequest#ttl - default value missing

AuthOptions#authMethod - default value not provided in the code

TokenParameters#ttl - default value missing in the code

Aggregated methods in Flutter sdk
Some methods in Flutter's implementation have aggregated arguments - what I mean is that if there are two methods doing a similar thing in canonical api ref, but they are using different sets of parameters, they are often instead implemented as a single method that takes all those parameters optionally.
I've tried merging the canonical docstrings so that it makes sense in those cases, but I thought I'd point it out. And maybe someone will come up with a way to phrase them better, so any suggestions welcome!

RestChannel#publish - only one method for publishing messages in the code instead of 3 specified in canonical ref. Implements the RSL1a literally, as a single method.

RealtimeChannel#publish - only one method for publishing messages in the code instead of 3 specified in canonical ref. Implements the RTL6i literally, as a single method.

PushDeviceRegistrations#get - only one get method, optionally takes both deviceDetails and deviceId as parameters

Parameters aggregated into a parameter object
In some cases when canonical ref specifies that a method should have a couple of parameters, or a method takes a dictionary/map as a params list, those parameters are instead passed as an "aggregating" Parameter Object. For example: RealtimeHistoryParams instead of passing start, end, direction, limit, untilAttach. So it seems there are no canonical docstrings for those ...Params classes. Any suggestions on how to handle that?

RealtimeChannel#history - params aggregated into a RealtimeHistoryParams object
PushDeviceRegistrations#list - in code the params are not provided as a Json/map parameter, but a DeviceRegistrationParams object containing those properties is used instead.
DevicePushDetails#removeWhere - in code the params are not provided as a Json/map parameter, but a DeviceRegistrationParams object containing those properties is used instead.
PushChannelSubscriptions#list - in code the params are not provided as a Json/map parameter, but a PushChannelSubscriptionParams object containing those properties is used instead.
PushChannelSubscriptions#listChannels - in code the params are not provided as a Json/map parameter, but a PushChannelsParams object containing those properties is used instead.
PushChannelSubscriptions#removeWhere - in code the params are not provided as a Json/map parameter, but a PushChannelSubscriptionParams object containing those properties is used instead.
RestChannel#history - we pass the RestHistoryParams object as a parameter, that contains start, end, direction and limit properties instead.
RealtimeChannel#history - we pass the RealtimeHistoryParams object as a parameter, that contains start, end, direction and limit properties instead.
RestPresence#get - instead of listed params, a helper object RestPresenceParams is used
RestPresence#history - instead of listed params, a helper object RestHistoryParams is used
RealtimePresence#get - instead of listed params, a helper object RealtimePresenceParams is used
RealtimePresence#history - instead of listed params, a helper object RealtimeHistoryParams is used

Constructors/classes/methods etc. present and documented with legacy docstrings in Flutter, but not documented in canonical doc ref
This section highlights places where we have some specific bits of code that are documented by legacy docstrings, but there's no counterpart for them in canonical api ref.
There's a lot of "simple" constructors listed here. They have legacy docstrings attached, but are not documented in canonical.
I imagine a lot of properties here are not in canonical because they are supposed to be library private. However, due to rather simplistic access-modifying capabilities of dart, they are exposed to users. So any input on what I should do in those cases will be welcome.

Realtime#clientOptions - property present in sdk, but not in canonical api ref

Rest#clientOptions - property present in the sdk, but not in canoical api ref

AuthOptions#constructor

AuthOptions#fromKey

typedef for AuthOptions#AuthCallback

ClientOptions#constructor (along with some additional docstrings about default values)

ClientOptions#fromKey - a depracated static factory method

HttpAuthType - This whole enum is dead code, not referenced/called anywhere else, but still has some legacy docstrings

TokenDetails#constructor

TokenParams#constructor

TokenParams#toMap

TokenRequest#constructor

Channels#createChannel

Channels#operator [](String name) => get(name); (not sure what the point of this bit is to be honest)

Channels#class _ChannelIterator - since it's a private class, it should be marked as @nodoc.

class EventEmitter - this whole class is dead code, can probably be removed.

class EventListener - dead code, not referenced/called anywhere. Can probably be removed.

mixin ObjectHash - this mixin is used in a couple of classes: DeltaExtras, MessageExtras, Message, PresenceMessage.

an abstract class CipherParams, implemented by class CipherParamsInternal

Crypto#defaultKeyLengthInBits

Crypto#keyLength256bits

Crypto#keyLength128bits

Crypto#ensureSupportedKeyLength

ErrorInfo#constructor

DeltaExtras#fromMap - a static factory method

MessageData - Used in for example Message#data, instead of being a Data? object.

MessageExtras - Used in for example Message#extras, instead of a JsonObject/map

PresenceMessage#constructor

AblyEventMessage - whole class should can be marked as @nodoc, since it's used for communication between Flutter/iOS and Flutter/Android

AblyMessage - as above

BackgroundIsolateAndroidPlatform - yeah this one especially, @nodoc

class CipherParamsInternal - This whole class is a weird one. Depending on which platform we're running the code on, an androidHandle, or an iOS key will be returned. The #algorithm is available only on iOS, and there's three separate static factory methods #forIOS, #forAndroid and fromCipherParams. No idea how to document this mess so that it fits the canonical docs. Perhaps we should just leave the legacy docstrings here, since Flutter's implementation is so different.

class Codec - whole class should be marked as @nodoc in my opinion - used for communication between Flutter/iOS and Flutter/Android

file Info.dart

PaginatedResult#_pageHandle - private property, should be marked as @nodoc.

PaginatedResult#constructor

PaginatedResult#fromAblyMessage - static factory method

PlatformObject - definitely @nodoc

Platform - @nodoc

PushActivationEventsInternal - @nodoc

PushNotificationEventsInternal - @nodoc

StreamsChannel - @nodoc

Connection#constructor - looks like constructor does some additional stuff, so might be worth keeping this docstring

Connection#on - instead of using an EventEmitter, we're using a stream here.

RealtimeChannel#constructor - constructor does some additional stuff, might be worth keeping the legacy docstring

RealtimeChannel#createPlatformInstance - @nodoc

RealtimeChannel#on - instead of using an EventEmitter, we're using a stream here.

RestChannels#constructor

RestChannels#createChannel - overriden from Channels class.

RealtimeChannels#realtime

RealtimeChannels#constructor

RealtimeClient#options

RealtimeClient#realtimeInstances

RestClient#restInstances

RestChannel#rest

RestChannel#constructor

RestChannel#createPlatformInstance - @nodoc

RestChannels#constructor

RestPresences#constructor

DeviceDetails#constructor

DevicePushDetails#constructor

DevicePushState - this whole enum is undocumented. It's used as a field in DevicePushDetails, however in canonical api ref it's just described as The current state of the push registration., without describing what .Active, .Failing and .Failed are.

ios_notification_settings - @nodoc

LocalDevice#constructor

Notification - @nodoc

PushActivationEvents - @nodoc

PushChannelSubscription#constructor

PushChannel#rest

PushChannel#realtime

PushChannel#constructor

PushNotificationEvents - @nodoc

Push class seems to have quite a a lot of additional iOS/Android related features that are not in canonical...

Push#activationEvents - @nodoc

Push#notificationEvents - @nodoc

Push#rest

Push#realtime

Push#constructor

Push#requestPermission

Push#getNotificationSettings

Push#reset

RemoteMessage - @nodoc

ChannelStateEvent#constructor

ConnectionStateChange#constructor

RealtimeChannelOptions#constructor

RestChannelOptions#constructor

Other differences
Differences that I couldn't categorize.

RealtimeChannel#unsubscribe - no api for unsubscribing, due to how subscriptions are handled in the dart implementation from legacy docstring:

there is no unsubscribe api in flutter like in other Ably client SDK's as subscribe returns a stream which can be cancelled by calling [StreamSubscription.cancel]).

Should we perhaps retain info from the legacy docstring about cancelling subscriptions somewhere?

RealtimePresence#unsubscribe - same as above

RealtimeChannel#detach - not using an EventEmitter at all - we're using a stream property RealtimeChannel#on:

class ChannelOptions - doesn't exist. Instead there are 2 separate classes: RestChannelOptions and RealtimeChannelOptions
I've adapted the canonical docstrings for those two classes instead.

class Crypto - implementation differs quite a lot... Instead of a separate CipherParamOptions class, all it's properties algorithm, key, keyLength and mode are kept in the Crypto class. We're also using some static default values here...

Crypto#getDefaultParams - takes a dynamic type key object as a parameter, that's supposed to be either a String, or Uint8List. Doesn't take CipherParamOptions as a parameter.

Connection#on - a stream used instead of an EventEmitter

class EventEmitter - dead code (not called anywhere else), and only the on stream added. Can probably be removed.

class PushChannelSubscription - factory methods are missing. There's instead a constructor, with a required channel parameter, and optional clientId and deviceId parameters:

  const PushChannelSubscription({
    required this.channel,
    this.clientId,
    this.deviceId,
  });

PresenceMessage#extras - is of a MessageExtras type, instead of a JSON/map

Message#extras - isn't a JSON/Map. Instead it's an object of type MessageExtras

Message#constructor - takes more params than described in canonical api ref

Things not implemented/missing in Flutter
This section shows which classes/methods/enums etc. are documented in the canonical api ref, but are not implemented in the Flutter's code. Nothing to be done with it from the POD's team, but might be useful info about the state of the Flutter's wrapper compared to other sdks.

class ConnectionDetails - missing

class Stats.PushStats - missing

class Stats.PushNotificationCount - missing

class Stats.XchgMessages - missing

class Stats.MessageDirections - missing

class JsonObject - missing

class VCDiffDecoder - missing

class ReferenceExtras - missing

class AuthDetails - missing

class MessageFilterObject - missing entirely

class ChannelProperties - missing entirely

class BatchOperations - missing entirely

class BatchResult - missing entirely

class BatchPublishResponse - missing entirely

class BatchPresenceResponse - missing entirely

class BatchPresence - missing entirely

class BatchSpec - missing entirely

class ChannelDetails - missing

class ChannelStatus - missing

class ChannelOccupancy - missing

class ChannelMetrics - missing

class CipherParamOptions - missing

enum PluginType - missing

Auth#TokenDetails - missing

AuthOptions#token: String? | TokenDetails? | TokenRequest? - missing

Stats#intervalTime - missing

Stats#unit - missing

Stats#push - missing

Stats#xchgProducer - missing

Stats#xchgConsumer - missing

Push#admin - missing

HttpPaginatedResponse#items - missing

RestClient#batch - missing in Flutter sdk

RealtimeClient#clientId - missing in Flutter sdk

ClientOptions#logExceptionReportingUrl - not implemented

ClientOptions#addRequestIds - not implemented

ClientOptions#httpMaxRetryDuration - not implemented

ClientOptions#httpMaxMessageSize - not implemented

ClientOptions#httpMaxFrameSize - not implemented

ClientOptions#plugins - not implemented

ClientOptions#agents - not available

RestChannel#details - missing

Channels#get(String, ChannelOptions) - missing

RealtimeChannel#properties - not implemented

CipherParams#keyLength - missing

CipherParams#modes - missing

RestChannelOptions#modes - missing

RestChannelOptions#cipher?: (CipherParams | CipherParamsOptions) - missing

RealtimePresence#enter - missing extras parameter.

RealtimePresence#enterClient - missing extras parameter

Default values missing in Flutter implementation
I agree, this change should be made in the SDK. I will make an issue.
Aggregated methods in Flutter sdk
These look good to me.
Parameters aggregated into a parameter object
I would use the canonical docstring here as much as possible, with the parameter docs going onto the params type (if there is one).
Constructors/classes/methods etc. present and documented with legacy docstrings in Flutter, but not documented in canonical doc ref
I would mark these as Nodoc or otherwise mark them as internal if appropriate. If they intended to be publicly accessible then a short explanation and/or a link to a relevant type that is documented would be good.

Hey @Peter-Maguire, thanks a bunch for the feedback!
Regarding the Parameters aggregated into a parameter object part - that's what I did. One part that's missing and I'm not sure what to do about is the top class docstring, for example in DeviceRegistrationParams.
There's a legacy docstring there:
/// Params to filter push device registrations.
///
/// see: [PushDeviceRegistrations.list], [PushDeviceRegistrations.removeWhere]
/// https://docs.ably.com/client-lib-development-guide/features/#RSH1b2

I think we should retain some kind of a docstring at the top of the classes like that, but there's nothing in the canonical api ref that I can use for that purpose. So unless you've got some other suggestions, I think I'll edit the legacy docstrings to the bare minimum, so In the above case it will be just /// Params to filter push device registrations.... This way it will be similar to the way we describe for example the TokenParams object in the sdk api reference: Defines the properties of an Ably Token.

Closing since #449 was merged.


Square brackets sometimes missing in SMILES output for undervalent carbons

Undervalent atoms should be shown in SMILES strings within square brackets. Here's some code that sets the hydrogen count on the first atom in three molecules to 0, 1, and 2.
from rdkit import Chem
import rdkit
print(rdkit.__version__)

for hcount in range(3):
    print("hcount is %d"% hcount)
    for smi in ["C", "C1CCCCC1", "c1ccccc1"]:
        mol = Chem.MolFromSmiles(smi)
        atom = mol.GetAtoms()[0]

        # Set hydrogen count on atom
        atom.SetNoImplicit(True)
        atom.SetNumExplicitHs(hcount)
        atom.UpdatePropertyCache() # so that valence is reported correctly
        assert(atom.GetTotalNumHs(False) == hcount)
        print(Chem.MolToSmiles(mol))
    print()

This gives:
2018.09.1
hcount is 0
C
C1CCCCC1
c1ccccc1

hcount is 1
[CH]
[CH]1CCCCC1
c1ccccc1

hcount is 2
[CH2]
C1CCCCC1
c1ccccc1

When hcount is 0, the hydrogen count appears to be ignored completely. When hcount is 1 or 2, it works for methane and cyclohexane but it appears to be ignored in benzene.

I think we probably disagree about what the bugs are, but we can agree that something is not quite right. :-)
With the exception of [CH2]1CCCCC1 and [cH]1ccccc1, every molecule you create here is incorrect and totally nonphysical since you've set the number of Hs without changing either charge or the number of radical electrons.
As an example take the bare C atom with no Hs, no charge, and no radical electrons. What is that? What SMILES should be produced? Certainly not [C], which corresponds to a C atom with 4 radicals.
If you set the molecule up properly, things work:
In [27]: m2 = Chem.MolFromSmiles('C')

In [28]: m2.GetAtomWithIdx(0).SetNoImplicit(True)

In [29]: m2.GetAtomWithIdx(0).SetNumExplicitHs(0)

In [30]: m2.UpdatePropertyCache()

In [33]: Chem.AssignRadicals(m2)

In [34]: Chem.MolToSmiles(m2)
Out[34]: '[C]'

In [35]: m2.GetAtomWithIdx(0).GetNumRadicalElectrons()
Out[35]: 4

There's an argument to be made that the SMILES writer should do a sanity check on output, recognize these completely bogus cases, and raise a warning, but it doesn't seem like high priority.

I didn't know about the radical count. Presumably I can also increment/decrement it with get/setNumRadicalElectrons() also. In any case, this solves the problem I was having. Marking as closed from my point of view.


Circleci

@thedavidmeister @duffybelfield
I'm sure there are better ways of doing a couple of these steps, but this is a working POC: https://circleci.com/gh/holochain/lib3h/9

[x] - resource_class: large?? I just copied this from the holochain-rust config, but seems like we could probably get away with smaller for the time being? - switched to small

@duffybelfield says:

looks good, let's get it working first then we can worry about making it prettier!

I'm gonna go ahead and merge. This is something we'll need to keep iterating on.

@neonphog looks good to me, this is motivating me to nixify the fmt install properly using the approach from wasm bindgen :)


Add tap action when embedded in entities

I'd like to be able to use the
double_tap_action:
  action: ...

And also, tap_action as well as hold_action when the card is embedded (but not only?) in an entities card like so:
type: entities
entities:
  - type: custom:time-picker-card
    entity: input_datetime.shower
    name: Time to shower, kids
    hour_mode: 24
    link_values: true
    layout:
      name: inside
      align_controls: right
      embedded: true
    double_tap_action:
      action: call-service
      service: automation.trigger
      data:
        entity_id: automation.time_to_shower

This to be able to trigger my linked automation on demand.

Version 1.3.0 adds tap actions. Thanks for the suggestion!


Snapshot is not saving screenshots

New Issue Checklist

[ ] Updated fastlane to the latest version
[ ] I read the Contribution Guidelines
[ ] I read docs.fastlane.tools
[ ] I searched for existing GitHub issues

Issue Description
Snapshot is not saving screenshots. I've updated snapshot to 1.25 version and fastlane version is 2.183.1
I'm running my localization test suite, tests passed successfuly but folders with screenshots are empty :(
Running on xcode 12.5 + ios 14.5 simulator

My lane:
desc 'Run localization UI tests'
lane :native_localization_ui_test do |options|

  fastlane_require 'fastlane-plugin-test_center'

  clean_up_and_install_dependencies
  scheme = ENV["UI_TESTS_SCHEME"] || "Acceptance"
  testplan = ENV["UI_TEST_PLAN"]
  workspace = "#{ENV["MAIN_TARGET"]}.xcworkspace"
  derived_data_path = "~/Library/Developer/Xcode/DerivedData"
  cloned_source_packages_path = "~/Library/Caches/SPMCloneCaches"
  devices = ENV["UI_TESTS_DEVICE_TYPE"]
  output_dir = "./fastlane/test_output"
  languages = ENV["UI_TESTS_LANGUAGE"]

  scan(
    workspace: workspace,
    devices: devices,
    scheme: scheme,
    testplan: testplan,
    skip_slack: true,
    derived_data_path: derived_data_path,
    cloned_source_packages_path: cloned_source_packages_path,
    build_for_testing: true
  )

  snapshot(
    workspace: workspace,
    devices: devices,
    scheme: scheme,
    testplan: testplan,
    languages: languages,
    localize_simulator: true,
    output_directory: output_dir,
    clear_previous_screenshots: true,
    output_simulator_logs: true,
    erase_simulator: true,
    result_bundle: true,
    number_of_retries: 0,
    skip_open_summary: true,
    test_without_building: true,
    derived_data_path: derived_data_path,
    cloned_source_packages_path: cloned_source_packages_path
 )

Running not on M1 processor
Everything worked fine like a month ago
screenshots.html is also empty
Command executed

Complete output when running fastlane, including the stack trace and command used

 [REPLACE THIS WITH YOUR INFORMATION]

Environment

 🚫 fastlane environment 🚫
Stack

Key
Value

OS
11.2.3

Ruby
2.5.0

Bundler?
false

Git
git version 2.31.1

Installation Source
~/.rbenv/versions/2.5.0/bin/fastlane

Host
macOS 11.2.3 (20D91)

Ruby Lib Dir
~/.rbenv/versions/2.5.0/lib

OpenSSL Version
OpenSSL 1.1.1j  16 Feb 2021

Is contained
false

Is homebrew
false

Is installed via Fabric.app
false

Xcode Path
/Applications/Xcode-12.5.0.app/Contents/Developer/

Xcode Version
12.5

System Locale

Variable
Value

LANG
en_US.UTF-8
✅

LC_ALL

LANGUAGE

fastlane files:
No Fastfile found
No Appfile found
fastlane gems

Gem
Version
Update-Status

fastlane
2.183.1
🚫 Update available

Loaded fastlane plugins:
No plugins Loaded
Loaded gems

Gem
Version

did_you_mean
1.2.0

rouge
2.0.7

xcpretty
0.3.0

terminal-notifier
2.0.0

unicode-display_width
1.7.0

terminal-table
1.8.0

public_suffix
4.0.6

addressable
2.7.0

multipart-post
2.0.0

word_wrap
1.0.0

tty-screen
0.8.1

tty-cursor
0.7.1

tty-spinner
0.9.3

artifactory
3.0.15

colored
1.2

highline
2.0.3

commander
4.6.0

unf_ext
<IP_ADDRESS>

unf
0.1.4

domain_name
0.5.20190701

http-cookie
1.0.3

faraday-cookie_jar
0.0.7

faraday_middleware
1.0.0

gh_inspector
1.1.3

rubyzip
2.3.0

security
0.1.3

dotenv
2.7.6

bundler
2.2.15

simctl
1.6.8

google-apis-playcustomapp_v1
0.2.0

google-apis-androidpublisher_v3
0.2.0

google-cloud-storage
1.31.0

nanaimo
0.3.0

colored2
3.1.2

claide
1.0.3

CFPropertyList
3.0.3

atomos
0.1.3

xcodeproj
1.19.0

plist
3.6.0

babosa
1.0.4

excon
0.81.0

ruby2_keywords
0.0.4

faraday-net_http_persistent
1.1.0

faraday-net_http
1.0.1

faraday-excon
1.1.0

faraday
1.4.1

fastimage
2.2.3

json
2.5.1

mini_magick
4.11.0

naturally
2.2.1

xcpretty-travis-formatter
1.0.1

jwt
2.2.2

webrick
1.7.0

rexml
3.2.5

httpclient
2.8.3

multi_json
1.15.0

signet
0.15.0

os
1.1.1

memoist
0.16.2

googleauth
0.16.2

mini_mime
1.1.0

retriable
3.1.2

trailblazer-option
0.1.1

declarative
0.0.20

uber
0.1.0

representable
3.1.1

google-apis-core
0.3.0

google-cloud-errors
1.1.0

google-cloud-env
1.5.0

google-cloud-core
1.6.0

google-apis-iamcredentials_v1
0.3.0

google-apis-storage_v1
0.3.0

rake
13.0.3

digest-crc
0.6.3

emoji_regex
3.2.2

aws-eventstream
1.1.1

aws-sigv4
1.2.3

aws-partitions
1.457.0

jmespath
1.4.0

aws-sdk-core
3.114.0

aws-sdk-kms
1.43.0

aws-sdk-s3
1.94.1

date
1.0.0

openssl
2.1.0

ipaddr
1.2.0

fileutils
1.0.2

racc
1.5.2

nokogiri
1.11.3

psych
3.0.2

generated on: 2021-05-20

Well, I deal with the same issue right now. My UI tests are passing and yet I see empty screenshots folder and "x" mark at the fastlane snapshot results.

Ok, after debug session looks like I figured out the problem, I changed the place where we use setupSnapshot function and it works fine for now, don't know why It worked before and start failing after the update but for now, the issue is resolved, I think we can close the issue

Ok, after debug session looks like I figured out the problem, I changed the place where we use setupSnapshot function and it works fine for now, don't know why It worked before and start failing after the update but for now, the issue is resolved, I think we can close the issue

Just curious - were you trying to call setupSnapshot() inside some test-base class?

Ok, after debug session looks like I figured out the problem, I changed the place where we use setupSnapshot function and it works fine for now, don't know why It worked before and start failing after the update but for now, the issue is resolved, I think we can close the issue

Just curious - were you trying to call setupSnapshot() inside some test-base class?

I have the main base test class with launchApp func where I set a lot of arguments and environment variables, so my base localization class inherit base test class and I override launchApp func, so somewhere in this chain something goes wrong, but a month ago everything worked fine  🤷♂

I have almost the same setup. At the end of the day I figured out to create another scheme, for example "Screenshots". Add new UI test target and attach it to this scheme only. Simple "tests", no assertion - just automation that walk through entire app and grab screenshots.
I don't want my screenshots be taking forever because of actual testing. It became way efficient to me to go this way with separate scheme. I can also create some "manual" jobs on CI of choice to just take screenshots using this new scheme only. Saving some billable build time 😊

I have almost the same setup. At the end of the day I figured out to create another scheme, for example "Screenshots". Add new UI test target and attach it to this scheme only. Simple "tests", no assertion - just automation that walk through entire app and grab screenshots.
I don't want my screenshots be taking forever because of actual testing. It became way efficient to me to go this way with separate scheme. I can also create some "manual" jobs on CI of choice to just take screenshots using this new scheme only. Saving some billable build time 😊

Separate localization test plan in one scheme doesn't work?
We have separate localization jobs to take and save screenshots, and all asserts for different localizations are in regression suite

Separate localization test plan in one scheme doesn't work?
We have separate localization jobs to take and save screenshots, and all asserts for different localizations are in regression suite

Oh, didn't understand that by reading for the first time 🙂 Actually I never used test plans. Your setup sounds like a better way then to handle screenshots. Any tips where to start if I may ask?

Separate localization test plan in one scheme doesn't work?
We have separate localization jobs to take and save screenshots, and all assert for different localizations are in the regression suite

Oh, didn't understand that by reading for the first time 🙂 Actually I never used test plans. Your setup sounds like a better way than to handle screenshots. Any tips on where to start if I may ask?

Emm If you have specific questions you can ask)) In a short way we have 1 scheme, in this scheme we have ~10 test plans with different tests set for ex. for Push test plan we run only pushUITests, for the Analytics test plan we run only analyticsUITests and so on.. Also, each test plan can contain different environment variables like a localization test plan to run snapshot.
If concentrate on localization, we just pass the scheme + needed test plan through FastLane this test plan located in CI job environment variables, localization tests run through the app and take screenshots on each screen, sometimes we can trigger needed screen with fast buttons (when tap on fastbutton it's just an Action to show needed screen) after that when we have all screenshots on all locales we use CI plugin to take generated html and add it to CI build, so everyone can open a link and see full Html with all screenshots, pretty easy approach


The ACL recursive sample link in this page SAS token is expired.

[Enter feedback here]

The ACL recursive sample link in this page SAS token is expired. Fail to download.
https://recursiveaclpr.blob.core.windows.net/privatedrop/samplePS.ps1?sv=2019-02-02&st=2020-08-24T17%3A04%3A44Z&se=2021-08-25T17%3A04%3A00Z&sr=b&sp=r&sig=dNNKS%2BZcp%2F1gl6yOx6QLZ6OpmXkN88ZjBeBtym1Mejo%3D

AuthenticationFailed
Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. RequestId:2506a4e4-e01e-0000-3c5b-a4e875000000 Time:2021-09-08T02:44:55.0546278Z
Signature not valid in the specified time frame: Start [Mon, 24 Aug 2020 17:04:44 GMT] - Expiry [Wed, 25 Aug 2021 17:04:00 GMT] - Current [Wed, 08 Sep 2021 02:44:55 GMT]

---
#### Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 5c25e11c-f029-5702-5c75-f5ca6ca0bd70
Version Independent ID: 41ac1708-32ae-c4f3-b720-c9c62e0ee98f
Content: Use PowerShell to manage ACLs in Azure Data Lake Storage Gen2
Content Source: articles/storage/blobs/data-lake-storage-acl-powershell.md
Service: storage
Sub-service: data-lake-storage-gen2
GitHub Login: @normesta
Microsoft Alias: normesta

@shi-ding Thank you for sharing your query! We are currently investigating and will get back to you shortly on this.

Thanks for reporting this. I have assigned the issue to the content author to investigate further and update the document as appropriate.

Thank you for reporting. I've removed the broken link. Fix will appear in the docs by tomorrow AM. Thx again!
#please-close