Code writer sections and interpolation

This commit is a major rehaul of CodeWriter that allows it to be extended, cleans up how blank line trimming works, adds a custom format for interpolating calls to CodeFormatter#write, and adds named sections that can be intercepted and extended.
Here are the rendered docs:
Helper class for generating code.
A CodeWriter can be used to write basically any kind of code, including whitespace sensitive and brace-based.
The following example generates some Python code:
 CodeWriter writer = CodeWriter.createDefault();
 writer.write("def Foo(str):")
         .indent()
         .write("print str")
 String code = writer.toString();

Code interpolation
The write(java.lang.Object, java.lang.Object...), openBlock(java.lang.String, java.lang.Object...), and closeBlock(java.lang.String, java.lang.Object...) methods take a code expression and a variadic list of arguments that are interpolated into the expression. Consider the following call to write:
 CodeWriter writer = CodeWriter.createDefault();
 writer.write("Hello, $L", "there!");
 String code = writer.toString();

In the above example, $L is interpolated and replaced with the relative argument there!.
A CodeWriter supports three kinds of interpolations: relative, positional, and named. Each of these kinds of interpolations pass a value to a formatter.
Formatters
Formatters are named functions that accept an object as input, accepts a string that contains the current indentation (it can be ignored if not useful), and returns a string as output. The CodeWriter registers three built-in formatters:

L: Outputs a literal value of an Object using the following implementation: (1) A null value is formatted as "". (2) An empty Optional value is formatted as "". (3) A non-empty Optional value is recursively formatted using the value inside of the Optional. (3) All other valeus are formatted using the result of calling String.valueOf(java.lang.Object).
S: Adds double quotes around the result of formatting a value first using the default literal "L" implementation described above and then wrapping the value in an escaped string safe for use in Java according to https://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.6. This formatter can be overridden if needed to support other programming languages.

Custom formatters can be registered using putFormatter(char, java.util.function.BiFunction).
Relative parameters
Placeholders in the form of "$" followed by a formatter name are treated as relative parameters. The first instance of a relative parameter interpolates the first positional argument, the second the second, etc.
 CodeWriter writer = CodeWriter.createDefault();
 writer.write("$L $L $L", "a", "b", "c");
 System.out.println(writer.toString());
 // Outputs: "a b c"

All relative arguments must be used as part of an expression and relative interpolation cannot be mixed with positional variables.
Positional parameters
Placeholders in the form of "$" followed by a positive number, followed by a formatter name are treated as positional parameters. The number refers to the 1-based index of the argument to interpolate.
 CodeWriter writer = CodeWriter.createDefault();
 writer.write("$1L $2L $3L, $3L $2L $1L", "a", "b", "c");
 System.out.println(writer.toString());
 // Outputs: "a b c c b a"

