hundreds-breakfast-49010
01/18/2020, 12:29 AMwitty-crayon-22786
01/18/2020, 1:23 AMwitty-crayon-22786
01/18/2020, 1:23 AMhundreds-breakfast-49010
01/18/2020, 1:25 AMHttpRequester
is definitely side-effecting if we make it the standard way to do all HTTP operations (including POSTs), which is what I had in mind with ithundreds-breakfast-49010
01/18/2020, 1:26 AMhundreds-breakfast-49010
01/18/2020, 1:26 AMwitty-crayon-22786
01/18/2020, 1:27 AMhundreds-breakfast-49010
01/18/2020, 1:29 AMHttpRequester
, other than the UrlToFetch
abstraction we already havehundreds-breakfast-49010
01/18/2020, 1:29 AMwitty-crayon-22786
01/21/2020, 9:52 PMhundreds-breakfast-49010
01/21/2020, 10:15 PM@side_effecting
types, and keep the constraint that @side_effecting
types can only be requested in a @goal_rule
. this constraint forces rule implementors to "push out" operations that are conceptually side effecting to `@goal_rule`s. and I think that the other option, which is to just let ordinary async Get[HttpResponse](HttpRequest, req)
calls work (while dirtying a bunch of the node graph, or sometimes dirtying a bunch of the node graph and sometimes not depending on the type and options of the HttpRequest
) , makes it harder to think about when a rule will and will not be cached, which is undesirablehundreds-breakfast-49010
01/21/2020, 10:16 PMhundreds-breakfast-49010
01/21/2020, 10:18 PMforeground
flag) within pants exists?witty-crayon-22786
01/21/2020, 10:21 PMwitty-crayon-22786
01/21/2020, 10:22 PMwitty-crayon-22786
01/21/2020, 10:25 PMhundreds-breakfast-49010
01/21/2020, 10:26 PMhundreds-breakfast-49010
01/21/2020, 10:27 PMwitty-crayon-22786
01/21/2020, 10:28 PMhundreds-breakfast-49010
01/21/2020, 10:28 PMwitty-crayon-22786
01/21/2020, 10:29 PMwitty-crayon-22786
01/21/2020, 10:30 PMhundreds-breakfast-49010
01/21/2020, 10:32 PMwitty-crayon-22786
01/21/2020, 10:39 PMwitty-crayon-22786
01/21/2020, 10:40 PMhundreds-breakfast-49010
01/21/2020, 10:41 PMhundreds-breakfast-49010
01/21/2020, 10:42 PMhundreds-breakfast-49010
01/21/2020, 10:42 PMwitty-crayon-22786
01/21/2020, 10:42 PMwitty-crayon-22786
01/21/2020, 10:43 PMwitty-crayon-22786
01/21/2020, 10:43 PMenough-analyst-54434
01/21/2020, 11:01 PMhundreds-breakfast-49010
01/21/2020, 11:07 PMwitty-crayon-22786
01/21/2020, 11:08 PMtest --debug
case, but not for the run
case. similarly, in the HttpRequester case, there is likely a non-sideffecting API that could be used deeper in the graph to make GET requests.enough-analyst-54434
01/21/2020, 11:09 PMwitty-crayon-22786
01/21/2020, 11:13 PMwitty-crayon-22786
01/21/2020, 11:13 PMwitty-crayon-22786
01/21/2020, 11:14 PMwitty-crayon-22786
01/21/2020, 11:15 PMenough-analyst-54434
01/21/2020, 11:20 PMdepending what kind of logic we're trying to write, the answer might be "it should be in another process".
enough-analyst-54434
01/21/2020, 11:24 PMwitty-crayon-22786
01/21/2020, 11:25 PMwitty-crayon-22786
01/21/2020, 11:26 PMenough-analyst-54434
01/21/2020, 11:26 PMwitty-crayon-22786
01/21/2020, 11:26 PMwitty-crayon-22786
01/21/2020, 11:27 PMenough-analyst-54434
01/21/2020, 11:28 PMenough-analyst-54434
01/21/2020, 11:29 PMwitty-crayon-22786
01/21/2020, 11:29 PMwitty-crayon-22786
01/21/2020, 11:30 PMenough-analyst-54434
01/21/2020, 11:30 PMenough-analyst-54434
01/21/2020, 11:31 PMwitty-crayon-22786
01/21/2020, 11:32 PMwitty-crayon-22786
01/21/2020, 11:32 PMenough-analyst-54434
01/21/2020, 11:32 PMwitty-crayon-22786
01/21/2020, 11:32 PMenough-analyst-54434
01/21/2020, 11:32 PMwitty-crayon-22786
01/21/2020, 11:33 PMwitty-crayon-22786
01/21/2020, 11:34 PMenough-analyst-54434
01/21/2020, 11:34 PMenough-analyst-54434
01/21/2020, 11:46 PMenough-analyst-54434
01/21/2020, 11:47 PMhundreds-breakfast-49010
01/22/2020, 1:51 AMhundreds-breakfast-49010
01/22/2020, 2:04 AMhundreds-breakfast-49010
01/22/2020, 2:05 AMhundreds-breakfast-49010
01/22/2020, 2:08 AMwitty-crayon-22786
01/22/2020, 4:37 PMenough-analyst-54434
01/22/2020, 5:02 PMaverage-vr-56795
01/22/2020, 5:04 PMaverage-vr-56795
01/22/2020, 5:04 PMenough-analyst-54434
01/22/2020, 5:04 PMaverage-vr-56795
01/22/2020, 5:08 PMenough-analyst-54434
01/22/2020, 5:12 PMaverage-vr-56795
01/22/2020, 5:14 PMwitty-crayon-22786
01/22/2020, 5:30 PMwitty-crayon-22786
01/22/2020, 5:31 PMaverage-vr-56795
01/22/2020, 5:38 PMaverage-vr-56795
01/22/2020, 5:38 PMwitty-crayon-22786
01/22/2020, 5:39 PMwitty-crayon-22786
01/23/2020, 8:55 PMhundreds-breakfast-49010
01/23/2020, 9:12 PMhundreds-breakfast-49010
01/23/2020, 9:16 PMI like the use-case. I’m a little scared that there probably are side-effecting use-cases. But if we’re happy to build a solution which doesn’t solve them, that works.The side-effecting type
HttpRequester
does solve side-effecting http use cases automaticallywitty-crayon-22786
01/23/2020, 9:17 PMhundreds-breakfast-49010
01/23/2020, 9:19 PMhundreds-breakfast-49010
01/23/2020, 9:20 PMhundreds-breakfast-49010
01/23/2020, 9:21 PMhundreds-breakfast-49010
01/23/2020, 9:22 PMwitty-crayon-22786
01/23/2020, 9:24 PMwitty-crayon-22786
01/23/2020, 9:25 PMwitty-crayon-22786
01/23/2020, 9:25 PMwitty-crayon-22786
01/23/2020, 9:27 PMhundreds-breakfast-49010
01/23/2020, 9:28 PMhundreds-breakfast-49010
01/23/2020, 9:28 PMwitty-crayon-22786
01/23/2020, 9:29 PMwitty-crayon-22786
01/23/2020, 9:29 PMwitty-crayon-22786
01/23/2020, 9:29 PMwitty-crayon-22786
01/23/2020, 9:30 PMhundreds-breakfast-49010
01/23/2020, 9:31 PMhundreds-breakfast-49010
01/23/2020, 9:31 PMwitty-crayon-22786
01/23/2020, 9:31 PMwitty-crayon-22786
01/23/2020, 9:31 PMwitty-crayon-22786
01/23/2020, 9:31 PMwitty-crayon-22786
01/23/2020, 9:31 PMhundreds-breakfast-49010
01/23/2020, 9:34 PMwitty-crayon-22786
01/23/2020, 9:35 PMwitty-crayon-22786
01/23/2020, 9:35 PMhundreds-breakfast-49010
01/23/2020, 9:35 PMuncacheable
as just a property of that specific intrinsic (other intrinsics are still cacheable
)witty-crayon-22786
01/23/2020, 9:36 PMwitty-crayon-22786
01/23/2020, 9:37 PMwitty-crayon-22786
01/23/2020, 9:37 PMwitty-crayon-22786
01/23/2020, 9:37 PMNode::cacheable
flag with something more nuanced is 100% fine.hundreds-breakfast-49010
01/23/2020, 9:37 PMFallibleHttpResponse
- becuase what non-determinism means is that, with the exact same HttpGetRequest
type fed to the engine, the intrinsic might return a success or failure, depending on all the details of timeouts, etc. that the intrinsic will take care ofwitty-crayon-22786
01/23/2020, 9:38 PMhundreds-breakfast-49010
01/23/2020, 9:39 PMwitty-crayon-22786
01/23/2020, 9:39 PMhundreds-breakfast-49010
01/23/2020, 9:40 PMwitty-crayon-22786
01/23/2020, 9:40 PMhundreds-breakfast-49010
01/23/2020, 9:41 PMwitty-crayon-22786
01/23/2020, 9:41 PMhundreds-breakfast-49010
01/23/2020, 9:41 PMHttpGetRequest
type it gets fedwitty-crayon-22786
01/23/2020, 9:41 PMwitty-crayon-22786
01/23/2020, 9:41 PMwitty-crayon-22786
01/23/2020, 9:42 PMhundreds-breakfast-49010
01/23/2020, 9:42 PMhundreds-breakfast-49010
01/23/2020, 9:45 PMwitty-crayon-22786
01/23/2020, 9:45 PMhundreds-breakfast-49010
01/23/2020, 9:45 PMwitty-crayon-22786
01/23/2020, 9:46 PMhundreds-breakfast-49010
01/23/2020, 9:47 PMUrlToFetch
is implemented with an intrinsic todayhundreds-breakfast-49010
01/23/2020, 9:50 PMhundreds-breakfast-49010
01/23/2020, 9:50 PMhundreds-breakfast-49010
01/23/2020, 9:51 PMwitty-crayon-22786
01/23/2020, 10:09 PMwitty-crayon-22786
01/23/2020, 10:11 PMhundreds-breakfast-49010
01/23/2020, 10:12 PMwitty-crayon-22786
01/23/2020, 10:15 PMawait Get[OptionalCacheEntry](CacheKey(..))
hundreds-breakfast-49010
01/23/2020, 10:43 PM