CI Rehash

This is a continuation of #3135. It is moved to google-cloud-python:ci (from my personal branch) because system tests do not run from personal branches.

This is an attempt to fix the CI situation on this repository. In particular, this will hit the following goals:

~Move to parallel builds on a per-API basis.~ Superceded by not running unnecessary APIs.
Move system tests into the individual API packages.
Eliminate Travis, move CircleCI to 2.0

In doing this, I made several changes:

Move from tox to nox (Python-based configuration is really useful for the multi-project situation)
Move from pylint to flake8 (pylint does not work on Python 3.6, has multiple difficult-to-silence false positives)

This is not done. In particular, several things need to be put back into place:

[x] Automatic docs build.

Note to self: Move docs into individual packages (not part of this PR).

[x] Automatic PyPI releasing on appropriate tags.
[x] Only testing APIs that have changed files.

@lukesneeringer I tagged this one "do not merge" because you are still iterating rapidly.

This should be almost ready. Because this commit moves literally everything, it triggers all the system tests now, so they need to pass before it is.
Once it is ready, I will rebase into a smaller number of commits so it is reviewable on a per-commit basis. Once approved, we will still squash. The rebase will be for review's sake.

 Is it that the test (or backend) is flaky, or is there something else I should be investigating?
No need to do a ton of research; this is mostly a lazy if-you-know-off-the-top-of-your-head thing.