All positional arguments must be used as part of an expression and relative interpolation cannot be mixed with positional variables.
Named parameters
Named parameters are parameters that take a value from the context of the current state. They take the following form $:, where is a string that starts with a lowercase letter, followed by any number of [A-Za-z0-9_#$.] characters, and is the name of a formatter.
 CodeWriter writer = CodeWriter.createDefault();
 writer.putContext("foo", "a");
 writer.putContext("baz.bar", "b");
 writer.write("$foo:L $baz.bar:L");
 System.out.println(writer.toString());
 // Outputs: "a b"

Escaping interpolation
You can escape the "$" character using two "$$".
 CodeWriter writer = new CodeWriter().write("$$L");
 System.out.println(writer.toString());
 // Outputs: "$L"

Opening and closing blocks
CodeWriter provides a short cut for opening code blocks that that have an opening an closing delimiter (for example, "{" and "}") and that require indentation inside of the delimiters. Calling openBlock(java.lang.String, java.lang.Object...) and providing the opening statement will write and format a line followed by indenting one level. Calling closeBlock(java.lang.String, java.lang.Object...) will print a formatted statement and dedent.
 CodeWriter writer = CodeWriter.createDefault()
 .openBlock("if ($L) {", someValue)
 .write("System.out.println($S);", "Hello!")
 .closeBlock("}");

The above example outputs (assuming someValue is equal to "foo"):
 if (foo) {
     System.out.println("Hello!");
 }

Pushing and popping state
The CodeWriter can maintain a stack of transformation states, including the text used to indent, a prefix to add before each line, the number of times to indent, a map of context values, and whether or not whitespace is trimmed from the end of newlines. State can be pushed onto the stack using pushState() which copies the current state. Mutations can then be made to the top-most state of the CodeWriter and do not affect previous states. The previous transformation state of the CodeWriter can later be restored using popState().
The CodeWriter is stateful, and a prefix can be added before each line. This is useful for doing things like create Javadoc strings:
 CodeWriter writer = CodeWriter.createDefault();
 writer
         .pushState()
         .write("/**")
         .setNewlinePrefix(" * ")
         .write("This is some docs.")
         .write("And more docs.\n\n\n")
         .write("Foo.")
         .popState()
         .write(" *\/");

The above example outputs:
 /**
  * This is some docs.
  * And more docs.
  *
  * Foo.
  *\/
   ^ Minus this escape character

The CodeWriter maintains some global state that is not affected by pushState() and popState():

The number of successive blank lines to trim.
Code formatters registered through putFormatter(char, java.util.function.BiFunction)
The character used for newlines
Whether or not a trailing newline is inserted or removed from the result of converting the CodeWriter to a string.

Limiting blank lines
Many coding standards recommend limiting the number of successive blank lines. This can be handled automatically by CodeWriter by calling trimBlankLines. The removal of blank lines is handled when the CodeWriter is converted to a string. Lines that consist solely of spaces or tabs are considered blank. If the number of blank lines exceeds the allowed threshold, they are omitted from the result.
Trimming trailing spaces
Trailing spaces can be automatically trimmed from each line by calling trimTrailingSpaces().
In the the following example:
 CodeWriter writer = CodeWriter.createDefault();
 String result = writer.trimTrailingSpaces().write("hello ").toString();

The value of result contains "hello"
Extending CodeWriter
CodeWriter can be extended to add functionality for specific programming languages. For example, Java specific code generator could be implemented that makes it easier to write Javadocs.
 class JavaCodeWriter extends CodeWriter {
     public JavaCodeWriter javadoc(Runnable runnable) {
         pushState()
         write("/**")
         setNewlinePrefix(" * ")
         runnable.run();
         popState()
         write(" *\/");
         return this;
     }
 }

 JavaCodeWriter writer = new JavaCodeWriter();
 writer.javadoc(() -> {
     writer.write("This is an example.");
 });

Code sections
Named sections can be marked in the code writer that can be intercepted and modified by section interceptors. This gives the CodeWriter a lightweight extension system for augmenting generated code.
A section of code can be captured using a block state or an inline section. Section names must match the following regular expression: ^[a-z]+[a-zA-Z0-9_.#$]*$.
Block states
A block section is created by passing a string to pushState(). This string gives the state a name and captures all of the output written inside of this state to an internal buffer. This buffer is then passed to each registered interceptor for that name. These interceptors can choose to use the default contents of the section or emit entirely different content. Interceptors are expected to make calls to the CodeWriter in order to emit content. Interceptors need to have a reference to the CodeWriter as one is not provided to them when they are invoked. Interceptors are invoked in the order in which they are added to the CodeBuilder.
 CodeWriter writer = CodeWriter.createDefault();
 writer.onSection("example", text -> writer.write("Intercepted: " + text"));
 writer.pushState("example");
 writer.write("Original contents");
 writer.popState();
 System.out.println(writer.toString());
 // Outputs: "Intercepted: example\n"

Inline sections
An inline section is created using a special CodeWriter interpolation format that appends "@" followed by the section name. Inline sections are function just like block sections, but they can appear inline inside of other content passed in calls to write(java.lang.Object, java.lang.Object...). An inline section that makes no calls to write(java.lang.Object, java.lang.Object...) expands to an empty string.
Inline sections are created in a format string inside of braced arguments after the formatter. For example, ${L@foo} is an inline section that uses the literal "L" value of a relative argument as the default value of the section and allows interceptors registered for the "foo" section to make calls to the CodeWriter to modify the section.
 CodeWriter writer = CodeWriter.createDefault();
 writer.onSection("example", text -> writer.write("Intercepted: " + text"));
 writer.write("Leading<EMAIL_ADDRESS>text...", "foo");
 System.out.println(writer.toString());
 // Outputs: "Leading text...Intercepted: foo...Trailing text...\n"

It looks like a leftover import from #114 is causing Travis to fail.


Support @STRING, @̶P̶R̶E̶A̶M̶B̶L̶E̶ and @COMMENT and string concatenation (#) in BibTeX

Most info can be found here.

Welp, @PREAMBLE proves LaTeX-specific, guess I should have looked into that before blindly posting a feature-request.

The best description so far I found at https://github.com/aclements/biblib#recognized-grammar

Do you have a problem with the new implementation (apart from https://github.com/citation-js/citation-js/issues/73) or is this just additional information?

This issue should be fixed in v0.5.0-alpha.10. If not, please re-open the issue.

This issue should be fixed in v0.5.0-alpha.10. If not, please re-open the issue.


"parse_json_markdown" function improved / fixed.

"parse_json_markdown" function improved / fixed.
I've run into an LLm output parsing issue with an agent (type: conversational-react-description), it always raises llm output error/exception with this type of agent.
I couldn't wait for a fix to be released, so I fixed/improved the "parse_json_markdown" function to ensure parsing the json from LLM output, now it's working great for me, and I would like to contribute the fix :D
Note: I'm a Python expert, and I would like to contribute more, is there anyone that can help/guide me to do the testing for more complex contributions (any articles/blogs may help)?
Before submitting
Thanks in advance :D
Who can review?
@hwchase17
@vowelparrot

I've run a test on my local PC, and it seems that something is wrong with The Poetry configuration,
probably what caused Github testing got failed.
make test
poetry run pytest --disable-socket --allow-unix-socket tests/unit_tests/

  RuntimeError

  The Poetry configuration is invalid:
    - Additional properties are not allowed ('group' was unexpected)

  at /usr/lib/python3/dist-packages/poetry/core/factory.py:43 in create_poetry
       39│             message = ""
       40│             for error in check_result["errors"]:
       41│                 message += "  - {}\n".format(error)
       42│
    →  43│             raise RuntimeError("The Poetry configuration is invalid:\n" + message)
       44│
       45│         # Load package
       46│         name = local_config["name"]
       47│         version = local_config["version"]
make: *** [Makefile:38: test] Error 1

i added test cases in an attempt to fix this inside parse_json_markdown - can you review? if there are test cases that wont work, please add them! https://github.com/hwchase17/langchain/pull/5371

should be fixed by https://github.com/hwchase17/langchain/pull/5371

Please have a look at the proposed fix in #5428
The regex should be modified to do greedy matching up to the last triple backticks, otherwise if there is a code block included in the answer it stops the match at the start of the code block.


Some questions about xgboost-spark 0.72 for multi-class classification task

We I use xgboost-spark 0.72  to do 5-class classification task.
My xgboost parameters are set as flowings:
val xgbParam = Map(
"eta" -> 0.1,
"max_depth" -> 5,
//   "objective" -> "multi:softmax",
"objective" ->"multi:softprob",
"colsample_bytree" ->1,
"colsample_bylevel" ->1,
"num_class" -> 5,
"subsample" ->0.6
)
When I train xgboost model like:
val model = XGBoost.trainWithDataFrame(traindata, xgbParam, round = 50, nWorkers = 3, featureCol = "features", labelCol = "label")
I meet the problems:
Tracker started, with env={DMLC_NUM_SERVER=0, DMLC_TRACKER_URI=<IP_ADDRESS>, DMLC_TRACKER_PORT=9091, DMLC_NUM_WORKER=3}
[Stage 1:>                                                          (0 + 3) / 3]2018-10-24 02:46:16 WARN  BlockManager:66 - Putting block rdd_10_1 failed due to exception ml.dmlc.xgboost4j.java.XGBoostError: value 0 for Parameter num_class should be greater equal to 1.
2018-10-24 02:46:16 WARN  BlockManager:66 - Putting block rdd_10_2 failed due to exception ml.dmlc.xgboost4j.java.XGBoostError: value 0 for Parameter num_class should be greater equal to 1.
2018-10-24 02:46:16 WARN  BlockManager:66 - Putting block rdd_10_0 failed due to exception ml.dmlc.xgboost4j.java.XGBoostError: value 0 for Parameter num_class should be greater equal to 1.
2018-10-24 02:46:16 WARN  BlockManager:66 - Block rdd_10_2 could not be removed as it was not found on disk or in memory
2018-10-24 02:46:16 WARN  BlockManager:66 - Block rdd_10_1 could not be removed as it was not found on disk or in memory
2018-10-24 02:46:16 WARN  BlockManager:66 - Block rdd_10_0 could not be removed as it was not found on disk or in memory
2018-10-24 02:46:16 ERROR Executor:91 - Exception in task 2.0 in stage 1.0 (TID 3)
ml.dmlc.xgboost4j.java.XGBoostError: value 0 for Parameter num_class should be greater equal to 1
I can not find API  how to transform the parameter num_class to XGboost model,  do you know the way?
@hcho3

I think it is related to #3186.
For now, can you set the locale by setting environment variable LC_ALL to en_US.UTF-8?


doc: update comments in SetTheory.Game.Short

Fix capitalization of identifiers
Add details to a porting note that I was investigating while Parcly-Taxel fixed #5551

bors merge


Laravel 6 compatibility ?

https://github.com/vitalybaev/laravel5-dkim/pull/14

+1 for this. Is there a way to get this now without waiting for the merge?

You can use my fork until this gets merged: https://packagist.org/packages/ricardoboss/laravel-dkim (use version 0.5.0)


Cannot upload data to Tasks API: urllib3.exceptions.MaxRetryError SSLEOFError EOF occurred in violation of protocol (_ssl.c:2426)

My actions before raising this issue

[x] Read/searched the docs
[x] Searched past issues

Hi,
I am trying to use the CVAT SDK (low-level API) to automatically upload images to a certain Task. To do this, I follow the steps described in the documentation:  https://opencv.github.io/cvat/docs/api_sdk/sdk/lowlevel-api/#binary-data-in-requests-and-responses
Now this works well on my own debian system, but when I run it in a docker container it fails with the error
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host={host}, port=443): Max retries exceeded with url: {url}?org={org} (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:2426)'))).
I have verified/tried the following things:
[x] I have verified that my openssl version is identical inside and outside docker.
[x] set the verify_ssl=False in the api_client, and but to no avail.
[x] setting ssl_ca_cert to /etc/ssl/certs/ca-certicates.crt
[x] adding a delay between requests as some forums were suggesting a time delay.
The closest error I could find was this boto3 issue, which reports the exact same SSL error (_ssl.c:2426) and is also related to form/multi-part post requests.
reproducing

Python3.10.11
the docker image is the python 3.10 is 3.10-slim-bullseye
cvat_sdk version is 2.3.0

It would be much appreciated if anyone could help me resolve this!

Hi @timresink
I have tried to upload more data using the same guideline as yours, but I couldn't upload more data to a task
the code is below.
Using this code I faced an error HTTP response body: "Adding more data is not supported"
Your help will be very appreciated.
from pprint import pprint
    from cvat_sdk.api_client import Configuration, ApiClient, exceptions
    from cvat_sdk.api_client.models import *

    # Set up an API client
    # Read Configuration class docs for more info about parameters and authentication methods
    configuration = Configuration(
        host = "localhost:8080",
        username = 'username',
        password = 'password',
    )

    with ApiClient(configuration) as api_client:
        (_, response) = api_client.tasks_api.create_data(
        id=120, # this is the task ID
        data_request=models.DataRequest(
            client_files=[
                open('./Documents/profileimage_r.jpg', 'rb')
            ],
            image_quality=70,
        ),
        _content_type="multipart/form-data", # required
    )

using this code I got this error

ApiException                              Traceback (most recent call last)
 in
13
14 with ApiClient(configuration) as api_client:
---> 15     (_, response) = api_client.tasks_api.create_data(
16     id=120,
17     data_request=models.DataRequest(
~\anaconda3\lib\site-packages\cvat_sdk\api_client\api\tasks_api.py in create_data(self, id, data_request, _parse_response, _request_timeout, _validate_inputs, _validate_outputs, _check_status, _spec_property_naming, _content_type, _host_index, _request_auths, _async_call, **kwargs)
2226         kwargs['id'] = id
2227         kwargs['data_request'] = data_request
-> 2228         return self.create_data_endpoint.call_with_http_info(**kwargs)
2229
2230     def destroy(
~\anaconda3\lib\site-packages\cvat_sdk\api_client\api_client.py in call_with_http_info(self, _parse_response, _request_timeout, _validate_inputs, _validate_outputs, _check_status, _spec_property_naming, _content_type, _host_index, _request_auths, _async_call, **kwargs)
1056                         params['header']['Content-Type'] = content_types_list
1057
-> 1058         return self.api_client.call_api(
1059             self.settings['endpoint_path'], self.settings['http_method'],
1060             params['path'],
~\anaconda3\lib\site-packages\cvat_sdk\api_client\api_client.py in call_api(self, resource_path, method, path_params, query_params, header_params, body, post_params, files, response_schema, auth_settings, collection_formats, _async_call, _parse_response, _request_timeout, _host, _check_type, _request_auths, _check_status)
495
496         if not _async_call:
--> 497             return self.__call_api(**params)
498
499         return self.pool.apply_async(self.__call_api, (), kwds=params)
~\anaconda3\lib\site-packages\cvat_sdk\api_client\api_client.py in __call_api(self, resource_path, method, path_params, query_params, header_params, body, post_params, files, response_schema, auth_settings, collection_formats, _parse_response, _request_timeout, _host, _check_type, _check_status, _request_auths)
271         except ApiException as e:
272             e.body = e.body.decode('utf-8')
--> 273             raise e
274
275         self.last_response = response
~\anaconda3\lib\site-packages\cvat_sdk\api_client\api_client.py in __call_api(self, resource_path, method, path_params, query_params, header_params, body, post_params, files, response_schema, auth_settings, collection_formats, _parse_response, _request_timeout, _host, _check_type, _check_status, _request_auths)
263         try:
264             # perform request and return response
--> 265             response = self.request(
266                 method, url, query_params=query_params, headers=header_params,
267                 post_params=post_params, body=body,
~\anaconda3\lib\site-packages\cvat_sdk\api_client\api_client.py in request(self, method, url, query_params, headers, post_params, body, _parse_response, _request_timeout, _check_status)
527                                             body=body)
528         elif method == "POST":
--> 529             return self.rest_client.POST(url,
530                                          query_params=query_params,
531                                          headers=headers,
~\anaconda3\lib\site-packages\cvat_sdk\api_client\rest.py in POST(self, url, headers, query_params, post_params, body, _parse_response, _request_timeout, _check_status)
254     def POST(self, url, headers=None, query_params=None, post_params=None,
255              body=None, _parse_response=True, _request_timeout=None, _check_status=True):
--> 256         return self.request("POST", url,
257                             headers=headers,
258                             query_params=query_params,
~\anaconda3\lib\site-packages\cvat_sdk\api_client\rest.py in request(self, method, url, query_params, headers, body, post_params, _parse_response, _request_timeout, _check_status)
209                 raise ServiceException(http_resp=r)
210
--> 211             raise ApiException(http_resp=r)
212
213         return r
ApiException: Status Code: 400
Reason: Bad Request
HTTP response headers: HTTPHeaderDict({'Allow': 'GET, POST, HEAD, OPTIONS', 'Content-Length': '35', 'Content-Type': 'application/vnd.cvat+json', 'Date': 'Tue, 13 Jun 2023 08:52:37 GMT', 'Referrer-Policy': 'same-origin', 'Server': 'Apache', 'Vary': 'Accept,Origin,Cookie', 'X-Content-Type-Options': 'nosniff', 'X-Frame-Options': 'DENY', 'X-Request-Id': '23d085c8-6df1-4725-944d-353e3bbd90a8'})
HTTP response body: "Adding more data is not supported"


Add ability to specify Testcafe Configuration Path

Purpose
Add the ability to specify the Testcafe config to use, instead of the default .testcaferc.json file. This is very useful for Monorepos, Pipelines and QoL for developers.
Approach
I added this functionality by extending the object passed into the createTestCafe method and adding checks to ensure the addition doesn't cause a breaking change.
References
This is a solution to issue #3428
Pre-Merge TODO

[x] Write tests for your proposed changes
[ ] Make sure that existing tests do not fail

@miherlosev Will look at making these changes this evening ready for tomorrow. Also need to update the docs so will do that.

@miherlosev Your comments should be resolved now, and the docs have been updated to include the new functionality. Any problems let me know.

Looks like the "continuous-integration-azure-mobile" check failed due to it taking too long, I'm guessing I can leave that to you guys to re-run or whatever?

https://github.com/DevExpress/testcafe/pull/6035

Looks like the "continuous-integration-azure-mobile" check failed due to it taking too long, I'm guessing I can leave that to you to re-run or whatever?

Yes, we will rerun this task.
@DIRECTcut check please documentation and option CLI description

@Chris-Greaves
Hello and thank you for this awesome PR!
As our contribution guidelines suggest, documentation for new features should be committed to the new-docs branch. This is necessary to keep our website ready to publish at all times.
Please transfer all documentation changes to a new branch and open a pull request from there.
When the new PR is ready, feel free to request a review from me. Please open the branch for commits (I may need to commit some edits).
Thanks.

@DIRECTcut I have created a new PR (#6053) for the docs and have referenced this outstanding PR. It should be open for you to make changes as well if needed. I have also reverted the changes to the docs from this PR so it isn't duplicated.
Just let me know if there is anything else you need me to do 😄

@miherlosev I noticed that my branch is something like 13 commits behind master, did you need me to rebase the changes or anything?

All tests are green

all tasks are green (except few Travis CI tasks) https://github.com/DevExpress/testcafe/pull/6035#issuecomment-801017080
all Travis CI tasks are green https://travis-ci.com/github/testcafe-build-bot/testcafe/builds/220355952

The feature will be shipped with the next TestCafe version. We are going to release it in a few days.


Convenience method for generates()->returns()

I'm not sure if we already discussed this or not - but a really common pattern under Recoil / PHP 7 is to use generates()->returns() where you simply want a stubbed coroutine to return a specific value.
Perhaps we could add a second parameter to generates(), which is the return value for PHP 7 generators:
generates($values = array(), $returnValue = null)
So usage is imply:
$stub->generates([], new Thing());
Thoughts?

At the moment, generates() with multiple values is equivalent to calling it multiple times. This is very useful for the current incarnation of Recoil, where this is a real thing:
$stub->generates([Recoil::return_('a')], [Recoil::return_('b')]);

And is also parallel to other similar methods, e.g. returns('a', 'b') and throws($exceptionA, $exceptionB). We could implement a special method like generatesReturn() or something, but it's not immediately appealing.

Ah, yes of course, and generatesReturn() is not much more concise than the current behaviour, so fair enough. I'd say it's not worth polluting the stub interface for this, but two things that are worth noting:

The examples you gave are exactly what I'm doing with the PHP 7 version, so they would be replaced with something like $stub->generates()->returns('a', 'b') ... I think?
This is now the most common case for generator mocking when it comes to coroutines - which makes sense, it's directly equivalent of the regular returns().

Maybe we can revisit it once you're using Recoil+PHP 7, it's certainly not a big deal. I'll close for now.

Reopening for discussion. As discussed externally, this kind of interface currrently seems like the best solution:
$stub->generates(
    ['yieldA', 'yieldB'], 'returnA', // first generator
    ['yieldC', 'yieldD'], 'returnB'  // second generator
);

However, this doesn't account for a similar idea with throwing exceptions as the generators "response" / end event.
I can think of a few options:

Don't provide a solution for throwing.
Throw if the "return" value is an exception, and require the user to use more advanced syntax in the edge-case of actually returning an exception.
Have "magic" keys in the yielded values that allow for throwing / returning, i.e. $stub->generates(['_return'=> $value]) or $stub->generates(['_throw'=> $exception]).

@jmalloc thoughts?

I was initially leaning towards (1), but I could be swayed to (2) by a stiff breeze.
The usual caveats apply to squishy input, but because this is only a convenience function and you can always use the extended form if you don't know what kind of value you'll be returning for some reason.


Create Serializers for Models

Create Serializers for Models

Models serializers added. Closing issue.
Serializer will be updated depending on requirements during connecting with other servers.


Github Checks > Token is not required if you run reviewdog in Travis or AppVeyor.

How does this work?
I just noticed that CircleCI has launched support for Github Checks API and wonder how I could use Reviewdog on CircleCI without the need of the broken Doghouse
I cannot find anything in the code that takes care of this Travis / AppVeyor "magic".

@haya14busa @Slowki Do you know how this works?


Minor wording error in Section 9.2 Reporting equivalence tests

Hey Daniel, I am reading you chapter on Equivalence Tests in your OA book. It's fantastic! I've spotted a minor error under Section 9.2 Reporting equivalence tests: it reads "If both a null hypothesis test and a significant test are non-significant, the finding is best described as 'inconclusive'". Shouldn't the sentence read "If both a null hypothesis test and an equivalence test are non-significant, the finding is best described as 'inconclusive" (rather than a "significant test"). Best wishes, Charlotte

thanks for the feedback!


Checking access token

Hi, I have getting page not found and I have looked in the Laravel log file and not is in it.
Basically i have an access token which i am passing like this

my route is set up like this
Route::get('protected-resource', ['middleware' => 'oauth', function() {
    // return the protected resource

    Route::get('/profile', function() {
        echo Authorizer::getResourceOwnerId();
    });
}]);

I don't understand what I have done wrong, here. Thanks

If you get a 404 it has nothing to to with this package. the route path you're hitting is probably wrong.

Hi Lucadegasperi thanks for your response. I believe it is because of i moved /profile outside the end point
Route::get('/profile', function() {
echo "hello";
});
I get this response but when i move it into endpoint again. I get the error.
This is my kenel.php
protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    'LucaDegasperi\OAuth2Server\Middleware\OAuthExceptionHandlerMiddleware',
];

/**
 * The application's route middleware.
 *
 * @var array
 */
protected $routeMiddleware = [
    'csrf' => '\App\Http\Middleware\VerifyCsrfToken',
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'oauth' => 'LucaDegasperi\OAuth2Server\Middleware\OAuthMiddleware',
    'oauth-owner' => 'LucaDegasperi\OAuth2Server\Middleware\OAuthOwnerMiddleware',
    'check-authorization-params' => 'LucaDegasperi\OAuth2Server\Middleware\CheckAuthCodeRequestMiddleware',
];

I am wrong if i need to add anything else to get this package working in other for it to see the endpoint and verify the access token. Thanks

I have also tried usign group has this is ideally the way i will be using this.
Route::group(['prefix' => 'v1', 'middleware' => 'oauth'], function() {
// return the protected resource
 Route::get('/profile', function() {
 echo Authorizer::getResourceOwnerId();
});

});
and i am still gettting the same error

Oh I see, the access token needs to be passed in either the query string (not the payload) or as an authorization header. Weird you get a 404 though.

Route::group(['prefix' => 'v1', 'middleware' => 'oauth'], function() {
// return the protected resource
 Route::get('/profile', function() {
 echo Authorizer::getResourceOwnerId();
});

});
I am getting a 404

Does the route work without the middleware? I see that you've added a v1 prefix. that means your route url should be /v1/profile and not /profile.

Lucadegasperi issues solved. Thanks again but one more question. Why didn't it work like this
Route::get('protected-resource', ['middleware' => 'oauth', function() {
// return the protected resource
Route::get('/profile', function() {
    echo Authorizer::getResourceOwnerId();
});

}]);
the way you have shown in the guide?

You can't put a route::get inside another one, you can only put route::get inside a route::group eventually.

On that note, this issue is now closed. Thank for again lucadegasperi  much appreciated, have a good day.


fixed string inequality comparison

Really little fix.

Thanks!
@all-contributors please add @HenryDayHall for code


Consider using a database wrapper

There are several database wrappers for node, ueberdb being one of my favorites..  Instead of assuming everyone has mongodb how about we use that?  https://github.com/pita/ueberDB

Hi John...I'm trying to do the same. changing MongoDB with some other NoSQL database. did you have any progress with this???

Hey @asavpatel92 I didn't do anything towards this yet and it's not in my todo list right now.


[FEATURE] push notifications for new jobs

We could add client side web push notifications.
To make it work we just need to add sw.js and html manifest
It now works on apple devices - finally apple is following sone standards :)
this will allow users to get web push based notifications. They can also get A2HS prompts and so install the web app on their mobile or desktop IF they want.
Let me know if you are into this idea .

@gedw99 that's a great idea! thank you. I don't have the budget for this item right now so i might prioritise it in the near future, but feel free to open a PR if you want to contribute

It’s not that disruptive. You can have a sw and not have to make it a PWA. But not 100% sure.
All you want is notifications. You don’t want all the other fancy pants aspect of SW like caching , preload, etc as they just make you have another tier to your archi stock.
At the moment you burn dollars on sms sending ?

Right now notifications are sent via emails only very cheaply, If you have in mind how to implement notifications, please feel free to open a draft PR

I use this https://github.com/binwiederhier/ntfy


Alternate email or sub-account on customer registration [Feature Request]

I'm registering some clients and what I'm missing is an alternative email or a sub account to register more than one person, such as:
You can register a customer as the account holder and another as the person responsible for the payment, which in this case would be a subaccount.
The advantage of a sub-account is that not just one person will have access to that customer's dashboard, where more than one person can manage the same account.
Another advantage is that the account owner will be able to register a developer within his account, so that the developer can talk directly to us, without the need for the developer to have full access to the customer's account.
He will only have access to what the account owner authorizes him to do.

When I read the term sub-accounts I imagine something really complex, but basically what we are talking about (at the simplest level) is just being able to share access to an account between more than one user, is that right?

Simplest method would be add a new column and use the UserID as the owner. Question only how far do we want to implement it if it is a full option to set access so that a sub account can't create/cancel new orders that it will become way to complicated...

Quando leio o termo subcontas imagino algo realmente complexo, mas basicamente o que estamos falando (no nível mais simples) é apenas poder compartilhar o acesso a uma conta entre mais de um usuário, está certo?

When I read the term sub-accounts I imagine something really complex, but basically what we are talking about (at the simplest level) is just being able to share access to an account between more than one user, is that right?

Yes, that would be more or less, but in a system that I have, the customer can register to buy the things he needs, and then he can register other people for!

Why did you close the issue?

Why did you close the issue?

Thanks for talking, I ended up closing it by accident!

This would be a nice feature. Though there must be some kind of a permission system like Jaap said.


Updated quickstart.po

resolve https://github.com/secretflow/scql/issues/63

ref to

update your title.


Add scopes for on-demand=true client

Add scopes for on-demand=true client and login with azure client

/azp run java - spring - tests

Hi, @lzc-1997-abel , please resolve the conflicts.

/check-enforcer override


e2e: fix Kubernetes package repos on Debian and Ubuntu

Use new pkgs.k8s.io instead of deprecated packages.cloud.google.com.

Fixes the problem that creating new e2e vm's running k8s with distro=debian or distro=ubuntu-22.04 did not work.
Does not fix distro=fedora or distro=opensuse. Those need to be fixed in other PRs.


Revert "Remove ruby 2.0.0 everywhere."

This reverts commit de97578cab18816a9cd1aeba10e796cf10eb0649.
Ruby 2.0.0 is still supported by vCloud Tools 1 2 and we want to run
our integration tests with the oldest version we support as it's most
likely to catch any breaking changes.

If we still need ruby 2.0.0, We should probably be using the latest (2.0.0-p647).
Having said that, this is fine to merge if it's needed more quickly than that.

Discussed in metaspace with @alext: We're happy using this version for what we need currently.


Dimensional Mineshaft piles up resources once reloaded after chunk unload

possible issue regarding the djinni ore miner. When unloaded, the miner continues to pile up resources and dumps them all out at once immediately once the area reloads, resulting in a TON of items lagging out servers
the longer the area is unloaded, the worse the reload is (there was one person online when I logged in and tps dropped to 2
also the more ore miners that are added into the system the worse the pile up gets

Does not reproduce locally, and it seems like this should not be possible based on the code (cannot mine twice in a tick / always restarts a local tick countdown / no dependency on game time). Might be interference by a performance mod or tick simulator mod.

Does not reproduce locally, and it seems like this should not be possible based on the code (cannot mine twice in a tick / always restarts a local tick countdown / no dependency on game time). Might be interference by a performance mod or tick simulator mod.

This was a side effect of speeding up ticks with another mod. Unless we can somehow improve recipe lookup speed further there is not much we can do. Closing for now.

This was a side effect of speeding up ticks with another mod. Unless we can somehow improve recipe lookup speed further there is not much we can do. Closing for now.


Updated README.md

The document updated to address issue #81

Please close issue #81 after approving this pull request. Thanks.

Creating another pull request due to Jorg's comment on #81


Band reference interface

It would be great if this library also supported references to bands by names rather than their indices.
While a 3d array arr[y, x, band] interface works great for certain algorithms, a dict of 2d arrays interface {band_name: arr[y, x]} would make the code more readable and maintainable at the cost of little or no performance penalties for most algorithms.
Of course, this would also mean that standard ODC dask.array-backed xarray.Dataset interface would just work, without this library needing to depend on either of those libraries.
Under this scheme, for example,
def predict(self, pre, pst):
    pre_nbr = (pre[:, :, 6] - pre[:, :, 8]) / (pre[:, :, 6] + pre[:, :, 8])
    pst_nbr = (pst[:, :, 6] - pst[:, :, 8]) / (pst[:, :, 6] + pst[:, :, 8])
    return pre_nbr - pst_nbr

would look like
def predict(self, pre, pst):
    pre_nbr = (pre['nbar_B06'] - pre['nbar_B08']) / (pre['nbar_B06'] + pre['nbar_B08'])
    pst_nbr = (pst['nbar_B06'] - pst['nbar_B08']) / (pst['nbar_B06'] + pst['nbar_B08'])
    return pre_nbr - pst_nbr

note that these band names should work with ODC. Or maybe even better
def predict(self, pre, pst):
    pre_nbr = (pre['nbar_red_edge_2'] - pre['nbar_nir_1']) / (pre['nbar_red_edge_2'] + pre['nbar_nir_1'])
    pst_nbr = (pst['nbar_red_edge_2'] - pst['nbar_nir_1']) / (pst['nbar_red_edge_2'] + pst['nbar_nir_1'])
    return pre_nbr - pst_nbr

or something like that, if I recall the band names correctly. This of course needs a dictionary to translate 'nbar_B08' to 'nbar_nir_1' somewhere in this code base.

Looking at https://github.com/daleroberts/nrt-predict/blob/7684183440c5fe6c1cc4251677b3f0e9b79f63c2/nrtpredict.py#L79 and https://github.com/daleroberts/nrt-predict/blob/7684183440c5fe6c1cc4251677b3f0e9b79f63c2/nrtpredict.py#L151, I would argue that loading data into a dict data would actually improve readability of the loading routines too!

I have substantially rewritten the interface and feature generation now. It should now be able to handle that the case where the data is given as a dict of bands, e.g., {'B02': array, 'B03': array} but also (my preferred) dense array style. Not that you guys are interested, but I've also totally reworked nrtpredict so that it only loads the bands required by the model which makes it much faster.

I think people using it will appreciate fast!


[BUG] App broken after rebuild

Information

Apktool Version (apktool -version) - 2.7.0
Operating System (Mac, Linux, Windows) - Windows 7
APK From? (Playstore, ROM, Other) - https://apkpure.com/tetra-filer-free/jp.main.brits.android.filer.free/download/2114322-APK

no error message on decode and rebuild
app can install and run,  but crash when open files
I decode two apk and compare it
the broken app missing some string in xml
original : style="?attr/actionButtonStyle"
rebuild  : style="?actionButtonStyle"
original apk and rebuild apk
https://mega.nz/folder/c34BiQID#L8XI9ezzQfjRqOeUTUKAFA

Thanks for the report, looks like a duplicate of: https://github.com/iBotPeaches/Apktool/issues/2983


Fix legacy facts check

Fix for https://github.com/puppetlabs/puppet-lint/issues/106
@chelnak I know this is not is not very elegant but I think it is the simplest change I can do without needing to change puppet-lint's code much. Let me know.

@danifr I think we need to investigate this.
Would you be able to provide the following debug info form your environment:
gem list | grep puppet-lint
pdk-templates version as listed in your metadata.json

I am using 3.3.0, but this issue is very easy to reproduce.
Just create a new file with a top level legacy fact like for example $::fqdn
danielfr@latdfr /t/test (master)> cat test.pp
class role_infra::test {
  apache::vhost {'https.test_reports':
    servername      => $::fqdn,
  }
}

Apply puppet-lint to fix it...
danielfr@latdfr /t/test (master)> puppet-lint --fix test.pp
ERROR: role_infra::test not in autoload module layout on line 1 (check: autoloader_layout)
WARNING: class not documented on line 1 (check: documentation)
FIXED: legacy fact 'fqdn' on line 3 (check: legacy_facts)
FIXED: top scope fact instead of facts hash on line 3 (check: top_scope_facts)

The resulting output is wrong.
danielfr@latdfr /t/test (master) [1]> cat test.pp
class role_infra::test {
  apache::vhost {'https.test_reports':
    servername      => $facts['facts['networking']['fqdn']'],
  }
}

Sure.
~> gem list | grep puppet-lint
puppet-lint (3.3.0)

Not sure what you mean with:
pdk-templates version as listed in your metadata.json

@danifr Thanks! It's interesting that your gem list is not listing any plugins or additional versions.
That throws out one of my theories.
@GSPatton is going to try and replicate this today.

Thanks, let me know in case I can help with something else :)

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

Ah, nice thank you very much :)
Are you planning on releasing a new version including the patch? or shall I get the files directly and try them on my local installation?


SCP/SFTP Support

I am missing SCP/SFTP support, it is one the most essential features of sharex for me, would be nice if you could add this some day!

Thanks for the suggestion :) I'll get on it as soon as I'm in a working condition again.

Well I am back from the dead. I'll be tackling this problem soon, but I have some older (#45), and frankly bigger, issues to address. Happy holidays :)


Updated README

Codecov Report

Merging #263 into master will increase coverage by 0.3%.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master     #263     +/-   ##
=========================================
+ Coverage   71.26%   71.56%   +0.3%
=========================================
  Files         148      148
  Lines        3626     3626
  Branches      142      142
=========================================
+ Hits         2584     2595     +11
+ Misses       1042     1031     -11

Impacted Files
Coverage Δ

...e/akka/actor/process_index/ProcessIndexProto.scala
71.42% <0%> (+3.06%)
:arrow_up:

...er/runtime/akka/actor/serialization/ProtoMap.scala
100% <0%> (+5%)
:arrow_up:

.../serialization/protomappings/ActorRefMapping.scala
100% <0%> (+100%)
:arrow_up:

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 189f726...c6fd110. Read the comment docs.


Font size conflicts within gist code blocks

Describe the bug
When we use gist shortcode to display GitHub Gist codes, e.g.
{{< gist jmooring 50a7482715eac222e230d1e64dd9a89b >}}

In current version (https://github.com/lxndrblz/anatole/commit/38de0c9dfe6bb598bef0effb980bd001553ef59c), it shows like this:

Some letters are bigger and some are smaller. And it applies to all desktop/mobile browsers.
Additional context
I believe this issue is similar to https://github.com/lxndrblz/anatole/issues/406, which causes by the wildcard font-size setting.
https://github.com/lxndrblz/anatole/blob/38de0c9dfe6bb598bef0effb980bd001553ef59c/assets/scss/partials/_base.scss#L3-L7

To temporarily fix this problem, put this code into your custom.css file:
* {
    font-size: inherit;
}

body {
    font-size: 1.6rem;
}

Also, there is a giant font size bug in Gist code blocks with iOS Safari view:

And it cannot be reproduced in Chrome/Firefox Desktop or even iPad. Adding this code to the custom css file will fix this problem, but still, I don't know why... 😂
html {
    -webkit-text-size-adjust: 100%;
}


Fixed incorrect link to JMS Serializer.

I linked directly to the documentation versus linking to the github page.

Thanks @BallisticPain !

Happy to help!


Virtual Scroller

Issue Type

[x] Enhancement Request

Is there any plan to implement a Virtual Scroller?  Would be pretty neat to be able to pull a few thousands rows and just render accordingly as opposed to pagination.  It is becoming quite a popular method of rendering tables and lists.  Please see the following examples.
https://github.com/Akryum/vue-virtual-scroller
https://github.com/tangbc/vue-virtual-scroll-list

I too would love to see this feature implemented. Thanks in advance.

Yeah its a great feature and I am finding it extremely difficult to implement into my application.  Not many vue scrollers work well with tables, they all seem to have caveats or are overly complex.  If someone with the knowledge can handle this, it will continue to set vue-good-table above the rest!

Would be great to have it - no table currently supports it

hi any update?

The company I work for extensively uses this package to show data to our users. Has any progress been made on this? This would significantly advance this packages capabilities. We may have to look for other alternatives. Seems as if this has been ignored.

Hi, any update on this?


Do many things and improve this in general

I did the thing

fr sorry that i forgor
xdd i have memory loss


GC: refreshLatestSummaryFromSnapshot does not update referenceUsedRoutes for DDS

#5007 moved the GC details for DDSes to be at the data store level. However, refreshLatestSummaryFromSnapshot was not updated and still assumes that every layer has its own GC details blob in the summary. We need to update it so that it correctly updates the GC details for the DDSes from data store's GC details blob.

Tracked by AB#378


Add ability to filter potential demo cards

I think that this is a broadly useful functionality. It is useful for me because I use
ReTestItems.jl in a package I maintain, and so I have _test.jl files throughout the
repo, including in my examples directory.

Oops, the new commit seems to introduce some breaking change that I failed to foresee. @adamslc could you help check and fix it?

 Fixed now, and tests pass locally.


[Enum Request] - Table 12203 "Fattura Header" - Field 7 "Entry Type"

Hello,
we ask you to transform the Option field
7 "Entry Type"
on Table 12203 "Fattura Header" to "Enum", in order to allow us to extend it with custom values.
Thank you !

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 51600.


Traefik not recognizing labels for BC20.1 container

PLEASE DO NOT INCLUDE ANY PASSWORDS OR TOKENS IN YOUR ISSUE!!!
Describe the issue
We are using traefik for exposing containers externally.
We recently decided to start the process of upgrading our containers from 18.4 to 20.1.
When we create a container for version 20.1, traefik no longer registers the labels and therefore we get a "Bad Gateway" error when browsing the URL.
Works fine for version 18.4, scripts for creating containers are identical except version.
Scripts used to create container and cause the issue
$containerName = "KvikTestBC20"
$authenticationEmail =<EMAIL_ADDRESS>$cetificatefile = "C:\Temp\wildcard_kvik_com_2022.pfx"

$bcartifact = Get-BCArtifactUrl -type OnPrem -country "w1" -version "20.1" -select Latest

$params = @{
    "auth"                = 'AAD'
    "containerName"       = $containerName
    "multitenant"         = $false
    "isolation"           = 'process'
    "artifacturl"         = $bcartifact
    "updateHosts"         = $true
    "useTraefik"          = $true
    "myscripts"           = @("C:\Powershell Scripts\SetupCertificate.ps1", $cetificatefile)
    "publicDnsName"       = 'bc.kvik.com'
    "authenticationEMail" = $authenticationEmail
}

New-BCContainer @params `
    -accept_eula `
    -accept_outdated `
    -Credential $Credential `
    -doNotExportObjectsToText `
    -shortcuts CommonDesktopFolder

Full output of scripts
20.1
BcContainerHelper is version 3.0.10
BcContainerHelper is running as administrator
Hyper-V is Disabled
UsePsSession is True
Host is Microsoft Windows Server 2019 Standard - ltsc2019
Docker Client Version is 20.10.6
Docker Server Version is 20.10.6
Removing Session KvikTestBC20
Removing container KvikTestBC20
Removing entries from hosts
Removing KvikTestBC20 from container hosts file
Removing KvikTestBC20-* from container hosts file
Removing Desktop shortcuts
Removing C:\ProgramData\BcContainerHelper\Extensions\KvikTestBC20
Fetching all docker images
Fetching all docker volumes
Enabling SSL as otherwise all clients will see mixed HTTP / HTTPS request, which will cause problems e.g. on the mobile and modern windows clients
Using image mcr.microsoft.com/businesscentral:10.0.17763.3046
PublicDnsName is bc.kvik.com
Creating Container KvikTestBC20
Style: onprem
Multitenant: No
Version: 20.1.39764.39901
Platform: 20.0.39668.39849
Generic Tag: <IP_ADDRESS>
Container OS Version: 10.0.17763.3046 (ltsc2019)
Host OS Version: 10.0.17763.3046 (ltsc2019)
Using process isolation
Using locale en-US
Adding special CheckHealth.ps1 to enable Traefik support
Disabling the standard eventlog dump to container log every 2 seconds (use -dumpEventLog to enable)
Additional Parameters:
-e webserverinstance=KvikTestBC20
-e publicdnsname=bc.kvik.com
-l "traefik.protocol=https"
-l "traefik.web.frontend.rule=PathPrefix:/KvikTestBC20"
-l "traefik.web.port=443"
-l "traefik.soap.frontend.rule=PathPrefix:/KvikTestBC20soap;ReplacePathRegex: ^/KvikTestBC20soap(.*) /BC$1"
-l "traefik.soap.port=7047"
-l "traefik.rest.frontend.rule=PathPrefix:/KvikTestBC20rest;ReplacePathRegex: ^/KvikTestBC20rest(.*) /BC$1"
-l "traefik.rest.port=7048"
-l "traefik.dev.frontend.rule=PathPrefix:/KvikTestBC20dev;ReplacePathRegex: ^/KvikTestBC20dev(.*) /BC$1"
-l "traefik.dev.port=7049"
-l "traefik.snap.frontend.rule=PathPrefix:/KvikTestBC20snap;ReplacePathRegex: ^/KvikTestBC20snap(.*) /BC$1"
-l "traefik.snap.port=7083"
-l "traefik.dl.frontend.rule=PathPrefixStrip:/KvikTestBC20dl"
-l "traefik.dl.port=8080"
-l "traefik.dl.protocol=http"
-l "traefik.enable=true"
-l "traefik.frontend.entryPoints=https"
--env customNavSettings=PublicODataBaseUrl=https://bc.kvik.com/KvikTestBC20rest/odata,PublicSOAPBaseUrl=https://bc.kvik.com/KvikTestBC20soap/ws,PublicWebBaseUrl=https://bc.kvik.com/KvikTestBC20
Files in C:\ProgramData\BcContainerHelper\Extensions\KvikTestBC20\my:
- AdditionalOutput.ps1
- CheckHealth.ps1
- MainLoop.ps1
- SetupCertificate.ps1
- SetupVariables.ps1
- updatehosts.ps1
- wildcard_kvik_com_2022.pfx
Creating container KvikTestBC20 from image mcr.microsoft.com/businesscentral:10.0.17763.3046
b12ed367426f991e829c82e3bad5523cda2c01d8855d37734aeffad569a2e95b
Waiting for container KvikTestBC20 to be ready
Using artifactUrl https://bcartifacts.azureedge.net/onprem/20.1.39764.39901/w1
Using installer from C:\Run\150-new
Installing Business Central
Installing from artifacts
Starting Local SQL Server
Starting Internet Information Server
Copying Service Tier Files
c:\dl\onprem\20.1.39764.39901\platform\ServiceTier\Program Files
c:\dl\onprem\20.1.39764.39901\platform\ServiceTier\System64Folder
Copying PowerShell Scripts
c:\dl\onprem\20.1.39764.39901\platform\WindowsPowerShellScripts\Cloud\NAVAdministration
c:\dl\onprem\20.1.39764.39901\platform\WindowsPowerShellScripts\WebSearch
Copying Web Client Files
c:\dl\onprem\20.1.39764.39901\platform\WebClient\Microsoft Dynamics NAV
Copying Client Files
c:\dl\onprem\20.1.39764.39901\platform\LegacyDlls\program files\Microsoft Dynamics NAV
c:\dl\onprem\20.1.39764.39901\platform\LegacyDlls\program files\Microsoft Dynamics NAV
c:\dl\onprem\20.1.39764.39901\platform\LegacyDlls\systemFolder
Copying ModernDev Files
c:\dl\onprem\20.1.39764.39901\platform
c:\dl\onprem\20.1.39764.39901\platform\ModernDev\program files\Microsoft Dynamics NAV
Copying additional files
Copying ConfigurationPackages
C:\dl\onprem\20.1.39764.39901\platform\ConfigurationPackages
Copying Test Assemblies
C:\dl\onprem\20.1.39764.39901\platform\Test Assemblies
Copying Applications
C:\dl\onprem\20.1.39764.39901\platform\Applications
Copying dependencies
Copying ReportBuilder
Importing PowerShell Modules
Restoring CRONUS Demo Database
Setting CompatibilityLevel for CRONUS on localhost\SQLEXPRESS
Modifying Business Central Service Tier Config File for Docker
Creating Business Central Service Tier
Installing SIP crypto provider: 'C:\Windows\System32\NavSip.dll'
Starting Business Central Service Tier
Importing license file
Stopping Business Central Service Tier
Installation took 101 seconds
Installation complete
Initializing...
Setting host.docker.internal to <IP_ADDRESS> in container hosts file (copy from host hosts file)
Setting gateway.docker.internal to <IP_ADDRESS> in container hosts file (copy from host hosts file)
Setting kubernetes.docker.internal to <IP_ADDRESS> in container hosts file (copy from host hosts file)
Setting host.containerhelper.internal to <IP_ADDRESS> in container hosts file
Starting Container
Hostname is KvikTestBC20
PublicDnsName is bc.kvik.com
Using AccessControlService Authentication
Certificate File Thumbprint F1FAEFDBEF1AE307D144FB8577549D07B69B2901
Import Certificate to LocalMachine\my
Modifying Service Tier Config File with Instance Specific Settings
Modifying Service Tier Config File with settings from environment variable
Setting PublicODataBaseUrl to https://bc.kvik.com/KvikTestBC20rest/odata
Setting PublicSOAPBaseUrl to https://bc.kvik.com/KvikTestBC20soap/ws
Setting PublicWebBaseUrl to https://bc.kvik.com/KvikTestBC20
Starting Service Tier
CertificateThumprint F1FAEFDBEF1AE307D144FB8577549D07B69B2901
Registering event sources
Creating DotNetCore Web Server Instance
Using application pool name: KvikTestBC20
Using default container name: NavWebApplicationContainer
Copy files to WWW root C:\inetpub\wwwroot\KvikTestBC20
Create the application pool KvikTestBC20
Create website: NavWebApplicationContainer with SSL
Update configuration: navsettings.json
Done Configuring Web Client
Creating http download site
Setting SA Password and enabling SA
Creating<EMAIL_ADDRESS>as SQL User and add to sysadmin
Creating SUPER user
WARNING: The password that you entered does not meet the minimum requirements.
It should be at least 8 characters long and contain at least one uppercase
letter, one lowercase letter, and one number.
Container IP Address: <IP_ADDRESS>
Container Hostname  : KvikTestBC20
Container Dns Name  : bc.kvik.com
Web Client          : https://bc.kvik.com/KvikTestBC20/
Dev. Server         : https://bc.kvik.com
Dev. ServerInstance : BC
Setting KvikTestBC20 to <IP_ADDRESS> in host hosts file

Files:
http://bc.kvik.com:8080/ALLanguage.vsix

Container Total Physical Memory is 64.0Gb
Container Free Physical Memory is 22.9Gb

Initialization took 66 seconds
Ready for connections!
Reading CustomSettings.config from KvikTestBC20
Creating Desktop Shortcuts for KvikTestBC20
Container KvikTestBC20 successfully created
Because of Traefik, the following URLs need to be used when accessing the container from outside your Docker host:
Web Client:        https://bc.kvik.com/KvikTestBC20
SOAP WebServices:  https://bc.kvik.com/KvikTestBC20soap
OData WebServices: https://bc.kvik.com/KvikTestBC20rest
Dev Service:       https://bc.kvik.com/KvikTestBC20dev
Snapshot Service:  https://bc.kvik.com/KvikTestBC20snap
File downloads:    https://bc.kvik.com/KvikTestBC20dl

Use:
Get-BcContainerEventLog -containerName KvikTestBC20 to retrieve a snapshot of the event log from the container
Get-BcContainerDebugInfo -containerName KvikTestBC20 to get debug information about the container
Enter-BcContainer -containerName KvikTestBC20 to open a PowerShell prompt inside the container
Remove-BcContainer -containerName KvikTestBC20 to remove the container again
docker logs KvikTestBC20 to retrieve information about URL's again

18.4
BcContainerHelper is version 3.0.10
BcContainerHelper is running as administrator
Hyper-V is Disabled
UsePsSession is True
Host is Microsoft Windows Server 2019 Standard - ltsc2019
Docker Client Version is 20.10.6
Docker Server Version is 20.10.6
Removing Session KvikTestBC20
Removing container KvikTestBC20
Removing entries from hosts
Removing KvikTestBC20 from container hosts file
Removing KvikTestBC20-* from container hosts file
Removing Desktop shortcuts
Removing C:\ProgramData\BcContainerHelper\Extensions\KvikTestBC20
Fetching all docker images
Fetching all docker volumes
Enabling SSL as otherwise all clients will see mixed HTTP / HTTPS request, which will cause problems e.g. on the mobile and modern windows clients
Using image mcr.microsoft.com/businesscentral:10.0.17763.3046
PublicDnsName is bc.kvik.com
Creating Container KvikTestBC20
Style: onprem
Multitenant: No
Version: 18.4.28601.29139
Platform: 18.0.28593.29123
Generic Tag: <IP_ADDRESS>
Container OS Version: 10.0.17763.3046 (ltsc2019)
Host OS Version: 10.0.17763.3046 (ltsc2019)
Using process isolation
Using locale en-US
Adding special CheckHealth.ps1 to enable Traefik support
Disabling the standard eventlog dump to container log every 2 seconds (use -dumpEventLog to enable)
Additional Parameters:
-e webserverinstance=KvikTestBC20
-e publicdnsname=bc.kvik.com
-l "traefik.protocol=https"
-l "traefik.web.frontend.rule=PathPrefix:/KvikTestBC20"
-l "traefik.web.port=443"
-l "traefik.soap.frontend.rule=PathPrefix:/KvikTestBC20soap;ReplacePathRegex: ^/KvikTestBC20soap(.*) /BC$1"
-l "traefik.soap.port=7047"
-l "traefik.rest.frontend.rule=PathPrefix:/KvikTestBC20rest;ReplacePathRegex: ^/KvikTestBC20rest(.*) /BC$1"
-l "traefik.rest.port=7048"
-l "traefik.dev.frontend.rule=PathPrefix:/KvikTestBC20dev;ReplacePathRegex: ^/KvikTestBC20dev(.*) /BC$1"
-l "traefik.dev.port=7049"
-l "traefik.snap.frontend.rule=PathPrefix:/KvikTestBC20snap;ReplacePathRegex: ^/KvikTestBC20snap(.*) /BC$1"
-l "traefik.snap.port=7083"
-l "traefik.dl.frontend.rule=PathPrefixStrip:/KvikTestBC20dl"
-l "traefik.dl.port=8080"
-l "traefik.dl.protocol=http"
-l "traefik.enable=true"
-l "traefik.frontend.entryPoints=https"
--env customNavSettings=PublicODataBaseUrl=https://bc.kvik.com/KvikTestBC20rest/odata,PublicSOAPBaseUrl=https://bc.kvik.com/KvikTestBC20soap/ws,PublicWebBaseUrl=https://bc.kvik.com/KvikTestBC20
Files in C:\ProgramData\BcContainerHelper\Extensions\KvikTestBC20\my:
- AdditionalOutput.ps1
- CheckHealth.ps1
- MainLoop.ps1
- SetupCertificate.ps1
- SetupVariables.ps1
- updatehosts.ps1
- wildcard_kvik_com_2022.pfx
Creating container KvikTestBC20 from image mcr.microsoft.com/businesscentral:10.0.17763.3046
37f5db20367242332004cb1899a4eab1826576dab5a4e303c05d8575d0c7d569
Waiting for container KvikTestBC20 to be ready
Using artifactUrl https://bcartifacts.azureedge.net/onprem/18.4.28601.29139/w1
Using installer from C:\Run\150-new
Installing Business Central
Installing from artifacts
Starting Local SQL Server
Starting Internet Information Server
Copying Service Tier Files
c:\dl\onprem\18.4.28601.29139\platform\ServiceTier\Program Files
c:\dl\onprem\18.4.28601.29139\platform\ServiceTier\System64Folder
Copying PowerShell Scripts
c:\dl\onprem\18.4.28601.29139\platform\WindowsPowerShellScripts\Cloud\NAVAdministration
c:\dl\onprem\18.4.28601.29139\platform\WindowsPowerShellScripts\WebSearch
Copying Web Client Files
c:\dl\onprem\18.4.28601.29139\platform\WebClient\Microsoft Dynamics NAV
Copying Client Files
c:\dl\onprem\18.4.28601.29139\platform\LegacyDlls\program files\Microsoft Dynamics NAV
c:\dl\onprem\18.4.28601.29139\platform\LegacyDlls\program files\Microsoft Dynamics NAV
c:\dl\onprem\18.4.28601.29139\platform\LegacyDlls\systemFolder
Copying ModernDev Files
c:\dl\onprem\18.4.28601.29139\platform
c:\dl\onprem\18.4.28601.29139\platform\ModernDev\program files\Microsoft Dynamics NAV
Copying additional files
Copying ConfigurationPackages
C:\dl\onprem\18.4.28601.29139\platform\ConfigurationPackages
Copying Test Assemblies
C:\dl\onprem\18.4.28601.29139\platform\Test Assemblies
Copying Applications
C:\dl\onprem\18.4.28601.29139\platform\Applications
Copying dependencies
Copying ReportBuilder
Importing PowerShell Modules
Restoring CRONUS Demo Database
Setting CompatibilityLevel for CRONUS on localhost\SQLEXPRESS
Modifying Business Central Service Tier Config File for Docker
Creating Business Central Service Tier
Installing SIP crypto provider: 'C:\Windows\System32\NavSip.dll'
Starting Business Central Service Tier
Importing license file
Stopping Business Central Service Tier
Installation took 91 seconds
Installation complete
Initializing...
Setting host.docker.internal to <IP_ADDRESS> in container hosts file (copy from host hosts file)
Setting gateway.docker.internal to <IP_ADDRESS> in container hosts file (copy from host hosts file)
Setting kubernetes.docker.internal to <IP_ADDRESS> in container hosts file (copy from host hosts file)
Setting host.containerhelper.internal to <IP_ADDRESS> in container hosts file
Starting Container
Hostname is KvikTestBC20
PublicDnsName is bc.kvik.com
Using AccessControlService Authentication
Certificate File Thumbprint F1FAEFDBEF1AE307D144FB8577549D07B69B2901
Import Certificate to LocalMachine\my
Modifying Service Tier Config File with Instance Specific Settings
Modifying Service Tier Config File with settings from environment variable
Setting PublicODataBaseUrl to https://bc.kvik.com/KvikTestBC20rest/odata
Setting PublicSOAPBaseUrl to https://bc.kvik.com/KvikTestBC20soap/ws
Setting PublicWebBaseUrl to https://bc.kvik.com/KvikTestBC20
Starting Service Tier
CertificateThumprint F1FAEFDBEF1AE307D144FB8577549D07B69B2901
Registering event sources
Creating DotNetCore Web Server Instance
Using application pool name: KvikTestBC20
Using default container name: NavWebApplicationContainer
Copy files to WWW root C:\inetpub\wwwroot\KvikTestBC20
Create the application pool KvikTestBC20
Create website: NavWebApplicationContainer with SSL
Update configuration: navsettings.json
Done Configuring Web Client
Creating http download site
Setting SA Password and enabling SA
Creating<EMAIL_ADDRESS>as SQL User and add to sysadmin
Creating SUPER user
WARNING: The password that you entered does not meet the minimum requirements.
It should be at least 8 characters long and contain at least one uppercase
letter, one lowercase letter, and one number.
Container IP Address: <IP_ADDRESS>
Container Hostname  : KvikTestBC20
Container Dns Name  : bc.kvik.com
Web Client          : https://bc.kvik.com/KvikTestBC20/
Dev. Server         : https://bc.kvik.com
Dev. ServerInstance : BC
Setting KvikTestBC20 to <IP_ADDRESS> in host hosts file

Files:
http://bc.kvik.com:8080/ALLanguage.vsix

Container Total Physical Memory is 64.0Gb
Container Free Physical Memory is 23.1Gb

Initialization took 60 seconds
Ready for connections!
Reading CustomSettings.config from KvikTestBC20
Creating Desktop Shortcuts for KvikTestBC20
Container KvikTestBC20 successfully created
Because of Traefik, the following URLs need to be used when accessing the container from outside your Docker host:
Web Client:        https://bc.kvik.com/KvikTestBC20
SOAP WebServices:  https://bc.kvik.com/KvikTestBC20soap
OData WebServices: https://bc.kvik.com/KvikTestBC20rest
Dev Service:       https://bc.kvik.com/KvikTestBC20dev
Snapshot Service:  https://bc.kvik.com/KvikTestBC20snap
File downloads:    https://bc.kvik.com/KvikTestBC20dl

Use:
Get-BcContainerEventLog -containerName KvikTestBC20 to retrieve a snapshot of the event log from the container
Get-BcContainerDebugInfo -containerName KvikTestBC20 to get debug information about the container
Enter-BcContainer -containerName KvikTestBC20 to open a PowerShell prompt inside the container
Remove-BcContainer -containerName KvikTestBC20 to remove the container again
docker logs KvikTestBC20 to retrieve information about URL's again

Screenshots
If applicable, add screenshots to help explain your problem.
Picture of 18.4 working - it registers 6 frontends

20.1 - no frontends registered

Additional context

does it happen all the time?
did it use to work?

@tfenster - I don't think this is a general problem that version 20.x doesn't work with traefik - right?
Did you try to give the 20.1 container a different name to see whether it is because traefik doesn't see the change?

No, all good for lots of 20.1 containers.
@JeppeBylov does the container become healthy?

@tfenster
I'm working on this project with Jeppe.
It seems like the BC 20.1 container becomes unhealthy - I've used the same script as Jeppe with 20.1 and 18.4

@Bjarke848 then you will need to figure out why the 20 container is unhealthy. Traefik only handles healthy containers

QQ - do you use the same AAD App Registration for the 18.x and the 20.x instance?
There are differences, I cannot remember the details - but they are on docs.

This PR https://github.com/microsoft/navcontainerhelper/commit/7c29b487263bde96cb99143819bb9db8f91deb2b added OpenIdConnect support for AAD App Registration created by Create-AadAppsForBC (FYI)

@freddydk
No, we are not using the same App Registration for 18.4 and 20.1

I have also created a number of 20.x containers with AAD auth and traefik over the weekend (to test Edit In Excel - another issue) - they work fine for normal usage, so the issue must be local.
Maybe you can use https://aka.ms/getbc to create a VM with AAD auth and traefik and then compare the apps and BC generated with the ones created by the script you use.

@freddydk @tfenster @JeppeBylov
I've figured it out. The EventViewer got the exception "AadApplicationId cannot be null or empty".

So instead of running Create-AadAppsForBC after I've created the container, I used an existing AAD App Registration, and added the AadAppId parameter (-AadAppId "****-...) to the New-BCContainer script.
Script:
$containerName = "KvikTestBC20BVI"
$authenticationEmail =<EMAIL_ADDRESS>$cetificatefile = "C:\Temp\wildcard_kvik_com_2022.pfx"
$bcartifact = Get-BCArtifactUrl -type OnPrem -country "w1" -version "20.1" -select Latest
$params = @{
"auth"                = 'AAD'
"containerName"       = $containerName
"multitenant"         = $false
"artifacturl"         = $bcartifact
"updateHosts"         = $true
"useTraefik"          = $true
"myscripts"           = @("C:\Powershell Scripts\SetupCertificate.ps1", $cetificatefile)
"publicDnsName"       = 'bc.kvik.com'
"authenticationEMail" = $authenticationEmail
}
New-BCContainer @params     -accept_eula
-accept_outdated     -Credential $Credential
-doNotExportObjectsToText     -shortcuts CommonDesktopFolder
-AadAppId "8eba5471-99e5-1111-1111-93fbaf782ec0"
Healthy and possible to reach!


Observatory: cannot see superclass fields

I have two classes MemGraph and GraphBase, where the former extends the latter.    If I am debugging in Observatory, I might come upon the following situation.
$ print myMemGraph
=  MemGraph {  ⊞  }
If I click on the '+' sign to expand it, I can see the MemGraph fields, but not the GraphBase fields.

As you mentioned in #26161, you have private fields in GraphBase. If GraphBase is in a different library than MemGraph, the private fields of GraphBase are not accessible from MemGraph.
Identifiers starting with _ are library-private, not protected. If you want protected fields you get "some" support by the analyzer if you make the field public (without _) and add the @protcteded annotation from the https://pub.dartlang.org/packages/meta package. I don't know if they are also supported in spec-mode or only in strong-mode.

They are all there, just not in the expected order (superclass first).

As Ryan said, the fields were there, but in an unexpected order... as a result I misread the GUI.
Regarding access to private fields, I respectfully disagree with @zoechi.  Observatory is a debugger, so I should be able to see whatever fields I want to, regardless of the runtime type of the object being inspected.

441f7d852405547309173e401fe41391218c4ec0


Add typings and browser support

Added browser support
Unfortunately, this required updating the API to async, since the browser SubtleCrypto API uses promises.
After this change, we still always use native SHA256: window.crypto.subtle in-browser, require("crypto") in Node.
The library still has zero dependencies.
I also updated dependencies and added Typescript types.

cc @ethers

cc @ethers . nice github handle!


access denied when running infracost diff with terragrunt

Hi,
we are using Terragrunt for plan and apply across multiple folders containing Terraform code with their separate state stored in S3 backend. We also run infracost diff after each Terragrunt plan output and that used to work fine when using hardcoded credentials (AWS access key and secret key). Once we switched Terragrunt to use TERRAGRUNT_IAM_ROLE, infracost started failing with below:
infracost diff --path=./base_config/planfile --no-color --log-level error
2022-06-14T15:50:27.7160156Z   Terraform command failed with:
2022-06-14T15:50:27.7160654Z     Error: Error loading state: AccessDenied: Access Denied
2022-06-14T15:50:27.7161164Z     status code: 403, request id: D2F4YQVHWR6122TX, host id: rXtO8OHB/IBkTQwlccz6ZmHBjlfL+7qsvVaOxGFo1oZ9x7dgpsC3IgeXIgTbv4KD7bPfcMsF3YM=
2022-06-14T15:50:27.7161498Z
2022-06-14T15:50:27.7161756Z Error: Error running terraform show: exit status 1
2022-06-14T15:50:27.8908833Z
2022-06-14T15:50:27.8910404Z Update: A new version of Infracost is available: v0.9.7 → v0.10.3
2022-06-14T15:50:27.8911209Z   $ curl -fsSL https://raw.githubusercontent.com/infracost/infracost/master/scripts/install.sh | sh
It looks like infracost is trying to call the terraform binary instead of the terragrunt binary. Is there a way to point infracost to terragrunt instead or is this a known limitation?

Hi @gvoden, 0.9.7 is quite old. Can you please upgrade to the latest version (v0.10.3) and try the breakdown and diff methods mentioned in the updated Get Started guide?
The default behavior is to parse HCL code directly since v0.10 (see this page for the benefits).

One thing to note is that I don't have a terragrunt project, I just have a empty terragrunt.hcl file as placeholder

Thanks for testing that! I think the most robust way, and one that gives you full control of how terragrunt is run, is to follow this example. You could call that bash script from your Makefile?

@gvoden just checking if you had any luck with that example?

@alikhajeh1 thanks for checking in, I haven't had much luck with the bash script yet. So when I run infracost it does point to the plan file as below:
infracost diff --path=./base_config/planfile --no-color --log-level error
When specifying infracost.yml I still get access denied as it appears infracost tries to invoke "terraform show"
Keep you posted if I do make any progress, will continue testing over here.

@gvoden aha the "plan file" here is probably the Terraform binary plan file, and NOT the Terraform plan JSON file - correct?
terraform plan -out tfplan.binary  ##### This is what you're running with Infracost, so Infracost detects that it still needs to run `terraform show` to generate the following file

terraform show -json tfplan.binary > plan.json ### This is the missing step you probably need.

infracost breakdown --path plan.json

This bash script has the following for generating the plan JSON for terragrunt
...
echo "Running terragrunt show for $(basename $plan) for $dir"
terragrunt show -json $(basename $plan) --terragrunt-working-dir=$dir --terragrunt-no-auto-init > $dir/plan.json
...

@alikhajeh1 I think that did it! Thanks for pointing it out. I'm going to update my Makefile with all necessary changes but this definitely did the trick. Now infracost does not need to invoke terraform itself which does not have sufficient privileges.

I used to get Access Denied at this step, here's the output now:
2022-06-18T03:16:38.3107252Z ========================== Starting Command Output ===========================
2022-06-18T03:16:38.3123715Z [command]/usr/bin/bash /home/vsts/work/_temp/5b4a82c1-bf77-438d-8945-0294872f1640.sh
2022-06-18T03:16:38.6224985Z ====BASE CONFIG COST====
2022-06-18T03:16:38.6444639Z Detected Terraform plan JSON file at ./base_config/plan.json
2022-06-18T03:16:38.6444988Z
2022-06-18T03:16:38.6445063Z
2022-06-18T03:16:38.6524382Z   ⠋ Extracting only cost-related params from terraform
2022-06-18T03:16:38.6524950Z   ✔ Extracting only cost-related params from terraform
2022-06-18T03:16:38.6528744Z
2022-06-18T03:16:38.6528990Z
2022-06-18T03:16:38.7536841Z   ⠋ Retrieving cloud prices to calculate costs
2022-06-18T03:16:38.7537094Z
2022-06-18T03:16:38.8553126Z   ⠙ Retrieving cloud prices to calculate costs
2022-06-18T03:16:38.8553478Z
2022-06-18T03:16:38.9551642Z   ⠹ Retrieving cloud prices to calculate costs
2022-06-18T03:16:38.9552408Z
2022-06-18T03:16:38.9649189Z   ⠸ Retrieving cloud prices to calculate costs
2022-06-18T03:16:38.9649693Z   ✔ Retrieving cloud prices to calculate costs
2022-06-18T03:16:38.9649833Z
2022-06-18T03:16:39.1392429Z Project: ./base_config/plan.json
2022-06-18T03:16:39.1392724Z
2022-06-18T03:16:39.1393438Z  Name                                                                       Monthly Qty  Unit                    Monthly Cost
2022-06-18T03:16:39.1393982Z
2022-06-18T03:16:39.1394981Z  module.remote_state_bucket.aws_dynamodb_table.tf_backend_state_lock
2022-06-18T03:16:39.1395755Z  ├─ Write capacity unit (WCU)                                                         1  WCU                            $0.47
2022-06-18T03:16:39.1396462Z  ├─ Read capacity unit (RCU)                                                          1  RCU                            $0.09
2022-06-18T03:16:39.1397184Z  ├─ Data storage                                                      Monthly cost depends on usage: $0.25 per GB
2022-06-18T03:16:39.1397993Z  ├─ Point-In-Time Recovery (PITR) backup storage                      Monthly cost depends on usage: $0.20 per GB
2022-06-18T03:16:39.1399016Z  ├─ On-demand backup storage                                          Monthly cost depends on usage: $0.10 per GB
2022-06-18T03:16:39.1399803Z  ├─ Table data restored                                               Monthly cost depends on usage: $0.15 per GB
2022-06-18T03:16:39.1400611Z  └─ Streams read request unit (sRRU)                                  Monthly cost depends on usage: $0.0000002 per sRRUs
2022-06-18T03:16:39.1401075Z
2022-06-18T03:16:39.1401720Z  module.remote_state_bucket.aws_kms_key.this
2022-06-18T03:16:39.1402441Z  ├─ Customer master key                                                               1  months                         $1.00
2022-06-18T03:16:39.1403369Z  ├─ Requests                                                          Monthly cost depends on usage: $0.03 per 10k requests
2022-06-18T03:16:39.1404183Z  ├─ ECC GenerateDataKeyPair requests                                  Monthly cost depends on usage: $0.10 per 10k requests
2022-06-18T03:16:39.1405067Z  └─ RSA GenerateDataKeyPair requests                                  Monthly cost depends on usage: $0.10 per 10k requests
2022-06-18T03:16:39.1405543Z
2022-06-18T03:16:39.1406209Z  module.remote_state_bucket.aws_s3_bucket.tf_backend_bucket
2022-06-18T03:16:39.1406912Z  └─ Standard
2022-06-18T03:16:39.1407608Z     ├─ Storage                                                        Monthly cost depends on usage: $0.023 per GB
2022-06-18T03:16:39.1408396Z     ├─ PUT, COPY, POST, LIST requests                                 Monthly cost depends on usage: $0.005 per 1k requests
2022-06-18T03:16:39.1409252Z     ├─ GET, SELECT, and all other requests                            Monthly cost depends on usage: $0.0004 per 1k requests
2022-06-18T03:16:39.1410052Z     ├─ Select data scanned                                            Monthly cost depends on usage: $0.002 per GB
2022-06-18T03:16:39.1410838Z     └─ Select data returned                                           Monthly cost depends on usage: $0.0007 per GB
2022-06-18T03:16:39.1411261Z
2022-06-18T03:16:39.1411871Z  OVERALL TOTAL                                                                                $1.57
2022-06-18T03:16:39.1412375Z ──────────────────────────────────
2022-06-18T03:16:39.1412673Z 11 cloud resources were detected:
2022-06-18T03:16:39.1413338Z ∙ 3 were estimated, 2 of which include usage-based costs, see https://infracost.io/usage-file
2022-06-18T03:16:39.1414252Z ∙ 5 were free, rerun with --show-skipped to see details
2022-06-18T03:16:39.1414903Z ∙ 3 are not supported yet, rerun with --show-skipped to see details
2022-06-18T03:16:39.1421724Z ========================
2022-06-18T03:16:39.1431288Z ====NETWORKING COST====

Great! ok if we close this issue then?

yes please do, and thanks again for helping out


[Distributed]fix env sh

As cluster_new has been merged into the cluster using squash, this PR is not able to merge into master. So I have closed this PR and create a new one based on the master's latest commit.


Refactor for fixed and variable payouts

Refactor to historical and future payouts for both fixed payout values (both binary and numerical) and variable payouts.

For live trials, handle binary or numerical payouts.
For off-line trials, handle fixed binary or numerical payouts and variable numerical payouts.

This probably requires a relatively significant API change.

I have decided to limit payouts to binary for now.


First UE4 Initialization Freezes at 39%

This project seems really cool, but I still haven't been able to get it to work. Not sure if you're still working on this project, but here goes. Everything seems to build correctly in VS (no errors after starting from debugger) but once it starts UE4, it gets stuck at 39% initialized.

I've tried adding the private dependency modules that were blank but that didn't help.
PrivateDependencyModuleNames.AddRange(new string[] { "CashGen", "UnrealFastNoisePlugin", "UESVON" });
Even if you don't know how to solve this specific problem, a response would be appreciated to know if you're still working on the project. Thanks!

I let it run for at 100% CPU for an hour and it finally loaded everything. Seemed like the shader compiling really ate up my CPU. Either way, I hope you keep updating this awesome project! Thanks!


fix(lastmod): date issue

Pull Request Description
This Pull Request addresses the regex to comply with W3C specifications and adjusts the lastmod format in the sitemap file to adhere to W3C conventions.
Proposed Changes
Regex

Corrected the regex to align with W3C specifications.
Conducted tests to ensure the new regex works correctly in various use cases.

Compliance Check

[ X ] Reviewed and followed the project's contribution guidelines.
[ X ] Tests have passed successfully.

Issues

https://github.com/nuxt-modules/sitemap/issues/208
https://github.com/nuxt-modules/sitemap/issues/206

Tests
BEFORE

AFTER

Amazing work @PabloGBarcelo :clap:


getting error Too Many Requests for url

I am trying to retrieve transcripts of some YouTube videos. I enlisted URLs in my csv file and after extraction tried to write extracted contents in txt files separately for each file.
Getting the following output:
Error extracting transcript for V1:
Could not retrieve a transcript for the video "URL mentioned" Client Error: Too Many Requests for url: "URL mentioned" This is most likely caused by:
Request to YouTube failed: 9kpl7AtE03c
If you are sure that the described cause is not responsible for this error and that a transcript should be retrievable, please create an issue at https://github.com/jdepoix/youtube-transcript-api/issues. Please add which version of youtube_transcript_api you are using and provide the information needed to replicate the error. Also make sure that there are no open issues which already describe your problem!
following is my code:
import csv
import os
import re
from langchain_community.document_loaders import YoutubeLoader
from langchain_community.document_loaders.youtube import TranscriptFormat
def sanitize_filename(filename):
return re.sub(r'[\/*?:"<>|]', "", filename)
def document_to_string(document):
# Assuming that the Document object has a method or attribute to get its text
# You might need to adjust this depending on the actual structure of the Document object
return document.text if hasattr(document, 'text') else str(document)
def extract_and_save_transcripts(csv_filepath):
# Ensure the data directory exists
data_dir = 'data'
os.makedirs(data_dir, exist_ok=True)
with open(csv_filepath, mode='r', newline='', encoding='utf-8-sig') as csvfile:
reader = csv.DictReader(csvfile)
headers = next(reader)  # Read the header row
# print(f"CSV Headers: {headers}")  # This will print the actual headers of your CSV
csvfile.seek(0)  # Reset the read position of the CSV file
next(reader)  # Skip the header row
for row in reader:
session = row['Session']
video_id = row['VideoID']
video_name = sanitize_filename(row['VideoName'])
url = row['VideoURL']
        # Initialize the YoutubeLoader with the video URL
        loader = YoutubeLoader.from_youtube_url(
            url,
            language=["de"],  # Specify other languages if necessary
            translation="en",
            transcript_format=TranscriptFormat.TEXT,
        )

        # Load the transcript
        try:
            transcript = loader.load()
            if isinstance(transcript, list):
                transcript = '\n'.join(document_to_string(doc) for doc in transcript)
            elif not isinstance(transcript, str):
                transcript = document_to_string(transcript)
            # Defining the filename for the transcript text file
            filename = os.path.join(data_dir, f"{session}_{video_id}_{video_name}.txt")
            # Save the transcript to a text file
            with open(filename, 'w', encoding='utf-8') as text_file:
                text_file.write(transcript)
            print(f"Transcript saved: {filename}")
        except Exception as e:
            print(f"Error extracting transcript for {video_id}: {e}")

csv_filepath = 'data/VideoURLs.csv'
extract_and_save_transcripts(csv_filepath)

Hi @Areesha1801, I don't know YoutubeLoader and how it works, so I can't speak to that.
Using this module I can run the following without a problem:
YouTubeTranscriptApi.list_transcripts("9kpl7AtE03c").find_transcript(["de"]).translate("en").fetch()

so it doesn't seem like it is an issue related to this module. You should probably isolate the issue a bit further, to make sure where it is coming from.


QPS chart is misleading

https://github.com/cloudwego/netpoll#performance
"Concurrent Performance (Echo 1KB): QPS" is misleading. It starts at Y=210,000. This library is only 30,000/250,000 is 10% faster.
Please use same Y offset 0 as rest of the graphs.
Do admit that you say it is 110% of net package QPS. Thanks for being accurate there!
Thanks for open sourcing this too!

Thanks for the reminder, this is a processing error, we will correct it later.