@lukesneeringer I'm not seeing the error detail show up on Circle CI today:  just spinning arrows.

            Retrying is done through an exponential backoff algorithm configured
            by the options in ``retry``.
            """
        delay = retry_options.backoff_settings.initial_retry_delay_millis
        exc = errors.RetryError('Retry total timeout exceeded before any'
                                'response was received')
        if has_timeout_settings:
            timeout = (
                retry_options.backoff_settings.initial_rpc_timeout_millis /
                _MILLIS_PER_SECOND)

            now = time.time()
            deadline = now + total_timeout
        else:
            timeout = None
            deadline = None

        while deadline is None or now < deadline:
            try:
                to_call = add_timeout_arg(a_func, timeout, **kwargs)
                return to_call(*args)
            except Exception as exception:  # pylint: disable=broad-except
                code = config.exc_to_code(exception)
                if code not in retry_options.retry_codes:
                    raise errors.RetryError(
                        'Exception occurred in retry method that was not'
                        ' classified as transient', exception)

                # pylint: disable=redefined-variable-type
                exc = errors.RetryError(
                    'Retry total timeout exceeded with exception', exception)

                # Sleep a random number which will, on average, equal the
                # expected delay.
                to_sleep = random.uniform(0, delay * 2)
                time.sleep(to_sleep / _MILLIS_PER_SECOND)
                delay = min(delay * delay_mult, max_delay_millis)

                if has_timeout_settings:
                    now = time.time()
                    timeout = min(
                        timeout * timeout_mult, max_timeout, deadline - now)

>       raise exc
E       google.gax.errors.RetryError: GaxError(Retry total timeout exceeded with exception, caused by Deadline Exceeded)

../.nox/system_tests-python_version-3-6/lib/python3.6/site-packages/google/gax/retry.py:143: RetryError
1 failed, 14 passed in 99.72 seconds

I now have CircleCI's build passing...sometimes. We have some system tests that are still flaky and we need to weed out. That said, this is probably close to ready, and still an improvement over where we were.
I will rebase tomorrow so that the PR is parse-able and reviewable.

Also, the total serial test run-time is down to 40 minutes.

I am still iterating on AppVeyor, but this is ready for review/discussion other than that. Since this is a big PR, it is probably helpful to look at the notes on the top and explore the code, rather than the changelist. The changes are consistent throughout.

Unit tests run on Python 2.7, 3.4, 3.5, and 3.6.
System tests are moved into their individual packages and run on Python 2.7 and 3.6.
Coverage is collected at the end.
It should ostensibly only run tests for packages that change, but this is only mildly tested. It can be changed later if we find issues.
Common test code is moved into test_utils, a package installed at test time by the other packages.
The docs and release processes are moved wholesale, but the files are moved. Docs will be shifted into separate packages in a future PR.

@jonparrott Any thoughts on this Appveyor failure? It seems to be that Windows does not handle importing nox in a file named nox.py all that well.
If you have an idea, I can go with that. Otherwise, I suppose I could rename them all noxfile.py?
This is the last thing I need to do pre-merge.

It seems to be that Windows does not handle importing nox in a file named nox.py all that well.

Hmm, it should be able to. Nox was tested on windows up until very recently. You can change them all to noxfile.py until we can find the cause. (File a bug on nox?)

It is easy enough to test and see if that is the cause. Changing bigquery only (the top one on the list) to see what happens.

Random thought as I just restarted the build over a speech LRO that timed out: Maybe for system tests, it might actually be sufficient to require that the LRO be initialized, rather than complete. At the point that you get a LRO, you know you made a valid request (and furthermore the ML nature of these APIs means that the response is not completely deterministic anyway).

@lukesneeringer the only thing with that, is that I would like to make sure that all the DTO's populate from the data that's returned in the response. If it doesn't then it kind of defeats the purpose of the system tests because you wouldn't know if this library works with that service's responses, just that this library works with LRO. Right?

@lukesneeringer the only thing with that, is that I would like to make sure that all the DTO's populate from the data that's returned in the response. If it doesn't then it kind of defeats the purpose of the system tests because you wouldn't know if this library works with that service's responses, just that this library works with LRO. Right?

How long do LROs stick around? Could we take an existing LRO and test it over and over?

@lukesneeringer ah interesting. We could save the result and then reuse it. But I don't think it sticks around long upstream after it's done and you get the result. I'm not sure off hand though.

It is not an urgent issue right now and I do not think it blocks merge on this PR. It is just something we need to think about as we try to eliminate flaky tests.

Caught a new system test bug on merge; filed https://github.com/GoogleCloudPlatform/google-cloud-python/issues/3193

The previous build passed on AppVeyor; this one should pass now that #3193 is fixed. Assuming both pass without incident, will squash and merge.

I finally have a green build. Squashing and merging.

@lukesneeringer Why the merge without review?

It has already gone through a non-trivial amount of review, by everyone here. The only "unreviewed" work was the AppVeyor thrashing.

It looks like CONTRIBUTING.rst still talks about running tox.  Possibly other documentation does too.  Can you fix it to show how to run tests in the new world?  I can't figure out how to even install nox, much less run it.

Ah, I see, this is still open in #3205


Span format is not well suited for ES

Jaeger spans, when put in elasticsearch, have the following structure:
{
  "_index": "jaeger-span-2018-07-02",
  "_type": "span",
  "_id": "a3RsXWQBjGb8h888uVuL",
  "_version": 1,
  "_score": null,
  "_source": {
    "traceID": "f229796cda43df60",
    "spanID": "274c0d9d4fc76848",
    "parentSpanID": "f229796cda43df60",
    "flags": 1,
    "operationName": "/",
    "references": [
      {
        "refType": "CHILD_OF",
        "traceID": "f229796cda43df60",
        "spanID": "f229796cda43df60"
      }
    ],
    "startTime":<PHONE_NUMBER>255726,
    "duration": 1798,
    "tags": [
      {
        "key": "component",
        "type": "string",
        "value": "nginx"
      },
      {
        "key": "nginx.worker_pid",
        "type": "string",
        "value": "10767"
      },
      {
        "key": "peer.address",
        "type": "string",
        "value": "<IP_ADDRESS>:37542"
      },
      {
        "key": "http.method",
        "type": "string",
        "value": "POST"
      },
      {
        "key": "http.url",
        "type": "string",
        "value": "YYY"
      },
      {
        "key": "http.host",
        "type": "string",
        "value": "XXX"
      },
      {
        "key": "http.status_code",
        "type": "int64",
        "value": "204"
      },
      {
        "key": "http.status_line",
        "type": "string",
        "value": "204 No Content"
      }
    ],
    "logs": [],
    "processID": "",
    "process": {
      "serviceName": "ingress-controller",
      "tags": [
        {
          "key": "jaeger.version",
          "type": "string",
          "value": "C++-0.2.0"
        },
        {
          "key": "hostname",
          "type": "string",
          "value": "vega"
        },
        {
          "key": "ip",
          "type": "string",
          "value": "<IP_ADDRESS>"
        }
      ]
    },
    "warnings": null,
    "startTimeMillis":<PHONE_NUMBER>255
  },
  "fields": {
    "startTimeMillis": [
      "2018-07-02T23:56:03.255Z"
    ]
  },
  "sort": [
<PHONE_NUMBER>255
  ]
}

Notice the arrays here. The problem is that we were actually thinking about completely replacing debug logs with debug traces, but because everything is in arrays we can't index these spans in ES and thus cant really reliably search them. Jaeger is nice, but ES has much richer search capabilities and it would be just great if we could treat spans as regular structured documents we can put in ES and index properly.
Is there any plans to support this use case?

(a) as far as I know, we already index everything in the spans in ES, despite having arrays
(b) what alternative format do you propose?

How interesting. When I create the "indexed pattern" from the spans in kibana it indeed picks up all the fileds in arrays. However, I can't search in Kibana by tag, for example. Is there any specific ES/Kibana configuration I need to apply? Didn't see anything in the docs.

Maybe having two maps, tags and tagTypes:
    "tags": {
        "component": "nginx",
        "nginx.worker_pid": "10767",
        "peer.address": "<IP_ADDRESS>:37542",
        "http.method": "POST",
        ......
     },
     "tagTypes": {
        "component": "string",
        "nginx.worker_pid": "string",
        "peer.address": "string",
        "http.method": "string",
        ......
     }

I'm not sure discussing the actual format is appropriate at this stage, given the "Jaeger indexes everything" response. @yurishkuro do you have any pointers how I might configure Kibana to be able to search spans by tags/logs/etc?

I am not an expect in Kibana. You can look at the code for ES span storage to see how it executes queries.
https://github.com/jaegertracing/jaeger/blob/master/plugin/storage/es/spanstore/reader.go

@yurishkuro Kibana is just a nice UI to render logs, it doesn't do anything interesting.
The issue is that [https://www.elastic.co/guide/en/kibana/current/nested-objects.html](Kibana cannot search on nested objects), so this is not necessarily Jaeger's problem. However, from the product perspective, this issue definitely makes Jaeger not being able to completely replace debug logs, which it clearly should be able to, as traces basically ARE logs with some additional metadata for the tree structure. So this implementation detail does mess up a very reasonable scenario which can exactly halve the storage needed for storing debug logs. I say it's definitely worth implementing.

I am still not clear what your proposal is that is "worth implementing". Traces are not regular logs, they are more structured. You can forward logs into the current span, which creates nested, one to many structure. You can use Jaeger UI to view those logs in the context of the span that they belong to, arguably a lot more useful experience than looking at a flat dump of logs across all requests.

I propose a flag to enable a different ES schema that will have plain objects instead of arrays. One such proposal was presented above, but one possible alternative would be
{
    "tags": {
        "component": {
                "type": "string",
                "value": "nginx",
        },
        ......
     },
}

Basically, with the tag name in the key. Same with process.tags and logs.

afaik this creates problems when tags have dots in them, which a lot of standard OT tags do, because ES treats dots as hierarchy.
Also, how does this solve the problem with logs? The logs are still an array within the span.

The logs would be stored in exactly the same way, with something unique as a key. Possibly the timestamp, but I haven't put much thought in it yet.
The dots can be converted to something else like _ for storage, can't they?.

You can use Jaeger UI to view those logs in the context of the span that they belong to, arguably a lot more useful experience than looking at a flat dump of logs across all requests.

Yes, Jaeger UI is a better tool for looking at individual spans. But a native ES log search UI (Kibana as the most popular one) is MUCH better at searching for logs with complicated search requests that might, for example, contain regexes on log messages or whatnot. Kibana can also nicely visualize logs and you can build neat dashboards with graphs and such like. Jaeger UI is not there yet and making storage format Kibana-compatible it does make sense to me.

The logs would be stored in exactly the same way, with something unique as a key. Possibly the timestamp, but I haven't put much thought in it yet.

That means you would need to always use a wildcard search expressions to skip that unique key?

The dots can be converted to something else like _ for storage, can't they?

Similarly, how would the user define search expressions? In Jaeger UI the tags will be "span.kind", but in ES it would be "span_kind", and the user would need to know that somehow.
BTW, I think Zipkin's ES implementation does something like what you're describing, but I haven't looked in detail how they deal with these issues.

Similarly, how would the user define search expressions? In Jaeger UI the tags will be "span.kind", but in ES it would be "span_kind", and the user would need to know that somehow.

It's certainly better than not being able to search at all, if you're not a programmer using curl and building search requests manually :)
In any case, I'm certainly not suggesting that this is something that must be done, I just think that this is a very useful feature that can solve a real problem of having to store logs twice: in spans for Jaeger and raw logs for searching and dashboarding AND having a separate infra for collecting those raw logs (though one probably would have it already, so this is not a major point).
Just something to consider.

In my implementation just simple concat.
params._source['tags'].stream().map(item->item['key']).collect(Collectors.joining())

I also had this issue with kibana. Additionally switching from nested documents to flat schema should help with query performance.
Anyway, the main constraint is the limit of fields in ES - index.mapping.total_fields.limit defaults to 1000 and can be increased, but I think I've read somewhere that 10k is too much.
My idea would be to create structure like this:
"tags": {
   "component_string": "nginx",
   "nginx_worker_pid_long": 10767,
   "peer_address_string": "<IP_ADDRESS>:37542",
   "http_method_string": "POST",
   ...
}
...
"other_fields": [
   "randomtag=1234",
   "otherrandomtag=ajhsdj"
]

there is no need to index field type, it's sufficient to put it into the field name.
"other_fields" allow to store arbitrary number of key-values and allow querying similar to what is available in Cassandra:

equals: use ES terms query on other_field and string otherrandomtag=ajhsdj
prefix search: use ES prefix query on other_field and string otherrandomtag=aj

this allows to use long ES type for tags with long values and boolean ES type for tags with boolean values - leading to appropriate and smaller indices.

The keys in tags would be supported nicely in Kibana, while the remaining ones in other_fields would still be query-able if needed.

Will ES blow up if the same tag name in different spans is set to different vale type?  E.g.
"tags": {
   "error": "true"
}

"tags": {
   "error": true
}

Will ES blow up if the same tag name in different spans is set to different value type? E.g.

It should be defined either as string or boolean in the mapping. The value with incorrect type will either be rejected or coerced, depending on the settings.

I like @mabn idea https://github.com/jaegertracing/jaeger/issues/906#issuecomment-403040934 but:

kibana users have to supply the type suffix
there is still problem with dost in tag keys

Here is an example of zipkin index and data
{
        "_index" : "zipkin:span-2018-07-24",
        "_type" : "span",
        "_id" : "AWTMwYfRE_JqQdsPFSM5",
        "_score" : 1.0,
        "_source" : {
          "traceId" : "81d7ee7cd45c831a",
          "duration" : 361483,
          "remoteEndpoint" : {
            "ipv4" : "<IP_ADDRESS>",
            "port" : 55230
          },
          "shared" : true,
          "localEndpoint" : {
            "serviceName" : "testsleuthzipkin",
            "ipv4" : "<IP_ADDRESS>"
          },
          "timestamp_millis" :<PHONE_NUMBER>469,
          "kind" : "SERVER",
          "name" : "get",
          "id" : "3b96174448804d8a",
          "parentId" : "81d7ee7cd45c831a",
          "timestamp" :<PHONE_NUMBER>469579,
          "tags" : {
            "http.method" : "GET",
            "http.path" : "/hi2",
            "mvc.controller.class" : "SampleController",
            "mvc.controller.method" : "hi2",
            "random-sleep-millis" : "353"
          }
        }
}

{
  "zipkin:span-2018-07-24" : {
    "aliases" : { },
    "mappings" : {
      "span" : {
        "_source" : {
          "excludes" : [
            "_q"
          ]
        },
        "dynamic_templates" : [
          {
            "strings" : {
              "match" : "*",
              "match_mapping_type" : "string",
              "mapping" : {
                "ignore_above" : 256,
                "norms" : false,
                "type" : "keyword"
              }
            }
          }
        ],
        "properties" : {
          "_q" : {
            "type" : "keyword"
          },
          "annotations" : {
            "type" : "object",
            "enabled" : false
          },
          "duration" : {
            "type" : "long"
          },
          "id" : {
            "type" : "keyword",
            "ignore_above" : 256
          },
          "kind" : {
            "type" : "keyword",
            "ignore_above" : 256
          },
          "localEndpoint" : {
            "dynamic" : "false",
            "properties" : {
              "serviceName" : {
                "type" : "keyword"
              }
            }
          },
          "name" : {
            "type" : "keyword"
          },
          "parentId" : {
            "type" : "keyword",
            "ignore_above" : 256
          },
          "remoteEndpoint" : {
            "dynamic" : "false",
            "properties" : {
              "serviceName" : {
                "type" : "keyword"
              }
            }
          },
          "shared" : {
            "type" : "boolean"
          },
          "tags" : {
            "type" : "object",
            "enabled" : false
          },
          "timestamp" : {
            "type" : "long"
          },
          "timestamp_millis" : {
            "type" : "date",
            "format" : "epoch_millis"
          },
          "traceId" : {
            "type" : "keyword"
          }
        }
      },
      "_default_" : {
        "dynamic_templates" : [
          {
            "strings" : {
              "match" : "*",
              "match_mapping_type" : "string",
              "mapping" : {
                "ignore_above" : 256,
                "norms" : false,
                "type" : "keyword"
              }
            }
          }
        ]
      }
    },
    "settings" : {
      "index" : {
        "number_of_shards" : "5",
        "provided_name" : "zipkin:span-2018-07-24",
        "mapper" : {
          "dynamic" : "false"
        },
        "creation_date" : "1532440048888",
        "requests" : {
          "cache" : {
            "enable" : "true"
          }
        },
        "analysis" : {
          "filter" : {
            "traceId_filter" : {
              "type" : "pattern_capture",
              "preserve_original" : "true",
              "patterns" : [
                "([0-9a-f]{1,16})$"
              ]
            }
          },
          "analyzer" : {
            "traceId_analyzer" : {
              "filter" : "traceId_filter",
              "type" : "custom",
              "tokenizer" : "keyword"
            }
          }
        },
        "number_of_replicas" : "1",
        "uuid" : "aOhYlv9lTCCAtMqwhDKWvQ",
        "version" : {
          "created" : "5061099"
        }
      }
    }
  }
}

I have been digging into Zipkin impl. From the above output we can see that tags are modeled as object but indexing is disabled (enabled: false). The query works on _q field:

https://github.com/openzipkin/zipkin/tree/master/zipkin-storage/elasticsearch#query-indexing
https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/elasticsearch/src/main/java/zipkin2/elasticsearch/ElasticsearchSpanConsumer.java#L113
https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/elasticsearch/src/main/java/zipkin2/elasticsearch/VersionSpecificTemplates.java#L125

The search in Kibana does not work either. It only allows to choose specific field e.g. tags.http.path. Whereas when Jaeger index is used it's possible to select the whole tags.

I have also tried https://github.com/ppadovani/KibanaNestedSupportPlugin. For more details see https://github.com/pavolloffay/jaeger-kibana. The issue is that is defines it's own query language. But the search worked.
I think we cannot change . to _. There are standard tags cotaining _ e.g. http.status_code https://github.com/opentracing/specification/blob/master/semantic_conventions.yaml#L17. We could only use suffix (_string) to infer the type.

Maybe we could use array datatpe https://www.elastic.co/guide/en/elasticsearch/reference/current/array.html to store all tags in
["http.url=/foo", "error=true"] The type could be as a suffix added to key or have a second array containing the types.

I don't think the array approach is a good idea, as it would affect any processing (e.g. aggregations) of values in ES.
As far as I can tell, the only issue with the ideas mentioned by @Monnoroch and @mabn is the dots in the key. This can simply be resolved by selecting a different character that isn't used by OT standard tags, e.g. colon.
My preference would be @Monnoroch's approach, as it avoids the type suffix.

@objectiser the second issue is the data types that need to be consistent for all spans. However, this is a good practice anyway, so this limitation is not necessarily critical. One can still store heterogeneous data in payload, it's just that it won't be indexed very well.

Just a documentation:

Will ES blow up if the same tag name in different spans is set to different value type? E.g.

For mapping: "tags":{"type":"object"}  it does blow up if the
"tags":{
	"a": "true",
	"a": true
    },

is present in the first span. ES returns
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"mapper [tags.a] of different type, current_type [text], merged_type [boolean]"}],"type":"illegal_argument_exception","reason":"mapper [tags.a] of different type, current_type [text], merged_type [boolean]"},"status":400}%
However it passes on the second span. The type of the property is set based on the value from the first field in the first span. E.g. first span contains a: "true" then the type is set to text.

hi All,
I have submitted https://github.com/jaegertracing/jaeger/pull/980
tags: {
  "http:method": "GET",
}

Performance test with 300k spans and query
http://localhost:16686/api/traces?service=perf-test-thread-0&limit=50000&lookback=1h&tags={"fooo.bar*?%http.d6cconald":"hehuhoh$?ij","fooo.ba2sar":"true","fooo.ba4342r":"1","fooo.bar1":"fobarhax*+??","fooo.bar*?%http.do**2nald":"goobarRAXbaz","fooo.bar*?%http.don(a44ld":"goobarRAXbaz","fooo.ba24r*?%":"hehe"}. More results can be found in linked PRs.
limit 50000: mean 13363.90 milliseconds
limit 1500: mean = 441.96 milliseconds
limit 20: mean = 17.88 milliseconds.
Report time with multiple queries
191265.00 milliseconds 3.18 min
and https://github.com/jaegertracing/jaeger/pull/982
tags: {
  "http:method": {
     "value": "GET",
     "type": "string"
  }
}

limit 50000: mean = 13533.82 milliseconds
limit 1500: mean = 681.32 milliseconds
limit 20: mean = 41.09 milliseconds
Report time with multiple queries
260223.00 milliseconds = 4.3 min
Results for master, tags as nested datatype:
tags: {
  {},{},{}
 }

limit 50000: mean = 12683.73 milliseconds
limit 1500: mean = 405.27 milliseconds
limit 20: mean = 26.40 milliseconds
Report time:
206348.00 milliseconds = 3.4 min
The biggest limitation when using tag key as object key is index.mapping.total_fields.limit. With the default index setting I was able to store 180 #980 or 480  #982 unigue tags. Maybe it could be increased by overriding default mapping and disabling .raw field.
Given this limitation I would like to use a combined mapping. OT standard tags (or configured) would be stored as object datatype to enable query in kibana. Is there a consensus to move with this direction?

@Monnoroch  @mabn @kacper-jackiewicz @yurishkuro could you please have a look at ^^^ I would like to get it done quickly.

Most important piece of my proposal is that only *specified tags would be stored as direct object. Other tags would still be stored as nested object like it is right now.
standard OpenTracing tags https://github.com/opentracing/specification/blob/master/semantic_conventions.yaml#L9 and configured tags.

@pavolloffay can we have an option "I am a good engineer and my tags are typed, please store them all in an object"? :)

@Monnoroch the type is not problematic. There is a limit on unique field keys, please read https://github.com/jaegertracing/jaeger/issues/906#issuecomment-413582617.

@pavolloffay ah! Missed that bit, thanks. Still, would be nice to have a flag for reversing the logic: blacklisting tags instead of whitelisting.
Made some comments in the PR.

We don't know how people are using them. If somebody is over the limit they would not be able to upgrade. The backup logic for figuring out what tag should be stored in different mapping would be very ugly...

Yeah, but nowadays people use more and more gRPC services instead or raw HTTP, and there are other RPC frameworks and the standard will not be able to keep up and the feature will become much less useful. Not to mention that bigger companies have their own mini frameworks with custom tag names.
My feeling is that having a reasonable number of tags is a more reasonable limitation than not being able to introduce your own tag names because you won't be able to search by them. With a whitelist I can only search by 20 pre-defined tags, while with a blacklist it's 180.

@pavolloffay I agree with @Monnoroch - there must be a way to extend standard list of tags (whitelist) to cover businesses related tags / existing conventions in frameworks (e.g. guid:x-request-id from Istio). From that perspective however 'index.mapping.total_fields.limit' is problematic for large multi-tenant installations where even a few custom tags per projects will eventually sum up to that limit. There are people reporting indexes running with 10k+ fields however ultimately Jaeger should make ES storage multi-tenant aware too (e.g. index per day per application / namespace on K8S). Until that time it would be up to the administrator to track custom tags using whitelist, where the most generic approach would be to just allow for all tags using '*' regex  (to address @Monnoroch remark for flexibility). I prefer 980 over 982 since do not see the reason to store original type for tags - can you elaborate more on the original reasons / use case plus the fact that 980 works without it.

The model follows OpenTracing API which allows different types for tag values. IIRC tag type is only used in storage integration tests. The other consumer can be post-processing job. @yurishkuro we or at Uber use tag types?

For the reference, Zipkin and OpenCensus API only support string tags.
OpenTracing supports typed tags, and Jaeger stores them as typed values, but so far we have not built any indexing capability that would make use of the types, such as supporting range queries for http.status_code as integer. However, the big data jobs can indeed use typed values.

I have submitted https://github.com/jaegertracing/jaeger/pull/1018 as a final PR.


create a partial for news

@mdozmorov @Krithika-Bhuvan
I started to address these points in the TODO list:

Make partials for current news. Currently, they are added directly to layouts/index.html (README).
Modular news on the front page. Currently, they are edited directly in index.html (Google docs).

I started by creating the layout/partials/news.html file and moving in there the news contents from themes/hugo-universal-theme/layouts/index.html.

It is cleaner, but the news are still hard-coded in the HTML code. Can we make news like blog posts, written in Markdown? It'll be easier to write news updates and allow for multiple news posts to be added (scrollable). It is not strictly necessary as we have just the due dates, but is it possible/straightforward to do?

@mdozmorov, I think I get it now. The news should look like this section in a separate menu?

@mdozmorov, I added a menu for news in which the news items are displayed as a list of blog posts. New items can be added in the content/news/ directory as separate markdown files. I had to add hugo --buildFuture to the netifly.toml file in order to view posts with future publication dates. I haven't removed the news section from the front page yet.

The front page with hews.html partial looks good, let's keep it. The News menu and content are awesome. Do we need layouts/_default/list.html? I'm not sure how it plays with the modified themes/hugo-universal-theme/layouts/_default/list.html. We can catch up after the main meeting. @Krithika-Bhuvan, please, check.
Minor: there's a typo in "regiter". Is this correct if you set draft: true in YAML header, the post won't display? We may want to hide the other posts.

I moved the layouts/_default/list.html file to layouts/news/list.html so it should only affect the news posts. This file is not really necessary for displaying the list of posts; however, I made a couple of changes in the list.html file to display content (in case some text is needed on top of the list of news) and reverse the order (newest posts are shown on top).
I restored the original themes/hugo-universal-theme/layouts/_default/list.html from the master branch of the repo.
I also set to "draft" all future news posts.
I corrected the typo of "register."


made the nav-bar items orientation proper

corresponds to issue - #57
Before->

After->

Hey, review the pr and let me know

Hey, review the pr and let me know

Kindly add dwoc and level-3 tags

Kindly add dwoc and level-3 tags

That should not be like that did you just use ur live server @swapnilsparsh  cause I have fixed this only.
And as the images of this rescue web app is not visible so ig u have not really run the project on the backend server.
and also I have fixed the dashboard only I mean after logging in where you land up that page so it should not be like that.
Anyways let me know after connecting with the backend and running the server not the live server one though

That should not be like that did you just use ur live server @swapnilsparsh  cause I have fixed this only.
And as the images of this rescue web app is not visible so ig u have not really run the project on the backend server.
and also I have fixed the dashboard only I mean after logging in where you land up that page so it should not be like that.
Anyways let me know after connecting with the backend and running the server not the live server one though

That should not be like that did you just use ur live server @swapnilsparsh cause I have fixed this only.
And as the images of this rescue web app is not visible so ig u have not really run the project on the backend server.
and also I have fixed the dashboard only I mean after logging in where you land up that page so it should not be like that.
Anyways let me know after connecting with the backend and running the server not the live server one though

I didn't used the live server, I used the backend only to make the site live in order to see the issue that you have fixed but it doesn't seem to be fixed.

That should not be like that did you just use ur live server @swapnilsparsh cause I have fixed this only.
And as the images of this rescue web app is not visible so ig u have not really run the project on the backend server.
and also I have fixed the dashboard only I mean after logging in where you land up that page so it should not be like that.
Anyways let me know after connecting with the backend and running the server not the live server one though

I didn't used the live server, I used the backend only to make the site live in order to see the issue that you have fixed but it doesn't seem to be fixed.

oKay let me check again

oKay let me check again

It's look like this on my development server. I have made the pr ig did not push one or two things let me know soon if it works fine or not

It's look like this on my development server. I have made the pr ig did not push one or two things let me know soon if it works fine or not

Hey, I just did the landing page, not the emergency page so it is showing like that to you

Hey, I just did the landing page, not the emergency page so it is showing like that to you

@swapnilsparsh has resolved them is it okay now?

@swapnilsparsh has resolved them is it okay now?

@swapnilsparsh has resolved them is it okay now?

I am checking , wait

@swapnilsparsh has resolved them is it okay now?

I am checking , wait

@Sloth-Panda
It's working fine on all the pages except the home page.
There is a slight orientation problem which you have to fix it and there is a bug when I am checking it if it is repsonsive or not then the dropdown automatically opens up.

@Sloth-Panda
It's working fine on all the pages except the home page.
There is a slight orientation problem which you have to fix it and there is a bug when I am checking it if it is repsonsive or not then the dropdown automatically opens up.

Leave the toggle part for now i have already made the issue few days back for the same only will do that  and for the other part you mentioned i am checking

Leave the toggle part for now i have already made the issue few days back for the same only will do that  and for the other part you mentioned i am checking

Leave the toggle part for now i have already made the issue few days back for the same only will do that and for the other part you mentioned i am checking

I can't simply merge your code having bugs in it so if you are comfortable then close the other issue and work only on this issue and when it gets resolved then start doing work on other issue as you have opened many issue simultaneously so there might be a confusion.

Leave the toggle part for now i have already made the issue few days back for the same only will do that and for the other part you mentioned i am checking

I can't simply merge your code having bugs in it so if you are comfortable then close the other issue and work only on this issue and when it gets resolved then start doing work on other issue as you have opened many issue simultaneously so there might be a confusion.

Okay but i have fixed the page before logging in just the part that i mentioned so asked

Okay but i have fixed the page before logging in just the part that i mentioned so asked

Okay but i have fixed the page before logging in just the part that i mentioned so asked

That part is not fixed as you can see in the above comment where I attached the photo.

Okay but i have fixed the page before logging in just the part that i mentioned so asked

That part is not fixed as you can see in the above comment where I attached the photo.

Oh okay I will look into it

Oh okay I will look into it


fix($Angular): fix length to define constants

length var is constant.
Therefore, this commit replaces length var statements with const statements

const is not supported by all the currently supported browsers.

Agree with https://github.com/angular/angular.js/pull/12765#issuecomment-138054182, unfortunately this cannot be merged


Streaming XLSX

Hello. First of all thanks for the fantastic package!
I'm having a problem with streaming. Something unexpected is happening with xlsx while I can successfully stream csv. When I try to stream xlsx on the server, instead of starting to download the file byte by byte, it just waits and gives me the whole file in one go. That's why I'm having timeout issues. I'm not sure if this is expected or if there is a problem.
This works as expected:
$writer = new \OpenSpout\Writer\CSV\Writer();

$response = new StreamedResponse(function () use ($writer) {
    $writer->openToBrowser('data.csv');

    for ($i=0; $i < 1000000; $i++) {
        $cells = [
            Cell::fromValue(uniqid()),
            Cell::fromValue(uniqid()),
            Cell::fromValue(uniqid()),
        ];

        $row = new Row($cells);

        $writer->addRow($row);
    }

    $writer->close();
});

$response->headers->set('Content-Type', 'text/csv');

return $response;

But this doesn't work like csv:
$writer = new \OpenSpout\Writer\XLSX\Writer();

$response = new StreamedResponse(function () use ($writer) {
    $writer->openToBrowser('data.xlsx');

    for ($i=0; $i < 1000000; $i++) {
        $cells = [
            Cell::fromValue(uniqid()),
            Cell::fromValue(uniqid()),
            Cell::fromValue(uniqid()),
        ];

        $row = new Row($cells);

        $writer->addRow($row);
    }
    $writer->close();
});

$response->headers->set('Content-Type', 'application/vnd.ms-excel');

return $response;

Am I missing something?
Thanks.

instead of starting to download the file byte by byte, it just waits and gives me the whole file in one go.

That's expected.
An XLSX is a ZIP of many XML files.
You need the entire directory structure before starting to ZIP it.
Then you ZIP it.
Only then you can send it.

Thanks @Slamdunk, makes sense.

I know this issue is closed but i think it should be possible to stream xlsx when using this
https://maennchen.dev/ZipStream-PHP/guide/index.html
but i haven't tried :-)


Add quotes

Pre-Submission Checklist

[x ] Your pull request targets the staging branch of FreeCodeCamp.
[ ] Branch starts with either fix/, feature/, or translate/ (e.g. fix/signin-issue)
[ x] You have only one commit (if not, squash them into one commit).
[ ] All new and existing tests pass the command npm run test-challenges. Use git commit --amend to amend any fixes.

Type of Change

[x ] Small bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds new functionality)
[ ] Breaking change (fix or feature that would change existing functionality)
[ ] Add new translation (feature adding new translations)

Checklist:

[ ] Tested changes locally.
[ x] Closes currently open issue (replace XXXX with an issue no): Closes #XXXX

Description

I added quotes around album, artist and tracks.

@andmckvr13 your changes don't address the changes proposed in the issue. Please first read the contributing guidelines before taking care of issues. And feel free to visit the Contributors Help chat room if you have any questions about helping. We're there to help. Also, it seems someone else has made a PR (#9096) to solve the same issue. Closing PR as it doesn't address the issue. Happy coding!


Tag releases?

I know this isn't quite the go way, but would be useful indicators of library growth etc..

What do you mean by this? Can you provide an example of setup / what you would expect?

When you commit/push a significant change, increment a version number and run git tag x.y.z

How would the buildpack know it's a "significant change"? What if the build isn't being run from git? We don't always have access to the git repo. IMO this is something you should do as a developer as part of release management / code organization.

I'm talking about this repo specifically. When you (@freeformz) make a change to this project, tag a new version. That way I can pin my buildpack dependency to a specific git tag, instead of having to read through the commit history, or leave my buildpack dependency floating on whatever HEAD of this repo is pointing to.

@kevinburkeshyp Ahh okay thanks. We'll do something here, not sure exactly what yet though.

With the advent of https://elements.heroku.com/, we'll definitely comply
with the standards, e.g.:

CHANGELOG.md
Release tags

@freeformz I would tag anything that's merged to master (that's not a
README / doc fix). Thoughts?

@cyx Was basically thinking of tagging releases, should probably tag all the things for now though. Def a changelog.


depends: Update Qt to 5.15.5

This PR updates the Qt dependency to 5.15.5 and contains the necessary changes for it.
Qt 5.15.5 was chosen because it is a stable LTS release and is the same version used in Bitcoin.
The way I made this PR was cherry-picking each Bitcoin QT update starting from the version Dogecoin uses. Once I got to the final update, I separated the resulting diff into separate commits.
I have left both the ceb93fa45809d56da176fd96ec4f185f05fbc294 and 6ad6276cfdecbefd23040e8d5f1a673f23e4cc1b commits under "[WIP]" because the Qt commit contains many changes that was merged into one. I also am not sure if the 6ad6276cfdecbefd23040e8d5f1a673f23e4cc1b commit was done properly since Bitcoin had completely reworked the file.
I am marking this PR as a draft because it contains many dependency updates such as OpenSSL that can be done seperatly and should be tested. Regrading OpenSSL, Qt 5.15.5 requires a min version of 1.1.1 and I picked 1.1.1s which was the latest at the time.

Looks like I got most of the CI to pass with a couple of failures.
x86_64-linux-nowallet Looks like Qt 5.15.5 breaks glibc compatibility (I found some features to disable in configure that could fix)
x86_64-macos
Qt 5.15.5 includes <os/log.h> which is only found on >=10.12. Looking further into it, it is trival to get Qt 5.15.5 to work on =10.11, since it requires syscalls only found on >=10.13.
x86_64-win-experimental
Is this failing because of bitcoin_qt.m4? Need to properly fix that file I believe.

@patricklodder
Since Qt 5.15.5 will not support macOS 10.11, should we try to get Qt 5.11.x working (supports 10.11) on 1.14.x or just move this to 1.21?

Since this will break backward compatibility, I will close this PR.


✨ feat: New input component

[x] Support Nuxt3
[x] Support Vite

I have looked back and this component doesn't seem to have any relation to the repository component 🤣, I will submit another one later.


check missing in validateCommand()

There is an inMap check missing from the ACTIONS.RESEARCH section of validateCommand().

PR #76

PR #77

closed with #77


Incompatible with openapi-spec-validator >= 0.5

Reporting Bugs
In a virtual environment,
$ pip install moto==4.0.2 openapi-spec-validator==0.5.1
$ cat test-moto.py
from moto import mock_apigateway

@mock_apigateway
def foo():
    pass
$ python test-moto.py
Traceback (most recent call last):
  File "/home/yen/tmp/test-moto.py", line 4, in <module>
    def foo():
  File "/home/yen/tmp/venv/lib/python3.10/site-packages/moto/__init__.py", line 8, in f
    module = importlib.import_module(module_name, "moto")
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/yen/tmp/venv/lib/python3.10/site-packages/moto/apigateway/__init__.py", line 1, in <module>
    from .models import apigateway_backends
  File "/home/yen/tmp/venv/lib/python3.10/site-packages/moto/apigateway/models.py", line 15, in <module>
    from openapi_spec_validator.exceptions import OpenAPIValidationError
ImportError: cannot import name 'OpenAPIValidationError' from 'openapi_spec_validator.exceptions' (/home/yen/tmp/venv/lib/python3.10/site-packages/openapi_spec_validator/exceptions.py)

There is no error with openapi-spec-validator==0.4.0.

Many thanks for the fast fix!


Remind me to initialize the namespace

Sometimes my builds fail and I'm not sure why. After a bit of looking at the logs and head scratching, it dawns on me that I forgot to initialize the namespace. Perhaps riff can detect that and alert me proactively.

We no longer initialize namespaces and builds can run successfully without credentials. The best we can do here is surface build errors when they happen in a more friendly way.

Which does not seem related to that issue anymore. Let's close this and open another one if needed?


loadingProgress always equals null

                     loadStateChanged: (ExtendedImageState state) {
                        print(state.loadingProgress);

                       }

as Title of question Loading Progress property always equals null

more code

Solution: add "handleLoadingProgress: true" in ExtendedImage.network().
The handleLoadingProgress is closed by default in the source of ExtendedImage.network().
Full code:
ExtendedImage.network(
    imageUrl,
    handleLoadingProgress: true,
    loadStateChanged: (ExtendedImageState state) {
        print(state.loadingProgress);
    }
}

加上handleLoadingProgress: true就能正常获取loadingProgress了，对于ExtendedImage.network()这一项默认是关闭的...


fix: improve errors and warnings related to ADC

This change is part of the bigger work go/simplified-local-adc
Here we improve couple errors:

When user does not have credential setup, we do not recommend setting up service account, rather we redirect to a new ADC setup page.
We show warning about user credentials only if production environment is detected

Nit: The second item in the description needs to be removed if we only fix the missing credentials error in this PR

Nit: The second item in the description needs to be removed if we only fix the missing credentials error in this PR

Updated the PR description, this PR covers both items

Nit: The second item in the description needs to be removed if we only fix the missing credentials error in this PR

PTAL latest version - left the second part as we decided to keep it


Sql and stats (+assists)

Stats tracking via SQLite and MySQL
Assists tracking and event

If possible @CJCrafter , test this also before we merge. This contains pretty many changes


DST-776 - Update request new code help email address to<EMAIL_ADDRESS>

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 81.40%. Comparing base (e8c5057) to head (d16c0c9).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #265      +/-   ##
==========================================
+ Coverage   81.23%   81.40%   +0.16%
==========================================
  Files          78       78
  Lines        2356     2345      -11
==========================================
- Hits         1914     1909       -5
+ Misses        442      436       -6

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: > d:\.scripts\vcm\venv\Scripts\python.exe -m pylint --enable=W0614 --disable=C0330 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text d:\.scripts\vcm\tests\test_core\test_networking.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: cwd: d:\.scripts\vcm
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: > d:\.scripts\vcm\venv\Scripts\python.exe -m pylint --enable=W0614 --disable=C0330 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text d:\.scripts\vcm\tests\test_core\test_networking.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: cwd: d:\.scripts\vcm
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: Cached data exists getEnvironmentVariables, d:\.scripts\vcm\tests\test_core\test_results.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: > d:\.scripts\vcm\venv\Scripts\python.exe -m pylint --enable=W0614 --disable=C0330 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text d:\.scripts\vcm\tests\test_core\test_results.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: cwd: d:\.scripts\vcm
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: > d:\.scripts\vcm\venv\Scripts\python.exe -m pylint --enable=W0614 --disable=C0330 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text d:\.scripts\vcm\tests\test_core\test_results.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: cwd: d:\.scripts\vcm
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: Cached data exists getEnvironmentVariables, d:\.scripts\vcm\tests\test_core\test_settings.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: > d:\.scripts\vcm\venv\Scripts\python.exe -m pylint --enable=W0614 --disable=C0330 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text d:\.scripts\vcm\tests\test_core\test_settings.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: cwd: d:\.scripts\vcm
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: > d:\.scripts\vcm\venv\Scripts\python.exe -m pylint --enable=W0614 --disable=C0330 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text d:\.scripts\vcm\tests\test_core\test_settings.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: cwd: d:\.scripts\vcm
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: Cached data exists getEnvironmentVariables, d:\.scripts\vcm\tests\test_core\test_status_server.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: > d:\.scripts\vcm\venv\Scripts\python.exe -m pylint --enable=W0614 --disable=C0330 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text d:\.scripts\vcm\tests\test_core\test_status_server.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: cwd: d:\.scripts\vcm
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: > d:\.scripts\vcm\venv\Scripts\python.exe -m pylint --enable=W0614 --disable=C0330 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text d:\.scripts\vcm\tests\test_core\test_status_server.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: cwd: d:\.scripts\vcm
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: Cached data exists getEnvironmentVariables, d:\.scripts\vcm\tests\test_core\test_threading.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: > d:\.scripts\vcm\venv\Scripts\python.exe -m pylint --enable=W0614 --disable=C0330 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text d:\.scripts\vcm\tests\test_core\test_threading.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: cwd: d:\.scripts\vcm
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: > d:\.scripts\vcm\venv\Scripts\python.exe -m pylint --enable=W0614 --disable=C0330 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text d:\.scripts\vcm\tests\test_core\test_threading.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: cwd: d:\.scripts\vcm
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: Cached data exists getEnvironmentVariables, d:\.scripts\vcm\tests\test_core\test_time_operations.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: > d:\.scripts\vcm\venv\Scripts\python.exe -m pylint --enable=W0614 --disable=C0330 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text d:\.scripts\vcm\tests\test_core\test_time_operations.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: cwd: d:\.scripts\vcm
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: > d:\.scripts\vcm\venv\Scripts\python.exe -m pylint --enable=W0614 --disable=C0330 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text d:\.scripts\vcm\tests\test_core\test_time_operations.py
console.ts:137 [Extension Host] Info Python Extension: 2020-03-19 00:31:03: cwd: d:\.scripts\vcm
notificationsAlerts.ts:40 There was an error in running the tests.
onDidChangeNotification @ notificationsAlerts.ts:40
notificationsAlerts.ts:38 Error: cannot open file:///d%3A/.scripts/vcm/c. Detail: Unable to read file 'd:\.scripts\vcm\c' (Error: Unable to resolve non-existing file 'd:\.scripts\vcm\c')
    at mainThreadDocuments.ts:192
onDidChangeNotification @ notificationsAlerts.ts:38

To provide more information, these are my settings:
Global settings:
{
    "code-runner.clearPreviousOutput": true,
    "code-runner.executorMap": {
        "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "python": "$pythonPath -u $fullFileName",
    },
    "editor.multiCursorModifier": "ctrlCmd",
    "editor.wordWrapColumn": 100,
    "editor.mouseWheelScrollSensitivity": 0.3,
    "terminal.integrated.mouseWheelScrollSensitivity": 0.3,
    "explorer.confirmDelete": false,
    "explorer.confirmDragAndDrop": false,
    "files.exclude": {
        ".idea": true,
        "**/__pycache__/": true,
        "venv": true
    },
    "git.autofetch": true,
    "importMagic.multiline": "parentheses",
    "python.dataScience.debugJustMyCode": false,
    "python.formatting.provider": "black",
    "python.linting.pylintArgs": [
        "--enable=W0614",
        "--disable=C0330",
    ],
    "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe",
    "window.zoomLevel": 0,
    "workbench.activityBar.visible": true,
    "workbench.colorTheme": "Monokai",
    "workbench.iconTheme": "vscode-icons",
    "workbench.statusBar.visible": true,
    "editor.minimap.enabled": true,
    "breadcrumbs.enabled": true,
    "editor.renderWhitespace": "none",
    "editor.renderControlCharacters": true,
    "diffEditor.renderSideBySide": false,
    "files.trimTrailingWhitespace": true,
    "files.insertFinalNewline": true,
    "files.trimFinalNewlines": true,
    "python.insidersChannel": "off",
    "workbench.tree.indent": 15,
    "git-graph.dialog.merge.noFastForward": false,
    "diffEditor.ignoreTrimWhitespace": false,
    "git.suggestSmartCommit": false,
    "vsicons.dontShowNewVersionMessage": true,
    // Arduino
    "arduino.path": "C:\\Arduino",
    // "arduino.logLevel": "info",
    "arduino.additionalUrls": [
        "http://arduino.esp8266.com/stable/package_esp8266com_index.json"
    ],
    // "arduino.enableUSBDetection": true,
    "arduino.defaultBaudRate": 9600,
    "arduino.skipHeaderProvider": false,
    "C_Cpp.default.defines": [
        "USBCON",
        "ARDUINO=10810"
    ],
    // "C_Cpp.default.intelliSenseMode": "gcc-x64"
    "C_Cpp.default.includePath": [
        "${workspaceRoot}",
        "D:\\Sistema\\Documents\\Arduino\\libraries\\**"
    ],
    "arduino.ignoreBoards": [
        "WeMos D1"
    ],
    "workbench.startupEditor": "welcomePage",
    "extensions.autoUpdate": false,
    "python.experiments.enabled": false,
    "bookmarks.navigateThroughAllFiles": true,
    "files.autoSave": "afterDelay",
    "git.confirmSync": false,
    "autoDocstring.docstringFormat": "google",
    "git-graph.fetchAndPrune": true,
    "workbench.editor.limit.enabled": true,
    "python.diagnostics.sourceMapsEnabled": true,
    // "C_Cpp.intelliSenseEngine": "Tag Parser",
}

Workspace settings:
{
    "python.pythonPath": "venv\\Scripts\\python.exe",
    "autoDocstring.docstringFormat": "google",
    "python.testing.pytestArgs": [
        "tests"
    ],
    "python.testing.unittestEnabled": false,
    "python.testing.nosetestsEnabled": false,
    "python.testing.pytestEnabled": true,
    "python.testing.autoTestDiscoverOnSaveEnabled": false,
}

Hi @sralloza, thank you for reaching out!
I extracted your comment about the JUnit warning in a different issue (https://github.com/microsoft/vscode-python/issues/10673), thank you for reporting it 👍
Does this error get raised when you run a single failing test, when you run all tests, or both?
What does your folder structure look like? Do you have a pytest.ini file?
What happens if you run pytest manually in your terminal?

The entire test suite: d:\.scripts\vcm\venv\Scripts\python.exe --rootdir d:\.scripts\vcm tests
A single test: d:\.scripts\vcm\venv\Scripts\python.exe -m pytest --rootdir d:\.scripts\vcm ./tests/test_core/test_time_operations.py::TestSecondsToStr::test_o

Thanks!

Here you have the requested info:

Does this error get raised when you run a single failing test, when you run all tests, or both?

Both.

What does your folder structure look like? Do you have a pytest.ini file?

I don't have a pytest.ini file, but the folder structure looks like this:
|   .gitignore
|   CHANGELOG.md
|   LICENSE
|   README.md
|   requirements.txt
|   setup.py
|
+---.github
|   \---workflows
|           pythonapp.yml
|
+---.vscode
|   |   launch.json
|   |   settings.json
|   |   tasks.json
|   |
|   \---.ropeproject
|           config.py
|           objectdb
|
+---tests
|   |   conftest.py
|   |   [test files]
|   |
|   +---test_core
|   |   |   [test files]
|   |
|   +---test_downloader
|   |   |   [test files]
|   |   |
|   +---test_notifier
|   |   |   [test files]
|   |
+---vcm
|   |   main.py
|   |   VERSION
|   |   __init__.py
|   |   __main__.py
|   |
|   +---core
|   |   |   [core python files]
|   |
|   +---downloader
|   |   |   [more python files]
|   |
|   +---notifier
|   |   |   [more python files]
|
\---venv (virtualenv folder)

The entire test suite: d:.scripts\vcm\venv\Scripts\python.exe --rootdir d:.scripts\vcm tests
A single test: d:.scripts\vcm\venv\Scripts\python.exe -m pytest --rootdir d:.scripts\vcm ./tests/test_core/test_time_operations.py::TestSecondsToStr::test_ok

If I run the tests using pytest directly in terminal, the output is what you would expect, without any Unable to read file errors. When I encountered this error in vscode I used to run pytest in terminal, and it never raised the error.
For some reason, now I can't reproduce my own bug. I created a test designed to fail, just like I did when I submitted this issue, and it just works fine. Now, executing the test test_time_operations.py::TestSecondsToStr::test_ok fails (as is supposed to) but with no Unable to read file error.
I may add that this bug was present in other projects, too. I think it may be related with the mock library, because in one occasion when I commented a hole test that was using mock badly, the bug disappeared. But the moment I uncommented that test, the bug returned. It's something that may be useful, although I can't 100% confirm this.

Good news, I finally found a way to reproduce the bug. As I recalled, it is caused by a misuse of the mock library (unittest.mock.patch).
Steps to reproduce:
Create a project with this structure:
|   setup.py
|
+---.vscode
|       settings.json
|
+---src
|       mod.py
|       __init__.py
|
+---tests
|       test_mod.py
|
\---venv

Contents of file src/mod.py:
class A:
    b = 25

def substract(b):
    return A.b - b

Contents of file tests/test_mod.py:
from src.mod import substract
from unittest import mock

@mock.patch("invalid_route.mod.A.b", 100)
def test_substract():
    assert substract(2) == 98

Contents of file setup.py:
from distutils.core import setup

setup(name="src")

Notes:

File setup.py is only for install a development version of the module, with pip install -e ..
In file tests/test_mod.py, the call to mock.patch is invalid (no module named invalid_route exists, is should be @mock.patch("src.mod.A.b", 100) instead of @mock.patch("invalid_route.mod.A.b", 100).

After installing pytest and configuring tests with pytest, it's the time to run the tests. Calling pytest directly from the terminal returns the expected mock error:
Microsoft Windows [Versión 10.0.18362.720]
(c) 2019 Microsoft Corporation. Todos los derechos reservados.

Seems like there's an issue with how we parse pytest's output 🔍

I have the same problem,  looking forward for a fix.

I think it has to do with a module importing issue. I was trying to resolve a circular relative import issue and encountered this.

Is there a fix for this yet?  I think one was proposed here:
https://github.com/microsoft/vscode-python/issues/12403
This is super annoying.

Experiencing this today, not a fun one!

I think this was closed in https://github.com/microsoft/vscode-python/pull/16769. Feel free to comment if you are still experiencing this issue.


Searching by local version of libgen

Hello!
Libgen Desktop has the ability to search the imported database dump. Unfortunately, this app does not have a command-line interface. I would like to have such an opportunity. This would allow not to limit the search to 100 files and not to worry about domain blocking.

This would actually be a really nice feature to have implemented! I will take a look at how the Desktop version handles this and see how I could work this into libgen-cli. If this is still something you are still looking for I can notify you when I need some assistance during testing.

I'd really like to get this implemented. However, the path does not seem as straightforward and without trials as I'd like. Essentially, the database schema dumps provided by Libgen are formatted for MySQL or MariaDB, which makes sense since its hosted on a server handling multiple web requests, etc. In this context of a CLI applet, I'd prefer to roll SQLite and source the Libgen database schema into a local SQLite .db file. This way, users are not required to bring their own SQL box to perform local queries which keeps things as complex-free and lightweight as possible.
I've run into issues attempting to convert the MySQL schema to a SQLite formatted schema. I took a look into mysql2sqlite with no luck. I reviewed their issue tracker and noticed someone else was attempting the same thing for the libgen_compact.rar schema: https://github.com/dumblob/mysql2sqlite/issues/92 and I was sadly running into the same error they listed:
❯ ./mysql2sqlite/mysql2sqlite libgen_compact.sql | sqlite3 libgen_compact_20230606.db
memory
Parse error near line 2831: near "SET": syntax error
   FOR EACH ROW BEGIN  INSERT INTO `updated_edited` SET  `Title` = OLD.`Title`,
                                      error here ---^

I reviewed the source code for LibgenDesktop. It appears they create a fresh SQLite database and manually loop through and read the columns & rows from the MySQL schema then craft their own SQLite query commands on the fly per command read from the MySQL schema. They then insert that directly into the SQLite database and voilà. So, very manual parsing I'd prefer not to jump into the weeds with.
This is very basic implementation I've been playing with:
func importLibgenDbdump(db *sql.DB, dbdumpPath string) error {
	// Read the SQL schema file
	sqlFile, err := os.ReadFile(dbdumpPath)
	if err != nil {
		return err
	}

	// Split the SQL commands by ; delimiter
	commands := strings.Split(string(sqlFile), ";")

	for _, cmd := range commands {
		stmt := strings.TrimSpace(cmd)
		if stmt != "" {
			_, err := db.Exec(stmt)
			if err != nil {
				fmt.Println(stmt) // Print the statement that caused the error
			}
		}
	}

	return nil
}

Yet, I think the multi-line statements in the INSERT statements from the schema are causing an issue and I'll typically run into this error:
Error executing SQL statement: Error 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Компьютерная литература' at line 1
Setting the UTF8 charset did not help in this case.
TL;DR: not a clear solution yet, but I am looking into it. Will gladly take PRs or pointers.

I was able to reproduce the FOR EACH ROW error. The whole statement is:
/*!50003 TRIGGER `libgen_updated_update_all` BEFORE UPDATE ON `updated` FOR EACH ROW BEGIN INSERT INTO `updated_edited`
SET
`Title` = OLD.`Title`,
`VolumeInfo` = OLD.`VolumeInfo`,
`Series` = OLD.`Series`,
...etc...

There is only one statement like this, and I found that after removing it, mysql2sqlite was able to complete without errors.
What does this statement do? Maybe it's not needed. Is simply removing it an option?


Add cassandra2gsd function.

This PR adds a function to convert a Cassandra trajectory to gsd format.

I don't know why the pre-commit CI keeps failing but not committing its changes.  It doesn't seem to be a docstring issue.  I have pre-commit installed locally, and it passes the local pre-commit checks.

Sorry I am a little late to review this.
Looks good to me.
I have a question for @rwsmith7531 and @jennyfothergill
I see that you are creating the bonds list. Would it be (or have been) easier if you just save your top file (.mol2) at the start of the simulation and use mdtraj to load xyz with mol2 file as the top file and save the loaded mdtraj traj as gsd?
It won't work for GEMC (because of changing number of molecules) but should work fine for NpT (the case for which we are calculating g(r))

@ramanishsingh No, that would be harder.  Cassandra doesn't do anything involving mol2 files, and I don't think mol2 files include box dimensions.  MoSDeF Cassandra requires a list of parameterized single-molecule parmed structures anyway.  I also don't think mdtraj has a function that converts a mdtraj trajectory to gsd (it has a function that takes ndarrays, and the xyz file data may be too much to load into memory all at once).  We may not be computing the RDF for GEMC, but maybe we need GEMC trajectories for other analysis?

I don't know why the pre-commit CI keeps failing but not committing its changes. It doesn't seem to be a docstring issue. I have pre-commit installed locally, and it passes the local pre-commit checks.

@justinGilmer do you know what's going on with this?

pre-commit.ci run

Ah it looks like the mcccs project file is the cause of the issue. Ill make a new PR that fixes that and then updating from upstream main should fix this @rwsmith7531

Sorry! :D

pre-commit.ci run

pre-commit.ci autofix


How to display log content in zipkin UI ?

It will be hard to answer your question without detail, but generally
speaking the zipkin-ui only shows data in zipkin storage. The only log-like
data in zipkin are annotations (timestamped events in a span). All tracers
support annotations, so that's the closest it gets. if you want to
follow-up please use gitter as open-ended questions aren't great for github
issues https://gitter.im/openzipkin/zipkin


The minimum money value should not be negative

Currently the application accepts negative input which is ambiguous as money could not be negative. I would like to fix this bug.

Okay @subhashis2204

You are good to go

@subhashis2204 are you still working on this issue.


search app: need a way to distinguish between same column names from multiple tables

on rbk-dev, Last Modified are listed twice. This is ambiguous. Can we prefix it with a table name to distinguish between the two attributes?

Done on rbk-dev.

There are now "Image Last Modified" and "Annotation Last Modified" on rbk-dev.


[improvement](inverted index)Remove searcher bitmap timer to improve query speed

Proposed changes
Timer becomes a bottleneck when the query hit volume is very high.
Test result:

sql
TIMER Added
TIMER Removed
Hits

select count() from hits where PageCharset match_any 'windows';
1.23s
0.60s
60715906

select count() from hits_one_bucket2 where agent match_any 'windows';
4.27s
1.95s
41142388

select count() from hits_one_bucket2 where agent match_any 'Windows Chrome';
7.00s
2.06s
45256626

select count() from hits_one_bucket2 where agent match_all 'Windows Chrome';
7.74s
2.79s
41142388

Problem summary
Describe your changes.
Checklist(Required)

[ ] Does it affect the original behavior
[ ] Has unit tests been added
[ ] Has document been added or modified
[x] Does it need to update dependencies
[x] Is this PR support rollback (If NO, please explain WHY)

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

LGTM

run buildall

TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 34.04 seconds
stream load tsv:          447 seconds loaded<PHONE_NUMBER>9 Bytes, about 159 MB/s
stream load json:         38 seconds loaded<PHONE_NUMBER> Bytes, about 59 MB/s
stream load orc:          67 seconds loaded<PHONE_NUMBER> Bytes, about 15 MB/s
stream load parquet:          27 seconds loaded 861443392 Bytes, about 30 MB/s
https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/tmp/20230306050022_clickbench_pr_109023.html

run buildall


Fix some warnings in STM32H7 IWDG

Summary
Compiling STM32H7 IWDG showed some format warnings in debug outputs.
Impact
*Build output has less warnings
Testing

no checkpatch output
Local build successful

Can someone tell me why the check is failing? The error is empty.

long line found, https://github.com/apache/nuttx/actions/runs/4978401415?pr=9277


Villager unusable

Found an archeology villager tent, but whenever I try to trade, the window instantly closes so its impossible to interact with.  The villager works fine in singleplayer.

Okay sorry for another edit, I've just done some more testing as it's been a few days. It seems that the issue is with the villager generation. Naturally spawning villager tents seem to have an issue with assigning their profession so it just instant closes the menu, however breaking/replacing the workbench doesnt seem to fix it.

https://github.com/noah1510/EvenBetterArcheology/assets/21692038/2ff0b2b1-eaa7-4ee2-ac56-e26c68431368

Hi, which version of the mod do you use?

Never mind I think I found the problem.
The nbt structure data has the wrong id for the profession and has some offers set by default.
I changed so it should be fixed in 2.0.0-beta.6.
Could you try if that works for you too? It should fix all new villagers the old ones should still be broken.

Fixed thank you!


FIA_UAU.5, is MFA supported?

Is herewith 2FA, MFA included? If so please give advise for usage of target bound appropriate protocols. You consider here only algorithms. Though here should be rather given respect to authentication protocols where those crypto is embedded.

2FA and MFA are not supported for authenticating to the DSC, so I think this can be closed. The DSC can support those mechanisms for the device it is included in, but do not seem to be relevant for the DSC itself.


Reader profile: months ago, multiple chips for services

Who is this PR for?
K3 educators
What problem does this PR fix?
What does this PR do?
Split out multiple iterations of the same kind of service (eg, reading intervention group), show them as multiple chips.
Update the time context in services to be months ago, or days if recent.  Add tooltip.
This needs another pass to consolidate the "time ago" math; this is just making it more usable for critique sessions today.
Screenshot (if adding a client-side feature)

Checklists
Which features or pages does this PR touch?

[x] Reader profile

Does this PR use tests to help verify we can deploy these changes quickly and confidently?

[x] Included specs for changes
[x] Manual testing made more sense here

selfie


Rayleigh Modbus values

Hi, I have received these modbus values from Rayleigh for my inverter. Im editing the custom_parameters.yaml but a bit confused which values to put in there.
Could someone with experience doing this take a look and point me in the right direction please? I'd be happy to share the YAML once working.
https://drive.google.com/file/d/1CUMkAqBLgeMIO3lJaNDiaI-Uoka90XEc/view?usp=sharing

I managed to get most values working. Battery seems to be missing information:
`# Rayleigh Energy Pack
Modbus information taken from "RI-EnergyFlow-MODULAR Modbus Protocol-COM-V1 (003)" document provided by Rayleigh
requests:
Solar

start: 3000
end: 3042
mb_functioncode: 0x04

Power Grid

start: 3100
end: 3122
mb_functioncode: 0x04

Electricity Consumption

start: 3144
end: 3153
mb_functioncode: 0x04

Battery

start: 3046
end: 3068
mb_functioncode: 0x04

Inverter

start: 3053
end: 3057
mb_functioncode: 0x04

parameters:

group: solar
items:

name: "PV1 Voltage"
class: "voltage"
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [ 3000 ]
icon: 'mdi:solar-power'

name: "PV2 Voltage"
class: "voltage"
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [ 3001 ]
icon: 'mdi:solar-power'

name: "PV1 Current"
class: "current"
state_class: "measurement"
uom: "A"
scale: 0.01
rule: 2
registers: [ 3012 ]
icon: 'mdi:solar-power'

name: "PV2 Current"
class: "current"
state_class: "measurement"
uom: "A"
scale: 0.01
rule: 2
registers: [ 3013 ]
icon: 'mdi:solar-power'

name: "PV1 Power"
class: "power"
state_class: "measurement"
uom: "W"
scale: 1
rule: 2
registers: [ 3024 ]
icon: 'mdi:solar-power'

name: "PV2 Power"
class: "power"
state_class: "measurement"
uom: "W"
scale: 1
rule: 2
registers: [ 3025 ]
icon: 'mdi:solar-power'

name: "Daily Production"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 0.1
rule: 1
registers: [ 3036 ]
icon: 'mdi:solar-power'

name: "Monthly Production"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 1
rule: 3
registers: [3037,3038 ]
icon: 'mdi:solar-power'

name: "Yearly Production"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 1
rule: 3
registers: [ 3040, 3039 ]
icon: 'mdi:solar-power'

name: "Cumulative Production"
class: "energy"
state_class: "total"
uom: "kWh"
scale: 0.1
rule: 3
registers: [ 3042, 3041 ]
icon: 'mdi:solar-power'

group: Power Grid
items:
Should this be the sum of the 3 phases "Meter Power"?

name: "Total Grid Power"
class: "power"
state_class: "measurement"
uom: "W"
scale: 1
rule: 2
registers: [ 3100 ]
icon: 'mdi:transmission-tower'

name: "Daily Energy Purchased"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 0.1
rule: 1
registers: [ 3109 ]
icon: 'mdi:transmission-tower-import'

name: "Monthly Energy Purchased"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 1
rule: 3
registers: [ 3111, 3110 ]
icon: 'mdi:transmission-tower-import'

name: "Yearly Energy Purchased"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 1
rule: 3
registers: [ 3113, 3112 ]
icon: 'mdi:transmission-tower-import'

name: "Cumulative Energy Purchased"
class: "energy"
state_class: "total"
uom: "kWh"
scale: 0.1
rule: 3
registers: [ 3115, 3114 ]
icon: 'mdi:transmission-tower-import'

name: "Daily Energy Feed-In"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 0.1
rule: 1
registers: [ 3116 ]
icon: 'mdi:transmission-tower-export'

name: "Monthly Energy Feed-In"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 1
rule: 3
registers: [ 3118, 3117 ]
icon: 'mdi:transmission-tower-export'

name: "Yearly Energy Feed-In"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 1
rule: 3
registers: [ 3120, 3119 ]
icon: 'mdi:transmission-tower-export'

name: "Cumulative Grid Feed-In"
class: "energy"
state_class: "total"
uom: "kWh"
scale: 0.1
rule: 3
registers: [ 3122, 3121 ]
icon: 'mdi:transmission-tower-export'

group: Electricity Consumption
items:
Should this be the sum of the 3 phases "Load Power"?

name: "Total Consumption Power"
class: "power"
state_class: "measurement"
uom: "W"
scale: 1
rule: 1
registers: [ 3144 ]
icon: 'mdi:home-lightning-bolt'

name: "Daily Consumption"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 0.1
rule: 1
registers: [ 3147 ]
icon: 'mdi:home-lightning-bolt'

name: "Monthly Consumption"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 1
rule: 3
registers: [ 3149, 3148 ]
icon: 'mdi:home-lightning-bolt'

name: "Yearly Consumption"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 1
rule: 3
registers: [ 3151, 3150 ]
icon: 'mdi:home-lightning-bolt'

name: "Cumulative Consumption"
class: "energy"
state_class: "total"
uom: "kWh"
scale: 0.1
rule: 3
registers: [ 3153, 3152 ]
icon: 'mdi:home-lightning-bolt'

group: Battery
items:

name: "Battery Type"
class: "battery"
state_class: "measurement"
uom: ''
scale: 1
rule: 1
registers: [ 3062 ]
icon: 'mdi:battery'
lookup:

key: 1
value: "Lead-Acid"
key: 6
value: "LFP"

name: "Battery Voltage"
class: "voltage"
state_class: "measurement"
uom: "V"
scale: 0.01
rule: 1
registers: [ 3063 ]
icon: 'mdi:battery-charging'

name: "Battery Current"
class: "current"
state_class: "measurement"
uom: "A"
scale: 0.1
rule: 2
registers: [ 3064 ]
icon: 'mdi:battery-charging-10'

name: "Battery Power"
class: "power"
state_class: "measurement"
uom: "W"
scale: 1
rule: 2
registers: [ 3065 ]
icon: 'mdi:battery-charging-high'

name: "Battery SoC"
class: "battery"
state_class: "measurement"
uom: "%"
scale: 0.1
rule: 1
registers: [ 3066 ]
icon: 'mdi:battery'

name: "Battery Temperature"
class: "temperature"
state_class: "measurement"
uom: "°C"
scale: 0.1
rule: 2
registers: [ 3067 ]
icon: 'mdi:battery-heart-outline'

name: "Battery Discharge Capacity Depth"
class: "battery"
state_class: "measurement"
uom: "%"
scale: 1
rule: 1
registers: [ 3068 ]
icon: 'mdi:battery-20'
validation:
min: 10
max: 95

name: "Battery Radiator Temperature"
class: "temperature"
state_class: "measurement"
uom: "°C"
scale: 0.1
rule: 2
registers: [ 3056 ]
icon: 'mdi:battery-heart-outline'

name: "Battery Total Discharge"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 1
rule: 3
registers: [ 3068 ] # /?????
icon: 'mdi:battery-minus-variant'

- name: "Battery Daily Discharge"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 0.1
rule: 1
registers: [ 3294 ]
icon: 'mdi:battery-minus-variant'
- name: "Battery Total Charge"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 1
rule: 3
registers: [ 3300, 3299 ]
icon: 'mdi:battery-minus-variant'
- name: "Battery Daily Charge"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 0.1
rule: 1
registers: [ 3301 ]
icon: 'mdi:battery-plus-variant'

name: "System status"
class: ""
state_class: "measurement"
uom: ""
scale: 1
rule: 1
registers: [3046]
lookup:

key: 0
value: "Initialize"
key: 1
value: "Stand-by"
key: 2
value: "Hybrid Grid"
key: 3
value: "Off-Network"
key: 4
value: "Mains Charging"
key: 5
value: "PV Charging"
key: 6
value: "Mains Bypass"
key: 7
value: "Fault"
key: 8
value: "Debug"
key: 9
value: "Forced Charge"
key: 10
value: "Power on the device separately from the"
key: 11
value: "DSP Burn"
key: 12
value: "MCU Burn"
key: 13
value: "Permanent Error"
icon: 'mdi:wrench'

name: "Inverter status"
class: ""
state_class: "measurement"
uom: ""
scale: 1
rule: 1
registers: [3047]
lookup:

key: 0
value: "Stand-by"
key: 1
value: "Off-Grid"
key: 2
value: "On-Grid"
key: 3
value: "Off-Grid to On-Grid"
key: 4
value: "On-Grid to Off-Grid"
icon: 'mdi:wrench'

group: Inverter
items:

name: "Inverter Bus Voltage"
class: "voltage"
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [ 3053 ]
icon: 'mdi:home-lightning-bolt'

name: "Inverter DC Bus Voltage"
class: "voltage"
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [ 3054 ]
icon: 'mdi:home-lightning-bolt'

name: "Inverter Radiator Temperature"
class: "temperature"
state_class: "measurement"
uom: "°C"
scale: 0.1
rule: 2
registers: [ 3055 ]
icon: 'mdi:thermometer'

name: "Chassis Internal Temperature"
class: "temperature"
state_class: "measurement"
uom: "°C"
scale: 0.1
rule: 2
registers: [ 3057 ]
icon: 'mdi:battery-heart-outline'
`


Run product tests on HDP 3.1

Related to https://github.com/prestosql/presto/issues/190

Requires https://github.com/prestosql/docker-images/commit/867e147ca7b938396665324b2fef791896a8b38d

https://travis-ci.com/prestosql/presto/builds/121392947 -- the tests have passed green.

@electrum

This seems strange. We are running a different version for master than for PRs. So it means that any single build does not have full coverage, looking at master before release doesn’t tell us that everything passed, and we can introduce regressions that we don’t find before merging.

PR build runs on hdp 2.6
master build runs on hdp 2.6 and hdp 3.1, so it gives "full coverage"

I’d prefer to add the tests as normal so they always run. We do need to optimize the build, but this doesn’t seem to be the right way.

I don't want to add additional 4 hours to every PR. 4 additional hours on master is not a big deal.
Also, I will add another 4 hours in https://github.com/prestosql/presto/pull/973.

Ah, I'm with this is if master runs both.

Notice that there are also hd2.5 and cdh* versions of docker images, for which we do not run tests per every PR. Also there is a group of tests that tend to fail in travis (due lack of resources) and tests for simba jdbc drivers.
We run them all internally. So far I do not recall any regressions other than with simba drivers. And notice that we run them for couple years now.
I can do what @findepi is proposing now. But I think we still needs to handle somehow holistically. Especially if we consider #973. So we would be aware what is executed where and how ensure that build is stable.
BTW notice that there is a cron feature in travis, so we could run such tests weekly or daily for master.

BTW notice that there is a cron feature in travis, so we could run such tests weekly or daily for master.

I added weekly cron, as daily cron seemed wasteful. It will run some day* and only if there was no merge to master in last 24h.
I will update this PR so it runs for cron jobs too.
*) this might be Fridays because I set it on Friday... i'd prefer Sundays though.

I added weekly cron

How is it going to notify us about the failures?

How is it going to notify us about the failures?

Travis will send you a postcard.


Do not silently ignore 404 errors

I've tested this commit by locally reverting the fix for SONARMSBRU-125: https://github.com/SonarSource/sonar-msbuild-runner/commit/6bdad3317ef6fdf7aa30d9f8fcf21047e6f3a2e7
I now get the following messages in the logs - which seems definitely better:
11:41:30  Generating the FxCop ruleset: C:\Users\dinesh\Desktop\tmp\ConsoleApplication1\.sonarqube\conf\SonarQubeFxCop-cs.ruleset
11:41:30  Could not find a file on the SonarQube server. Url: http://localhost:9000/api/profiles/index?language=cs&name=Sonar#way
Process returned exit code 1
Pre-processing failed. Exit code: 1

This relates to:

http://jira.sonarsource.com/browse/SONARMSBRU-91
https://github.com/SonarSource/sonar-msbuild-runner/commit/10963e597189c98f921d6b6ebc329edb18586f3f

I think the log message was missing from the beginning - can you confirm @bgavrilMS ?

LGTM


prompt used for gpt models for evaluation

Hi,
can you point me to the prompt you used to evaluate the gpt models on screenspot?
is it this one?
https://github.com/njucckevin/SeeClick/blob/b30506bf1f07458c64468f3a9aa442bf4612bc16/pretrain/screenspot_test.py#L52

Hi,
the prompt for GPT model is in https://github.com/njucckevin/SeeClick/issues/39.

perfect thank you!


trying out posix sh

@dcarbone sadly no:
Run<EMAIL_ADDRESS>  with:
    version: 1.7
    force: false

Run _jq_bin="$(which jq)"
  _jq_bin="$(which jq)"
  if [ -f "${_jq_bin}" ]; then
    echo "found=true" >> $GITHUB_OUTPUT
  else
    echo "found=false" >> $GITHUB_OUTPUT
  fi
  shell: bash +e {0}

OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown
Error: Process completed with exit code 126.

Ahhh, the action itself. Ok.

@digitalkaoz alright, I've pushed a fix for this to main. Please give it a go!  Apologies for not getting it quite right the first time 😄


Primary default config path as XDG Base Dir Standard, more options for setting the config path.

Hi,
Would be really nice with more options on where the default config file is stored, generally the home directory is so overcrowded so many prefer to use the XDG standard instead.
I made an implementation of this so it uses the XDG standard as primary default path, but with $HOME/.pier as fallback in case $XDG/pier/config doesn't exist. Also added an option to set the config path to something entirely different using an environment variable $PIER_CONFIG_PATH.
Maybe you could have a look at the code and see if you think this would be a good solution for this problem?

Hi @Plommonsorbet! Great to have you as the first contributor :) I've added a license (thanks for the email) and a CONTRIBUTORS file - you can go ahead and add your details there in this PR if you like.
The PR looks good and I completely agree, the home directory gets crowded. One of the reasons for this tool was of course to make the script folder a bit less crowded and manageable! I pulled it down and it all works as expected.
I'm going to add a few "good first issues" that contributors can start tackling, otherwise go ahead and create a PR for any new features as you see fit. I'm sure we'll eventually get to the stage of defining a bit better what the tool's role should be, keeping to the Unix philosophy of do one thing and do it well, but for now have at it. There is a bug with certain scripts failing to run, which I haven't dug into yet.


Filters by date range in Admin panel does not work correctly

Problem description
This issue happens when a user tries to filter logs with date range and uses the end date as today's date.
For example, we have logs with timestamp 2022-03-22T16:36:29.768Z, but when a user selects the start date 2022-03-21 and the end date 2022-03-22 applies filters, the result is empty. However, the logs appear if a user picks today +1 day in the end date range.
Step to reproduce
Steps to reproduce the behavior:

Go to the 'Admin' tab
Click on the 'Logs' tab
Select date range filter and pick the start and end dates where the end date is "today" date
Click on the 'Apply filters' button

Expected behavior
A user should see logs related to the user of the dates provided
Screenshots
https://images.zenhubusercontent.com/416030891/1e5c319c-303e-43db-b748-de0c375668b0/screen_recording_2022_03_22_at_12_21_54_pm.mov

This ticket was QA approved and closed on March 24th


Disscussions moved from issue #8 about problems on CentOS 8

cddisk2000 commented 5 days ago:

Use Centos 7 Always Fail
The Main Points Are As Follows

Centos 8 Steam or Centos 8
The MTR was above 0.94 Offline Install , cannot be used yum
I hope Can Help Everyone

Gowee commented 3 days ago:

@ cddisk2000

Hi.

I cannot reproduce the problem on a newly installed CentOS Linux release 8.4.2105. What is the version of telegraf and influxdb? Also, I am not sure what do you mean by "Always Fail". Is the telegraf failing to start? Or no data is written to influxdb?

Would you mind opening an issue where more information can be attached?

cddisk2000 commented 3 hours ago:

@ Gowee
This is my system environment for your reference

    offline install mtr-0.94-2.hs.el8.x86_64.rpm
    Telegraf version 1.19.0
    InfluxDB version: 1.8.6
    CentOS Stream Release 8
    Please confirm that the format must be output using the following command
    mtr -C -n www.google.com
    =======================================================
    Mtr_Version,Start_Time,Status,Host,Hop,Ip,Loss%,Snt, ,Last,Avg,Best,Wrst,StDev,
    MTR.0.94,1624880440,OK,www.google.com,1,<IP_ADDRESS>,0.00,10,0,0.24,0.29,0.19,0.41,0.08
    MTR.0.94,1624880440,OK,www.google.com,2,???,100.00,10,10,0.00,0.00,0.00,0.00,0.00
    =======================================================

If it doesn't work, you can browse my blog,I hope you can succeed
https://my-fish-it.blogspot.com/2021/06/ss-grafana-traceroute-map-panel.html

(To keep the discussion seperated from the other issue, I am opening a new issue here.)
@cddisk2000
Hi. I have looked through your blog post where the image shown under "#查詢「mtr」資料表 及前「5」筆資料。" implies the data has already been collected correctly.
I can see only one point displayed on the map in your case. I guess the problem is those ??? in the IP field, which are collected as-is from the output of mtr. ??? usually indicates that the IP address of a hop cannot be determined by mtr, which in turn indicates the hop on the path does not respond to mtr probing.
It is fine to have some ??? hops on a path. But in general, there should be several responding hops. So only one point on the map is abnormal.
More information are needed to find where the problem is. Is everything working well (at least several non-??? hops) when you manually mtr via shell? Is the mtr -C -n www.google.com output you pasted in the previous issue complete? Or could you please paste the FULL output of mtr -C -n <IP_ADDRESS> here?

@Gowee
I'm just doing a sample test , In China Google can't be accessed. If it's other domain names no problem.
Traceroute map panel is sure to work properly

The README of mtr gives concise instructions to install from the source. It should work well on CentOS 7 where I have tested.
It is also possible to make telegraf adapted to the other output format by tweaking its config as I said in https://github.com/Gowee/traceroute-map-panel/issues/8#issuecomment-804114467.
Feel free to leave comments here if you encounter other problems.

@Gowee
CentOS 7 to install mtr v0.94 from the source succeeded。
Thank you very much

I am happy to hear that.
I will update the README to mention the MTR version requirement.
For better tracking issues, I am going to close this for now. If you have other problems, just reopen it by replying again.


refactor(dispatch-service): moved archive uploading to dispatch processor

Addresses part of #3896

[x] Move archive downloading and uploading from API to dispatch queue

[x] Pass URLs and file buffers to dispatch queue
[x] Move setting of fileUrl and size

[x] Test

[x] URL
[x] File upload

[x] Check that simulation run browse table is still receiving data as intended

:tada: This PR is included in version 8.8.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Stress a vowel manually

Hello
Thanks for your exciting work!
Can you please tell me, is there a possibility to stress a vowel manually with you phonemizer?
For example: alibab'a / alib'aba, з'амок / зам'ок
And does your phonemizer support stresses at all?

thanks for your question!
I did not include the stress symbol during the training, so currently, it will not predict any stress on it.
For a few languages, I think the stress information is in the training set but I removed them before training.
Depending on the language, it might be possible to support stress in the future.
Can you tell me what's your application of using stress? and which language do you want to apply?

Thanks for the quick response

Can you tell me what's your application of using stress? and which language do you want to apply?

If your solution would support manual stress setting, I would use it for the following tasks:

Phonemizing the input texts of text-to-speech models
Phonemizing text for training phoneme level BERT (for text to speech tasks too)

Languages: English, Slavic (Polish, Russian)
Manual stress correction is very important for correct phonemizing of proper names in English
For Slavic languages it's critically important, same sequences of characters can have different meanings depending on the stress.
But old tools like espeak unfortunately don't have an ability to control stress manually

For English, I think it is possible to train a model supporting stress as it is included in the CMU dictionary. I am not very sure whether the Slavic languages also have these annotations there, it would be difficult if there are no datasets containing stress. Do you know any pronunciation datasets supporting stress?

I can try to find them
Can you please give an example piece of dataset?
It should be like word / phoneme form?
and stress must be set with char + or '?

it should be something like the following format with fields delimited by space
word phoneme1  phoneme2 stress1 phoneme3
Currently, I removed all non IPA symbols, so there need some code changes to include your stress symbol, I think you can assign whatever character you think is appropriate.


generic_unar.rb: use long flags

@jawshooah (and other maintainers) We should try to use long flags to commands whenever possible. Short flags are fine when writing them out to run immediately, but have no place in a script, where comprehension is more important.
Do you agree?

Merging it quickly so I can work on https://github.com/caskroom/homebrew-cask/issues/15025, but please voice your concerns, if any.


Make collections searchable

In the conformance we have 👇
https://github.com/developmentseed/tifeatures/blob/8020a6000f4fadfb03fb61f9290314f03e1745ec/tifeatures/factory.py#L282
and looking at 👇
http://docs.ogc.org/DRAFTS/20-024.html
It says that /collections should accept filters see https://portal.ogc.org/files/99149#rc-simple-query-section
ref https://github.com/stac-api-extensions/collection-search
cc @bitner

I've don it over tipg https://github.com/developmentseed/tipg/pull/12
I don't think we'll spend time to add it in tifeatures


Release v0.5.0

Will do a quick test of this from the RC release tomorrow, otherwise looks good.

Codecov Report

Merging #121 (5676b4e) into main (1a3d340) will increase coverage by 0.02%.
The diff coverage is 94.20%.

@@            Coverage Diff             @@
##             main     #121      +/-   ##
==========================================
+ Coverage   88.54%   88.56%   +0.02%
==========================================
  Files          81       82       +1
  Lines        1274     1312      +38
  Branches      125      122       -3
==========================================
+ Hits         1128     1162      +34
- Misses        145      148       +3
- Partials        1        2       +1

Impacted Files
Coverage Δ

src/faas/v0/context.ts
76.22% <ø> (ø)

src/resources/index.ts
100.00% <ø> (ø)

src/resources/secret.ts
87.50% <87.50%> (ø)

src/api/documents/v0/collection-group-ref.ts
89.65% <100.00%> (ø)

src/api/documents/v0/collection-ref.ts
100.00% <100.00%> (ø)

src/api/documents/v0/document-ref.ts
100.00% <100.00%> (ø)

src/api/documents/v0/document-snapshot.ts
66.66% <100.00%> (ø)

src/api/documents/v0/documents.ts
100.00% <100.00%> (ø)

src/api/documents/v0/query.ts
95.12% <100.00%> (ø)

src/api/events/v0/events.ts
98.11% <100.00%> (ø)

... and 7 more

Continue to review full report at Codecov.

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


feat: Make iam-account-settings-module available publically

Description
Make iam-account-settings-module available publically
Types of changes in this PR
No release required

[ ] Examples or tests (addition or updates of examples or tests)
[ ] Documentation update
[ ] CI-related update (pipeline, etc.)
[ ] Other changes that don't affect Terraform code

Release required

[ ] Bug fix (patch release (x.x.X): Change that fixes an issue and is compatible with earlier versions)
[x] New feature (minor release (x.X.x): Change that adds functionality and is compatible with earlier versions)
[ ] Breaking change (major release (X.x.x): Change that is likely incompatible with previous versions)

Release notes content
Replace this text with information that users need to know about the bug fixes, features, and breaking changes. This information helps the merger write the commit message that is published in the release notes for the module.

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

Merge actions for mergers

Merge by using "Squash and merge".

Use a relevant conventional commit message that is based on the PR contents and any release notes provided by the PR author.
The commit message determines whether a new version of the module is needed, and if so, which semver increment to use (major, minor, or patch).

LGTM - @vburckhardt happy to merge?
@jor2 can you create internal issue to enable CRA as a follow up action?

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket: